diff --git a/404.html b/404.html index 28aa76789..a3a1bfd93 100644 --- a/404.html +++ b/404.html @@ -16,8 +16,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/09e23a09.4a49a944.js b/assets/js/09e23a09.223289b1.js similarity index 80% rename from assets/js/09e23a09.4a49a944.js rename to assets/js/09e23a09.223289b1.js index f063105ca..7e3923b19 100644 --- a/assets/js/09e23a09.4a49a944.js +++ b/assets/js/09e23a09.223289b1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[2404],{3689:e=>{e.exports=JSON.parse('{"label":"release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":71,"unlisted":false}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[2404],{3689:e=>{e.exports=JSON.parse('{"label":"release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":72,"unlisted":false}')}}]); \ No newline at end of file diff --git a/assets/js/1119a7f2.684c338c.js b/assets/js/1119a7f2.684c338c.js new file mode 100644 index 000000000..15f2fdd17 --- /dev/null +++ b/assets/js/1119a7f2.684c338c.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[4029],{2931:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=s(3188),r=s(7832);const a={slug:"dockview-4.8.0-release",title:"Dockview 4.8.0",tags:["release"]},i="Release Notes",c={permalink:"/blog/dockview-4.8.0-release",source:"@site/blog/2025-09-22-dockview-4.9.0.md",title:"Dockview 4.8.0",description:"Please reference docs @ dockview.dev.",date:"2025-09-22T00:00:00.000Z",formattedDate:"September 22, 2025",tags:[{label:"release",permalink:"/blog/tags/release"}],readingTime:.105,hasTruncateMarker:!1,authors:[],frontMatter:{slug:"dockview-4.8.0-release",title:"Dockview 4.8.0",tags:["release"]},unlisted:!1,prevItem:{title:"Dockview 4.10.0",permalink:"/blog/dockview-4.10.0-release"},nextItem:{title:"Dockview 4.7.1",permalink:"/blog/dockview-4.7.1-release"}},o={authorsImageUrls:[]},l=[{value:"\ud83d\ude80 Features",id:"-features",level:2},{value:"\ud83d\udee0 Miscs",id:"-miscs",level:2},{value:"\ud83d\udd25 Breaking changes",id:"-breaking-changes",level:2}];function d(e){const t={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["Please reference docs @ ",(0,n.jsx)(t.a,{href:"https://dockview.dev",children:"dockview.dev"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"-features",children:"\ud83d\ude80 Features"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Angular framework wrapper support ",(0,n.jsx)(t.a,{href:"https://github.com/mathuo/dockview/pull/1001",children:"#1001"})]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"-miscs",children:"\ud83d\udee0 Miscs"}),"\n",(0,n.jsx)(t.h2,{id:"-breaking-changes",children:"\ud83d\udd25 Breaking changes"})]})}function u(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},7832:(e,t,s)=>{s.d(t,{Z:()=>c,a:()=>i});var n=s(6204);const r={},a=n.createContext(r);function i(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); +//# sourceMappingURL=1119a7f2.684c338c.js.map \ No newline at end of file diff --git a/assets/js/1119a7f2.684c338c.js.map b/assets/js/1119a7f2.684c338c.js.map new file mode 100644 index 000000000..6b9513203 --- /dev/null +++ b/assets/js/1119a7f2.684c338c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"assets/js/1119a7f2.684c338c.js","mappings":"+OAEO,MAAMA,EAAc,CAC1BC,KAAM,yBACNC,MAAO,iBACPC,KAAM,CACL,YAGWC,EAAe,gBACfC,EAAW,CACtB,UAAa,+BACb,OAAU,0CACV,MAAS,iBACT,YAAe,wCACf,KAAQ,2BACR,cAAiB,qBACjB,KAAQ,CACN,CACE,MAAS,UACT,UAAa,uBAGjB,YAAe,KACf,mBAAqB,EACrB,QAAW,GACX,YAAe,CACb,KAAQ,yBACR,MAAS,iBACT,KAAQ,CACN,YAGJ,UAAY,EACZ,SAAY,CACV,MAAS,kBACT,UAAa,iCAEf,SAAY,CACV,MAAS,iBACT,UAAa,iCAGJC,EAAS,CACtB,iBAAoB,IAKPC,EAAM,CAAC,CAClB,MAAS,wBACT,GAAM,YACN,MAAS,GACR,CACD,MAAS,qBACT,GAAM,SACN,MAAS,GACR,CACD,MAAS,gCACT,GAAM,oBACN,MAAS,IAEX,SAASC,EAAkBC,GACzB,MAAMC,EAAc,CAClBC,EAAG,IACHC,GAAI,KACJC,GAAI,KACJC,EAAG,IACHC,GAAI,SACD,YACAN,EAAMO,YAEX,OAAO,UAAM,WAAW,CACtBC,SAAU,EAAC,UAAMP,EAAYI,EAAG,CAC9BG,SAAU,CAAC,4BAA4B,SAAKP,EAAYC,EAAG,CACzDO,KAAM,uBACND,SAAU,iBACR,OACF,MAAM,SAAKP,EAAYE,GAAI,CAC7BO,GAAI,YACJF,SAAU,0BACR,MAAM,UAAMP,EAAYK,GAAI,CAC9BE,SAAU,CAAC,MAAM,UAAMP,EAAYG,GAAI,CACrCI,SAAU,CAAC,sCAAsC,SAAKP,EAAYC,EAAG,CACnEO,KAAM,+CACND,SAAU,aAEV,QACF,MAAM,SAAKP,EAAYE,GAAI,CAC7BO,GAAI,SACJF,SAAU,uBACR,MAAM,SAAKP,EAAYE,GAAI,CAC7BO,GAAI,oBACJF,SAAU,oCAGhB,CACe,SAASG,EAAWX,EAAQ,CAAC,GAC1C,MAAOY,QAASC,GAAa,KACxB,YACAb,EAAMO,YAEX,OAAOM,GAAY,SAAKA,EAAW,IAC9Bb,EACHQ,UAAU,SAAKT,EAAmB,IAC7BC,MAEFD,EAAkBC,EACzB,C,wDCjFA,MAAMc,EAAkB,CAAC,EAEnBC,EAAa,gBAAoBD,GAUhC,SAASE,EAAiBT,GAC/B,MAAMU,EAAoB,aAAiBF,GAG3C,OAAO,WACL,WAEE,MAA0B,mBAAfR,EACFA,EAAWU,GAGb,IAAIA,KAAsBV,EACnC,GACA,CAACU,EAAmBV,GAExB,CAWO,SAASW,EAAYlB,GAE1B,IAAImB,EAWJ,OAREA,EADEnB,EAAMoB,qBAEsB,mBAArBpB,EAAMO,WACTP,EAAMO,WAAWO,GACjBd,EAAMO,YAAcO,EAEVE,EAAiBhB,EAAMO,YAGlC,gBACLQ,EAAWM,SACX,CAACC,MAAOH,GACRnB,EAAMQ,SAEV,C","sources":["webpack://dockview-docs/./blog/2025-09-22-dockview-4.9.0.md?a230","webpack://dockview-docs/../../node_modules/@mdx-js/react/lib/index.js"],"sourcesContent":["\n\nexport const frontMatter = {\n\tslug: 'dockview-4.8.0-release',\n\ttitle: 'Dockview 4.8.0',\n\ttags: [\n\t\t'release'\n\t]\n};\nexport const contentTitle = 'Release Notes';\nexport const metadata = {\n \"permalink\": \"/blog/dockview-4.8.0-release\",\n \"source\": \"@site/blog/2025-09-22-dockview-4.9.0.md\",\n \"title\": \"Dockview 4.8.0\",\n \"description\": \"Please reference docs @ dockview.dev.\",\n \"date\": \"2025-09-22T00:00:00.000Z\",\n \"formattedDate\": \"September 22, 2025\",\n \"tags\": [\n {\n \"label\": \"release\",\n \"permalink\": \"/blog/tags/release\"\n }\n ],\n \"readingTime\": 0.105,\n \"hasTruncateMarker\": false,\n \"authors\": [],\n \"frontMatter\": {\n \"slug\": \"dockview-4.8.0-release\",\n \"title\": \"Dockview 4.8.0\",\n \"tags\": [\n \"release\"\n ]\n },\n \"unlisted\": false,\n \"prevItem\": {\n \"title\": \"Dockview 4.10.0\",\n \"permalink\": \"/blog/dockview-4.10.0-release\"\n },\n \"nextItem\": {\n \"title\": \"Dockview 4.7.1\",\n \"permalink\": \"/blog/dockview-4.7.1-release\"\n }\n};\nexport const assets = {\n\"authorsImageUrls\": [],\n};\n\nimport {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from \"react/jsx-runtime\";\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nexport const toc = [{\n \"value\": \"🚀 Features\",\n \"id\": \"-features\",\n \"level\": 2\n}, {\n \"value\": \"🛠 Miscs\",\n \"id\": \"-miscs\",\n \"level\": 2\n}, {\n \"value\": \"🔥 Breaking changes\",\n \"id\": \"-breaking-changes\",\n \"level\": 2\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n h2: \"h2\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Please reference docs @ \", _jsx(_components.a, {\n href: \"https://dockview.dev\",\n children: \"dockview.dev\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.h2, {\n id: \"-features\",\n children: \"🚀 Features\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Angular framework wrapper support \", _jsx(_components.a, {\n href: \"https://github.com/mathuo/dockview/pull/1001\",\n children: \"#1001\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n id: \"-miscs\",\n children: \"🛠 Miscs\"\n }), \"\\n\", _jsx(_components.h2, {\n id: \"-breaking-changes\",\n children: \"🔥 Breaking changes\"\n })]\n });\n}\nexport default function MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\n\n","/**\n * @typedef {import('mdx/types.js').MDXComponents} MDXComponents\n * @typedef {import('react').Component<{}, {}, unknown>} Component\n * @typedef {import('react').ReactNode} ReactNode\n */\n\n/**\n * @callback MergeComponents\n * Custom merge function.\n * @param {Readonly} currentComponents\n * Current components from the context.\n * @returns {MDXComponents}\n * Additional components.\n *\n * @typedef Props\n * Configuration for `MDXProvider`.\n * @property {ReactNode | null | undefined} [children]\n * Children (optional).\n * @property {Readonly | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @property {boolean | null | undefined} [disableParentContext=false]\n * Turn off outer component context (default: `false`).\n */\n\nimport React from 'react'\n\n/** @type {Readonly} */\nconst emptyComponents = {}\n\nconst MDXContext = React.createContext(emptyComponents)\n\n/**\n * Get current components from the MDX Context.\n *\n * @param {Readonly | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @returns {MDXComponents}\n * Current components.\n */\nexport function useMDXComponents(components) {\n const contextComponents = React.useContext(MDXContext)\n\n // Memoize to avoid unnecessary top-level context changes\n return React.useMemo(\n function () {\n // Custom merge via a function prop\n if (typeof components === 'function') {\n return components(contextComponents)\n }\n\n return {...contextComponents, ...components}\n },\n [contextComponents, components]\n )\n}\n\n/**\n * Provider for MDX context.\n *\n * @param {Readonly} props\n * Props.\n * @returns {JSX.Element}\n * Element.\n * @satisfies {Component}\n */\nexport function MDXProvider(props) {\n /** @type {Readonly} */\n let allComponents\n\n if (props.disableParentContext) {\n allComponents =\n typeof props.components === 'function'\n ? props.components(emptyComponents)\n : props.components || emptyComponents\n } else {\n allComponents = useMDXComponents(props.components)\n }\n\n return React.createElement(\n MDXContext.Provider,\n {value: allComponents},\n props.children\n )\n}\n"],"names":["frontMatter","slug","title","tags","contentTitle","metadata","assets","toc","_createMdxContent","props","_components","a","h2","li","p","ul","components","children","href","id","MDXContent","wrapper","MDXLayout","emptyComponents","MDXContext","useMDXComponents","contextComponents","MDXProvider","allComponents","disableParentContext","Provider","value"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/1119a7f2.989e7d48.js b/assets/js/1119a7f2.989e7d48.js deleted file mode 100644 index 2ccf62578..000000000 --- a/assets/js/1119a7f2.989e7d48.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[4029],{2931:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var n=s(3188),r=s(7832);const a={slug:"dockview-4.8.0-release",title:"Dockview 4.8.0",tags:["release"]},c="Release Notes",i={permalink:"/blog/dockview-4.8.0-release",source:"@site/blog/2025-09-22-dockview-4.9.0.md",title:"Dockview 4.8.0",description:"Please reference docs @ dockview.dev.",date:"2025-09-22T00:00:00.000Z",formattedDate:"September 22, 2025",tags:[{label:"release",permalink:"/blog/tags/release"}],readingTime:.105,hasTruncateMarker:!1,authors:[],frontMatter:{slug:"dockview-4.8.0-release",title:"Dockview 4.8.0",tags:["release"]},unlisted:!1,nextItem:{title:"Dockview 4.7.1",permalink:"/blog/dockview-4.7.1-release"}},o={authorsImageUrls:[]},l=[{value:"\ud83d\ude80 Features",id:"-features",level:2},{value:"\ud83d\udee0 Miscs",id:"-miscs",level:2},{value:"\ud83d\udd25 Breaking changes",id:"-breaking-changes",level:2}];function d(e){const t={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["Please reference docs @ ",(0,n.jsx)(t.a,{href:"https://dockview.dev",children:"dockview.dev"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"-features",children:"\ud83d\ude80 Features"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Angular framework wrapper support ",(0,n.jsx)(t.a,{href:"https://github.com/mathuo/dockview/pull/1001",children:"#1001"})]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"-miscs",children:"\ud83d\udee0 Miscs"}),"\n",(0,n.jsx)(t.h2,{id:"-breaking-changes",children:"\ud83d\udd25 Breaking changes"})]})}function u(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},7832:(e,t,s)=>{s.d(t,{Z:()=>i,a:()=>c});var n=s(6204);const r={},a=n.createContext(r);function c(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); -//# sourceMappingURL=1119a7f2.989e7d48.js.map \ No newline at end of file diff --git a/assets/js/1119a7f2.989e7d48.js.map b/assets/js/1119a7f2.989e7d48.js.map deleted file mode 100644 index e4b58f086..000000000 --- a/assets/js/1119a7f2.989e7d48.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"assets/js/1119a7f2.989e7d48.js","mappings":"+OAEO,MAAMA,EAAc,CAC1BC,KAAM,yBACNC,MAAO,iBACPC,KAAM,CACL,YAGWC,EAAe,gBACfC,EAAW,CACtB,UAAa,+BACb,OAAU,0CACV,MAAS,iBACT,YAAe,wCACf,KAAQ,2BACR,cAAiB,qBACjB,KAAQ,CACN,CACE,MAAS,UACT,UAAa,uBAGjB,YAAe,KACf,mBAAqB,EACrB,QAAW,GACX,YAAe,CACb,KAAQ,yBACR,MAAS,iBACT,KAAQ,CACN,YAGJ,UAAY,EACZ,SAAY,CACV,MAAS,iBACT,UAAa,iCAGJC,EAAS,CACtB,iBAAoB,IAKPC,EAAM,CAAC,CAClB,MAAS,wBACT,GAAM,YACN,MAAS,GACR,CACD,MAAS,qBACT,GAAM,SACN,MAAS,GACR,CACD,MAAS,gCACT,GAAM,oBACN,MAAS,IAEX,SAASC,EAAkBC,GACzB,MAAMC,EAAc,CAClBC,EAAG,IACHC,GAAI,KACJC,GAAI,KACJC,EAAG,IACHC,GAAI,SACD,YACAN,EAAMO,YAEX,OAAO,UAAM,WAAW,CACtBC,SAAU,EAAC,UAAMP,EAAYI,EAAG,CAC9BG,SAAU,CAAC,4BAA4B,SAAKP,EAAYC,EAAG,CACzDO,KAAM,uBACND,SAAU,iBACR,OACF,MAAM,SAAKP,EAAYE,GAAI,CAC7BO,GAAI,YACJF,SAAU,0BACR,MAAM,UAAMP,EAAYK,GAAI,CAC9BE,SAAU,CAAC,MAAM,UAAMP,EAAYG,GAAI,CACrCI,SAAU,CAAC,sCAAsC,SAAKP,EAAYC,EAAG,CACnEO,KAAM,+CACND,SAAU,aAEV,QACF,MAAM,SAAKP,EAAYE,GAAI,CAC7BO,GAAI,SACJF,SAAU,uBACR,MAAM,SAAKP,EAAYE,GAAI,CAC7BO,GAAI,oBACJF,SAAU,oCAGhB,CACe,SAASG,EAAWX,EAAQ,CAAC,GAC1C,MAAOY,QAASC,GAAa,KACxB,YACAb,EAAMO,YAEX,OAAOM,GAAY,SAAKA,EAAW,IAC9Bb,EACHQ,UAAU,SAAKT,EAAmB,IAC7BC,MAEFD,EAAkBC,EACzB,C,wDC7EA,MAAMc,EAAkB,CAAC,EAEnBC,EAAa,gBAAoBD,GAUhC,SAASE,EAAiBT,GAC/B,MAAMU,EAAoB,aAAiBF,GAG3C,OAAO,WACL,WAEE,MAA0B,mBAAfR,EACFA,EAAWU,GAGb,IAAIA,KAAsBV,EACnC,GACA,CAACU,EAAmBV,GAExB,CAWO,SAASW,EAAYlB,GAE1B,IAAImB,EAWJ,OAREA,EADEnB,EAAMoB,qBAEsB,mBAArBpB,EAAMO,WACTP,EAAMO,WAAWO,GACjBd,EAAMO,YAAcO,EAEVE,EAAiBhB,EAAMO,YAGlC,gBACLQ,EAAWM,SACX,CAACC,MAAOH,GACRnB,EAAMQ,SAEV,C","sources":["webpack://dockview-docs/./blog/2025-09-22-dockview-4.9.0.md?a230","webpack://dockview-docs/../../node_modules/@mdx-js/react/lib/index.js"],"sourcesContent":["\n\nexport const frontMatter = {\n\tslug: 'dockview-4.8.0-release',\n\ttitle: 'Dockview 4.8.0',\n\ttags: [\n\t\t'release'\n\t]\n};\nexport const contentTitle = 'Release Notes';\nexport const metadata = {\n \"permalink\": \"/blog/dockview-4.8.0-release\",\n \"source\": \"@site/blog/2025-09-22-dockview-4.9.0.md\",\n \"title\": \"Dockview 4.8.0\",\n \"description\": \"Please reference docs @ dockview.dev.\",\n \"date\": \"2025-09-22T00:00:00.000Z\",\n \"formattedDate\": \"September 22, 2025\",\n \"tags\": [\n {\n \"label\": \"release\",\n \"permalink\": \"/blog/tags/release\"\n }\n ],\n \"readingTime\": 0.105,\n \"hasTruncateMarker\": false,\n \"authors\": [],\n \"frontMatter\": {\n \"slug\": \"dockview-4.8.0-release\",\n \"title\": \"Dockview 4.8.0\",\n \"tags\": [\n \"release\"\n ]\n },\n \"unlisted\": false,\n \"nextItem\": {\n \"title\": \"Dockview 4.7.1\",\n \"permalink\": \"/blog/dockview-4.7.1-release\"\n }\n};\nexport const assets = {\n\"authorsImageUrls\": [],\n};\n\nimport {Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs} from \"react/jsx-runtime\";\nimport {useMDXComponents as _provideComponents} from \"@mdx-js/react\";\nexport const toc = [{\n \"value\": \"🚀 Features\",\n \"id\": \"-features\",\n \"level\": 2\n}, {\n \"value\": \"🛠 Miscs\",\n \"id\": \"-miscs\",\n \"level\": 2\n}, {\n \"value\": \"🔥 Breaking changes\",\n \"id\": \"-breaking-changes\",\n \"level\": 2\n}];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n h2: \"h2\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Please reference docs @ \", _jsx(_components.a, {\n href: \"https://dockview.dev\",\n children: \"dockview.dev\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.h2, {\n id: \"-features\",\n children: \"🚀 Features\"\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"Angular framework wrapper support \", _jsx(_components.a, {\n href: \"https://github.com/mathuo/dockview/pull/1001\",\n children: \"#1001\"\n })]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.h2, {\n id: \"-miscs\",\n children: \"🛠 Miscs\"\n }), \"\\n\", _jsx(_components.h2, {\n id: \"-breaking-changes\",\n children: \"🔥 Breaking changes\"\n })]\n });\n}\nexport default function MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\n\n","/**\n * @typedef {import('mdx/types.js').MDXComponents} MDXComponents\n * @typedef {import('react').Component<{}, {}, unknown>} Component\n * @typedef {import('react').ReactNode} ReactNode\n */\n\n/**\n * @callback MergeComponents\n * Custom merge function.\n * @param {Readonly} currentComponents\n * Current components from the context.\n * @returns {MDXComponents}\n * Additional components.\n *\n * @typedef Props\n * Configuration for `MDXProvider`.\n * @property {ReactNode | null | undefined} [children]\n * Children (optional).\n * @property {Readonly | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @property {boolean | null | undefined} [disableParentContext=false]\n * Turn off outer component context (default: `false`).\n */\n\nimport React from 'react'\n\n/** @type {Readonly} */\nconst emptyComponents = {}\n\nconst MDXContext = React.createContext(emptyComponents)\n\n/**\n * Get current components from the MDX Context.\n *\n * @param {Readonly | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @returns {MDXComponents}\n * Current components.\n */\nexport function useMDXComponents(components) {\n const contextComponents = React.useContext(MDXContext)\n\n // Memoize to avoid unnecessary top-level context changes\n return React.useMemo(\n function () {\n // Custom merge via a function prop\n if (typeof components === 'function') {\n return components(contextComponents)\n }\n\n return {...contextComponents, ...components}\n },\n [contextComponents, components]\n )\n}\n\n/**\n * Provider for MDX context.\n *\n * @param {Readonly} props\n * Props.\n * @returns {JSX.Element}\n * Element.\n * @satisfies {Component}\n */\nexport function MDXProvider(props) {\n /** @type {Readonly} */\n let allComponents\n\n if (props.disableParentContext) {\n allComponents =\n typeof props.components === 'function'\n ? props.components(emptyComponents)\n : props.components || emptyComponents\n } else {\n allComponents = useMDXComponents(props.components)\n }\n\n return React.createElement(\n MDXContext.Provider,\n {value: allComponents},\n props.children\n )\n}\n"],"names":["frontMatter","slug","title","tags","contentTitle","metadata","assets","toc","_createMdxContent","props","_components","a","h2","li","p","ul","components","children","href","id","MDXContent","wrapper","MDXLayout","emptyComponents","MDXContext","useMDXComponents","contextComponents","MDXProvider","allComponents","disableParentContext","Provider","value"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/11ce4159.f145afcc.js b/assets/js/11ce4159.5c7bb0a6.js similarity index 79% rename from assets/js/11ce4159.f145afcc.js rename to assets/js/11ce4159.5c7bb0a6.js index 82f8cb1cb..e1eb42dea 100644 --- a/assets/js/11ce4159.f145afcc.js +++ b/assets/js/11ce4159.5c7bb0a6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[1531],{5034:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/5","page":5,"postsPerPage":10,"totalPages":8,"totalCount":71,"previousPage":"/blog/page/4","nextPage":"/blog/page/6","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[1531],{5034:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/5","page":5,"postsPerPage":10,"totalPages":8,"totalCount":72,"previousPage":"/blog/page/4","nextPage":"/blog/page/6","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/17896441.2b11f8df.js b/assets/js/17896441.d364d81b.js similarity index 99% rename from assets/js/17896441.2b11f8df.js rename to assets/js/17896441.d364d81b.js index 2d6cdb818..013686754 100644 --- a/assets/js/17896441.2b11f8df.js +++ b/assets/js/17896441.d364d81b.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[7918,3085],{5399:(e,t,i)=>{i.d(t,{CJ:()=>Ot,KU:()=>w,GW:()=>l,O4:()=>v,Gi:()=>_,Tn:()=>ce,Tg:()=>Xe,g1:()=>B,i5:()=>j,gq:()=>Be,kQ:()=>oe,jl:()=>Ce,mH:()=>J,fX:()=>le,hJ:()=>Rt,lT:()=>Mt,rc:()=>Ht,iz:()=>jt,cO:()=>Wt,M:()=>we,UM:()=>it,Zc:()=>ot,Hx:()=>Qe,MV:()=>nt,Qp:()=>et,Lt:()=>rt,TR:()=>st,ZS:()=>tt});class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var d,l;r.INSTANCE=new r,function(e){e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=t.map((t=>t(e)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}}}}(d||(d={}));class p{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class c{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class u{static create(){var e;return new u(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class m{constructor(e,t){this.callback=e,this.stacktrace=t}}class v{static setLeakageMonitorEnabled(e){e!==v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.clear(),v.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new m(e,v.ENABLE_TRACKING?u.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):v.ENABLE_TRACKING}}},v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.add(this._event,u.create())),this._event}fire(e){var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const i of this._listeners)i.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(v.ENABLE_TRACKING&&queueMicrotask((()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())})),this._listeners=[]),v.ENABLE_TRACKING&&this._event&&v.MEMORY_LEAK_WATCHER.delete(this._event))}}function g(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}v.ENABLE_TRACKING=!1,v.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class f{constructor(){this._onFired=new v,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event((()=>{this._currentFireCount>t&&e()}))}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask((()=>{this._queued=!1,this._onFired.fire()})))}dispose(){this._onFired.dispose()}}!function(e){e.NONE={dispose:()=>{}},e.from=function(e){return{dispose:()=>{e()}}}}(l||(l={}));class w{get isDisposed(){return this._isDisposed}constructor(){this._isDisposed=!1;for(var e=arguments.length,t=new Array(e),i=0;ithis._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class _{constructor(){this._disposable=l.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=l.NONE)}}class D extends w{constructor(e){super(),this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,b(e,(e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)})))}}function b(e,t){const i=new ResizeObserver((e=>{requestAnimationFrame((()=>{const i=e[0];t(i)}))}));return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const C=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function S(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function A(e){return new z(e)}class z extends w{constructor(e){super(),this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=S(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{S(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(g(e,"focus",n,!0)),this.addDisposables(g(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const P="dv-quasiPreventDefault";function E(e){return e[P]}function O(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function G(e){void 0===e&&(e=document);const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const n of t)i.set(n,n.style.pointerEvents),n.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class I{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const t of this._classNames)x(this.element,t,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const t of this._classNames)x(this.element,t,!0)}}function N(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function V(e,t){if(e.length!==t.length)return!1;for(let i=0;i-1&&(e.splice(i,1),e.unshift(t))}function k(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function L(e,t){const i=e.findIndex((e=>e===t));return i>-1&&(e.splice(i,1),!0)}const R=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),M=()=>{let e=1;return{next:()=>(e++).toString()}},W=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;nt;n--)i.push(n);return i};class H{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=R(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var j,F,B,Z;!function(e){e.HORIZONTAL="HORIZONTAL",e.VERTICAL="VERTICAL"}(j||(j={})),function(e){e[e.MAXIMUM=0]="MAXIMUM",e[e.MINIMUM=1]="MINIMUM",e[e.DISABLED=2]="DISABLED",e[e.ENABLED=3]="ENABLED"}(F||(F={})),function(e){e.Low="low",e.High="high",e.Normal="normal"}(B||(B={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(Z||(Z={}));class U{get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,C(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==j.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce(((e,t)=>e+t.minimumSize),0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce(((e,t)=>e+t.maximumSize),0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,x(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,x(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,n,s=this;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new v,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=function(e,t,i,n,o,r,a,h,d){if(void 0===i&&(i=s.viewItems.map((e=>e.size))),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===a&&(a=Number.POSITIVE_INFINITY),e<0||e>s.viewItems.length)return 0;const l=W(e,-1),p=W(e+1,s.viewItems.length);if(o)for(const s of o)T(l,s),T(p,s);if(n)for(const s of n)k(l,s),k(p,s);const c=l.map((e=>s.viewItems[e])),u=l.map((e=>i[e])),m=p.map((e=>s.viewItems[e])),v=p.map((e=>i[e])),g=l.reduce(((e,t)=>e+s.viewItems[t].minimumSize-i[t]),0),f=l.reduce(((e,t)=>e+s.viewItems[t].maximumSize-i[t]),0),w=0===p.length?Number.POSITIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].minimumSize),0),_=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].maximumSize),0),D=Math.max(g,_),b=Math.min(w,f);let C=!1;if(h){const e=s.viewItems[h.index],i=t>=h.limitDelta;C=i!==e.visible,e.setVisible(i,h.size)}if(!C&&d){const e=s.viewItems[d.index],i=t{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(C(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(y(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=W(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>this.viewItems[e].priority===B.Low)),e],s=i.filter((e=>this.viewItems[e].priority===B.High)),o=this.viewItems[e];t=Math.round(t),t=R(t,o.minimumSize,Math.min(o.maximumSize,this._size)),o.size=t,this.relayout(n,s)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=R(t,e.minimumSize,e.maximumSize),e.size=t;const n=W(this.viewItems.length).filter((e=>e!==i)),s=[...n.filter((e=>this.viewItems[e].priority===B.Low)),i],o=n.filter((e=>this.viewItems[e].priority===B.High));this.relayout([...s,i],o)}addView(e,t,i,n){void 0===t&&(t={type:"distribute"}),void 0===i&&(i=this.viewItems.length);const s=document.createElement("div");let o;s.className="dv-view",s.appendChild(e.element),o="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange((e=>this.onDidChange(a,e.size))),a=new H(s,e,o,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(s)}});if(i===this.viewItems.length?this.viewContainer.appendChild(s):this.viewContainer.insertBefore(s,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=G(),n=this._orientation===j.HORIZONTAL?t.clientX:t.clientY,s=function(e,t){for(let i=0;it.container===e)),o=this.viewItems.map((e=>e.size));let r,a;const h=W(s,-1),d=W(s+1,this.viewItems.length),l=h.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-o[t])),0),p=h.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t])),0),c=0===d.length?Number.POSITIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].minimumSize)),0),u=0===d.length?Number.NEGATIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize)),0),m=Math.max(l,u),v=Math.min(c,p),g=this.findFirstSnapIndex(h),f=this.findFirstSnapIndex(d);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?m-t:m+t,size:e.size}}if("number"==typeof f){const e=this.viewItems[f],t=Math.floor(e.viewMinimumSize/2);a={index:f,limitDelta:e.visible?v+t:v-t,size:e.size}}const w=e=>{const t=(this._orientation===j.HORIZONTAL?e.clientX:e.clientY)-n;this.resize(s,t,o,void 0,void 0,m,v,r,a),this.distributeEmptySpace(),this.layoutViews()},_=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",_),document.removeEventListener("pointercancel",_),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",w),document.addEventListener("pointerup",_),document.addEventListener("pointercancel",_)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}n||this.relayout([i]),n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=R(i,r.minimumSize,r.maximumSize);const n=W(this.viewItems.length),s=n.filter((e=>this.viewItems[e].priority===B.Low)),o=n.filter((e=>this.viewItems[e].priority===B.High));this.relayout(s,o)}removeView(e,t,i){void 0===i&&(i=!1);const n=this.viewItems.splice(e,1)[0];if(n.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),n=void 0===i?this.getViewSize(e):Z.Invisible(i),s=this.removeView(e,void 0,!0);this.addView(s,n,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=R(Math.round(s*e/t),n.minimumSize,n.maximumSize))}}else{const t=W(this.viewItems.length),n=t.filter((e=>this.viewItems[e].priority===B.Low)),s=t.filter((e=>this.viewItems[e].priority===B.High));this.resize(this.viewItems.length-1,e-i,void 0,n,s)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=W(this.viewItems.length-1,-1),s=n.filter((e=>this.viewItems[e].priority===B.Low)),o=n.filter((e=>this.viewItems[e].priority===B.High));for(const r of o)T(n,r);for(const r of s)k(n,r);"number"==typeof e&&k(n,e);for(let r=0;0!==i&&r0&&(this._proportions=this.viewItems.map((e=>e.visible?e.size/this._contentSize:void 0)))}layoutViews(){if(this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter((e=>e.visible)),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let n=0;const s=[],o=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((e,r)=>{n+=this.viewItems[r].size,s.push(n);const a=e.visible?e.size-i:0,h=Math.max(0,o[r]-1),d=0===r||0===h?0:s[r-1]+h/t*i;if(r0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const s=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const o=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let a=0;a0||this.startSnappingEnabled)?this.updateSash(e,F.MINIMUM):l&&t[a]&&(r{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class $ extends w{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:j.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new U(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach((e=>{const t=new w(e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}))),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize})),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire(void 0)})),this.splitview.onDidAddView((()=>{this._onDidChange.fire()})),this.splitview.onDidRemoveView((()=>{this._onDidChange.fire()})))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i,n){void 0===i&&(i=this.splitview.length),void 0===n&&(n=!1);const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t){void 0===t&&(t={skipDispose:!1});const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),y(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,C(this.element,"dv-animated")}),200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach((e=>{e.disposable.dispose(),e.pane.dispose()})),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===j.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===j.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,n){void 0===n&&(n=0),this.view=e,this.orientation=t,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=n,this._disposable=this.view.onDidChange((e=>{e?this._onDidChange.fire({size:this.orientation===j.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===j.VERTICAL?e.height:e.width}):this._onDidChange.fire({})}))}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class Y extends w{get width(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0)))}get maximumSize(){return Math.min(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY)))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===j.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===j.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===j.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===j.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return B.Normal;const e=this.children.map((e=>void 0===e.priority?B.Normal:e.priority));return e.some((e=>e===B.High))?B.High:e.some((e=>e===B.Low))?B.Low:B.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach((t=>{t instanceof Y&&(t.margin=e)}))}constructor(e,t,i,n,s,o,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=l.NONE,this.children=[],this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=s,this._size=n,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=a.map((e=>e.node)),this.splitview=new U(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new U(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=o,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire({})}))),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const n=0===this.splitview.contentSize;(t&&i||!t&&n)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new w(d.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((e,t)=>e instanceof Y?e.onDidVisibilityChange((e=>{let{visible:i}=e;this.setChildVisible(t,i)})):l.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function q(e,t){if(e instanceof X)return e;if(e instanceof Y)return q(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];n.addChild(K(i,i.size,i.orthogonalSize),i.size,0,!0)}return n}return new X(e.view,e.orientation,i)}function Q(e,t,i){if(e instanceof Y){const n=new Y(ie(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(Q(r,i,h),h,0,!0)}return n}return new X(e.view,ie(e.orientation),i)}function ee(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=function(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}(t);return[...ee(t.parentElement.parentElement.parentElement),i]}function te(e,t,i){const n=function(e,t){return t.length%2==0?ie(e):e}(e,t),s=function(e){return"top"===e||"bottom"===e?j.VERTICAL:j.HORIZONTAL}(i);if(n===s){const[e,n]=N(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}const ie=e=>e===j.HORIZONTAL?j.VERTICAL:j.HORIZONTAL;const ne=(e,t)=>{const i=t===j.VERTICAL?e.box.width:e.box.height;return function(e){return!!e.children}(e)?{type:"branch",data:e.children.map((e=>ne(e,ie(t)))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class se{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=Q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof Y&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=ee(e.element),[n,s]=this.getNode(i);if(!(s instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n=0;n--){const s=i.children[n];s instanceof X?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=ee(e.element)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,n=i===j.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,n),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,n]=this.getNode(t);if(!(n instanceof X))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ie(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new X(r,t,n,e.size)}return o}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=K(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new Y(ie(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Q(t,t.orthogonalSize,t.size),Z.Distribute,0)}else this._root.addChild(e,Z.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const n={height:e.height,width:e.width};if(e instanceof X)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let o=0;o-1;s--){const n=i[s],o=e[s]||0;if(t?o-1>-1:o+1h.getChildSize(t)));if(h.removeChild(l,t).dispose(),a instanceof Y){u.splice(l,1,...a.children.map((e=>e.size)));for(let e=0;e0;)a.removeChild(0)}else{const e=new X(a.view,ie(a.orientation),a.size),t=c?a.orthogonalSize:Z.Invisible(a.orthogonalSize);h.addChild(e,t,l)}a.dispose();for(let m=0;m=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,i)}}const oe=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class re extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t){void 0===t&&(t=!1),super(),this._disableResizing=t,this._element=e,this.addDisposables(b(this._element,(e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const ae=M();function he(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class de extends re{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map((e=>e.value))}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=ae.next(),this._groups=new Map,this._onDidRemove=new v,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new v,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new v,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new f,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new f,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new se(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange((e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})})),this.gridview.onDidViewVisibilityChange((()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire())),this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.layout(this.width,this.height,!0)})),l.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),d.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)((()=>{this._bufferOnDidLayoutChange.fire()})),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(ee(e.element))}updateOptions(e){var t,i,n,s;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t,i){void 0===t&&(t=[0]),this.gridview.addView(e,null!=i?i:Z.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),n=this.gridview.remove(e,Z.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return n}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class le{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class pe{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ce{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPanel(){return this.component.onDidAddGroup}get onDidRemovePanel(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActiveGroupChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get panels(){return this.component.groups}get orientation(){return this.component.orientation}set orientation(e){this.component.updateOptions({orientation:e})}constructor(e){this.component=e}focus(){this.component.focus()}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e,t){this.component.removePanel(e,t)}movePanel(e,t){this.component.movePanel(e,t)}getPanel(e){return this.component.getPanel(e)}fromJSON(e){return this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ue{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}get panels(){return this.component.panels}get groups(){return this.component.groups}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e){this.component.removePanel(e)}addGroup(e){return this.component.addGroup(e)}closeAllGroups(){return this.component.closeAllGroups()}removeGroup(e){this.component.removeGroup(e)}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.addFloatingGroup(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}moveToNext(e){this.component.moveToNext(e)}moveToPrevious(e){this.component.moveToPrevious(e)}maximizeGroup(e){this.component.maximizeGroup(e.group)}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.exitMaximizedGroup()}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.addPopoutGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me extends w{constructor(e,t){super(),this.el=e,this.disabled=t,this.dataDisposable=new _,this.pointerEventsDisposable=new _,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this.addDisposables(this._onDragStart,this.dataDisposable,this.pointerEventsDisposable),this.configure()}setDisabled(e){this.disabled=e}isCancelled(e){return!1}configure(){this.addDisposables(this._onDragStart,g(this.el,"dragstart",(e=>{if(e.defaultPrevented||this.isCancelled(e)||this.disabled)return void e.preventDefault();const t=G();if(this.pointerEventsDisposable.value={dispose:()=>{t.release()}},this.el.classList.add("dv-dragged"),setTimeout((()=>this.el.classList.remove("dv-dragged")),0),this.dataDisposable.value=this.getData(e),this._onDragStart.fire(e),e.dataTransfer){e.dataTransfer.effectAllowed="move";e.dataTransfer.items.length>0||e.dataTransfer.setData("text/plain","")}})),g(this.el,"dragend",(()=>{this.pointerEventsDisposable.dispose(),setTimeout((()=>{this.dataDisposable.dispose()}),0)})))}}class ve extends w{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(g(this.element,"dragenter",(e=>{this.onDragEnter(e)}),!0)),this.addDisposables(g(this.element,"dragover",(e=>{this.onDragOver(e)}),!0)),this.addDisposables(g(this.element,"dragleave",(e=>{this.onDragLeave(e)}))),this.addDisposables(g(this.element,"dragend",(e=>{this.onDragEnd(e)}))),this.addDisposables(g(this.element,"drop",(e=>{this.onDrop(e)})))}}class ge extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}constructor(e){super(),this.options=e}}function fe(e){switch(e){case"above":return"top";case"below":return"bottom";case"left":return"left";case"right":return"right";case"within":return"center";default:throw new Error(`invalid direction '${e}'`)}}function we(e){switch(e){case"top":return"above";case"bottom":return"below";case"left":return"left";case"right":return"right";case"center":return"within";default:throw new Error(`invalid position '${e}'`)}}const _e={value:20,type:"percentage"},De={value:50,type:"percentage"};class be extends w{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new ve(this.element,{onDragEnter:()=>{var e,t,i;null===(i=null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||void 0===i||i.getElements()},onDragOver:e=>{var t,i,n,s,o,r,a;be.ACTUAL_TARGET=this;const h=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);if(0===this._acceptedTargetZonesSet.size){if(h)return;return void this.removeDropTarget()}const d=null!==(o=null===(s=(n=this.options).getOverlayOutline)||void 0===s?void 0:s.call(n))&&void 0!==o?o:this.element,l=d.offsetWidth,p=d.offsetHeight;if(0===l||0===p)return;const c=e.currentTarget.getBoundingClientRect(),u=(null!==(r=e.clientX)&&void 0!==r?r:0)-c.left,m=(null!==(a=e.clientY)&&void 0!==a?a:0)-c.top,v=this.calculateQuadrant(this._acceptedTargetZonesSet,u,m,l,p);if(this.isAlreadyUsed(e)||null===v)return void this.removeDropTarget();if(!this.options.canDisplayOverlay(e,v)){if(h)return;return void this.removeDropTarget()}const g=new ge({nativeEvent:e,position:v});this._onWillShowOverlay.fire(g),g.defaultPrevented?this.removeDropTarget():(this.markAsUsed(e),h||this.targetElement||(this.targetElement=document.createElement("div"),this.targetElement.className="dv-drop-target-dropzone",this.overlayElement=document.createElement("div"),this.overlayElement.className="dv-drop-target-selection",this._state="center",this.targetElement.appendChild(this.overlayElement),d.classList.add("dv-drop-target"),d.append(this.targetElement)),this.toggleClasses(v,l,p),this._state=v)},onDragLeave:()=>{var e,t;(null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||this.removeDropTarget()},onDragEnd:e=>{var t,i;const n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);n&&be.ACTUAL_TARGET===this&&this._state&&(e.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:e})),this.removeDropTarget(),null==n||n.clear()},onDrop:e=>{var t,i,n;e.preventDefault();const s=this._state;this.removeDropTarget(),null===(n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t))||void 0===n||n.clear(),s&&(e.stopPropagation(),this._onDrop.fire({position:s,nativeEvent:e}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(e){e[be.USED_EVENT_ID]=!0}isAlreadyUsed(e){const t=e[be.USED_EVENT_ID];return"boolean"==typeof t&&t}toggleClasses(e,t,i){var n,s,o,r,a,h,d;const l=null===(s=(n=this.options).getOverrideTarget)||void 0===s?void 0:s.call(n);if(!l&&!this.overlayElement)return;const p=t<100,c=i<100,u="left"===e,m="right"===e,v="top"===e,g="bottom"===e,f=!p&&m,w=!p&&u,_=!c&&v,D=!c&&g;let b=1;const C=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.size)&&void 0!==r?r:De;if("percentage"===C.type?b=R(C.value,0,100)/100:((f||w)&&(b=R(0,C.value,t)/t),(_||D)&&(b=R(0,C.value,i)/i)),l){const n=null!==(d=null===(h=(a=this.options).getOverlayOutline)||void 0===h?void 0:h.call(a))&&void 0!==d?d:this.element,s=n.getBoundingClientRect(),o=l.getElements(void 0,n),r=o.root,c=o.overlay,C=r.getBoundingClientRect(),y=s.top-C.top,S=s.left-C.left,A={top:y,left:S,width:t,height:i};if(f?(A.left=S+t*(1-b),A.width=t*b):w?A.width=t*b:_?A.height=i*b:D&&(A.top=y+i*(1-b),A.height=i*b),p&&u&&(A.width=4),p&&m&&(A.left=S+t-4,A.width=4),!function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;return e.style.top!==r||e.style.left!==a||e.style.width!==h||e.style.height!==d}(c,A))return;return function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;e.style.top=r,e.style.left=a,e.style.width=h,e.style.height=d,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(c,A),c.className="dv-drop-target-anchor"+(this.options.className?` ${this.options.className}`:""),x(c,"dv-drop-target-left",u),x(c,"dv-drop-target-right",m),x(c,"dv-drop-target-top",v),x(c,"dv-drop-target-bottom",g),x(c,"dv-drop-target-center","center"===e),void(o.changed&&(x(c,"dv-drop-target-anchor-container-changed",!0),setTimeout((()=>{x(c,"dv-drop-target-anchor-container-changed",!1)}),10)))}if(!this.overlayElement)return;const y={top:"0px",left:"0px",width:"100%",height:"100%"};f?(y.left=100*(1-b)+"%",y.width=100*b+"%"):w?y.width=100*b+"%":_?y.height=100*b+"%":D&&(y.top=100*(1-b)+"%",y.height=100*b+"%"),function(e,t){const{top:i,left:n,width:s,height:o}=t;e.style.top=i,e.style.left=n,e.style.width=s,e.style.height=o,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(this.overlayElement,y),x(this.overlayElement,"dv-drop-target-small-vertical",c),x(this.overlayElement,"dv-drop-target-small-horizontal",p),x(this.overlayElement,"dv-drop-target-left",u),x(this.overlayElement,"dv-drop-target-right",m),x(this.overlayElement,"dv-drop-target-top",v),x(this.overlayElement,"dv-drop-target-bottom",g),x(this.overlayElement,"dv-drop-target-center","center"===e)}calculateQuadrant(e,t,i,n,s){var o,r;const a=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.activationSize)&&void 0!==r?r:_e;return"percentage"===a.type?function(e,t,i,n,s,o){const r=100*t/n,a=100*i/s;if(e.has("left")&&r100-o)return"right";if(e.has("top")&&a100-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value):function(e,t,i,n,s,o){if(e.has("left")&&tn-o)return"right";if(e.has("top")&&is-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value)}removeDropTarget(){var e;this.targetElement&&(this._state=void 0,null===(e=this.targetElement.parentElement)||void 0===e||e.classList.remove("dv-drop-target"),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0)}}be.USED_EVENT_ID="__dockview_droptarget_event_is_used__";const Ce=(()=>{const e={disableAutoResizing:void 0,disableDnd:void 0,className:void 0};return Object.keys(e)})();class ye extends c{constructor(e,t,i,n){super(),this.nativeEvent=e,this.position=t,this.getData=i,this.panel=n}}class xe extends p{constructor(){super()}}class Se extends w{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new _,this._onDidDimensionChange=new v,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new v,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new v,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new v,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new v,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new v,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange((e=>{this._isFocused=e.isFocused})),this.onDidActiveChange((e=>{this._isActive=e.isActive})),this.onDidVisibilityChange((e=>{this._isVisible=e.isVisible})),this.onDidDimensionsChange((e=>{this._width=e.width,this._height=e.height})),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event((t=>{this._parameters=t,e.update({params:t})}))}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}}class Ae extends Se{constructor(e,t){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v({replay:!0}),this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class ze extends Ae{set pane(e){this._pane=e}constructor(e,t){super(e,t),this._onDidExpansionChange=new v({replay:!0}),this.onDidExpansionChange=this._onDidExpansionChange.event,this._onMouseEnter=new v({}),this.onMouseEnter=this._onMouseEnter.event,this._onMouseLeave=new v({}),this.onMouseLeave=this._onMouseLeave.event,this.addDisposables(this._onDidExpansionChange,this._onMouseEnter,this._onMouseLeave)}setExpanded(e){var t;null===(t=this._pane)||void 0===t||t.setExpanded(e)}get isExpanded(){var e;return!!(null===(e=this._pane)||void 0===e?void 0:e.isExpanded())}}class Pe extends w{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){var e;return null===(e=this._params)||void 0===e?void 0:e.params}constructor(e,t,i){super(),this.id=e,this.component=t,this.api=i,this._height=0,this._width=0,this._element=document.createElement("div"),this._element.tabIndex=-1,this._element.style.outline="none",this._element.style.height="100%",this._element.style.width="100%",this._element.style.overflow="hidden";const n=A(this._element);this.addDisposables(this.api,n.onDidFocus((()=>{this.api._onDidChangeFocus.fire({isFocused:!0})})),n.onDidBlur((()=>{this.api._onDidChangeFocus.fire({isFocused:!1})})),n)}focus(){const e=new xe;this.api._onWillFocus.fire(e),e.defaultPrevented||this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t,i;this._params=Object.assign(Object.assign({},this._params),{params:Object.assign(Object.assign({},null===(t=this._params)||void 0===t?void 0:t.params),e.params)});for(const n of Object.keys(e.params))void 0===e.params[n]&&delete this._params.params[n];null===(i=this.part)||void 0===i||i.update({params:this._params.params})}toJSON(){var e,t;const i=null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{};return{id:this.id,component:this.component,params:Object.keys(i).length>0?i:void 0}}dispose(){var e;this.api.dispose(),null===(e=this.part)||void 0===e||e.dispose(),super.dispose()}}class Ee extends Pe{set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){return this.headerSize+(this.isExpanded()?this._minimumBodySize:0)}get maximumSize(){return this.headerSize+(this.isExpanded()?this._maximumBodySize:0)}get size(){return this._size}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get minimumBodySize(){return this._minimumBodySize}set minimumBodySize(e){this._minimumBodySize="number"==typeof e?e:0}get maximumBodySize(){return this._maximumBodySize}set maximumBodySize(e){this._maximumBodySize="number"==typeof e?e:Number.POSITIVE_INFINITY}get headerVisible(){return this._headerVisible}set headerVisible(e){this._headerVisible=e,this.header.style.display=e?"":"none"}constructor(e){super(e.id,e.component,new ze(e.id,e.component)),this._onDidChangeExpansionState=new v({replay:!0}),this.onDidChangeExpansionState=this._onDidChangeExpansionState.event,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=0,this._size=0,this._isExpanded=!1,this.api.pane=this,this.api.initialize(this),this.headerSize=e.headerSize,this.headerComponent=e.headerComponent,this._minimumBodySize=e.minimumBodySize,this._maximumBodySize=e.maximumBodySize,this._isExpanded=e.isExpanded,this._headerVisible=e.isHeaderVisible,this._onDidChangeExpansionState.fire(this.isExpanded()),this._orientation=e.orientation,this.element.classList.add("dv-pane"),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})),g(this.element,"mouseenter",(e=>{this.api._onMouseEnter.fire(e)})),g(this.element,"mouseleave",(e=>{this.api._onMouseLeave.fire(e)}))),this.addDisposables(this._onDidChangeExpansionState,this.onDidChangeExpansionState((e=>{this.api._onDidExpansionChange.fire({isExpanded:e})})),this.api.onDidFocusChange((e=>{this.header&&(e.isFocused?y(this.header,"focused"):C(this.header,"focused"))}))),this.renderOnce()}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}isExpanded(){return this._isExpanded}setExpanded(e){this._isExpanded!==e&&(this._isExpanded=e,e?(this.animationTimer&&clearTimeout(this.animationTimer),this.body&&this.element.appendChild(this.body)):this.animationTimer=setTimeout((()=>{var e;null===(e=this.body)||void 0===e||e.remove()}),200),this._onDidChange.fire(e?{size:this.width}:{}),this._onDidChangeExpansionState.fire(e))}layout(e,t){this._size=e,this._orthogonalSize=t;const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){var t,i;super.init(e),"number"==typeof e.minimumBodySize&&(this.minimumBodySize=e.minimumBodySize),"number"==typeof e.maximumBodySize&&(this.maximumBodySize=e.maximumBodySize),this.bodyPart=this.getBodyComponent(),this.headerPart=this.getHeaderComponent(),this.bodyPart.init(Object.assign(Object.assign({},e),{api:this.api})),this.headerPart.init(Object.assign(Object.assign({},e),{api:this.api})),null===(t=this.body)||void 0===t||t.append(this.bodyPart.element),null===(i=this.header)||void 0===i||i.append(this.headerPart.element),"boolean"==typeof e.isExpanded&&this.setExpanded(e.isExpanded)}toJSON(){const e=this._params;return Object.assign(Object.assign({},super.toJSON()),{headerComponent:this.headerComponent,title:e.title})}renderOnce(){this.header=document.createElement("div"),this.header.tabIndex=0,this.header.className="dv-pane-header",this.header.style.height=`${this.headerSize}px`,this.header.style.lineHeight=`${this.headerSize}px`,this.header.style.minHeight=`${this.headerSize}px`,this.header.style.maxHeight=`${this.headerSize}px`,this.element.appendChild(this.header),this.body=document.createElement("div"),this.body.className="dv-pane-body",this.element.appendChild(this.body)}getComponent(){return{update:e=>{var t,i;null===(t=this.bodyPart)||void 0===t||t.update({params:e}),null===(i=this.headerPart)||void 0===i||i.update({params:e})},dispose:()=>{var e,t;null===(e=this.bodyPart)||void 0===e||e.dispose(),null===(t=this.headerPart)||void 0===t||t.dispose()}}}}class Oe extends Ee{constructor(e){super({id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,isHeaderVisible:!0,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.accessor=e.accessor,this.addDisposables(this._onDidDrop,this._onUnhandledDragOverEvent),e.disableDnd||this.initDragFeatures()}initDragFeatures(){if(!this.header)return;const e=this.id,t=this.accessor.id;this.header.draggable=!0,this.handler=new class extends me{getData(){return r.getInstance().setData([new o(t,e)],o.prototype),{dispose:()=>{r.getInstance().clearData(o.prototype)}}}}(this.header),this.target=new be(this.element,{acceptedTargetZones:["top","bottom"],overlayModel:{activationSize:{type:"percentage",value:50}},canDisplayOverlay:(e,t)=>{const i=h();if(i&&i.paneId!==this.id&&i.viewId===this.accessor.id)return!0;const n=new ye(e,t,h,this);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}}),this.addDisposables(this._onDidDrop,this.handler,this.target,this.target.onDrop((e=>{this.onDrop(e)})))}onDrop(e){const t=h();if(!t||t.viewId!==this.accessor.id)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,api:new pe(this.accessor),getData:h}));const i=this._params.containerApi,n=t.paneId,s=i.getPanel(n);if(!s)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,getData:h,api:new pe(this.accessor)}));const o=i.panels,r=o.indexOf(s);let a=i.panels.indexOf(this);"left"!==e.position&&"top"!==e.position||(a=Math.max(0,a-1)),"right"!==e.position&&"bottom"!==e.position||(r>a&&a++,a=Math.min(o.length-1,a)),i.movePanel(r,a)}}class Ge extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this.disposable=new _,this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-content-container",this._element.tabIndex=-1,this.addDisposables(this._onDidFocus,this._onDidBlur);const i=t.dropTargetContainer;this.dropTarget=new be(this.element,{getOverlayOutline:()=>{var t;return"group"===(null===(t=e.options.theme)||void 0===t?void 0:t.dndPanelOverlay)?this.element.parentElement:null},className:"dv-drop-target-content",acceptedTargetZones:["top","bottom","left","right","center"],canDisplayOverlay:(e,t)=>{if("no-drop-target"===this.group.locked||this.group.locked&&"center"===t)return!1;const i=a();return!(!i&&e.shiftKey&&"floating"!==this.group.location.type)&&(!(!i||i.viewId!==this.accessor.id)||this.group.canDisplayOverlay(e,t,"content"))},getOverrideTarget:i?()=>i.model:void 0}),this.addDisposables(this.dropTarget)}show(){this.element.style.display=""}hide(){this.element.style.display="none"}renderPanel(e,t){void 0===t&&(t={asActive:!0});const i=t.asActive||this.panel&&this.group.isPanelActive(this.panel);let n;switch(this.panel&&this.panel.view.content.element.parentElement===this._element&&this._element.removeChild(this.panel.view.content.element),this.panel=e,e.api.renderer){case"onlyWhenVisible":this.group.renderContainer.detatch(e),this.panel&&i&&this._element.appendChild(this.panel.view.content.element),n=this._element;break;case"always":e.view.content.element.parentElement===this._element&&this._element.removeChild(e.view.content.element),n=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw new Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(i){const e=A(n),t=new w;t.addDisposables(e,e.onDidFocus((()=>this._onDidFocus.fire())),e.onDidBlur((()=>this._onDidBlur.fire()))),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){var e;this.panel&&"onlyWhenVisible"===this.panel.api.renderer&&(null===(e=this.panel.view.content.element.parentElement)||void 0===e||e.removeChild(this.panel.view.content.element)),this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}}function Ie(e,t,i){var n,s;y(t,"dv-dragged"),t.style.top="-9999px",document.body.appendChild(t),e.setDragImage(t,null!==(n=null==i?void 0:i.x)&&void 0!==n?n:0,null!==(s=null==i?void 0:i.y)&&void 0!==s?s:0),setTimeout((()=>{C(t,"dv-dragged"),t.remove()}),0)}class Ne extends me{constructor(e,t,i,n,s){super(e,s),this.accessor=t,this.group=i,this.panel=n,this.panelTransfer=r.getInstance()}getData(e){return this.panelTransfer.setData([new s(this.accessor.id,this.group.id,this.panel.id)],s.prototype),{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Ve extends w{get element(){return this._element}constructor(e,t,i){super(),this.panel=e,this.accessor=t,this.group=i,this.content=void 0,this._onPointDown=new v,this.onPointerDown=this._onPointDown.event,this._onDropped=new v,this.onDrop=this._onDropped.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-tab",this._element.tabIndex=0,this._element.draggable=!this.accessor.options.disableDnd,x(this.element,"dv-inactive-tab",!0),this.dragHandler=new Ne(this._element,this.accessor,this.group,this.panel,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["left","right"],overlayModel:{activationSize:{value:50,type:"percentage"}},canDisplayOverlay:(e,t)=>{if(this.group.locked)return!1;const i=a();return!(!i||this.accessor.id!==i.viewId)||this.group.model.canDisplayOverlay(e,t,"tab")},getOverrideTarget:()=>{var e;return null===(e=i.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this._onPointDown,this._onDropped,this._onDragStart,this.dragHandler.onDragStart((e=>{if(e.dataTransfer){const t=getComputedStyle(this.element),i=this.element.cloneNode(!0);Array.from(t).forEach((e=>i.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e)))),i.style.position="absolute",Ie(e.dataTransfer,i,{y:-10,x:30})}this._onDragStart.fire(e)})),this.dragHandler,g(this._element,"pointerdown",(e=>{this._onPointDown.fire(e)})),this.dropTarget.onDrop((e=>{this._onDropped.fire(e)})),this.dropTarget)}setActive(e){x(this.element,"dv-active-tab",e),x(this.element,"dv-inactive-tab",!e)}setContent(e){this.content&&this._element.removeChild(this.content.element),this.content=e,this._element.appendChild(this.content.element)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,this.dragHandler.setDisabled(!!this.accessor.options.disableDnd)}dispose(){super.dispose()}}class Te{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}}class ke extends me{constructor(e,t,i,n){super(e,n),this.accessor=t,this.group=i,this.panelTransfer=r.getInstance(),this.addDisposables(g(e,"pointerdown",(e=>{e.shiftKey&&(e[P]=!0)}),!0))}isCancelled(e){return"floating"===this.group.api.location.type&&!e.shiftKey}getData(e){const t=e.dataTransfer;this.panelTransfer.setData([new s(this.accessor.id,this.group.id,null)],s.prototype);const i=window.getComputedStyle(this.el),n=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-background-color"),o=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-color");if(t){const e=document.createElement("div");e.style.backgroundColor=n,e.style.color=o,e.style.padding="2px 8px",e.style.height="24px",e.style.fontSize="11px",e.style.lineHeight="20px",e.style.borderRadius="12px",e.style.position="absolute",e.style.pointerEvents="none",e.style.top="-9999px",e.textContent=`Multiple Panels (${this.group.size})`,Ie(t,e,{y:-10,x:30})}return{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Le extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-void-container",this._element.draggable=!this.accessor.options.disableDnd,x(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.addDisposables(this._onDrop,this._onDragStart,g(this._element,"pointerdown",(()=>{this.accessor.doSetGroupActive(this.group)}))),this.handler=new ke(this._element,e,t,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["center"],canDisplayOverlay:(e,i)=>{const n=a();return!(!n||this.accessor.id!==n.viewId)||t.model.canDisplayOverlay(e,i,"header_space")},getOverrideTarget:()=>{var e;return null===(e=t.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this.handler,this.handler.onDragStart((e=>{this._onDragStart.fire(e)})),this.dropTarget.onDrop((e=>{this._onDrop.fire(e)})),this.dropTarget)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,x(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.handler.setDisabled(!!this.accessor.options.disableDnd)}}class Re extends w{get element(){return this._element}constructor(e){super(),this.scrollableElement=e,this._scrollLeft=0,this._element=document.createElement("div"),this._element.className="dv-scrollable",this._horizontalScrollbar=document.createElement("div"),this._horizontalScrollbar.className="dv-scrollbar-horizontal",this.element.appendChild(e),this.element.appendChild(this._horizontalScrollbar),this.addDisposables(g(this.element,"wheel",(e=>{this._scrollLeft+=e.deltaY*Re.MouseWheelSpeed,this.calculateScrollbarStyles()})),g(this._horizontalScrollbar,"pointerdown",(e=>{e.preventDefault(),x(this.element,"dv-scrollable-scrolling",!0);const t=e.clientX,i=this._scrollLeft,n=e=>{const n=e.clientX-t,{clientWidth:s}=this.element,{scrollWidth:o}=this.scrollableElement,r=s/o;this._scrollLeft=i+n/r,this.calculateScrollbarStyles()},s=()=>{x(this.element,"dv-scrollable-scrolling",!1),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",s),document.removeEventListener("pointercancel",s)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",s),document.addEventListener("pointercancel",s)})),g(this.element,"scroll",(()=>{this.calculateScrollbarStyles()})),g(this.scrollableElement,"scroll",(()=>{this._scrollLeft=this.scrollableElement.scrollLeft,this.calculateScrollbarStyles()})),b(this.element,(()=>{x(this.element,"dv-scrollable-resizing",!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout((()=>{clearTimeout(this._animationTimer),x(this.element,"dv-scrollable-resizing",!1)}),500),this.calculateScrollbarStyles()})))}calculateScrollbarStyles(){const{clientWidth:e}=this.element,{scrollWidth:t}=this.scrollableElement;if(t>e){const i=e*(e/t);this._horizontalScrollbar.style.width=`${i}px`,this._scrollLeft=R(this._scrollLeft,0,this.scrollableElement.scrollWidth-e),this.scrollableElement.scrollLeft=this._scrollLeft;const n=this._scrollLeft/(t-e);this._horizontalScrollbar.style.left=(e-i)*n+"px"}else this._horizontalScrollbar.style.width="0px",this._horizontalScrollbar.style.left="0px",this._scrollLeft=0}}Re.MouseWheelSpeed=1;class Me extends w{get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e&&(this._showTabsOverflowControl=e,e)){const e=new D(this._tabsList);this._observerDisposable.value=new w(e,e.onDidChange((e=>{const t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t})})),g(this._tabsList,"scroll",(()=>{this.toggleDropdown({reset:!1})})))}}get element(){return this._element}get panels(){return this._tabs.map((e=>e.value.panel.id))}get size(){return this._tabs.length}get tabs(){return this._tabs.map((e=>e.value))}constructor(e,t,i){if(super(),this.group=e,this.accessor=t,this._observerDisposable=new _,this._tabs=[],this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new v,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement("div"),this._tabsList.className="dv-tabs-container dv-horizontal",this.showTabsOverflowControl=i.showTabsOverflowControl,"native"===t.options.scrollbars)this._element=this._tabsList;else{const e=new Re(this._tabsList);this._element=e.element,this.addDisposables(e)}this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,g(this.element,"pointerdown",(e=>{if(e.defaultPrevented)return;0===e.button&&this.accessor.doSetGroupActive(this.group)})),l.from((()=>{for(const{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[]})))}indexOf(e){return this._tabs.findIndex((t=>t.value.panel.id===e))}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}setActivePanel(e){let t=0;for(const i of this._tabs){const n=e.id===i.value.panel.id;if(i.value.setActive(n),n){const e=i.value.element,n=e.parentElement;(tn.scrollLeft+n.clientWidth)&&(n.scrollLeft=t)}t+=i.value.element.clientWidth}}openPanel(e,t){if(void 0===t&&(t=this._tabs.length),this._tabs.find((t=>t.value.panel.id===e.id)))return;const i=new Ve(e,this.accessor,this.group);i.setContent(e.view.tab);const n=new w(i.onDragStart((t=>{this._onTabDragStart.fire({nativeEvent:t,panel:e})})),i.onPointerDown((t=>{if(t.defaultPrevented)return;const n=!this.accessor.options.disableFloatingGroups,s="floating"===this.group.api.location.type&&1===this.size;if(n&&!s&&t.shiftKey){t.preventDefault();const e=this.accessor.getGroupPanel(i.panel.id),{top:n,left:s}=i.element.getBoundingClientRect(),{top:o,left:r}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:s-r,y:n-o,inDragMode:!0})}else if(0===t.button)this.group.activePanel!==e&&this.group.model.openPanel(e)})),i.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this._tabs.findIndex((e=>e.value===i))})})),i.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"tab",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))}))),s={value:i,disposable:n};this.addTab(s,t)}delete(e){const t=this.indexOf(e),i=this._tabs.splice(t,1)[0],{value:n,disposable:s}=i;s.dispose(),n.dispose(),n.element.remove()}addTab(e,t){if(void 0===t&&(t=this._tabs.length),t<0||t>this._tabs.length)throw new Error("invalid location");this._tabsList.insertBefore(e.value.element,this._tabsList.children[t]),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){const t=e.reset?[]:this._tabs.filter((e=>!function(e,t){const i=O(e),n=O(t);return!(i.leftn.left+n.width)}(e.value.element,this._tabsList))).map((e=>e.value.panel.id));this._onOverflowTabsChange.fire({tabs:t,reset:e.reset})}updateDragAndDropState(){for(const e of this._tabs)e.value.updateDragAndDropState()}}const We=e=>{const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"height",e.height),t.setAttributeNS(null,"width",e.width),t.setAttributeNS(null,"viewBox",e.viewbox),t.setAttributeNS(null,"aria-hidden","false"),t.setAttributeNS(null,"focusable","false"),t.classList.add("dv-svg");const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d",e.path),t.appendChild(i),t},He=()=>We({width:"11",height:"11",viewbox:"0 0 15 25",path:"M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z"});class je extends w{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?"none":""}get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this.dropdownPart=null,this._overflowTabs=[],this._dropdownDisposable=new _,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement("div"),this._element.className="dv-tabs-and-actions-container",x(this._element,"dv-full-width-single-tab","fullwidth"===this.accessor.options.singleTabMode),this.rightActionsContainer=document.createElement("div"),this.rightActionsContainer.className="dv-right-actions-container",this.leftActionsContainer=document.createElement("div"),this.leftActionsContainer.className="dv-left-actions-container",this.preActionsContainer=document.createElement("div"),this.preActionsContainer.className="dv-pre-actions-container",this.tabs=new Me(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new Le(this.accessor,this.group),this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.addDisposables(this.tabs.onDrop((e=>this._onDrop.fire(e))),this.tabs.onWillShowOverlay((e=>this._onWillShowOverlay.fire(e))),e.onDidOptionsChange((()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList})),this.tabs.onOverflowTabsChange((e=>{this.toggleDropdown(e)})),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart((e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})})),this.voidContainer.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})})),this.voidContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"header_space",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))})),g(this.voidContainer.element,"pointerdown",(e=>{if(e.defaultPrevented)return;if(!this.accessor.options.disableFloatingGroups&&e.shiftKey&&"floating"!==this.group.api.location.type){e.preventDefault();const{top:t,left:i}=this.element.getBoundingClientRect(),{top:n,left:s}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:i-s+20,y:t-n+20,inDragMode:!0})}})))}show(){this.hidden||(this.element.style.display="")}hide(){this._element.style.display="none"}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&(this.rightActions.remove(),this.rightActions=void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&(this.leftActions.remove(),this.leftActions=void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&(this.preActions.remove(),this.preActions=void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}openPanel(e,t){void 0===t&&(t=this.tabs.size),this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}updateClassnames(){x(this._element,"dv-single-tab",1===this.size)}toggleDropdown(e){const t=e.reset?[]:e.tabs;if(this._overflowTabs=t,this._overflowTabs.length>0&&this.dropdownPart)return void this.dropdownPart.update({tabs:t.length});if(0===this._overflowTabs.length)return void this._dropdownDisposable.dispose();const i=document.createElement("div");i.className="dv-tabs-overflow-dropdown-root";const n=function(){const e=document.createElement("div");e.className="dv-tabs-overflow-dropdown-default";const t=document.createElement("span");t.textContent="";const i=He();return e.appendChild(i),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}();n.update({tabs:t.length}),this.dropdownPart=n,i.appendChild(n.element),this.rightActionsContainer.prepend(i),this._dropdownDisposable.value=new w(l.from((()=>{var e,t;i.remove(),null===(t=null===(e=this.dropdownPart)||void 0===e?void 0:e.dispose)||void 0===t||t.call(e),this.dropdownPart=null})),g(i,"pointerdown",(e=>{e.preventDefault()}),{capture:!0}),g(i,"click",(e=>{const t=document.createElement("div");t.style.overflow="auto",t.className="dv-tabs-overflow-container";for(const i of this.tabs.tabs.filter((e=>this._overflowTabs.includes(e.panel.id)))){const e=this.group.panels.find((e=>e===i.panel)),n=e.view.createTabRenderer("headerOverflow").element,s=document.createElement("div");x(s,"dv-tab",!0),x(s,"dv-active-tab",e.api.isActive),x(s,"dv-inactive-tab",!e.api.isActive),s.addEventListener("click",(e=>{this.accessor.popupService.close(),e.defaultPrevented||(i.element.scrollIntoView(),i.panel.api.setActive())})),s.appendChild(n),t.appendChild(s)}const n=function(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}(i);this.accessor.popupService.openPopover(t,{x:e.clientX,y:e.clientY,zIndex:(null==n?void 0:n.style.zIndex)?`calc(${n.style.zIndex} * 2)`:void 0})})))}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}}class Fe extends c{constructor(e,t,i,n,s){super(),this.nativeEvent=e,this.target=t,this.position=i,this.getData=n,this.group=s}}const Be=(()=>{const e={disableAutoResizing:void 0,hideBorders:void 0,singleTabMode:void 0,disableFloatingGroups:void 0,floatingGroupBounds:void 0,popoutUrl:void 0,defaultRenderer:void 0,debug:void 0,rootOverlayModel:void 0,locked:void 0,disableDnd:void 0,className:void 0,noPanelsOverlay:void 0,dndEdges:void 0,theme:void 0,disableTabsOverflowList:void 0,scrollbars:void 0};return Object.keys(e)})();class Ze extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}}class Ue extends Ze{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}}class Je extends w{get element(){throw new Error("dockview: not supported")}get activePanel(){return this._activePanel}get locked(){return this._locked}set locked(e){this._locked=e,x(this.container,"dv-locked-groupview","no-drop-target"===e||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return 0===this._panels.length}get hasWatermark(){return!(!this.watermark||!this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get isContentFocused(){return!!document.activeElement&&S(document.activeElement,this.contentContainer.element)}get location(){return this._location}set location(e){switch(this._location=e,x(this.container,"dv-groupview-floating",!1),x(this.container,"dv-groupview-popout",!1),e.type){case"grid":this.contentContainer.dropTarget.setTargetZones(["top","bottom","left","right","center"]);break;case"floating":this.contentContainer.dropTarget.setTargetZones(["center"]),this.contentContainer.dropTarget.setTargetZones(e?["center"]:["top","bottom","left","right","center"]),x(this.container,"dv-groupview-floating",!0);break;case"popout":this.contentContainer.dropTarget.setTargetZones(["center"]),x(this.container,"dv-groupview-popout",!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,i,n,s){var o;super(),this.container=e,this.accessor=t,this.id=i,this.options=n,this.groupPanel=s,this._isGroupActive=!1,this._locked=!1,this._location={type:"grid"},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._onMove=new v,this.onMove=this._onMove.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new v,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new v,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,x(this.container,"dv-groupview",!0),this._api=new ue(this.accessor),this.tabsContainer=new je(this.accessor,this.groupPanel),this.contentContainer=new Ge(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!n.hideHeader,this.locked=null!==(o=n.locked)&&void 0!==o&&o,this.addDisposables(this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart((e=>{this._onTabDragStart.fire(e)})),this.tabsContainer.onGroupDragStart((e=>{this._onGroupDragStart.fire(e)})),this.tabsContainer.onDrop((e=>{this.handleDropEvent("header",e.event,"center",e.index)})),this.contentContainer.onDidFocus((()=>{this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.onDidBlur((()=>{})),this.contentContainer.dropTarget.onDrop((e=>{this.handleDropEvent("content",e.nativeEvent,e.position)})),this.tabsContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(e)})),this.contentContainer.dropTarget.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"content",panel:this.activePanel,api:this._api,group:this.groupPanel,getData:a}))})),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOverEvent,this._onDidPanelTitleChange,this._onDidPanelParametersChange)}focusContent(){this.contentContainer.element.focus()}set renderContainer(e){this.panels.forEach((e=>{this.renderContainer.detatch(e)})),this._overwriteRenderContainer=e,this.panels.forEach((e=>{this.rerender(e)}))}get renderContainer(){var e;return null!==(e=this._overwriteRenderContainer)&&void 0!==e?e:this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){var e;return null!==(e=this._overwriteDropTargetContainer)&&void 0!==e?e:this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach((e=>{this.doAddPanel(e)})),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.accessor.options.createRightHeaderActionComponent&&(this._rightHeaderActions=this.accessor.options.createRightHeaderActionComponent(this.groupPanel),this.addDisposables(this._rightHeaderActions),this._rightHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element)),this.accessor.options.createLeftHeaderActionComponent&&(this._leftHeaderActions=this.accessor.options.createLeftHeaderActionComponent(this.groupPanel),this.addDisposables(this._leftHeaderActions),this._leftHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element)),this.accessor.options.createPrefixHeaderActionComponent&&(this._prefixHeaderActions=this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel),this.addDisposables(this._prefixHeaderActions),this._prefixHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element))}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){var e;const t={views:this.tabsContainer.panels,activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,id:this.id};return!1!==this.locked&&(t.locked=this.locked),this.header.hidden&&(t.hideHeader=!0),t}moveToNext(e){e||(e={}),e.panel||(e.panel=this.activePanel);const t=e.panel?this.panels.indexOf(e.panel):-1;let i;if(t0)i=t-1;else{if(e.suppressRoll)return;i=this.panels.length-1}this.openPanel(this.panels[i])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}openPanel(e,t){void 0===t&&(t={}),("number"!=typeof t.index||t.index>this.panels.length)&&(t.index=this.panels.length);const i=!!t.skipSetActive;e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:i}),this._activePanel!==e?(i||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()):this.contentContainer.renderPanel(e,{asActive:!0})}removePanel(e,t){void 0===t&&(t={skipSetActive:!1});const i="string"==typeof e?e:e.id,n=this._panels.find((e=>e.id===i));if(!n)throw new Error("invalid operation");return this._removePanel(n,t)}closeAllPanels(){if(this.panels.length>0){const e=[...this.panels];for(const t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){const t=1===this.panels.length&&1===this.accessor.groups.length;this.accessor.removePanel(e,t&&"emptyGroup"===this.accessor.options.noPanelsOverlay?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t){void 0===t&&(t=!1),(t||this.isActive!==e)&&(this._isGroupActive=e,x(this.container,"dv-active-group",e),x(this.container,"dv-inactive-group",!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0&&this.doSetActivePanel(this.panels[0]),this.updateContainer())}layout(e,t){var i;this._width=e,this._height=t,this.contentContainer.layout(this._width,this._height),(null===(i=this._activePanel)||void 0===i?void 0:i.layout)&&this._activePanel.layout(this._width,this._height)}_removePanel(e,t){const i=this._activePanel===e;if(this.doRemovePanel(e),i&&this.panels.length>0){const e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t.skipSetActive,skipSetGroupActive:t.skipSetActiveGroup})}return this._activePanel&&0===this.panels.length&&this.doSetActivePanel(void 0),t.skipSetActive||this.updateContainer(),e}doRemovePanel(e){const t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){const t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}const i=this._panelDisposables.get(e.id);i&&(i.dispose(),this._panelDisposables.delete(e.id)),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t,i){void 0===t&&(t=this.panels.length),void 0===i&&(i={skipSetActive:!1});const n=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),i.skipSetActive||this.contentContainer.openPanel(e),n||(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new w(e.api.onDidTitleChange((e=>this._onDidPanelTitleChange.fire(e))),e.api.onDidParametersChange((e=>this._onDidPanelParametersChange.fire(e))))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){this._activePanel!==e&&(this._activePanel=e,e&&(this.tabsContainer.setActivePanel(e),e.layout(this._width,this._height),this.updateMru(e),this._onDidActivePanelChange.fire({panel:e})))}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){var e,t;if(this.panels.forEach((e=>e.runEvents())),this.isEmpty&&!this.watermark){const e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,g(this.watermark.element,"pointerdown",(()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.element.appendChild(this.watermark.element)}!this.isEmpty&&this.watermark&&(this.watermark.element.remove(),null===(t=(e=this.watermark).dispose)||void 0===t||t.call(e),this.watermark=void 0)}canDisplayOverlay(e,t,i){const n=new Fe(e,i,t,a,this.accessor.getPanel(this.id));return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}handleDropEvent(e,t,i,n){if("no-drop-target"===this.locked)return;const s="number"==typeof n?this.panels[n]:void 0,o=new Ue({nativeEvent:t,position:i,panel:s,getData:()=>a(),kind:function(){switch(e){case"header":return"number"==typeof n?"tab":"header_space";case"content":return"content"}}(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(o),o.defaultPrevented)return;const r=a();if(r&&r.viewId===this.accessor.id){if("content"===e&&r.groupId===this.id){if("center"===i)return;if(null===r.panelId)return}if("header"===e&&r.groupId===this.id&&null===r.panelId)return;if(null===r.panelId){const{groupId:e}=r;return void this._onMove.fire({target:i,groupId:e,index:n})}if(-1!==this.tabsContainer.indexOf(r.panelId)&&1===this.tabsContainer.size)return;const{groupId:t,panelId:s}=r;if(this.id===t&&!i){if(this.tabsContainer.indexOf(s)===n)return}this._onMove.fire({target:i,groupId:r.groupId,itemId:r.panelId,index:n})}else this._onDidDrop.fire(new Ze({nativeEvent:t,position:i,panel:s,getData:()=>a(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,i;super.dispose(),null===(e=this.watermark)||void 0===e||e.element.remove(),null===(i=null===(t=this.watermark)||void 0===t?void 0:t.dispose)||void 0===i||i.call(t),this.watermark=void 0;for(const n of this.panels)n.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}}class $e extends Se{constructor(e,t,i){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),i&&this.initialize(i)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Xe extends Pe{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){const e="function"==typeof this._minimumWidth?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){const e="function"==typeof this._maximumWidth?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){const e="function"==typeof this._minimumHeight?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){const e="function"==typeof this._maximumHeight?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,i,n){super(e,t,null!=n?n:new $e(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=Number.MAX_SAFE_INTEGER,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=Number.MAX_SAFE_INTEGER,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=Number.MAX_SAFE_INTEGER,this._maximumHeight=Number.MAX_SAFE_INTEGER,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,"number"==typeof(null==i?void 0:i.minimumWidth)&&(this._minimumWidth=i.minimumWidth),"number"==typeof(null==i?void 0:i.maximumWidth)&&(this._maximumWidth=i.maximumWidth),"number"==typeof(null==i?void 0:i.minimumHeight)&&(this._minimumHeight=i.minimumHeight),"number"==typeof(null==i?void 0:i.maximumHeight)&&(this._maximumHeight=i.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.doSetGroupActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumWidth&&"function"!=typeof e.minimumWidth||(this._minimumWidth=e.minimumWidth),"number"!=typeof e.minimumHeight&&"function"!=typeof e.minimumHeight||(this._minimumHeight=e.minimumHeight),"number"!=typeof e.maximumWidth&&"function"!=typeof e.maximumWidth||(this._maximumWidth=e.maximumWidth),"number"!=typeof e.maximumHeight&&"function"!=typeof e.maximumHeight||(this._maximumHeight=e.maximumHeight)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({height:e.height,width:e.width})})),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),"boolean"==typeof e.isVisible&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){const e=super.toJSON(),t=e=>e===Number.MAX_SAFE_INTEGER?void 0:e,i=e=>e<=0?void 0:e;return Object.assign(Object.assign({},e),{minimumHeight:i(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:i(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}}const Ye="dockview: DockviewGroupPanelApiImpl not initialized";class qe extends $e{get location(){if(!this._group)throw new Error(Ye);return this._group.model.location}constructor(e,t){super(e,"__dockviewgroup__"),this.accessor=t,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return"popout"===this.location.type?this.location.getWindow():window}moveTo(e){var t,i,n,s;if(!this._group)throw new Error(Ye);const o=null!==(t=e.group)&&void 0!==t?t:this.accessor.addGroup({direction:we(null!==(i=e.position)&&void 0!==i?i:"right"),skipSetActive:null!==(n=e.skipSetActive)&&void 0!==n&&n});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:o,position:e.group&&null!==(s=e.position)&&void 0!==s?s:"center",index:e.index},skipSetActive:e.skipSetActive})}maximize(){if(!this._group)throw new Error(Ye);"grid"===this.location.type&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw new Error(Ye);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw new Error(Ye);this.isMaximized()&&this.accessor.exitMaximizedGroup()}initialize(e){this._group=e}}class Ke extends Xe{get minimumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumWidth;return"number"==typeof t?t:super.__minimumWidth()}get minimumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumHeight;return"number"==typeof t?t:super.__minimumHeight()}get maximumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumWidth;return"number"==typeof t?t:super.__maximumWidth()}get maximumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumHeight;return"number"==typeof t?t:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,i){var n,s,o,r,a,h;super(t,"groupview_default",{minimumHeight:null!==(s=null===(n=i.constraints)||void 0===n?void 0:n.minimumHeight)&&void 0!==s?s:100,minimumWidth:null!==(r=null===(o=i.constraints)||void 0===o?void 0:o.maximumHeight)&&void 0!==r?r:100,maximumHeight:null===(a=i.constraints)||void 0===a?void 0:a.maximumHeight,maximumWidth:null===(h=i.constraints)||void 0===h?void 0:h.maximumWidth},new qe(t,e)),this.api.initialize(this),this._model=new Je(this.element,e,t,i,this),this.addDisposables(this.model.onDidActivePanelChange((e=>{this.api._onDidActivePanelChange.fire(e)})))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}getComponent(){return this._model}toJSON(){return this.model.toJSON()}}const Qe={name:"dark",className:"dockview-theme-dark"},et={name:"light",className:"dockview-theme-light"},tt={name:"visualStudio",className:"dockview-theme-vs"},it={name:"abyss",className:"dockview-theme-abyss"},nt={name:"dracula",className:"dockview-theme-dracula"},st={name:"replit",className:"dockview-theme-replit",gap:10},ot={name:"abyssSpaced",className:"dockview-theme-abyss-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"},rt={name:"lightSpaced",className:"dockview-theme-light-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"};class at extends $e{get location(){return this.group.api.location}get title(){return this.panel.title}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){const t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this._onDidLocationChange.fire({location:this.group.api.location}))}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,i,n,s){super(e.id,n),this.panel=e,this.accessor=i,this._onDidTitleChange=new v,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new v,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new v,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new _,this._tabComponent=s,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}moveTo(e){var t,i;this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:null!==(t=e.group)&&void 0!==t?t:this._group,position:e.group&&null!==(i=e.position)&&void 0!==i?i:"center",index:e.index},skipSetActive:e.skipSetActive})}setTitle(e){this.panel.setTitle(e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}setupGroupEventListeners(e){var t;let i=null!==(t=null==e?void 0:e.isActive)&&void 0!==t&&t;this.groupEventsDisposable.value=new w(this.group.api.onDidVisibilityChange((e=>{const t=!e.isVisible&&this.isVisible,i=e.isVisible&&!this.isVisible,n=this.group.model.isPanelActive(this.panel);(t||i&&n)&&this._onDidVisibilityChange.fire(e)})),this.group.api.onDidLocationChange((e=>{this.group===this.panel.group&&this._onDidLocationChange.fire(e)})),this.group.api.onDidActiveChange((()=>{this.group===this.panel.group&&i!==this.isGroupActive&&(i=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))})))}}class ht extends w{get params(){return this._params}get title(){return this._title}get group(){return this._group}get renderer(){var e;return null!==(e=this._renderer)&&void 0!==e?e:this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,i,n,s,o,r,a){super(),this.id=e,this.accessor=n,this.containerApi=s,this.view=r,this._renderer=a.renderer,this._group=o,this._minimumWidth=a.minimumWidth,this._minimumHeight=a.minimumHeight,this._maximumWidth=a.maximumWidth,this._maximumHeight=a.maximumHeight,this.api=new at(this,this._group,n,t,i),this.addDisposables(this.api.onActiveChange((()=>{n.setActivePanel(this)})),this.api.onDidSizeChange((e=>{this.group.api.setSize(e)})),this.api.onDidRendererChange((()=>{this.group.model.rerender(this)})))}init(e){this._params=e.params,this.view.init(Object.assign(Object.assign({},e),{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){const e=new xe;this.api._onWillFocus.fire(e),e.defaultPrevented||this.api.isActive||this.api.setActive()}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth}}setTitle(e){e!==this.title&&(this._title=e,this.api._onDidTitleChange.fire({title:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){var t;this._params=Object.assign(Object.assign({},null!==(t=this._params)&&void 0!==t?t:{}),e.params);for(const i of Object.keys(e.params))void 0===e.params[i]&&delete this._params[i];this.view.update({params:this._params})}updateParentGroup(e,t){this._group=e,this.api.group=this._group;const i=this._group.model.isPanelActive(this),n=this.group.api.isActive&&i;(null==t?void 0:t.skipSetActive)||this.api.isActive!==n&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&i}),this.api.isVisible!==i&&this.api._onDidVisibilityChange.fire({isVisible:i})}runEvents(){const e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}}class dt extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-default-tab",this._content=document.createElement("div"),this._content.className="dv-default-tab-content",this.action=document.createElement("div"),this.action.className="dv-default-tab-action",this.action.appendChild(We({width:"11",height:"11",viewbox:"0 0 28 28",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"})),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this.addDisposables(e.api.onDidTitleChange((e=>{this._title=e.title,this.render()})),g(this.action,"pointerdown",(e=>{e.preventDefault()})),g(this.action,"click",(t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())}))),this.render()}render(){var e;this._content.textContent!==this._title&&(this._content.textContent=null!==(e=this._title)&&void 0!==e?e:"")}}class lt{get content(){return this._content}get tab(){return this._tab}constructor(e,t,i,n){this.accessor=e,this.id=t,this.contentComponent=i,this.tabComponent=n,this._content=this.createContentComponent(this.id,i),this._tab=this.createTabComponent(this.id,n)}createTabRenderer(e){var t;const i=this.createTabComponent(this.id,this.tabComponent);return this._params&&i.init(Object.assign(Object.assign({},this._params),{tabLocation:e})),this._updateEvent&&(null===(t=i.update)||void 0===t||t.call(i,this._updateEvent)),i}init(e){this._params=e,this.content.init(e),this.tab.init(Object.assign(Object.assign({},e),{tabLocation:"header"}))}layout(e,t){var i,n;null===(n=(i=this.content).layout)||void 0===n||n.call(i,e,t)}update(e){var t,i,n,s;this._updateEvent=e,null===(i=(t=this.content).update)||void 0===i||i.call(t,e),null===(s=(n=this.tab).update)||void 0===s||s.call(n,e)}dispose(){var e,t,i,n;null===(t=(e=this.content).dispose)||void 0===t||t.call(e),null===(n=(i=this.tab).dispose)||void 0===n||n.call(i)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){const i=null!=t?t:this.accessor.options.defaultTabComponent;if(i){if(this.accessor.options.createTabComponent){const t=this.accessor.options.createTabComponent({id:e,name:i});return t||new dt}console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new dt}}class pt{constructor(e){this.accessor=e}fromJSON(e,t){var i,n;const s=e.id,o=e.params,r=e.title,a=e.view,h=a?a.content.id:null!==(i=e.contentComponent)&&void 0!==i?i:"unknown",d=a?null===(n=a.tab)||void 0===n?void 0:n.id:e.tabComponent,l=new lt(this.accessor,s,h,d),p=new ht(s,h,d,this.accessor,new ue(this.accessor),t,l,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return p.init({title:null!=r?r:s,params:null!=o?o:{}}),p}}class ct extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-watermark"}init(e){}}const ut=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter((t=>t!==e)),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter((t=>t!==e)),this.update()}update(){for(let e=0;e{let e=null;const t=G();i.value=new w({dispose:()=>{t.release()}},g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),n=t.clientX-i.left,s=t.clientY-i.top;x(this._element,"dv-resize-container-dragging",!0);const o=this._element.getBoundingClientRect();null===e&&(e={x:t.clientX-o.left,y:t.clientY-o.top});const r=Math.max(0,this.getMinimumWidth(o.width)),a=Math.max(0,this.getMinimumHeight(o.height)),h=R(s-e.y,-a,Math.max(0,i.height-o.height+a)),d=R(e.y-s+i.height-o.height,-a,Math.max(0,i.height-o.height+a)),l=R(n-e.x,-r,Math.max(0,i.width-o.width+r)),p=R(e.x-n+i.width-o.width,-r,Math.max(0,i.width-o.width+r)),c={};h<=d?c.top=h:c.bottom=d,l<=p?c.left=l:c.right=p,this.setBounds(c)})),g(window,"pointerup",(()=>{x(this._element,"dv-resize-container-dragging",!1),i.dispose(),this._onDidChangeEnd.fire()})))};this.addDisposables(i,g(e,"pointerdown",(e=>{e.defaultPrevented?e.preventDefault():E(e)||n()})),g(this.options.content,"pointerdown",(e=>{e.defaultPrevented||E(e)||e.shiftKey&&n()})),g(this.options.content,"pointerdown",(()=>{ut.push(this._element)}),!0)),t.inDragMode&&n()}setupResize(e){const t=document.createElement("div");t.className=`dv-resize-handle-${e}`,this._element.appendChild(t);const i=new _;this.addDisposables(i,g(t,"pointerdown",(t=>{t.preventDefault();let n=null;const s=G();i.value=new w(g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),s=this._element.getBoundingClientRect(),o=t.clientY-i.top,r=t.clientX-i.left;let a,h,d,l,p,c;null===n&&(n={originalY:o,originalHeight:s.height,originalX:r,originalWidth:s.width});const u=()=>{a=R(o,-Number.MAX_VALUE,n.originalY+n.originalHeight>i.height?this.getMinimumHeight(i.height):Math.max(0,n.originalY+n.originalHeight-mt.MINIMUM_HEIGHT)),d=n.originalY+n.originalHeight-a,h=i.height-a-d},m=()=>{a=n.originalY-n.originalHeight,d=R(o-a,a<0&&"number"==typeof this.options.minimumInViewportHeight?-a+this.options.minimumInViewportHeight:mt.MINIMUM_HEIGHT,Number.MAX_VALUE),h=i.height-a-d},v=()=>{l=R(r,-Number.MAX_VALUE,n.originalX+n.originalWidth>i.width?this.getMinimumWidth(i.width):Math.max(0,n.originalX+n.originalWidth-mt.MINIMUM_WIDTH)),c=n.originalX+n.originalWidth-l,p=i.width-l-c},g=()=>{l=n.originalX-n.originalWidth,c=R(r-l,l<0&&"number"==typeof this.options.minimumInViewportWidth?-l+this.options.minimumInViewportWidth:mt.MINIMUM_WIDTH,Number.MAX_VALUE),p=i.width-l-c};switch(e){case"top":u();break;case"bottom":m();break;case"left":v();break;case"right":g();break;case"topleft":u(),v();break;case"topright":u(),g();break;case"bottomleft":m(),v();break;case"bottomright":m(),g()}const f={};a<=h?f.top=a:f.bottom=h,l<=p?f.left=l:f.right=p,f.height=d,f.width=c,this.setBounds(f)})),{dispose:()=>{s.release()}},g(window,"pointerup",(()=>{i.dispose(),this._onDidChangeEnd.fire()})))})))}getMinimumWidth(e){return"number"==typeof this.options.minimumInViewportWidth?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return"number"==typeof this.options.minimumInViewportHeight?e-this.options.minimumInViewportHeight:0}dispose(){ut.destroy(this._element),this._element.remove(),super.dispose()}}mt.MINIMUM_HEIGHT=20,mt.MINIMUM_WIDTH=20;class vt extends w{constructor(e,t){super(),this.group=e,this.overlay=t,this.addDisposables(t)}position(e){this.overlay.setBounds(e)}}const gt=100,ft=100,wt=100,_t=300,Dt=300;class bt{constructor(){this.cache=new Map,this.currentFrameId=0,this.rafId=null}getPosition(e){const t=this.cache.get(e);if(t&&t.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();const i=O(e);return this.cache.set(e,{rect:i,frameId:this.currentFrameId}),i}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||(this.rafId=requestAnimationFrame((()=>{this.currentFrameId++,this.rafId=null})))}}class Ct extends w{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this.positionCache=new bt,this.pendingUpdates=new Set,this.addDisposables(l.from((()=>{for(const e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose();this._disposed=!0})))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(const e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}detatch(e){if(this.map[e.api.id]){const{disposable:t,destroy:i}=this.map[e.api.id];return t.dispose(),i.dispose(),delete this.map[e.api.id],!0}return!1}attach(e){const{panel:t,referenceContainer:i}=e;if(!this.map[t.api.id]){const e=function(){const e=document.createElement("div");return e.tabIndex=-1,e}();e.className="dv-render-overlay",this.map[t.api.id]={panel:t,disposable:l.NONE,destroy:l.NONE,element:e}}const n=this.map[t.api.id].element;t.view.content.element.parentElement!==n&&n.appendChild(t.view.content.element),n.parentElement!==this.element&&this.element.appendChild(n);const s=()=>{const e=t.api.id;this.pendingUpdates.has(e)||(this.pendingUpdates.add(e),requestAnimationFrame((()=>{if(this.pendingUpdates.delete(e),this.isDisposed||!this.map[e])return;const s=this.positionCache.getPosition(i.element),o=this.positionCache.getPosition(this.element),r=s.left-o.left,a=s.top-o.top,h=s.width,d=s.height;n.style.left=`${r}px`,n.style.top=`${a}px`,n.style.width=`${h}px`,n.style.height=`${d}px`,x(n,"dv-render-overlay-float","floating"===t.group.api.location.type)})))},o=()=>{t.api.isVisible&&(this.positionCache.invalidate(),s()),n.style.display=t.api.isVisible?"":"none"},r=new _,a=()=>{"floating"===t.api.location.type?queueMicrotask((()=>{const e=this.accessor.floatingGroups.find((e=>e.group===t.api.group));if(!e)return;const i=e.overlay.element,s=()=>{const e=Number(i.getAttribute("aria-level"));n.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${2*e+1})`},o=new MutationObserver((()=>{s()}));r.value=l.from((()=>o.disconnect())),o.observe(i,{attributeFilter:["aria-level"],attributes:!0}),s()})):n.style.zIndex=""},h=new w(r,new ve(n,{onDragEnd:e=>{i.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{i.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{i.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{i.dropTarget.dnd.onDrop(e)},onDragOver:e=>{i.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange((()=>{o()})),t.api.onDidDimensionsChange((()=>{t.api.isVisible&&s()})),t.api.onDidLocationChange((()=>{a()})));return this.map[t.api.id].destroy=l.from((()=>{var e;t.view.content.element.parentElement===n&&n.removeChild(t.view.content.element),null===(e=n.parentElement)||void 0===e||e.removeChild(n)})),a(),queueMicrotask((()=>{this.isDisposed||o()})),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=h,this.map[t.api.id].resize=s,n}}var yt=function(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{h(n.next(e))}catch(t){o(t)}}function a(e){try{h(n.throw(e))}catch(t){o(t)}}function h(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}h((n=n.apply(e,t||[])).next())}))};class xt extends w{get window(){var e,t;return null!==(t=null===(e=this._window)||void 0===e?void 0:e.value)&&void 0!==t?t:null}constructor(e,t,i){super(),this.target=e,this.className=t,this.options=i,this._onWillClose=new v,this.onWillClose=this._onWillClose.event,this._onDidClose=new v,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;const e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){var e,t;this._window&&(this._onWillClose.fire(),null===(t=(e=this.options).onWillClose)||void 0===t||t.call(e,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire())}open(){var e,t;return yt(this,void 0,void 0,(function*(){if(this._window)throw new Error("instance of popout window is already open");const i=`${this.options.url}`,n=Object.entries({top:this.options.top,left:this.options.left,width:this.options.width,height:this.options.height}).map((e=>{let[t,i]=e;return`${t}=${i}`})).join(","),s=window.open(i,this.target,n);if(!s)return null;const o=new w;this._window={value:s,disposable:o},o.addDisposables(l.from((()=>{s.close()})),g(window,"beforeunload",(()=>{this.close()})));const r=this.createPopoutWindowContainer();return this.className&&r.classList.add(this.className),null===(t=(e=this.options).onDidOpen)||void 0===t||t.call(e,{id:this.target,window:s}),new Promise(((e,t)=>{s.addEventListener("unload",(e=>{})),s.addEventListener("load",(()=>{try{const t=s.document;t.title=document.title,t.body.appendChild(r),function(e,t){const i=Array.from(t);for(const s of i){if(s.href){const t=e.createElement("link");t.href=s.href,t.type=s.type,t.rel="stylesheet",e.head.appendChild(t)}let t=[];try{s.cssRules&&(t=Array.from(s.cssRules).map((e=>e.cssText)))}catch(n){}for(const i of t){const t=e.createElement("style");t.appendChild(e.createTextNode(i)),e.head.appendChild(t)}}}(t,window.document.styleSheets),g(s,"beforeunload",(()=>{this.close()})),e(r)}catch(i){t(i)}}))}))}))}createPopoutWindowContainer(){const e=document.createElement("div");return e.classList.add("dv-popout-window"),e.id="dv-popout-window",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e}}class St extends w{constructor(e){super(),this.accessor=e,this.init()}init(){const e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel((t=>{if(e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)})),this.accessor.onDidRemovePanel((t=>{if(!e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`);e.delete(t.api.id)})),this.accessor.onDidAddGroup((e=>{if(t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)})),this.accessor.onDidRemoveGroup((e=>{if(!t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`);t.delete(e.api.id)})))}}class At extends w{constructor(e){super(),this.root=e,this._active=null,this._activeDisposable=new _,this._element=document.createElement("div"),this._element.className="dv-popover-anchor",this._element.style.position="relative",this.root.prepend(this._element),this.addDisposables(l.from((()=>{this.close()})),this._activeDisposable)}openPopover(e,t){var i;this.close();const n=document.createElement("div");n.style.position="absolute",n.style.zIndex=null!==(i=t.zIndex)&&void 0!==i?i:"var(--dv-overlay-z-index)",n.appendChild(e);const s=this._element.getBoundingClientRect(),o=s.left,r=s.top;n.style.top=t.y-r+"px",n.style.left=t.x-o+"px",this._element.appendChild(n),this._active=n,this._activeDisposable.value=new w(g(window,"pointerdown",(e=>{var t;const i=e.target;if(!(i instanceof HTMLElement))return;let s=i;for(;s&&s!==n;)s=null!==(t=null==s?void 0:s.parentElement)&&void 0!==t?t:null;s||this.close()}))),requestAnimationFrame((()=>{!function(e,t,i){void 0===i&&(i={buffer:10});const n=i.buffer,s=e.getBoundingClientRect(),o=t.getBoundingClientRect();let r=0,a=0;const h=s.left-o.left,d=s.top-o.top,l=s.bottom-o.bottom,p=s.right-o.right;hn&&(r=-n-p),dn&&(a=-l-n),0===r&&0===a||(e.style.transform=`translate(${r}px, ${a}px)`)}(n,this.root)}))}close(){this._active&&(this._active.remove(),this._activeDisposable.dispose(),this._active=null)}}class zt extends w{get disabled(){return this._disabled}set disabled(e){var t;this.disabled!==e&&(this._disabled=e,e&&(null===(t=this.model)||void 0===t||t.clear()))}get model(){if(!this.disabled)return{clear:()=>{var e;this._model&&(null===(e=this._model.root.parentElement)||void 0===e||e.removeChild(this._model.root)),this._model=void 0},exists:()=>!!this._model,getElements:(e,t)=>{const i=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=i,this._model;const n=this.createContainer(),s=this.createAnchor();if(this._model={root:n,overlay:s,changed:i},n.appendChild(s),this.element.appendChild(n),(null==e?void 0:e.target)instanceof HTMLElement){const t=e.target.getBoundingClientRect(),i=this.element.getBoundingClientRect();s.style.left=t.left-i.left+"px",s.style.top=t.top-i.top+"px"}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(l.from((()=>{var e;null===(e=this.model)||void 0===e||e.clear()})))}createContainer(){const e=document.createElement("div");return e.className="dv-drop-target-container",e}createAnchor(){const e=document.createElement("div");return e.className="dv-drop-target-anchor",e.style.visibility="hidden",e}}const Pt={activationSize:{type:"pixels",value:10},size:{type:"pixels",value:20}};function Et(e){const t=e.from.activePanel;[...e.from.panels].map((t=>{const i=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),i})).forEach((i=>{e.to.model.openPanel(i,{skipSetActive:t!==i,skipSetGroupActive:!0})}))}class Ot extends de{get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap((e=>e.panels))}get options(){return this._options}get activePanel(){const e=this.activeGroup;if(e)return e.activePanel}get renderer(){var e;return null!==(e=this.options.defaultRenderer)&&void 0!==e?e:"onlyWhenVisible"}get api(){return this._api}get floatingGroups(){return this._floatingGroups}get popoutRestorationPromise(){return this._popoutRestorationPromise}constructor(e,t){var i,n,s;super(e,{proportionalLayout:!0,orientation:j.HORIZONTAL,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:null!==(n=null===(i=t.theme)||void 0===i?void 0:i.gap)&&void 0!==n?n:0,className:t.className}),this.nextGroupId=M(),this._deserializer=new pt(this),this._watermark=null,this._onWillDragPanel=new v,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new v,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new v,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new v,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidOpenPopoutWindowFail=new v,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidLayoutFromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new v({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidMovePanel=new v,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidMaximizedGroupChange=new v,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._floatingGroups=[],this._popoutGroups=[],this._popoutRestorationPromise=Promise.resolve(),this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new v,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._moving=!1,this._options=t,this.popupService=new At(this.element),this._themeClassnames=new I(this.element),this._api=new ue(this),this.rootDropTargetContainer=new zt(this.element,{disabled:!0}),this.overlayRenderContainer=new Ct(this.gridview.element,this),this._rootDropTarget=new be(this.element,{className:"dv-drop-target-edge",canDisplayOverlay:(e,t)=>{const i=a();if(i)return i.viewId===this.id&&("center"!==t||0===this.gridview.length);if("center"===t&&0!==this.gridview.length)return!1;const n=new Fe(e,"edge",t,a);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted},acceptedTargetZones:["top","bottom","left","right","center"],overlayModel:null!==(s=t.rootOverlayModel)&&void 0!==s?s:Pt,getOverrideTarget:()=>{var e;return null===(e=this.rootDropTargetContainer)||void 0===e?void 0:e.model}}),this.updateDropTargetModel(t),x(this.gridview.element,"dv-dockview",!0),x(this.element,"dv-debug",!!t.debug),this.updateTheme(),this.updateWatermark(),t.debug&&this.addDisposables(new St(this)),this.addDisposables(this.rootDropTargetContainer,this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onDidMovePanel,this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this._onUnhandledDragOverEvent,this._onDidMaximizedGroupChange,this._onDidOptionsChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidOpenPopoutWindowFail,this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.updateWatermark()})),this.onDidAdd((e=>{this._moving||this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._moving||this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._moving||this._onDidActiveGroupChange.fire(e)})),this.onDidMaximizedChange((e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})})),d.any(this.onDidAdd,this.onDidRemove)((()=>{this.updateWatermark()})),d.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidMovePanel,this.onDidActivePanelChange,this.onDidPopoutGroupPositionChange,this.onDidPopoutGroupSizeChange)((()=>{this._bufferOnDidLayoutChange.fire()})),l.from((()=>{for(const e of[...this._floatingGroups])e.dispose();for(const e of[...this._popoutGroups])e.disposable.dispose()})),this._rootDropTarget,this._rootDropTarget.onWillShowOverlay((e=>{this.gridview.length>0&&"center"===e.position||this._onWillShowOverlay.fire(new Te(e,{kind:"edge",panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget.onDrop((e=>{var t;const i=new Ue({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a,kind:"edge"});if(this._onWillDrop.fire(i),i.defaultPrevented)return;const n=a();n?this.moveGroupOrPanel({from:{groupId:n.groupId,panelId:null!==(t=n.panelId)&&void 0!==t?t:void 0},to:{group:this.orthogonalize(e.position),position:"center"}}):this._onDidDrop.fire(new Ze({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget)}setVisible(e,t){switch(e.api.location.type){case"grid":super.setVisible(e,t);break;case"floating":{const i=this.floatingGroups.find((t=>t.group===e));i&&(i.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case"popout":console.warn("dockview: You cannot hide a group that is in a popout window")}}addPopoutGroup(e,t){var i,n,s,o,r;if(e instanceof ht&&1===e.group.size)return this.addPopoutGroup(e.group,t);const a=function(e){function t(e){const t=[];for(let i=0;ie.startsWith("dockview-theme-"))),"string"!=typeof i);)n=n.parentElement;return i}(this.gridview.element),h=this.element;const d=(null==t?void 0:t.position)?t.position:e instanceof Ke?e.element.getBoundingClientRect():e.group?e.group.element.getBoundingClientRect():h.getBoundingClientRect(),p=null!==(n=null===(i=null==t?void 0:t.overridePopoutGroup)||void 0===i?void 0:i.id)&&void 0!==n?n:this.getNextGroupId(),c=new xt(`${this.id}-${p}`,null!=a?a:"",{url:null!==(r=null!==(s=null==t?void 0:t.popoutUrl)&&void 0!==s?s:null===(o=this.options)||void 0===o?void 0:o.popoutUrl)&&void 0!==r?r:"/popout.html",left:window.screenX+d.left,top:window.screenY+d.top,width:d.width,height:d.height,onDidOpen:null==t?void 0:t.onDidOpen,onWillClose:null==t?void 0:t.onWillClose}),u=new w(c,c.onDidClose((()=>{u.dispose()})));return c.open().then((i=>{var n;if(c.isDisposed)return!1;const s=(null==t?void 0:t.referenceGroup)?t.referenceGroup:e instanceof ht?e.group:e,o=e.api.location.type,r=null!==s.element.parentElement;let a;if(r?(null==t?void 0:t.overridePopoutGroup)?a=t.overridePopoutGroup:(a=this.createGroup({id:p}),i&&this._onDidAddGroup.fire(a)):a=s,null===i)return console.error("dockview: failed to create popout. perhaps you need to allow pop-ups for this website"),u.dispose(),this._onDidOpenPopoutWindowFail.fire(),this.movingLock((()=>Et({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),!1;const h=document.createElement("div");h.className="dv-overlay-render-container";const d=new Ct(h,this);let m;if(a.model.renderContainer=d,a.layout(c.window.innerWidth,c.window.innerHeight),!(null==t?void 0:t.overridePopoutGroup)&&r)if(e instanceof ht)this.movingLock((()=>{const t=s.model.removePanel(e);a.model.openPanel(t)}));else switch(this.movingLock((()=>Et({from:s,to:a}))),o){case"grid":s.api.setVisible(!1);break;case"floating":case"popout":m=null===(n=this._floatingGroups.find((t=>t.group.api.id===e.api.id)))||void 0===n?void 0:n.overlay.toJSON(),this.removeGroup(s)}i.classList.add("dv-dockview"),i.style.overflow="hidden",i.appendChild(h),i.appendChild(a.element);const f=document.createElement("div"),_=new zt(f,{disabled:this.rootDropTargetContainer.disabled});let D;i.appendChild(f),a.model.dropTargetContainer=_,a.model.location={type:"popout",getWindow:()=>c.window,popoutUrl:null==t?void 0:t.popoutUrl},r&&"grid"===e.api.location.type&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(a),u.addDisposables(a.api.onDidActiveChange((e=>{var t;e.isActive&&(null===(t=c.window)||void 0===t||t.focus())})),a.api.onWillFocus((()=>{var e;null===(e=c.window)||void 0===e||e.focus()})));const b=r&&s&&this.getPanel(s.id),C={window:c,popoutGroup:a,referenceGroup:b?s.id:void 0,disposable:{dispose:()=>(u.dispose(),D)}},y=function(e){const t=new v;let i,n=e.screenX,s=e.screenY;const o=()=>{if(e.closed)return;const r=e.screenX,a=e.screenY;r===n&&a===s||(clearTimeout(i),i=setTimeout((()=>{t.fire()}),100),n=r,s=a),requestAnimationFrame(o)};return o(),t}(c.window);return u.addDisposables(y,function(e,t){let i;return new w(g(e,"resize",(()=>{clearTimeout(i),i=setTimeout((()=>{t()}),100)})))}(c.window,(()=>{this._onDidPopoutGroupSizeChange.fire({width:c.window.innerWidth,height:c.window.innerHeight,group:a})})),y.event((()=>{this._onDidPopoutGroupPositionChange.fire({screenX:c.window.screenX,screenY:c.window.screenX,group:a})})),g(c.window,"resize",(()=>{a.layout(c.window.innerWidth,c.window.innerHeight)})),d,l.from((()=>{if(!this.isDisposed)if(r&&this.getPanel(s.id))this.movingLock((()=>Et({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),this.getPanel(a.id)&&this.doRemoveGroup(a,{skipPopoutAssociated:!0});else if(this.getPanel(a.id)){a.model.renderContainer=this.overlayRenderContainer,a.model.dropTargetContainer=this.rootDropTargetContainer,D=a;if(!this._popoutGroups.find((e=>e.popoutGroup===a)))return;m?this.addFloatingGroup(a,{height:m.height,width:m.width,position:m}):(this.doRemoveGroup(a,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),a.model.location={type:"grid"},this.movingLock((()=>{this.doAddGroup(a,[0])}))),this.doSetGroupAndPanelActive(a)}}))),this._popoutGroups.push(C),this.updateWatermark(),!0})).catch((e=>(console.error("dockview: failed to create popout.",e),!1)))}addFloatingGroup(e,t){var i,n,s,o,r;let a;if(e instanceof ht)a=this.createGroup(),this._onDidAddGroup.fire(a),this.movingLock((()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0}))),this.movingLock((()=>a.model.openPanel(e,{skipSetGroupActive:!0})));else{a=e;const n=null===(i=this._popoutGroups.find((e=>e.popoutGroup===a)))||void 0===i?void 0:i.referenceGroup,s=n?this.getPanel(n):void 0;"boolean"==typeof(null==t?void 0:t.skipRemoveGroup)&&t.skipRemoveGroup||(s?(this.movingLock((()=>Et({from:e,to:s}))),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(s,{skipDispose:!0}),a=s):this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}))}const h=function(){if(null==t?void 0:t.position){const e={};return"left"in t.position?e.left=Math.max(t.position.left,0):"right"in t.position?e.right=Math.max(t.position.right,0):e.left=ft,"top"in t.position?e.top=Math.max(t.position.top,0):"bottom"in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=wt,"number"==typeof t.width?e.width=Math.max(t.width,0):e.width=_t,"number"==typeof t.height?e.height=Math.max(t.height,0):e.height=Dt,e}return{left:"number"==typeof(null==t?void 0:t.x)?Math.max(t.x,0):ft,top:"number"==typeof(null==t?void 0:t.y)?Math.max(t.y,0):wt,width:"number"==typeof(null==t?void 0:t.width)?Math.max(t.width,0):_t,height:"number"==typeof(null==t?void 0:t.height)?Math.max(t.height,0):Dt}}(),d=new mt(Object.assign(Object.assign({container:this.gridview.element,content:a.element},h),{minimumInViewportWidth:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(s=null===(n=this.options.floatingGroupBounds)||void 0===n?void 0:n.minimumWidthWithinViewport)&&void 0!==s?s:gt,minimumInViewportHeight:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(r=null===(o=this.options.floatingGroupBounds)||void 0===o?void 0:o.minimumHeightWithinViewport)&&void 0!==r?r:gt})),l=a.element.querySelector(".dv-void-container");if(!l)throw new Error("failed to find drag handle");d.setupDrag(l,{inDragMode:"boolean"==typeof(null==t?void 0:t.inDragMode)&&t.inDragMode});const p=new vt(a,d),c=new w(a.api.onDidActiveChange((e=>{e.isActive&&d.bringToFront()})),b(a.element,(e=>{const{width:t,height:i}=e.contentRect;a.layout(t,i)})));p.addDisposables(d.onDidChange((()=>{a.layout(a.width,a.height)})),d.onDidChangeEnd((()=>{this._bufferOnDidLayoutChange.fire()})),a.onDidChange((e=>{d.setBounds({height:null==e?void 0:e.height,width:null==e?void 0:e.width})})),{dispose:()=>{c.dispose(),L(this._floatingGroups,p),a.model.location={type:"grid"},this.updateWatermark()}}),this._floatingGroups.push(p),a.model.location={type:"floating"},(null==t?void 0:t.skipActiveGroup)||this.doSetGroupAndPanelActive(a),this.updateWatermark()}orthogonalize(e,t){switch(this.gridview.normalize(),e){case"top":case"bottom":this.gridview.orientation===j.HORIZONTAL&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case"left":case"right":this.gridview.orientation===j.VERTICAL&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case"top":case"left":case"center":return this.createGroupAtLocation([0],void 0,t);case"bottom":case"right":return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw new Error(`unsupported position ${e}`)}}updateOptions(e){var t,i;if(super.updateOptions(e),"floatingGroupBounds"in e)for(const s of this._floatingGroups){switch(e.floatingGroupBounds){case"boundedWithinViewport":s.overlay.minimumInViewportHeight=void 0,s.overlay.minimumInViewportWidth=void 0;break;case void 0:s.overlay.minimumInViewportHeight=gt,s.overlay.minimumInViewportWidth=gt;break;default:s.overlay.minimumInViewportHeight=null===(t=e.floatingGroupBounds)||void 0===t?void 0:t.minimumHeightWithinViewport,s.overlay.minimumInViewportWidth=null===(i=e.floatingGroupBounds)||void 0===i?void 0:i.minimumWidthWithinViewport}s.overlay.setBounds()}this.updateDropTargetModel(e);const n=this.options.disableDnd;this._options=Object.assign(Object.assign({},this.options),e);n!==this.options.disableDnd&&this.updateDragAndDropState(),"theme"in e&&this.updateTheme(),this.layout(this.gridview.width,this.gridview.height,!0)}layout(e,t,i){if(super.layout(e,t,i),this._floatingGroups)for(const n of this._floatingGroups)n.overlay.setBounds()}updateDragAndDropState(){for(const e of this.groups)e.model.updateDragAndDropState()}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}getGroupPanel(e){return this.panels.find((t=>t.id===e))}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}moveToNext(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1])return void e.group.model.moveToNext({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupAndPanelActive(n)}moveToPrevious(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0])return void e.group.model.moveToPrevious({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){var e;const t=this.gridview.serialize(),i=this.panels.reduce(((e,t)=>(e[t.id]=t.toJSON(),e)),{}),n=this._floatingGroups.map((e=>({data:e.group.toJSON(),position:e.overlay.toJSON()}))),s=this._popoutGroups.map((e=>({data:e.popoutGroup.toJSON(),gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:"popout"===e.popoutGroup.api.location.type?e.popoutGroup.api.location.popoutUrl:void 0}))),o={grid:t,panels:i,activeGroup:null===(e=this.activeGroup)||void 0===e?void 0:e.id};return n.length>0&&(o.floatingGroups=n),s.length>0&&(o.popoutGroups=s),o}fromJSON(e){var t,i;if(this.clear(),"object"!=typeof e||null===e)throw new Error("serialized layout must be a non-null object");const{grid:n,panels:s,activeGroup:o}=e;if("branch"!==n.root.type||!Array.isArray(n.root.data))throw new Error("root must be of type branch");try{const r=this.width,a=this.height,h=e=>{const{id:t,locked:i,hideHeader:n,views:o,activeView:r}=e;if("string"!=typeof t)throw new Error("group id must be of type string");const a=this.createGroup({id:t,locked:!!i,hideHeader:!!n});this._onDidAddGroup.fire(a);const h=[];for(const d of o){const e=this._deserializer.fromJSON(s[d],a);h.push(e)}for(let s=0;s0&&a.model.openPanel(a.panels[a.panels.length-1],{skipSetGroupActive:!0}),a};this.gridview.deserialize(n,{fromJSON:e=>h(e.data)}),this.layout(r,a,!0);const d=null!==(t=e.floatingGroups)&&void 0!==t?t:[];for(const e of d){const{data:t,position:i}=e,n=h(t);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}const l=null!==(i=e.popoutGroups)&&void 0!==i?i:[],p=[];l.forEach(((e,t)=>{const{data:i,position:n,gridReferenceGroup:s,url:o}=e,r=h(i),a=new Promise((e=>{setTimeout((()=>{this.addPopoutGroup(r,{position:null!=n?n:void 0,overridePopoutGroup:s?r:void 0,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:o}),e()}),100*t)}));p.push(a)})),this._popoutRestorationPromise=Promise.all(p).then((()=>{}));for(const e of this._floatingGroups)e.overlay.setBounds();if("string"==typeof o){const e=this.getPanel(o);e&&this.doSetGroupAndPanelActive(e)}}catch(r){console.error("dockview: failed to deserialize layout. Reverting changes",r);for(const e of this.groups)for(const t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);for(const e of[...this._floatingGroups])e.dispose();throw this.clear(),r}this.updateWatermark(),requestAnimationFrame((()=>{this.overlayRenderContainer.updateAllPositions()})),this._onDidLayoutFromJSON.fire()}clear(){const e=Array.from(this._groups.values()).map((e=>e.value)),t=!!this.activeGroup;for(const i of e)this.removeGroup(i,{skipActive:!0});t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){for(const e of this._groups.entries()){const[t,i]=e;i.value.model.closeAllPanels()}}addPanel(e){var t,i;if(this.panels.find((t=>t.id===e.id)))throw new Error(`panel with id ${e.id} already exists`);let n;if(e.position&&e.floating)throw new Error("you can only provide one of: position, floating as arguments to .addPanel(...)");const s={width:e.initialWidth,height:e.initialHeight};let o;if(e.position)if(e.position.referencePanel){const t="string"==typeof e.position.referencePanel?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(o=e.position.index,!t)throw new Error(`referencePanel '${e.position.referencePanel}' does not exist`);n=this.findGroup(t)}else{if(!function(e){return!!e.referenceGroup}(e.position)){const t=this.orthogonalize(fe(e.position.direction)),i=this.createPanel(e,t);return t.model.openPanel(i,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:null==s?void 0:s.height,width:null==s?void 0:s.width}),i}if(n="string"==typeof e.position.referenceGroup?null===(t=this._groups.get(e.position.referenceGroup))||void 0===t?void 0:t.value:e.position.referenceGroup,o=e.position.index,!n)throw new Error(`referenceGroup '${e.position.referenceGroup}' does not exist`)}else n=this.activeGroup;let r;if(n){const t=he((null===(i=e.position)||void 0===i?void 0:i.direction)||"within");if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else if("floating"===n.api.location.type||"center"===t)r=this.createPanel(e,n),n.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),n.api.setSize({width:null==s?void 0:s.width,height:null==s?void 0:s.height}),e.inactive||this.doSetGroupAndPanelActive(n);else{const i=ee(n.element),a=te(this.gridview.orientation,i,t),h=this.createGroupAtLocation(a,this.orientationAtLocation(a)===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,h),h.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(h)}}else if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else{const t=this.createGroupAtLocation([0],this.gridview.orientation===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t)}return r}removePanel(e,t){void 0===t&&(t={removeEmptyGroup:!0});const i=e.group;if(!i)throw new Error(`cannot remove panel ${e.id}. it's missing a group.`);i.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),0===i.size&&t.removeEmptyGroup&&this.removeGroup(i,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ct}updateWatermark(){var e,t,i;if(0===this.groups.filter((e=>"grid"===e.api.location.type&&e.api.isVisible)).length){if(!this._watermark){this._watermark=this.createWatermarkComponent(),this._watermark.init({containerApi:new ue(this)});const e=document.createElement("div");e.className="dv-watermark-container",i="watermark-component",e.setAttribute("data-testid",i),e.appendChild(this._watermark.element),this.gridview.element.appendChild(e)}}else this._watermark&&(this._watermark.element.parentElement.remove(),null===(t=(e=this._watermark).dispose)||void 0===t||t.call(e),this._watermark=null)}addGroup(e){var t;if(e){let i;if(e.referencePanel){const t="string"==typeof e.referencePanel?this.panels.find((t=>t.id===e.referencePanel)):e.referencePanel;if(!t)throw new Error(`reference panel ${e.referencePanel} does not exist`);if(i=this.findGroup(t),!i)throw new Error(`reference group for reference panel ${e.referencePanel} does not exist`)}else{if(!function(e){return!!e.referenceGroup}(e)){const t=this.orthogonalize(fe(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}if(i="string"==typeof e.referenceGroup?null===(t=this._groups.get(e.referenceGroup))||void 0===t?void 0:t.value:e.referenceGroup,!i)throw new Error(`reference group ${e.referenceGroup} does not exist`)}const n=he(e.direction||"within"),s=ee(i.element),o=te(this.gridview.orientation,s,n),r=this.createGroup(e),a=this.getLocationOrientation(o)===j.VERTICAL?e.initialHeight:e.initialWidth;return this.doAddGroup(r,o,a),e.skipSetActive||this.doSetGroupAndPanelActive(r),r}{const t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===j.HORIZONTAL?j.HORIZONTAL:j.VERTICAL}removeGroup(e,t){this.doRemoveGroup(e,t)}doRemoveGroup(e,t){var i;const n=[...e.panels];if(!(null==t?void 0:t.skipDispose))for(const r of n)this.removePanel(r,{removeEmptyGroup:!1,skipDispose:null!==(i=null==t?void 0:t.skipDispose)&&void 0!==i&&i});const s=this.activePanel;if("floating"===e.api.location.type){const i=this._floatingGroups.find((t=>t.group===e));if(i){if((null==t?void 0:t.skipDispose)||(i.group.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)),L(this._floatingGroups,i),i.dispose(),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return i.group}throw new Error("failed to find floating group")}if("popout"===e.api.location.type){const i=this._popoutGroups.find((t=>t.popoutGroup===e));if(i){if(!(null==t?void 0:t.skipDispose)){if(!(null==t?void 0:t.skipPopoutAssociated)){const e=i.referenceGroup?this.getPanel(i.referenceGroup):void 0;e&&0===e.panels.length&&this.removeGroup(e)}i.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}L(this._popoutGroups,i);const n=i.disposable.dispose();if(!(null==t?void 0:t.skipPopoutReturn)&&n&&(this.doAddGroup(n,[0]),this.doSetGroupAndPanelActive(n)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return this.updateWatermark(),i.popoutGroup}throw new Error("failed to find popout group")}const o=super.doRemoveGroup(e,t);return(null==t?void 0:t.skipActive)||this.activePanel!==s&&this._onDidActivePanelChange.fire(this.activePanel),o}movingLock(e){const t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}moveGroupOrPanel(e){var t;const i=e.to.group,n=e.from.groupId,s=e.from.panelId,o=e.to.position,r=e.to.index,a=n?null===(t=this._groups.get(n))||void 0===t?void 0:t.value:void 0;if(!a)throw new Error(`Failed to find group id ${n}`);if(void 0!==s)if(o&&"center"!==o){const e=ee(i.element),t=te(this.gridview.orientation,e,o);if(a.size<2){const[e,n]=N(t);if("grid"===a.api.location.type){const t=ee(a.element),[i,o]=N(t);if(V(i,e))return this.gridview.moveView(i,o,n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}if("popout"===a.api.location.type){const e=this._popoutGroups.find((e=>e.popoutGroup===a)),i=this.movingLock((()=>e.popoutGroup.model.removePanel(e.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0})));this.doRemoveGroup(a,{skipActive:!0});const n=this.createGroupAtLocation(t);return this.movingLock((()=>n.model.openPanel(i))),this.doSetGroupAndPanelActive(n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}const r=this.movingLock((()=>this.doRemoveGroup(a,{skipActive:!0,skipDispose:!0}))),h=ee(i.element),d=te(this.gridview.orientation,h,o);this.movingLock((()=>this.doAddGroup(r,d))),this.doSetGroupAndPanelActive(r),this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);const i=te(this.gridview.orientation,e,o),n=this.createGroupAtLocation(i);this.movingLock((()=>n.model.openPanel(t,{skipSetGroupActive:!0}))),this.doSetGroupAndPanelActive(n),this._onDidMovePanel.fire({panel:t,from:a})}}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);0===a.model.size&&this.doRemoveGroup(a,{skipActive:!0});const n=0===i.model.size;this.movingLock((()=>{var s;return i.model.openPanel(t,{index:r,skipSetActive:null!==(s=e.skipSetActive)&&void 0!==s&&s&&!n,skipSetGroupActive:!0})})),e.skipSetActive||this.doSetGroupAndPanelActive(i),this._onDidMovePanel.fire({panel:t,from:a})}else this.moveGroup({from:{group:a},to:{group:i,position:o},skipSetActive:e.skipSetActive})}moveGroup(e){const t=e.from.group,i=e.to.group,n=e.to.position;if("center"===n){const n=t.activePanel,s=this.movingLock((()=>[...t.panels].map((e=>t.model.removePanel(e.id,{skipSetActive:!0})))));0===(null==t?void 0:t.model.size)&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock((()=>{for(const e of s)i.model.openPanel(e,{skipSetActive:e!==n,skipSetGroupActive:!0})})),!0!==e.skipSetActive?this.doSetGroupAndPanelActive(i):this.activePanel||this.doSetGroupAndPanelActive(i)}else{switch(t.api.location.type){case"grid":this.gridview.removeView(ee(t.element));break;case"floating":{const e=this._floatingGroups.find((e=>e.group===t));if(!e)throw new Error("failed to find floating group");e.dispose();break}case"popout":{const e=this._popoutGroups.find((e=>e.popoutGroup===t));if(!e)throw new Error("failed to find popout group");const n=this._popoutGroups.indexOf(e);if(n>=0&&this._popoutGroups.splice(n,1),e.referenceGroup){const t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose(),"grid"===i.api.location.type?(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"grid"}):"floating"===i.api.location.type&&(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"floating"});break}}if("grid"===i.api.location.type){const e=ee(i.element),s=te(this.gridview.orientation,e,n);let o;switch(this.gridview.orientation){case j.VERTICAL:o=e.length%2==0?t.api.width:t.api.height;break;case j.HORIZONTAL:o=e.length%2==0?t.api.height:t.api.width}this.gridview.addView(t,o,s)}else if("floating"===i.api.location.type){const e=this._floatingGroups.find((e=>e.group===i));if(e){const i=e.overlay.toJSON();let n,s;n="left"in i?i.left+50:"right"in i?Math.max(0,i.right-i.width-50):50,s="top"in i?i.top+50:"bottom"in i?Math.max(0,i.bottom-i.height-50):50,this.addFloatingGroup(t,{height:i.height,width:i.width,position:{left:n,top:s}})}}}if(t.panels.forEach((e=>{this._onDidMovePanel.fire({panel:e,from:t})})),!1===e.skipSetActive){const e=null!=i?i:t;this.doSetGroupAndPanelActive(e)}}doSetGroupActive(e){super.doSetGroupActive(e);const t=this.activePanel;this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);const t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e||(e={});let t=null==e?void 0:e.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${null==e?void 0:e.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();const i=new Ke(this,t,e);if(i.init({params:{},accessor:this}),!this._groups.has(i.id)){const e=new w(i.model.onTabDragStart((e=>{this._onWillDragPanel.fire(e)})),i.model.onGroupDragStart((e=>{this._onWillDragGroup.fire(e)})),i.model.onMove((e=>{const{groupId:t,itemId:n,target:s,index:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:n},to:{group:i,position:s,index:o}})})),i.model.onDidDrop((e=>{this._onDidDrop.fire(e)})),i.model.onWillDrop((e=>{this._onWillDrop.fire(e)})),i.model.onWillShowOverlay((e=>{this.options.disableDnd?e.preventDefault():this._onWillShowOverlay.fire(e)})),i.model.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})),i.model.onDidAddPanel((e=>{this._moving||this._onDidAddPanel.fire(e.panel)})),i.model.onDidRemovePanel((e=>{this._moving||this._onDidRemovePanel.fire(e.panel)})),i.model.onDidActivePanelChange((e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value!==e.panel&&this._onDidActivePanelChange.fire(e.panel)})),d.any(i.model.onDidPanelTitleChange,i.model.onDidPanelParametersChange)((()=>{this._bufferOnDidLayoutChange.fire()})));this._groups.set(i.id,{value:i,disposable:e})}return i.initialize(),i}createPanel(e,t){var i,n,s;const o=e.component,r=null!==(i=e.tabComponent)&&void 0!==i?i:this.options.defaultTabComponent,a=new lt(this,e.id,o,r),h=new ht(e.id,o,r,this,this._api,t,a,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return h.init({title:null!==(n=e.title)&&void 0!==n?n:e.id,params:null!==(s=null==e?void 0:e.params)&&void 0!==s?s:{}}),h}createGroupAtLocation(e,t,i){const n=this.createGroup(i);return this.doAddGroup(n,e,t),n}findGroup(e){var t;return null===(t=Array.from(this._groups.values()).find((t=>t.value.model.containsPanel(e))))||void 0===t?void 0:t.value}orientationAtLocation(e){const t=this.gridview.orientation;return e.length%2==1?t:ie(t)}updateDropTargetModel(e){"dndEdges"in e&&(this._rootDropTarget.disabled="boolean"==typeof e.dndEdges&&!1===e.dndEdges,"object"==typeof e.dndEdges&&null!==e.dndEdges?this._rootDropTarget.setOverlayModel(e.dndEdges):this._rootDropTarget.setOverlayModel(Pt)),"rootOverlayModel"in e&&this.updateDropTargetModel({dndEdges:e.dndEdges})}updateTheme(){var e,t;const i=null!==(e=this._options.theme)&&void 0!==e?e:it;if(this._themeClassnames.setClassNames(i.className),this.gridview.margin=null!==(t=i.gap)&&void 0!==t?t:0,"absolute"===i.dndOverlayMounting)this.rootDropTargetContainer.disabled=!1;else this.rootDropTargetContainer.disabled=!0}}class Gt extends de{get orientation(){return this.gridview.orientation}set orientation(e){this.gridview.orientation=e}get options(){return this._options}get deserializer(){return this._deserializer}set deserializer(e){this._deserializer=e}constructor(e,t){var i;super(e,{proportionalLayout:null===(i=t.proportionalLayout)||void 0===i||i,orientation:t.orientation,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,className:t.className}),this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._options=t,this.addDisposables(this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this.onDidAdd((e=>{this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._onDidActiveGroupChange.fire(e)})))}updateOptions(e){super.updateOptions(e);const t="string"==typeof e.orientation&&this.gridview.orientation!==e.orientation;this._options=Object.assign(Object.assign({},this.options),e),t&&(this.gridview.orientation=e.orientation),this.layout(this.gridview.width,this.gridview.height,!0)}removePanel(e){this.removeGroup(e)}toJSON(){var e;return{grid:this.gridview.serialize(),activePanel:null===(e=this.activeGroup)||void 0===e?void 0:e.id}}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t)}setActive(e){this._groups.forEach(((t,i)=>{t.value.setActive(e===t.value)}))}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}fromJSON(e){this.clear();const{grid:t,activePanel:i}=e;try{const e=[],n=this.width,s=this.height;if(this.gridview.deserialize(t,{fromJSON:t=>{const{data:i}=t,n=this.options.createComponent({id:i.id,name:i.component});return e.push((()=>n.init({params:i.params,minimumWidth:i.minimumWidth,maximumWidth:i.maximumWidth,minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,priority:i.priority,snap:!!i.snap,accessor:this,isVisible:t.visible}))),this._onDidAddGroup.fire(n),this.registerPanel(n),n}}),this.layout(n,s,!0),e.forEach((e=>e())),"string"==typeof i){const e=this.getPanel(i);e&&this.doSetGroupActive(e)}}catch(n){for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw this.clear(),n}this._onDidLayoutfromJSON.fire()}clear(){const e=this.activeGroup,t=Array.from(this._groups.values());for(const i of t)i.disposable.dispose(),this.doRemoveGroup(i.value,{skipActive:!0});e&&this.doSetGroupActive(void 0),this.gridview.clear()}movePanel(e,t){var i;let n;const s=this.gridview.remove(e),o=null===(i=this._groups.get(t.reference))||void 0===i?void 0:i.value;if(!o)throw new Error(`reference group ${t.reference} does not exist`);const r=he(t.direction);if("center"===r)throw new Error(`${r} not supported as an option`);{const e=ee(o.element);n=te(this.gridview.orientation,e,r)}this.doAddGroup(s,n,t.size)}addPanel(e){var t,i,n,s;let o=null!==(t=e.location)&&void 0!==t?t:[0];if(null===(i=e.position)||void 0===i?void 0:i.referencePanel){const t=null===(n=this._groups.get(e.position.referencePanel))||void 0===n?void 0:n.value;if(!t)throw new Error(`reference group ${e.position.referencePanel} does not exist`);const i=he(e.position.direction);if("center"===i)throw new Error(`${i} not supported as an option`);{const e=ee(t.element);o=te(this.gridview.orientation,e,i)}}const r=this.options.createComponent({id:e.id,name:e.component});return r.init({params:null!==(s=e.params)&&void 0!==s?s:{},minimumWidth:e.minimumWidth,maximumWidth:e.maximumWidth,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,priority:e.priority,snap:!!e.snap,accessor:this,isVisible:!0}),this.registerPanel(r),this.doAddGroup(r,o,e.size),this.doSetGroupActive(r),r}registerPanel(e){const t=new w(e.api.onDidFocusChange((t=>{t.isFocused&&this._groups.forEach((t=>{const i=t.value;i!==e?i.setActive(!1):i.setActive(!0)}))})));this._groups.set(e.id,{value:e,disposable:t})}moveGroup(e,t,i){const n=this.getPanel(t);if(!n)throw new Error("invalid operation");const s=ee(e.element),o=te(this.gridview.orientation,s,i),[r,a]=N(o),h=ee(n.element),[d,l]=N(h);if(V(d,r))return void this.gridview.moveView(d,l,a);const p=this.doRemoveGroup(n,{skipActive:!0,skipDispose:!0}),c=ee(e.element),u=te(this.gridview.orientation,c,i);this.doAddGroup(p,u)}removeGroup(e){super.removeGroup(e)}dispose(){super.dispose(),this._onDidLayoutfromJSON.dispose()}}class It extends re{get panels(){return this.splitview.getViews()}get options(){return this._options}get length(){return this._panels.size}get orientation(){return this.splitview.orientation}get splitview(){return this._splitview}set splitview(e){this._splitview&&this._splitview.dispose(),this._splitview=e,this._splitviewChangeDisposable.value=new w(this._splitview.onDidSashEnd((()=>{this._onDidLayoutChange.fire(void 0)})),this._splitview.onDidAddView((e=>this._onDidAddView.fire(e))),this._splitview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get height(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.orthogonalSize:this.splitview.size}get width(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.size:this.splitview.orthogonalSize}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._splitviewChangeDisposable=new _,this._panels=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.splitview=new U(this.element,t),this.addDisposables(this._onDidAddView,this._onDidLayoutfromJSON,this._onDidRemoveView,this._onDidLayoutChange)}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),"string"==typeof e.orientation&&(this.splitview.orientation=e.orientation),this._options=Object.assign(Object.assign({},this.options),e),this.splitview.layout(this.splitview.size,this.splitview.orthogonalSize)}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}movePanel(e,t){this.splitview.moveView(e,t)}setVisible(e,t){const i=this.panels.indexOf(e);this.splitview.setViewVisible(i,t)}setActive(e,t){this._activePanel=e,this.panels.filter((t=>t!==e)).forEach((e=>{e.api._onDidActiveChange.fire({isActive:!1}),t||e.focus()})),e.api._onDidActiveChange.fire({isActive:!0}),t||e.focus()}removePanel(e,t){const i=this._panels.get(e.id);if(!i)throw new Error(`unknown splitview panel ${e.id}`);i.dispose(),this._panels.delete(e.id);const n=this.panels.findIndex((t=>t===e));this.splitview.removeView(n,t).dispose();const s=this.panels;s.length>0&&this.setActive(s[s.length-1])}getPanel(e){return this.panels.find((t=>t.id===e))}addPanel(e){var t;if(this._panels.has(e.id))throw new Error(`panel ${e.id} already exists`);const i=this.options.createComponent({id:e.id,name:e.component});i.orientation=this.splitview.orientation,i.init({params:null!==(t=e.params)&&void 0!==t?t:{},minimumSize:e.minimumSize,maximumSize:e.maximumSize,snap:e.snap,priority:e.priority,accessor:this});const n="number"==typeof e.size?e.size:Z.Distribute,s="number"==typeof e.index?e.index:void 0;return this.splitview.addView(i,n,s),this.doAddView(i),this.setActive(i),i}layout(e,t){const[i,n]=this.splitview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.splitview.layout(i,n)}doAddView(e){const t=e.api.onDidFocusChange((t=>{t.isFocused&&this.setActive(e,!0)}));this._panels.set(e.id,t)}toJSON(){var e;return{views:this.splitview.getViews().map(((e,t)=>({size:this.splitview.getViewSize(t),data:e.toJSON(),snap:!!e.snap,priority:e.priority}))),activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,size:this.splitview.size,orientation:this.splitview.orientation}}fromJSON(e){this.clear();const{views:t,orientation:i,size:n,activeView:s}=e,o=[],r=this.width,a=this.height;if(this.splitview=new U(this.element,{orientation:i,proportionalLayout:this.options.proportionalLayout,descriptor:{size:n,views:t.map((e=>{const t=e.data;if(this._panels.has(t.id))throw new Error(`panel ${t.id} already exists`);const n=this.options.createComponent({id:t.id,name:t.component});return o.push((()=>{var i;n.init({params:null!==(i=t.params)&&void 0!==i?i:{},minimumSize:t.minimumSize,maximumSize:t.maximumSize,snap:e.snap,priority:e.priority,accessor:this})})),n.orientation=i,this.doAddView(n),setTimeout((()=>{this._onDidAddView.fire(n)}),0),{size:e.size,view:n}}))}}),this.layout(r,a),o.forEach((e=>e())),"string"==typeof s){const e=this.getPanel(s);e&&this.setActive(e)}this._onDidLayoutfromJSON.fire()}clear(){for(const e of this._panels.values())e.dispose();for(this._panels.clear();this.splitview.length>0;){this.splitview.removeView(0,Z.Distribute,!0).dispose()}}dispose(){for(const t of this._panels.values())t.dispose();this._panels.clear();const e=this.splitview.getViews();this._splitviewChangeDisposable.dispose(),this.splitview.dispose();for(const t of e)t.dispose();this.element.remove(),super.dispose()}}class Nt extends w{get element(){return this._element}constructor(){super(),this._expandedIcon=We({width:"11",height:"11",viewbox:"0 0 24 15",path:"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z"}),this._collapsedIcon=He(),this.disposable=new _,this.apiRef={api:null},this._element=document.createElement("div"),this.element.className="dv-default-header",this._content=document.createElement("span"),this._expander=document.createElement("div"),this._expander.className="dv-pane-header-icon",this.element.appendChild(this._expander),this.element.appendChild(this._content),this.addDisposables(g(this._element,"click",(()=>{var e;null===(e=this.apiRef.api)||void 0===e||e.setExpanded(!this.apiRef.api.isExpanded)})))}init(e){this.apiRef.api=e.api,this._content.textContent=e.title,this.updateIcon(),this.disposable.value=e.api.onDidExpansionChange((()=>{this.updateIcon()}))}updateIcon(){var e;const t=!!(null===(e=this.apiRef.api)||void 0===e?void 0:e.isExpanded);x(this._expander,"collapsed",!t),t?(this._expander.contains(this._collapsedIcon)&&this._collapsedIcon.remove(),this._expander.contains(this._expandedIcon)||this._expander.appendChild(this._expandedIcon)):(this._expander.contains(this._expandedIcon)&&this._expandedIcon.remove(),this._expander.contains(this._collapsedIcon)||this._expander.appendChild(this._collapsedIcon))}update(e){}dispose(){this.disposable.dispose(),super.dispose()}}const Vt=M(),Tt=Number.MAX_SAFE_INTEGER;class kt extends Oe{constructor(e){super({accessor:e.accessor,id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,disableDnd:e.disableDnd,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this.options=e}getBodyComponent(){return this.options.body}getHeaderComponent(){return this.options.header}}class Lt extends re{get id(){return this._id}get panels(){return this.paneview.getPanes()}set paneview(e){this._paneview=e,this._disposable.value=new w(this._paneview.onDidChange((()=>{this._onDidLayoutChange.fire(void 0)})),this._paneview.onDidAddView((e=>this._onDidAddView.fire(e))),this._paneview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get paneview(){return this._paneview}get minimumSize(){return this.paneview.minimumSize}get maximumSize(){return this.paneview.maximumSize}get height(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.orthogonalSize:this.paneview.size}get width(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.size:this.paneview.orthogonalSize}get options(){return this._options}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=Vt.next(),this._disposable=new _,this._viewDisposables=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.element.style.height="100%",this.element.style.width="100%",this.addDisposables(this._onDidLayoutChange,this._onDidLayoutfromJSON,this._onDidDrop,this._onDidAddView,this._onDidRemoveView,this._onUnhandledDragOverEvent),this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.paneview=new $(this.element,{orientation:j.VERTICAL}),this.addDisposables(this._disposable)}setVisible(e,t){const i=this.panels.indexOf(e);this.paneview.setViewVisible(i,t)}focus(){}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),this._options=Object.assign(Object.assign({},this.options),e)}addPanel(e){var t,i;const n=this.options.createComponent({id:e.id,name:e.component});let s;e.headerComponent&&this.options.createHeaderComponent&&(s=this.options.createHeaderComponent({id:e.id,name:e.headerComponent})),s||(s=new Nt);const o=new kt({id:e.id,component:e.component,headerComponent:e.headerComponent,header:s,body:n,orientation:j.VERTICAL,isExpanded:!!e.isExpanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:0,maximumBodySize:Tt});this.doAddPanel(o);const r="number"==typeof e.size?e.size:Z.Distribute,a="number"==typeof e.index?e.index:void 0;return o.init({params:null!==(i=e.params)&&void 0!==i?i:{},minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize,isExpanded:e.isExpanded,title:e.title,containerApi:new pe(this),accessor:this}),this.paneview.addPane(o,r,a),o.orientation=this.paneview.orientation,o}removePanel(e){const t=this.panels.findIndex((t=>t===e));this.paneview.removePane(t),this.doRemovePanel(e)}movePanel(e,t){this.paneview.moveView(e,t)}getPanel(e){return this.panels.find((t=>t.id===e))}layout(e,t){const[i,n]=this.paneview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.paneview.layout(i,n)}toJSON(){const e=e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e;return{views:this.paneview.getPanes().map(((t,i)=>{return{size:this.paneview.getViewSize(i),data:t.toJSON(),minimumSize:(n=t.minimumBodySize,n<=0?void 0:n),maximumSize:e(t.maximumBodySize),headerSize:t.headerSize,expanded:t.isExpanded()};var n})),size:this.paneview.size}}fromJSON(e){this.clear();const{views:t,size:i}=e,n=[],s=this.width,o=this.height;this.paneview=new $(this.element,{orientation:j.VERTICAL,descriptor:{size:i,views:t.map((e=>{var t,i,s;const o=e.data,r=this.options.createComponent({id:o.id,name:o.component});let a;o.headerComponent&&this.options.createHeaderComponent&&(a=this.options.createHeaderComponent({id:o.id,name:o.headerComponent})),a||(a=new Nt);const h=new kt({id:o.id,component:o.component,headerComponent:o.headerComponent,header:a,body:r,orientation:j.VERTICAL,isExpanded:!!e.expanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:null!==(i=e.minimumSize)&&void 0!==i?i:0,maximumBodySize:null!==(s=e.maximumSize)&&void 0!==s?s:Tt});return this.doAddPanel(h),n.push((()=>{var t;h.init({params:null!==(t=o.params)&&void 0!==t?t:{},minimumBodySize:e.minimumSize,maximumBodySize:e.maximumSize,title:o.title,isExpanded:!!e.expanded,containerApi:new pe(this),accessor:this}),h.orientation=this.paneview.orientation})),setTimeout((()=>{this._onDidAddView.fire(h)}),0),{size:e.size,view:h}}))}}),this.layout(s,o),n.forEach((e=>e())),this._onDidLayoutfromJSON.fire()}clear(){for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.paneview.dispose()}doAddPanel(e){const t=new w(e.onDidDrop((e=>{this._onDidDrop.fire(e)})),e.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})));this._viewDisposables.set(e.id,t)}doRemovePanel(e){const t=this._viewDisposables.get(e.id);t&&(t.dispose(),this._viewDisposables.delete(e.id))}dispose(){super.dispose();for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.element.remove(),this.paneview.dispose()}}class Rt extends Pe{get priority(){return this._priority}set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){const e="function"==typeof this._minimumSize?this._minimumSize():this._minimumSize;return e!==this._evaluatedMinimumSize&&(this._evaluatedMinimumSize=e,this.updateConstraints()),e}get maximumSize(){const e="function"==typeof this._maximumSize?this._maximumSize():this._maximumSize;return e!==this._evaluatedMaximumSize&&(this._evaluatedMaximumSize=e,this.updateConstraints()),e}get snap(){return this._snap}constructor(e,t){super(e,t,new Ae(e,t)),this._evaluatedMinimumSize=0,this._evaluatedMaximumSize=Number.POSITIVE_INFINITY,this._minimumSize=0,this._maximumSize=Number.POSITIVE_INFINITY,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this.api.initialize(this),this.addDisposables(this._onDidChange,this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.setActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumSize&&"function"!=typeof e.minimumSize||(this._minimumSize=e.minimumSize),"number"!=typeof e.maximumSize&&"function"!=typeof e.maximumSize||(this._maximumSize=e.maximumSize),this.updateConstraints()})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})))}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}layout(e,t){const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){super.init(e),this._priority=e.priority,e.minimumSize&&(this._minimumSize=e.minimumSize),e.maximumSize&&(this._maximumSize=e.maximumSize),e.snap&&(this._snap=e.snap)}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{minimumSize:(e=this.minimumSize,e<=0?void 0:e),maximumSize:(e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e)(this.maximumSize)});var e}updateConstraints(){this.api._onDidConstraintsChange.fire({maximumSize:this._evaluatedMaximumSize,minimumSize:this._evaluatedMinimumSize})}}function Mt(e,t){return new Ot(e,t).api}function Wt(e,t){const i=new It(e,t);return new le(i)}function Ht(e,t){const i=new Gt(e,t);return new ce(i)}function jt(e,t){const i=new Lt(e,t);return new pe(i)}},6376:(e,t,i)=>{i.d(t,{Pg:()=>D,O4:()=>n.O4,tu:()=>f,$R:()=>x,g1:()=>n.g1,i5:()=>n.i5,Vm:()=>A,TU:()=>C,M:()=>n.M,UM:()=>n.UM,Zc:()=>n.Zc,Hx:()=>n.Hx,MV:()=>n.MV,Qp:()=>n.Qp,Lt:()=>n.Lt,TR:()=>n.TR,ZS:()=>n.ZS});var n=i(5399),s=i(6204),o=i(2457);const r=(e,t)=>{const[i,n]=s.useState(),o=s.useRef(e.componentProps);return s.useImperativeHandle(t,(()=>({update:e=>{o.current=Object.assign(Object.assign({},o.current),e),n(Date.now())}})),[]),s.createElement(e.component,o.current)};r.displayName="DockviewReactJsBridge";const a=(()=>{let e=1;return{next:()=>`dockview_react_portal_key_${(e++).toString()}`}})(),h=s.createContext({});class d{constructor(e,t,i,n,s){this.parent=e,this.portalStore=t,this.component=i,this.parameters=n,this.context=s,this._initialProps={},this.disposed=!1,this.createPortal()}update(e){if(this.disposed)throw new Error("invalid operation: resource is already disposed");this.componentInstance?this.componentInstance.update(e):this._initialProps=Object.assign(Object.assign({},this._initialProps),e)}createPortal(){if(this.disposed)throw new Error("invalid operation: resource is already disposed");if("function"!=typeof(e=this.component)&&!(null==e?void 0:e.$$typeof))throw new Error("Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components");var e;const t=s.createElement(s.forwardRef(r),{component:this.component,componentProps:this.parameters,ref:e=>{this.componentInstance=e,Object.keys(this._initialProps).length>0&&(this.componentInstance.update(this._initialProps),this._initialProps={})}}),i=this.context?s.createElement(h.Provider,{value:this.context},t):t,n=o.createPortal(i,this.parent,a.next());this.ref={portal:n,disposable:this.portalStore.addPortal(n)}}dispose(){var e;null===(e=this.ref)||void 0===e||e.disposable.dispose(),this.disposed=!0}}const l=()=>{const[e,t]=s.useState([]);s.useDebugValue(`Portal count: ${e.length}`);return[e,s.useCallback((e=>{t((t=>[...t,e]));let i=!1;return n.GW.from((()=>{if(i)throw new Error("invalid operation: resource already disposed");i=!0,t((t=>t.filter((t=>t!==e))))}))}),[])]};class p{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._onDidFocus=new n.O4,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new n.O4,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;this._onDidFocus.dispose(),this._onDidBlur.dispose(),null===(e=this.part)||void 0===e||e.dispose()}}class c{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi,tabLocation:e.tabLocation})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class u{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{group:e.group,containerApi:e.containerApi})}focus(){}update(e){var t,i,n;this.parameters&&(this.parameters.params=e.params),null===(t=this.part)||void 0===t||t.update({params:null!==(n=null===(i=this.parameters)||void 0===i?void 0:i.params)&&void 0!==n?n:{}})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class m{get element(){return this._element}get part(){return this._part}constructor(e,t,i){this.component=e,this.reactPortalStore=t,this._group=i,this.mutableDisposable=new n.Gi,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.mutableDisposable.value=new n.KU(this._group.model.onDidAddPanel((()=>{this.updatePanels()})),this._group.model.onDidRemovePanel((()=>{this.updatePanels()})),this._group.model.onDidActivePanelChange((()=>{this.updateActivePanel()})),e.api.onDidActiveChange((()=>{this.updateGroupActive()}))),this._part=new d(this.element,this.reactPortalStore,this.component,{api:e.api,containerApi:e.containerApi,panels:this._group.model.panels,activePanel:this._group.model.activePanel,isGroupActive:this._group.api.isActive,group:this._group})}dispose(){var e;this.mutableDisposable.dispose(),null===(e=this._part)||void 0===e||e.dispose()}update(e){var t;null===(t=this._part)||void 0===t||t.update(e.params)}updatePanels(){this.update({params:{panels:this._group.model.panels}})}updateActivePanel(){this.update({params:{activePanel:this._group.model.activePanel}})}updateGroupActive(){this.update({params:{isGroupActive:this._group.api.isActive}})}}function v(e,t){return e?i=>new m(e,t,i):void 0}const g="props.defaultTabComponent";const f=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.gq.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.gq.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return;const s=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(s[g]=e.defaultTabComponent);const r={createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a}),createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a}),createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a}),createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a}),createTabComponent:e=>new c(e.id,s[e.name],{addPortal:a}),createWatermarkComponent:e.watermarkComponent?()=>new u("watermark",e.watermarkComponent,{addPortal:a}):void 0,defaultTabComponent:e.defaultTabComponent?g:void 0},h=(0,n.lT)(i.current,Object.assign(Object.assign({},function(e){return n.gq.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:d,clientHeight:l}=i.current;return h.layout(d,l),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onWillDrop((t=>{e.onWillDrop&&e.onWillDrop(t)}));return()=>{t.dispose()}}),[e.onWillDrop]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(i[g]=e.defaultTabComponent),o.current.updateOptions({defaultTabComponent:e.defaultTabComponent?g:void 0,createTabComponent:e=>new c(e.id,i[e.name],{addPortal:a})})}),[e.tabComponents,e.defaultTabComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createWatermarkComponent:e.watermarkComponent?()=>new u("watermark",e.watermarkComponent,{addPortal:a}):void 0})}),[e.watermarkComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a})})}),[e.rightHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a})})}),[e.leftHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a})})}),[e.prefixHeaderActionsComponent]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));f.displayName="DockviewComponent";const w=()=>s.createElement("svg",{height:"11",width:"11",viewBox:"0 0 28 28","aria-hidden":"false",focusable:!1,className:"dv-svg"},s.createElement("path",{d:"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"}));var _=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s{var{api:t,containerApi:i,params:n,hideClose:o,closeActionOverride:r,onPointerDown:a,onPointerUp:h,onPointerLeave:d,tabLocation:l}=e,p=_(e,["api","containerApi","params","hideClose","closeActionOverride","onPointerDown","onPointerUp","onPointerLeave","tabLocation"]);const c=function(e){const[t,i]=s.useState(e.title);return s.useEffect((()=>{const n=e.onDidTitleChange((e=>{i(e.title)}));return t!==e.title&&i(e.title),()=>{n.dispose()}}),[e]),t}(t),u=s.useRef(!1),m=s.useCallback((e=>{e.preventDefault(),r?r():t.close()}),[t,r]),v=s.useCallback((e=>{e.preventDefault()}),[]),g=s.useCallback((e=>{u.current=1===e.button,null==a||a(e)}),[a]),f=s.useCallback((e=>{u&&1===e.button&&!o&&(u.current=!1,m(e)),null==h||h(e)}),[h,m,o]),D=s.useCallback((e=>{u.current=!1,null==d||d(e)}),[d]);return s.createElement("div",Object.assign({"data-testid":"dockview-dv-default-tab"},p,{onPointerDown:g,onPointerUp:f,onPointerLeave:D,className:"dv-default-tab"}),s.createElement("span",{className:"dv-default-tab-content"},c),!o&&s.createElement("div",{className:"dv-default-tab-action",onPointerDown:v,onClick:m},s.createElement(w,null)))};class b extends n.hJ{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new d(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.fX(this._params.accessor)})}}const C=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.mH.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.mH.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.cO)(i.current,Object.assign(Object.assign({},function(e){return n.mH.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));C.displayName="SplitviewComponent";class y extends n.Tg{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new d(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.Tn(this._params.accessor)})}}const x=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.kQ.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.kQ.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new y(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.rc)(i.current,Object.assign(Object.assign({},function(e){return n.kQ.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new y(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));x.displayName="GridviewComponent";class S{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,title:e.title,containerApi:e.containerApi})}toJSON(){return{id:this.id}}update(e){var t;null===(t=this.part)||void 0===t||t.update(e.params)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}const A=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.jl.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.jl.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return()=>{};const s=null!==(t=e.headerComponents)&&void 0!==t?t:{},r={createComponent:t=>new S(t.id,e.components[t.name],{addPortal:a}),createHeaderComponent:e=>new S(e.id,s[e.name],{addPortal:a})},h=(0,n.iz)(i.current,Object.assign(Object.assign({},function(e){return n.jl.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:d,clientHeight:l}=i.current;return h.layout(d,l),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new S(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.headerComponents)&&void 0!==t?t:{};o.current.updateOptions({createHeaderComponent:e=>new S(e.id,i[e.name],{addPortal:a})})}),[e.headerComponents]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));A.displayName="PaneviewComponent"},6811:(e,t,i)=>{i.d(t,{Z:()=>P});i(6204);var n=i(1512),s=i(489),o=i(667),r=i(3651);const a={admonition:"admonition_Gfwi",admonitionHeading:"admonitionHeading_f1Ed",admonitionIcon:"admonitionIcon_kpSf",admonitionContent:"admonitionContent_UjKb"};var h=i(3188);function d(e){let{type:t,className:i,children:n}=e;return(0,h.jsx)("div",{className:(0,s.Z)(r.k.common.admonition,r.k.common.admonitionType(t),a.admonition,i),children:n})}function l(e){let{icon:t,title:i}=e;return(0,h.jsx)("div",{className:a.admonitionHeading,children:(0,h.jsx)("span",{className:a.admonitionIcon,children:t})})}function p(e){let{children:t}=e;return t?(0,h.jsx)("div",{className:a.admonitionContent,children:t}):null}function c(e){const{type:t,icon:i,title:n,children:s,className:o}=e;return(0,h.jsxs)(d,{type:t,className:o,children:[(0,h.jsx)(l,{title:n,icon:i}),(0,h.jsx)(p,{children:s})]})}function u(e){return(0,h.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const m={icon:(0,h.jsx)(u,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function v(e){return(0,h.jsx)(c,{...m,...e,className:(0,s.Z)("alert alert--secondary",e.className),children:e.children})}function g(e){return(0,h.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const f={icon:(0,h.jsx)(g,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function w(e){return(0,h.jsx)(c,{...f,...e,className:(0,s.Z)("alert alert--success",e.className),children:e.children})}function _(e){return(0,h.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const D={icon:(0,h.jsx)(_,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function b(e){return(0,h.jsx)(c,{...D,...e,className:(0,s.Z)("alert alert--info",e.className),children:e.children})}function C(e){return(0,h.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const y={icon:(0,h.jsx)(C,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function x(e){return(0,h.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const S={icon:(0,h.jsx)(x,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const A={icon:(0,h.jsx)(C,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const z={...{note:v,tip:w,info:b,warning:function(e){return(0,h.jsx)(c,{...y,...e,className:(0,s.Z)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,h.jsx)(c,{...S,...e,className:(0,s.Z)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,h.jsx)(v,{title:"secondary",...e}),important:e=>(0,h.jsx)(b,{title:"important",...e}),success:e=>(0,h.jsx)(w,{title:"success",...e}),caution:function(e){return(0,h.jsx)(c,{...A,...e,className:(0,s.Z)("alert alert--warning",e.className),children:e.children})}}};function P(e){const t=(0,n.X)(e),i=(s=t.type,z[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),z.info));var s;return(0,h.jsx)(i,{...t})}},6283:(e,t,i)=>{i.d(t,{Z:()=>b});i(6204);var n=i(489),s=i(7393),o=i(6180),r=i(5161),a=i(7770),h=i(1427),d=i(3558),l=i(2292),p=i(600),c=i(3651),u=i(347),m=i(8517),v=i(9600),g=i(3188);function f(e){let{children:t}=e;const i=function(){const{metadata:e,frontMatter:t,contentTitle:i}=(0,o.k)();return t.hide_title||void 0!==i?null:e.title}();return(0,g.jsxs)("div",{className:(0,n.Z)(c.k.docs.docMarkdown,"markdown"),children:[i&&(0,g.jsx)("header",{children:(0,g.jsx)(u.Z,{as:"h1",children:(0,g.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[(0,g.jsx)("div",{children:i}),(0,g.jsx)(v.e9,{})]})})}),(0,g.jsx)(m.Z,{children:t})]})}var w=i(9333),_=i(653);const D={docItemContainer:"docItemContainer_c0TR",docItemCol:"docItemCol_z5aJ"};function b(e){let{children:t}=e;const i=function(){const{frontMatter:e,toc:t}=(0,o.k)(),i=(0,s.i)(),n=e.hide_table_of_contents,r=!n&&t.length>0;return{hidden:n,mobile:r?(0,g.jsx)(l.Z,{}):void 0,desktop:!r||"desktop"!==i&&"ssr"!==i?void 0:(0,g.jsx)(p.Z,{})}}(),{metadata:{unlisted:c}}=(0,o.k)();return(0,g.jsxs)("div",{className:"row",children:[(0,g.jsxs)("div",{className:(0,n.Z)("col",!i.hidden&&D.docItemCol),children:[c&&(0,g.jsx)(_.Z,{}),(0,g.jsx)(a.Z,{}),(0,g.jsxs)("div",{className:D.docItemContainer,children:[(0,g.jsxs)("article",{children:[(0,g.jsx)(w.Z,{}),(0,g.jsx)(h.Z,{}),i.mobile,(0,g.jsx)(f,{children:t}),(0,g.jsx)(d.Z,{})]}),(0,g.jsx)(r.Z,{})]})]}),i.desktop&&(0,g.jsx)("div",{className:"toc-display col col--3",children:i.desktop})]})}},1743:(e,t,i)=>{i.d(t,{Z:()=>r});i(6204);var n=i(1446),s=i(9600),o=i(2873);const r={...n.Z,FrameworkSpecific:s.RV,CodeRunner:o.S}},9600:(e,t,i)=>{i.d(t,{GU:()=>p,RV:()=>v,e9:()=>u});var n=i(4940),s=i(6376),o=i(6204),r=i(2262),a=i(6261),h=i(3188);const d=[{value:"JavaScript",label:"JavaScript",icon:"img/js-icon.svg"},{value:"React",label:"React",icon:"img/react-icon.svg"},{value:"Vue",label:"Vue",icon:"img/vue-icon.svg"}],l=new s.O4({replay:!0});function p(){const[e,t]=o.useState(localStorage.getItem("dv-docs-framework")??d[0].value);o.useEffect((()=>{const e=l.event((e=>[t(e)]));return l.fire(localStorage.getItem("dv-docs-framework")??d[0].value),()=>{e.dispose()}}),[]);const i=o.useCallback((e=>{localStorage.setItem("dv-docs-framework",e),t(e),l.fire(e)}),[]);return[d.find((t=>t.value===e)),i]}const c=()=>{const[e,t]=p();return(0,h.jsxs)(r.fC,{children:[(0,h.jsx)(r.xz,{asChild:!0,children:(0,h.jsxs)("div",{className:"framework-menu-item-select",children:[(0,h.jsx)("span",{style:{padding:"0px 8px"},children:e.label}),(0,h.jsx)("img",{width:20,height:20,src:(0,a.Z)(e.icon),style:{marginRight:"8px"}})]})}),(0,h.jsx)(r.VY,{side:"bottom",align:"end",sideOffset:10,className:"DropdownMenuContent",children:d.map((e=>(0,h.jsx)(r.ck,{onClick:()=>t(e.label),className:"DropdownMenuItem",children:(0,h.jsxs)("div",{className:"framework-menu-item",children:[(0,h.jsx)("span",{style:{paddingRight:"8px"},children:e.label}),(0,h.jsx)("img",{width:20,height:20,src:(0,a.Z)(e.icon)})]})})))})]})},u=()=>(0,h.jsx)(n.Z,{children:()=>(0,h.jsx)(c,{})}),m=e=>{const[t]=p();return t.value===e.framework?e.children:null},v=e=>(0,h.jsx)(n.Z,{children:()=>(0,h.jsx)(m,{...e})})},2873:(e,t,i)=>{i.d(t,{S:()=>a});i(6204);var n=i(9600),s=i(4940),o=i(3188);const r=e=>{const[t]=(0,n.GU)();let i=t.label.toLowerCase();"javascript"===i&&(i="typescript");e.id,t.label.toLowerCase();const s=`/templates/${e.id}/${i}/index.html`;return(0,o.jsx)("iframe",{src:s,style:{width:"100%",height:`${e.height??300}px`}})},a=e=>(0,o.jsx)(s.Z,{children:()=>(0,o.jsx)(r,{...e})})}}]); -//# sourceMappingURL=17896441.2b11f8df.js.map \ No newline at end of file +"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[7918,3085],{5399:(e,t,i)=>{i.d(t,{CJ:()=>Ot,KU:()=>w,GW:()=>l,O4:()=>v,Gi:()=>_,Tn:()=>ce,Tg:()=>Xe,g1:()=>B,i5:()=>j,gq:()=>Be,kQ:()=>oe,jl:()=>Ce,mH:()=>J,fX:()=>le,hJ:()=>Rt,lT:()=>Mt,rc:()=>Ht,iz:()=>jt,cO:()=>Wt,M:()=>we,UM:()=>it,Zc:()=>ot,Hx:()=>Qe,MV:()=>nt,Qp:()=>et,Lt:()=>rt,TR:()=>st,ZS:()=>tt});class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var d,l;r.INSTANCE=new r,function(e){e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=t.map((t=>t(e)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}}}}(d||(d={}));class p{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class c{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class u{static create(){var e;return new u(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class m{constructor(e,t){this.callback=e,this.stacktrace=t}}class v{static setLeakageMonitorEnabled(e){e!==v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.clear(),v.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new m(e,v.ENABLE_TRACKING?u.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):v.ENABLE_TRACKING}}},v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.add(this._event,u.create())),this._event}fire(e){var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const i of this._listeners)i.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(v.ENABLE_TRACKING&&queueMicrotask((()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())})),this._listeners=[]),v.ENABLE_TRACKING&&this._event&&v.MEMORY_LEAK_WATCHER.delete(this._event))}}function g(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}v.ENABLE_TRACKING=!1,v.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class f{constructor(){this._onFired=new v,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event((()=>{this._currentFireCount>t&&e()}))}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask((()=>{this._queued=!1,this._onFired.fire()})))}dispose(){this._onFired.dispose()}}!function(e){e.NONE={dispose:()=>{}},e.from=function(e){return{dispose:()=>{e()}}}}(l||(l={}));class w{get isDisposed(){return this._isDisposed}constructor(){this._isDisposed=!1;for(var e=arguments.length,t=new Array(e),i=0;ithis._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class _{constructor(){this._disposable=l.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=l.NONE)}}class D extends w{constructor(e){super(),this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,b(e,(e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)})))}}function b(e,t){const i=new ResizeObserver((e=>{requestAnimationFrame((()=>{const i=e[0];t(i)}))}));return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const C=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function S(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function A(e){return new z(e)}class z extends w{constructor(e){super(),this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=S(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{S(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(g(e,"focus",n,!0)),this.addDisposables(g(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const P="dv-quasiPreventDefault";function E(e){return e[P]}function O(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function G(e){void 0===e&&(e=document);const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const n of t)i.set(n,n.style.pointerEvents),n.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class I{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const t of this._classNames)x(this.element,t,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const t of this._classNames)x(this.element,t,!0)}}function N(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function V(e,t){if(e.length!==t.length)return!1;for(let i=0;i-1&&(e.splice(i,1),e.unshift(t))}function k(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function L(e,t){const i=e.findIndex((e=>e===t));return i>-1&&(e.splice(i,1),!0)}const R=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),M=()=>{let e=1;return{next:()=>(e++).toString()}},W=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;nt;n--)i.push(n);return i};class H{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=R(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var j,F,B,Z;!function(e){e.HORIZONTAL="HORIZONTAL",e.VERTICAL="VERTICAL"}(j||(j={})),function(e){e[e.MAXIMUM=0]="MAXIMUM",e[e.MINIMUM=1]="MINIMUM",e[e.DISABLED=2]="DISABLED",e[e.ENABLED=3]="ENABLED"}(F||(F={})),function(e){e.Low="low",e.High="high",e.Normal="normal"}(B||(B={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(Z||(Z={}));class U{get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,C(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==j.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce(((e,t)=>e+t.minimumSize),0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce(((e,t)=>e+t.maximumSize),0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,x(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,x(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,n,s=this;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new v,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=function(e,t,i,n,o,r,a,h,d){if(void 0===i&&(i=s.viewItems.map((e=>e.size))),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===a&&(a=Number.POSITIVE_INFINITY),e<0||e>s.viewItems.length)return 0;const l=W(e,-1),p=W(e+1,s.viewItems.length);if(o)for(const s of o)T(l,s),T(p,s);if(n)for(const s of n)k(l,s),k(p,s);const c=l.map((e=>s.viewItems[e])),u=l.map((e=>i[e])),m=p.map((e=>s.viewItems[e])),v=p.map((e=>i[e])),g=l.reduce(((e,t)=>e+s.viewItems[t].minimumSize-i[t]),0),f=l.reduce(((e,t)=>e+s.viewItems[t].maximumSize-i[t]),0),w=0===p.length?Number.POSITIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].minimumSize),0),_=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].maximumSize),0),D=Math.max(g,_),b=Math.min(w,f);let C=!1;if(h){const e=s.viewItems[h.index],i=t>=h.limitDelta;C=i!==e.visible,e.setVisible(i,h.size)}if(!C&&d){const e=s.viewItems[d.index],i=t{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(C(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(y(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=W(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>this.viewItems[e].priority===B.Low)),e],s=i.filter((e=>this.viewItems[e].priority===B.High)),o=this.viewItems[e];t=Math.round(t),t=R(t,o.minimumSize,Math.min(o.maximumSize,this._size)),o.size=t,this.relayout(n,s)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=R(t,e.minimumSize,e.maximumSize),e.size=t;const n=W(this.viewItems.length).filter((e=>e!==i)),s=[...n.filter((e=>this.viewItems[e].priority===B.Low)),i],o=n.filter((e=>this.viewItems[e].priority===B.High));this.relayout([...s,i],o)}addView(e,t,i,n){void 0===t&&(t={type:"distribute"}),void 0===i&&(i=this.viewItems.length);const s=document.createElement("div");let o;s.className="dv-view",s.appendChild(e.element),o="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange((e=>this.onDidChange(a,e.size))),a=new H(s,e,o,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(s)}});if(i===this.viewItems.length?this.viewContainer.appendChild(s):this.viewContainer.insertBefore(s,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=G(),n=this._orientation===j.HORIZONTAL?t.clientX:t.clientY,s=function(e,t){for(let i=0;it.container===e)),o=this.viewItems.map((e=>e.size));let r,a;const h=W(s,-1),d=W(s+1,this.viewItems.length),l=h.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-o[t])),0),p=h.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t])),0),c=0===d.length?Number.POSITIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].minimumSize)),0),u=0===d.length?Number.NEGATIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize)),0),m=Math.max(l,u),v=Math.min(c,p),g=this.findFirstSnapIndex(h),f=this.findFirstSnapIndex(d);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?m-t:m+t,size:e.size}}if("number"==typeof f){const e=this.viewItems[f],t=Math.floor(e.viewMinimumSize/2);a={index:f,limitDelta:e.visible?v+t:v-t,size:e.size}}const w=e=>{const t=(this._orientation===j.HORIZONTAL?e.clientX:e.clientY)-n;this.resize(s,t,o,void 0,void 0,m,v,r,a),this.distributeEmptySpace(),this.layoutViews()},_=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",_),document.removeEventListener("pointercancel",_),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",w),document.addEventListener("pointerup",_),document.addEventListener("pointercancel",_)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}n||this.relayout([i]),n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=R(i,r.minimumSize,r.maximumSize);const n=W(this.viewItems.length),s=n.filter((e=>this.viewItems[e].priority===B.Low)),o=n.filter((e=>this.viewItems[e].priority===B.High));this.relayout(s,o)}removeView(e,t,i){void 0===i&&(i=!1);const n=this.viewItems.splice(e,1)[0];if(n.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),n=void 0===i?this.getViewSize(e):Z.Invisible(i),s=this.removeView(e,void 0,!0);this.addView(s,n,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=R(Math.round(s*e/t),n.minimumSize,n.maximumSize))}}else{const t=W(this.viewItems.length),n=t.filter((e=>this.viewItems[e].priority===B.Low)),s=t.filter((e=>this.viewItems[e].priority===B.High));this.resize(this.viewItems.length-1,e-i,void 0,n,s)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=W(this.viewItems.length-1,-1),s=n.filter((e=>this.viewItems[e].priority===B.Low)),o=n.filter((e=>this.viewItems[e].priority===B.High));for(const r of o)T(n,r);for(const r of s)k(n,r);"number"==typeof e&&k(n,e);for(let r=0;0!==i&&r0&&(this._proportions=this.viewItems.map((e=>e.visible?e.size/this._contentSize:void 0)))}layoutViews(){if(this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter((e=>e.visible)),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let n=0;const s=[],o=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((e,r)=>{n+=this.viewItems[r].size,s.push(n);const a=e.visible?e.size-i:0,h=Math.max(0,o[r]-1),d=0===r||0===h?0:s[r-1]+h/t*i;if(r0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const s=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const o=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let a=0;a0||this.startSnappingEnabled)?this.updateSash(e,F.MINIMUM):l&&t[a]&&(r{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class $ extends w{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:j.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new U(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach((e=>{const t=new w(e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}))),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize})),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire(void 0)})),this.splitview.onDidAddView((()=>{this._onDidChange.fire()})),this.splitview.onDidRemoveView((()=>{this._onDidChange.fire()})))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i,n){void 0===i&&(i=this.splitview.length),void 0===n&&(n=!1);const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t){void 0===t&&(t={skipDispose:!1});const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),y(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,C(this.element,"dv-animated")}),200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach((e=>{e.disposable.dispose(),e.pane.dispose()})),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===j.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===j.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,n){void 0===n&&(n=0),this.view=e,this.orientation=t,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=n,this._disposable=this.view.onDidChange((e=>{e?this._onDidChange.fire({size:this.orientation===j.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===j.VERTICAL?e.height:e.width}):this._onDidChange.fire({})}))}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class Y extends w{get width(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0)))}get maximumSize(){return Math.min(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY)))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===j.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===j.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===j.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===j.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return B.Normal;const e=this.children.map((e=>void 0===e.priority?B.Normal:e.priority));return e.some((e=>e===B.High))?B.High:e.some((e=>e===B.Low))?B.Low:B.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach((t=>{t instanceof Y&&(t.margin=e)}))}constructor(e,t,i,n,s,o,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=l.NONE,this.children=[],this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=s,this._size=n,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=a.map((e=>e.node)),this.splitview=new U(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new U(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=o,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire({})}))),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const n=0===this.splitview.contentSize;(t&&i||!t&&n)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new w(d.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((e,t)=>e instanceof Y?e.onDidVisibilityChange((e=>{let{visible:i}=e;this.setChildVisible(t,i)})):l.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function q(e,t){if(e instanceof X)return e;if(e instanceof Y)return q(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];n.addChild(K(i,i.size,i.orthogonalSize),i.size,0,!0)}return n}return new X(e.view,e.orientation,i)}function Q(e,t,i){if(e instanceof Y){const n=new Y(ie(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(Q(r,i,h),h,0,!0)}return n}return new X(e.view,ie(e.orientation),i)}function ee(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=function(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}(t);return[...ee(t.parentElement.parentElement.parentElement),i]}function te(e,t,i){const n=function(e,t){return t.length%2==0?ie(e):e}(e,t),s=function(e){return"top"===e||"bottom"===e?j.VERTICAL:j.HORIZONTAL}(i);if(n===s){const[e,n]=N(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}const ie=e=>e===j.HORIZONTAL?j.VERTICAL:j.HORIZONTAL;const ne=(e,t)=>{const i=t===j.VERTICAL?e.box.width:e.box.height;return function(e){return!!e.children}(e)?{type:"branch",data:e.children.map((e=>ne(e,ie(t)))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class se{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=Q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof Y&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=ee(e.element),[n,s]=this.getNode(i);if(!(s instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n=0;n--){const s=i.children[n];s instanceof X?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=ee(e.element)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,n=i===j.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,n),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,n]=this.getNode(t);if(!(n instanceof X))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ie(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new X(r,t,n,e.size)}return o}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=K(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new Y(ie(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Q(t,t.orthogonalSize,t.size),Z.Distribute,0)}else this._root.addChild(e,Z.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const n={height:e.height,width:e.width};if(e instanceof X)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let o=0;o-1;s--){const n=i[s],o=e[s]||0;if(t?o-1>-1:o+1h.getChildSize(t)));if(h.removeChild(l,t).dispose(),a instanceof Y){u.splice(l,1,...a.children.map((e=>e.size)));for(let e=0;e0;)a.removeChild(0)}else{const e=new X(a.view,ie(a.orientation),a.size),t=c?a.orthogonalSize:Z.Invisible(a.orthogonalSize);h.addChild(e,t,l)}a.dispose();for(let m=0;m=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,i)}}const oe=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class re extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t){void 0===t&&(t=!1),super(),this._disableResizing=t,this._element=e,this.addDisposables(b(this._element,(e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const ae=M();function he(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class de extends re{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map((e=>e.value))}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=ae.next(),this._groups=new Map,this._onDidRemove=new v,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new v,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new v,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new f,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new f,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new se(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange((e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})})),this.gridview.onDidViewVisibilityChange((()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire())),this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.layout(this.width,this.height,!0)})),l.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),d.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)((()=>{this._bufferOnDidLayoutChange.fire()})),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(ee(e.element))}updateOptions(e){var t,i,n,s;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t,i){void 0===t&&(t=[0]),this.gridview.addView(e,null!=i?i:Z.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),n=this.gridview.remove(e,Z.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return n}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class le{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class pe{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ce{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPanel(){return this.component.onDidAddGroup}get onDidRemovePanel(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActiveGroupChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get panels(){return this.component.groups}get orientation(){return this.component.orientation}set orientation(e){this.component.updateOptions({orientation:e})}constructor(e){this.component=e}focus(){this.component.focus()}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e,t){this.component.removePanel(e,t)}movePanel(e,t){this.component.movePanel(e,t)}getPanel(e){return this.component.getPanel(e)}fromJSON(e){return this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ue{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}get panels(){return this.component.panels}get groups(){return this.component.groups}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e){this.component.removePanel(e)}addGroup(e){return this.component.addGroup(e)}closeAllGroups(){return this.component.closeAllGroups()}removeGroup(e){this.component.removeGroup(e)}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.addFloatingGroup(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}moveToNext(e){this.component.moveToNext(e)}moveToPrevious(e){this.component.moveToPrevious(e)}maximizeGroup(e){this.component.maximizeGroup(e.group)}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.exitMaximizedGroup()}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.addPopoutGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me extends w{constructor(e,t){super(),this.el=e,this.disabled=t,this.dataDisposable=new _,this.pointerEventsDisposable=new _,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this.addDisposables(this._onDragStart,this.dataDisposable,this.pointerEventsDisposable),this.configure()}setDisabled(e){this.disabled=e}isCancelled(e){return!1}configure(){this.addDisposables(this._onDragStart,g(this.el,"dragstart",(e=>{if(e.defaultPrevented||this.isCancelled(e)||this.disabled)return void e.preventDefault();const t=G();if(this.pointerEventsDisposable.value={dispose:()=>{t.release()}},this.el.classList.add("dv-dragged"),setTimeout((()=>this.el.classList.remove("dv-dragged")),0),this.dataDisposable.value=this.getData(e),this._onDragStart.fire(e),e.dataTransfer){e.dataTransfer.effectAllowed="move";e.dataTransfer.items.length>0||e.dataTransfer.setData("text/plain","")}})),g(this.el,"dragend",(()=>{this.pointerEventsDisposable.dispose(),setTimeout((()=>{this.dataDisposable.dispose()}),0)})))}}class ve extends w{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(g(this.element,"dragenter",(e=>{this.onDragEnter(e)}),!0)),this.addDisposables(g(this.element,"dragover",(e=>{this.onDragOver(e)}),!0)),this.addDisposables(g(this.element,"dragleave",(e=>{this.onDragLeave(e)}))),this.addDisposables(g(this.element,"dragend",(e=>{this.onDragEnd(e)}))),this.addDisposables(g(this.element,"drop",(e=>{this.onDrop(e)})))}}class ge extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}constructor(e){super(),this.options=e}}function fe(e){switch(e){case"above":return"top";case"below":return"bottom";case"left":return"left";case"right":return"right";case"within":return"center";default:throw new Error(`invalid direction '${e}'`)}}function we(e){switch(e){case"top":return"above";case"bottom":return"below";case"left":return"left";case"right":return"right";case"center":return"within";default:throw new Error(`invalid position '${e}'`)}}const _e={value:20,type:"percentage"},De={value:50,type:"percentage"};class be extends w{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new ve(this.element,{onDragEnter:()=>{var e,t,i;null===(i=null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||void 0===i||i.getElements()},onDragOver:e=>{var t,i,n,s,o,r,a;be.ACTUAL_TARGET=this;const h=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);if(0===this._acceptedTargetZonesSet.size){if(h)return;return void this.removeDropTarget()}const d=null!==(o=null===(s=(n=this.options).getOverlayOutline)||void 0===s?void 0:s.call(n))&&void 0!==o?o:this.element,l=d.offsetWidth,p=d.offsetHeight;if(0===l||0===p)return;const c=e.currentTarget.getBoundingClientRect(),u=(null!==(r=e.clientX)&&void 0!==r?r:0)-c.left,m=(null!==(a=e.clientY)&&void 0!==a?a:0)-c.top,v=this.calculateQuadrant(this._acceptedTargetZonesSet,u,m,l,p);if(this.isAlreadyUsed(e)||null===v)return void this.removeDropTarget();if(!this.options.canDisplayOverlay(e,v)){if(h)return;return void this.removeDropTarget()}const g=new ge({nativeEvent:e,position:v});this._onWillShowOverlay.fire(g),g.defaultPrevented?this.removeDropTarget():(this.markAsUsed(e),h||this.targetElement||(this.targetElement=document.createElement("div"),this.targetElement.className="dv-drop-target-dropzone",this.overlayElement=document.createElement("div"),this.overlayElement.className="dv-drop-target-selection",this._state="center",this.targetElement.appendChild(this.overlayElement),d.classList.add("dv-drop-target"),d.append(this.targetElement)),this.toggleClasses(v,l,p),this._state=v)},onDragLeave:()=>{var e,t;(null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||this.removeDropTarget()},onDragEnd:e=>{var t,i;const n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);n&&be.ACTUAL_TARGET===this&&this._state&&(e.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:e})),this.removeDropTarget(),null==n||n.clear()},onDrop:e=>{var t,i,n;e.preventDefault();const s=this._state;this.removeDropTarget(),null===(n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t))||void 0===n||n.clear(),s&&(e.stopPropagation(),this._onDrop.fire({position:s,nativeEvent:e}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(e){e[be.USED_EVENT_ID]=!0}isAlreadyUsed(e){const t=e[be.USED_EVENT_ID];return"boolean"==typeof t&&t}toggleClasses(e,t,i){var n,s,o,r,a,h,d;const l=null===(s=(n=this.options).getOverrideTarget)||void 0===s?void 0:s.call(n);if(!l&&!this.overlayElement)return;const p=t<100,c=i<100,u="left"===e,m="right"===e,v="top"===e,g="bottom"===e,f=!p&&m,w=!p&&u,_=!c&&v,D=!c&&g;let b=1;const C=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.size)&&void 0!==r?r:De;if("percentage"===C.type?b=R(C.value,0,100)/100:((f||w)&&(b=R(0,C.value,t)/t),(_||D)&&(b=R(0,C.value,i)/i)),l){const n=null!==(d=null===(h=(a=this.options).getOverlayOutline)||void 0===h?void 0:h.call(a))&&void 0!==d?d:this.element,s=n.getBoundingClientRect(),o=l.getElements(void 0,n),r=o.root,c=o.overlay,C=r.getBoundingClientRect(),y=s.top-C.top,S=s.left-C.left,A={top:y,left:S,width:t,height:i};if(f?(A.left=S+t*(1-b),A.width=t*b):w?A.width=t*b:_?A.height=i*b:D&&(A.top=y+i*(1-b),A.height=i*b),p&&u&&(A.width=4),p&&m&&(A.left=S+t-4,A.width=4),!function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;return e.style.top!==r||e.style.left!==a||e.style.width!==h||e.style.height!==d}(c,A))return;return function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;e.style.top=r,e.style.left=a,e.style.width=h,e.style.height=d,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(c,A),c.className="dv-drop-target-anchor"+(this.options.className?` ${this.options.className}`:""),x(c,"dv-drop-target-left",u),x(c,"dv-drop-target-right",m),x(c,"dv-drop-target-top",v),x(c,"dv-drop-target-bottom",g),x(c,"dv-drop-target-center","center"===e),void(o.changed&&(x(c,"dv-drop-target-anchor-container-changed",!0),setTimeout((()=>{x(c,"dv-drop-target-anchor-container-changed",!1)}),10)))}if(!this.overlayElement)return;const y={top:"0px",left:"0px",width:"100%",height:"100%"};f?(y.left=100*(1-b)+"%",y.width=100*b+"%"):w?y.width=100*b+"%":_?y.height=100*b+"%":D&&(y.top=100*(1-b)+"%",y.height=100*b+"%"),function(e,t){const{top:i,left:n,width:s,height:o}=t;e.style.top=i,e.style.left=n,e.style.width=s,e.style.height=o,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(this.overlayElement,y),x(this.overlayElement,"dv-drop-target-small-vertical",c),x(this.overlayElement,"dv-drop-target-small-horizontal",p),x(this.overlayElement,"dv-drop-target-left",u),x(this.overlayElement,"dv-drop-target-right",m),x(this.overlayElement,"dv-drop-target-top",v),x(this.overlayElement,"dv-drop-target-bottom",g),x(this.overlayElement,"dv-drop-target-center","center"===e)}calculateQuadrant(e,t,i,n,s){var o,r;const a=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.activationSize)&&void 0!==r?r:_e;return"percentage"===a.type?function(e,t,i,n,s,o){const r=100*t/n,a=100*i/s;if(e.has("left")&&r100-o)return"right";if(e.has("top")&&a100-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value):function(e,t,i,n,s,o){if(e.has("left")&&tn-o)return"right";if(e.has("top")&&is-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value)}removeDropTarget(){var e;this.targetElement&&(this._state=void 0,null===(e=this.targetElement.parentElement)||void 0===e||e.classList.remove("dv-drop-target"),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0)}}be.USED_EVENT_ID="__dockview_droptarget_event_is_used__";const Ce=(()=>{const e={disableAutoResizing:void 0,disableDnd:void 0,className:void 0};return Object.keys(e)})();class ye extends c{constructor(e,t,i,n){super(),this.nativeEvent=e,this.position=t,this.getData=i,this.panel=n}}class xe extends p{constructor(){super()}}class Se extends w{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new _,this._onDidDimensionChange=new v,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new v,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new v,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new v,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new v,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new v,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange((e=>{this._isFocused=e.isFocused})),this.onDidActiveChange((e=>{this._isActive=e.isActive})),this.onDidVisibilityChange((e=>{this._isVisible=e.isVisible})),this.onDidDimensionsChange((e=>{this._width=e.width,this._height=e.height})),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event((t=>{this._parameters=t,e.update({params:t})}))}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}}class Ae extends Se{constructor(e,t){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v({replay:!0}),this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class ze extends Ae{set pane(e){this._pane=e}constructor(e,t){super(e,t),this._onDidExpansionChange=new v({replay:!0}),this.onDidExpansionChange=this._onDidExpansionChange.event,this._onMouseEnter=new v({}),this.onMouseEnter=this._onMouseEnter.event,this._onMouseLeave=new v({}),this.onMouseLeave=this._onMouseLeave.event,this.addDisposables(this._onDidExpansionChange,this._onMouseEnter,this._onMouseLeave)}setExpanded(e){var t;null===(t=this._pane)||void 0===t||t.setExpanded(e)}get isExpanded(){var e;return!!(null===(e=this._pane)||void 0===e?void 0:e.isExpanded())}}class Pe extends w{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){var e;return null===(e=this._params)||void 0===e?void 0:e.params}constructor(e,t,i){super(),this.id=e,this.component=t,this.api=i,this._height=0,this._width=0,this._element=document.createElement("div"),this._element.tabIndex=-1,this._element.style.outline="none",this._element.style.height="100%",this._element.style.width="100%",this._element.style.overflow="hidden";const n=A(this._element);this.addDisposables(this.api,n.onDidFocus((()=>{this.api._onDidChangeFocus.fire({isFocused:!0})})),n.onDidBlur((()=>{this.api._onDidChangeFocus.fire({isFocused:!1})})),n)}focus(){const e=new xe;this.api._onWillFocus.fire(e),e.defaultPrevented||this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t,i;this._params=Object.assign(Object.assign({},this._params),{params:Object.assign(Object.assign({},null===(t=this._params)||void 0===t?void 0:t.params),e.params)});for(const n of Object.keys(e.params))void 0===e.params[n]&&delete this._params.params[n];null===(i=this.part)||void 0===i||i.update({params:this._params.params})}toJSON(){var e,t;const i=null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{};return{id:this.id,component:this.component,params:Object.keys(i).length>0?i:void 0}}dispose(){var e;this.api.dispose(),null===(e=this.part)||void 0===e||e.dispose(),super.dispose()}}class Ee extends Pe{set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){return this.headerSize+(this.isExpanded()?this._minimumBodySize:0)}get maximumSize(){return this.headerSize+(this.isExpanded()?this._maximumBodySize:0)}get size(){return this._size}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get minimumBodySize(){return this._minimumBodySize}set minimumBodySize(e){this._minimumBodySize="number"==typeof e?e:0}get maximumBodySize(){return this._maximumBodySize}set maximumBodySize(e){this._maximumBodySize="number"==typeof e?e:Number.POSITIVE_INFINITY}get headerVisible(){return this._headerVisible}set headerVisible(e){this._headerVisible=e,this.header.style.display=e?"":"none"}constructor(e){super(e.id,e.component,new ze(e.id,e.component)),this._onDidChangeExpansionState=new v({replay:!0}),this.onDidChangeExpansionState=this._onDidChangeExpansionState.event,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=0,this._size=0,this._isExpanded=!1,this.api.pane=this,this.api.initialize(this),this.headerSize=e.headerSize,this.headerComponent=e.headerComponent,this._minimumBodySize=e.minimumBodySize,this._maximumBodySize=e.maximumBodySize,this._isExpanded=e.isExpanded,this._headerVisible=e.isHeaderVisible,this._onDidChangeExpansionState.fire(this.isExpanded()),this._orientation=e.orientation,this.element.classList.add("dv-pane"),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})),g(this.element,"mouseenter",(e=>{this.api._onMouseEnter.fire(e)})),g(this.element,"mouseleave",(e=>{this.api._onMouseLeave.fire(e)}))),this.addDisposables(this._onDidChangeExpansionState,this.onDidChangeExpansionState((e=>{this.api._onDidExpansionChange.fire({isExpanded:e})})),this.api.onDidFocusChange((e=>{this.header&&(e.isFocused?y(this.header,"focused"):C(this.header,"focused"))}))),this.renderOnce()}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}isExpanded(){return this._isExpanded}setExpanded(e){this._isExpanded!==e&&(this._isExpanded=e,e?(this.animationTimer&&clearTimeout(this.animationTimer),this.body&&this.element.appendChild(this.body)):this.animationTimer=setTimeout((()=>{var e;null===(e=this.body)||void 0===e||e.remove()}),200),this._onDidChange.fire(e?{size:this.width}:{}),this._onDidChangeExpansionState.fire(e))}layout(e,t){this._size=e,this._orthogonalSize=t;const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){var t,i;super.init(e),"number"==typeof e.minimumBodySize&&(this.minimumBodySize=e.minimumBodySize),"number"==typeof e.maximumBodySize&&(this.maximumBodySize=e.maximumBodySize),this.bodyPart=this.getBodyComponent(),this.headerPart=this.getHeaderComponent(),this.bodyPart.init(Object.assign(Object.assign({},e),{api:this.api})),this.headerPart.init(Object.assign(Object.assign({},e),{api:this.api})),null===(t=this.body)||void 0===t||t.append(this.bodyPart.element),null===(i=this.header)||void 0===i||i.append(this.headerPart.element),"boolean"==typeof e.isExpanded&&this.setExpanded(e.isExpanded)}toJSON(){const e=this._params;return Object.assign(Object.assign({},super.toJSON()),{headerComponent:this.headerComponent,title:e.title})}renderOnce(){this.header=document.createElement("div"),this.header.tabIndex=0,this.header.className="dv-pane-header",this.header.style.height=`${this.headerSize}px`,this.header.style.lineHeight=`${this.headerSize}px`,this.header.style.minHeight=`${this.headerSize}px`,this.header.style.maxHeight=`${this.headerSize}px`,this.element.appendChild(this.header),this.body=document.createElement("div"),this.body.className="dv-pane-body",this.element.appendChild(this.body)}getComponent(){return{update:e=>{var t,i;null===(t=this.bodyPart)||void 0===t||t.update({params:e}),null===(i=this.headerPart)||void 0===i||i.update({params:e})},dispose:()=>{var e,t;null===(e=this.bodyPart)||void 0===e||e.dispose(),null===(t=this.headerPart)||void 0===t||t.dispose()}}}}class Oe extends Ee{constructor(e){super({id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,isHeaderVisible:!0,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.accessor=e.accessor,this.addDisposables(this._onDidDrop,this._onUnhandledDragOverEvent),e.disableDnd||this.initDragFeatures()}initDragFeatures(){if(!this.header)return;const e=this.id,t=this.accessor.id;this.header.draggable=!0,this.handler=new class extends me{getData(){return r.getInstance().setData([new o(t,e)],o.prototype),{dispose:()=>{r.getInstance().clearData(o.prototype)}}}}(this.header),this.target=new be(this.element,{acceptedTargetZones:["top","bottom"],overlayModel:{activationSize:{type:"percentage",value:50}},canDisplayOverlay:(e,t)=>{const i=h();if(i&&i.paneId!==this.id&&i.viewId===this.accessor.id)return!0;const n=new ye(e,t,h,this);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}}),this.addDisposables(this._onDidDrop,this.handler,this.target,this.target.onDrop((e=>{this.onDrop(e)})))}onDrop(e){const t=h();if(!t||t.viewId!==this.accessor.id)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,api:new pe(this.accessor),getData:h}));const i=this._params.containerApi,n=t.paneId,s=i.getPanel(n);if(!s)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,getData:h,api:new pe(this.accessor)}));const o=i.panels,r=o.indexOf(s);let a=i.panels.indexOf(this);"left"!==e.position&&"top"!==e.position||(a=Math.max(0,a-1)),"right"!==e.position&&"bottom"!==e.position||(r>a&&a++,a=Math.min(o.length-1,a)),i.movePanel(r,a)}}class Ge extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this.disposable=new _,this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-content-container",this._element.tabIndex=-1,this.addDisposables(this._onDidFocus,this._onDidBlur);const i=t.dropTargetContainer;this.dropTarget=new be(this.element,{getOverlayOutline:()=>{var t;return"group"===(null===(t=e.options.theme)||void 0===t?void 0:t.dndPanelOverlay)?this.element.parentElement:null},className:"dv-drop-target-content",acceptedTargetZones:["top","bottom","left","right","center"],canDisplayOverlay:(e,t)=>{if("no-drop-target"===this.group.locked||this.group.locked&&"center"===t)return!1;const i=a();return!(!i&&e.shiftKey&&"floating"!==this.group.location.type)&&(!(!i||i.viewId!==this.accessor.id)||this.group.canDisplayOverlay(e,t,"content"))},getOverrideTarget:i?()=>i.model:void 0}),this.addDisposables(this.dropTarget)}show(){this.element.style.display=""}hide(){this.element.style.display="none"}renderPanel(e,t){void 0===t&&(t={asActive:!0});const i=t.asActive||this.panel&&this.group.isPanelActive(this.panel);let n;switch(this.panel&&this.panel.view.content.element.parentElement===this._element&&this._element.removeChild(this.panel.view.content.element),this.panel=e,e.api.renderer){case"onlyWhenVisible":this.group.renderContainer.detatch(e),this.panel&&i&&this._element.appendChild(this.panel.view.content.element),n=this._element;break;case"always":e.view.content.element.parentElement===this._element&&this._element.removeChild(e.view.content.element),n=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw new Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(i){const e=A(n),t=new w;t.addDisposables(e,e.onDidFocus((()=>this._onDidFocus.fire())),e.onDidBlur((()=>this._onDidBlur.fire()))),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){var e;this.panel&&"onlyWhenVisible"===this.panel.api.renderer&&(null===(e=this.panel.view.content.element.parentElement)||void 0===e||e.removeChild(this.panel.view.content.element)),this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}}function Ie(e,t,i){var n,s;y(t,"dv-dragged"),t.style.top="-9999px",document.body.appendChild(t),e.setDragImage(t,null!==(n=null==i?void 0:i.x)&&void 0!==n?n:0,null!==(s=null==i?void 0:i.y)&&void 0!==s?s:0),setTimeout((()=>{C(t,"dv-dragged"),t.remove()}),0)}class Ne extends me{constructor(e,t,i,n,s){super(e,s),this.accessor=t,this.group=i,this.panel=n,this.panelTransfer=r.getInstance()}getData(e){return this.panelTransfer.setData([new s(this.accessor.id,this.group.id,this.panel.id)],s.prototype),{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Ve extends w{get element(){return this._element}constructor(e,t,i){super(),this.panel=e,this.accessor=t,this.group=i,this.content=void 0,this._onPointDown=new v,this.onPointerDown=this._onPointDown.event,this._onDropped=new v,this.onDrop=this._onDropped.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-tab",this._element.tabIndex=0,this._element.draggable=!this.accessor.options.disableDnd,x(this.element,"dv-inactive-tab",!0),this.dragHandler=new Ne(this._element,this.accessor,this.group,this.panel,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["left","right"],overlayModel:{activationSize:{value:50,type:"percentage"}},canDisplayOverlay:(e,t)=>{if(this.group.locked)return!1;const i=a();return!(!i||this.accessor.id!==i.viewId)||this.group.model.canDisplayOverlay(e,t,"tab")},getOverrideTarget:()=>{var e;return null===(e=i.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this._onPointDown,this._onDropped,this._onDragStart,this.dragHandler.onDragStart((e=>{if(e.dataTransfer){const t=getComputedStyle(this.element),i=this.element.cloneNode(!0);Array.from(t).forEach((e=>i.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e)))),i.style.position="absolute",Ie(e.dataTransfer,i,{y:-10,x:30})}this._onDragStart.fire(e)})),this.dragHandler,g(this._element,"pointerdown",(e=>{this._onPointDown.fire(e)})),this.dropTarget.onDrop((e=>{this._onDropped.fire(e)})),this.dropTarget)}setActive(e){x(this.element,"dv-active-tab",e),x(this.element,"dv-inactive-tab",!e)}setContent(e){this.content&&this._element.removeChild(this.content.element),this.content=e,this._element.appendChild(this.content.element)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,this.dragHandler.setDisabled(!!this.accessor.options.disableDnd)}dispose(){super.dispose()}}class Te{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}}class ke extends me{constructor(e,t,i,n){super(e,n),this.accessor=t,this.group=i,this.panelTransfer=r.getInstance(),this.addDisposables(g(e,"pointerdown",(e=>{e.shiftKey&&(e[P]=!0)}),!0))}isCancelled(e){return"floating"===this.group.api.location.type&&!e.shiftKey}getData(e){const t=e.dataTransfer;this.panelTransfer.setData([new s(this.accessor.id,this.group.id,null)],s.prototype);const i=window.getComputedStyle(this.el),n=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-background-color"),o=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-color");if(t){const e=document.createElement("div");e.style.backgroundColor=n,e.style.color=o,e.style.padding="2px 8px",e.style.height="24px",e.style.fontSize="11px",e.style.lineHeight="20px",e.style.borderRadius="12px",e.style.position="absolute",e.style.pointerEvents="none",e.style.top="-9999px",e.textContent=`Multiple Panels (${this.group.size})`,Ie(t,e,{y:-10,x:30})}return{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Le extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-void-container",this._element.draggable=!this.accessor.options.disableDnd,x(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.addDisposables(this._onDrop,this._onDragStart,g(this._element,"pointerdown",(()=>{this.accessor.doSetGroupActive(this.group)}))),this.handler=new ke(this._element,e,t,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["center"],canDisplayOverlay:(e,i)=>{const n=a();return!(!n||this.accessor.id!==n.viewId)||t.model.canDisplayOverlay(e,i,"header_space")},getOverrideTarget:()=>{var e;return null===(e=t.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this.handler,this.handler.onDragStart((e=>{this._onDragStart.fire(e)})),this.dropTarget.onDrop((e=>{this._onDrop.fire(e)})),this.dropTarget)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,x(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.handler.setDisabled(!!this.accessor.options.disableDnd)}}class Re extends w{get element(){return this._element}constructor(e){super(),this.scrollableElement=e,this._scrollLeft=0,this._element=document.createElement("div"),this._element.className="dv-scrollable",this._horizontalScrollbar=document.createElement("div"),this._horizontalScrollbar.className="dv-scrollbar-horizontal",this.element.appendChild(e),this.element.appendChild(this._horizontalScrollbar),this.addDisposables(g(this.element,"wheel",(e=>{this._scrollLeft+=e.deltaY*Re.MouseWheelSpeed,this.calculateScrollbarStyles()})),g(this._horizontalScrollbar,"pointerdown",(e=>{e.preventDefault(),x(this.element,"dv-scrollable-scrolling",!0);const t=e.clientX,i=this._scrollLeft,n=e=>{const n=e.clientX-t,{clientWidth:s}=this.element,{scrollWidth:o}=this.scrollableElement,r=s/o;this._scrollLeft=i+n/r,this.calculateScrollbarStyles()},s=()=>{x(this.element,"dv-scrollable-scrolling",!1),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",s),document.removeEventListener("pointercancel",s)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",s),document.addEventListener("pointercancel",s)})),g(this.element,"scroll",(()=>{this.calculateScrollbarStyles()})),g(this.scrollableElement,"scroll",(()=>{this._scrollLeft=this.scrollableElement.scrollLeft,this.calculateScrollbarStyles()})),b(this.element,(()=>{x(this.element,"dv-scrollable-resizing",!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout((()=>{clearTimeout(this._animationTimer),x(this.element,"dv-scrollable-resizing",!1)}),500),this.calculateScrollbarStyles()})))}calculateScrollbarStyles(){const{clientWidth:e}=this.element,{scrollWidth:t}=this.scrollableElement;if(t>e){const i=e*(e/t);this._horizontalScrollbar.style.width=`${i}px`,this._scrollLeft=R(this._scrollLeft,0,this.scrollableElement.scrollWidth-e),this.scrollableElement.scrollLeft=this._scrollLeft;const n=this._scrollLeft/(t-e);this._horizontalScrollbar.style.left=(e-i)*n+"px"}else this._horizontalScrollbar.style.width="0px",this._horizontalScrollbar.style.left="0px",this._scrollLeft=0}}Re.MouseWheelSpeed=1;class Me extends w{get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e&&(this._showTabsOverflowControl=e,e)){const e=new D(this._tabsList);this._observerDisposable.value=new w(e,e.onDidChange((e=>{const t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t})})),g(this._tabsList,"scroll",(()=>{this.toggleDropdown({reset:!1})})))}}get element(){return this._element}get panels(){return this._tabs.map((e=>e.value.panel.id))}get size(){return this._tabs.length}get tabs(){return this._tabs.map((e=>e.value))}constructor(e,t,i){if(super(),this.group=e,this.accessor=t,this._observerDisposable=new _,this._tabs=[],this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new v,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement("div"),this._tabsList.className="dv-tabs-container dv-horizontal",this.showTabsOverflowControl=i.showTabsOverflowControl,"native"===t.options.scrollbars)this._element=this._tabsList;else{const e=new Re(this._tabsList);this._element=e.element,this.addDisposables(e)}this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,g(this.element,"pointerdown",(e=>{if(e.defaultPrevented)return;0===e.button&&this.accessor.doSetGroupActive(this.group)})),l.from((()=>{for(const{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[]})))}indexOf(e){return this._tabs.findIndex((t=>t.value.panel.id===e))}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}setActivePanel(e){let t=0;for(const i of this._tabs){const n=e.id===i.value.panel.id;if(i.value.setActive(n),n){const e=i.value.element,n=e.parentElement;(tn.scrollLeft+n.clientWidth)&&(n.scrollLeft=t)}t+=i.value.element.clientWidth}}openPanel(e,t){if(void 0===t&&(t=this._tabs.length),this._tabs.find((t=>t.value.panel.id===e.id)))return;const i=new Ve(e,this.accessor,this.group);i.setContent(e.view.tab);const n=new w(i.onDragStart((t=>{this._onTabDragStart.fire({nativeEvent:t,panel:e})})),i.onPointerDown((t=>{if(t.defaultPrevented)return;const n=!this.accessor.options.disableFloatingGroups,s="floating"===this.group.api.location.type&&1===this.size;if(n&&!s&&t.shiftKey){t.preventDefault();const e=this.accessor.getGroupPanel(i.panel.id),{top:n,left:s}=i.element.getBoundingClientRect(),{top:o,left:r}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:s-r,y:n-o,inDragMode:!0})}else if(0===t.button)this.group.activePanel!==e&&this.group.model.openPanel(e)})),i.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this._tabs.findIndex((e=>e.value===i))})})),i.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"tab",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))}))),s={value:i,disposable:n};this.addTab(s,t)}delete(e){const t=this.indexOf(e),i=this._tabs.splice(t,1)[0],{value:n,disposable:s}=i;s.dispose(),n.dispose(),n.element.remove()}addTab(e,t){if(void 0===t&&(t=this._tabs.length),t<0||t>this._tabs.length)throw new Error("invalid location");this._tabsList.insertBefore(e.value.element,this._tabsList.children[t]),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){const t=e.reset?[]:this._tabs.filter((e=>!function(e,t){const i=O(e),n=O(t);return!(i.leftn.left+n.width)}(e.value.element,this._tabsList))).map((e=>e.value.panel.id));this._onOverflowTabsChange.fire({tabs:t,reset:e.reset})}updateDragAndDropState(){for(const e of this._tabs)e.value.updateDragAndDropState()}}const We=e=>{const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"height",e.height),t.setAttributeNS(null,"width",e.width),t.setAttributeNS(null,"viewBox",e.viewbox),t.setAttributeNS(null,"aria-hidden","false"),t.setAttributeNS(null,"focusable","false"),t.classList.add("dv-svg");const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d",e.path),t.appendChild(i),t},He=()=>We({width:"11",height:"11",viewbox:"0 0 15 25",path:"M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z"});class je extends w{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?"none":""}get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this.dropdownPart=null,this._overflowTabs=[],this._dropdownDisposable=new _,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement("div"),this._element.className="dv-tabs-and-actions-container",x(this._element,"dv-full-width-single-tab","fullwidth"===this.accessor.options.singleTabMode),this.rightActionsContainer=document.createElement("div"),this.rightActionsContainer.className="dv-right-actions-container",this.leftActionsContainer=document.createElement("div"),this.leftActionsContainer.className="dv-left-actions-container",this.preActionsContainer=document.createElement("div"),this.preActionsContainer.className="dv-pre-actions-container",this.tabs=new Me(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new Le(this.accessor,this.group),this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.addDisposables(this.tabs.onDrop((e=>this._onDrop.fire(e))),this.tabs.onWillShowOverlay((e=>this._onWillShowOverlay.fire(e))),e.onDidOptionsChange((()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList})),this.tabs.onOverflowTabsChange((e=>{this.toggleDropdown(e)})),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart((e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})})),this.voidContainer.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})})),this.voidContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"header_space",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))})),g(this.voidContainer.element,"pointerdown",(e=>{if(e.defaultPrevented)return;if(!this.accessor.options.disableFloatingGroups&&e.shiftKey&&"floating"!==this.group.api.location.type){e.preventDefault();const{top:t,left:i}=this.element.getBoundingClientRect(),{top:n,left:s}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:i-s+20,y:t-n+20,inDragMode:!0})}})))}show(){this.hidden||(this.element.style.display="")}hide(){this._element.style.display="none"}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&(this.rightActions.remove(),this.rightActions=void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&(this.leftActions.remove(),this.leftActions=void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&(this.preActions.remove(),this.preActions=void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}openPanel(e,t){void 0===t&&(t=this.tabs.size),this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}updateClassnames(){x(this._element,"dv-single-tab",1===this.size)}toggleDropdown(e){const t=e.reset?[]:e.tabs;if(this._overflowTabs=t,this._overflowTabs.length>0&&this.dropdownPart)return void this.dropdownPart.update({tabs:t.length});if(0===this._overflowTabs.length)return void this._dropdownDisposable.dispose();const i=document.createElement("div");i.className="dv-tabs-overflow-dropdown-root";const n=function(){const e=document.createElement("div");e.className="dv-tabs-overflow-dropdown-default";const t=document.createElement("span");t.textContent="";const i=He();return e.appendChild(i),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}();n.update({tabs:t.length}),this.dropdownPart=n,i.appendChild(n.element),this.rightActionsContainer.prepend(i),this._dropdownDisposable.value=new w(l.from((()=>{var e,t;i.remove(),null===(t=null===(e=this.dropdownPart)||void 0===e?void 0:e.dispose)||void 0===t||t.call(e),this.dropdownPart=null})),g(i,"pointerdown",(e=>{e.preventDefault()}),{capture:!0}),g(i,"click",(e=>{const t=document.createElement("div");t.style.overflow="auto",t.className="dv-tabs-overflow-container";for(const i of this.tabs.tabs.filter((e=>this._overflowTabs.includes(e.panel.id)))){const e=this.group.panels.find((e=>e===i.panel)),n=e.view.createTabRenderer("headerOverflow").element,s=document.createElement("div");x(s,"dv-tab",!0),x(s,"dv-active-tab",e.api.isActive),x(s,"dv-inactive-tab",!e.api.isActive),s.addEventListener("click",(e=>{this.accessor.popupService.close(),e.defaultPrevented||(i.element.scrollIntoView(),i.panel.api.setActive())})),s.appendChild(n),t.appendChild(s)}const n=function(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}(i);this.accessor.popupService.openPopover(t,{x:e.clientX,y:e.clientY,zIndex:(null==n?void 0:n.style.zIndex)?`calc(${n.style.zIndex} * 2)`:void 0})})))}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}}class Fe extends c{constructor(e,t,i,n,s){super(),this.nativeEvent=e,this.target=t,this.position=i,this.getData=n,this.group=s}}const Be=(()=>{const e={disableAutoResizing:void 0,hideBorders:void 0,singleTabMode:void 0,disableFloatingGroups:void 0,floatingGroupBounds:void 0,popoutUrl:void 0,defaultRenderer:void 0,debug:void 0,rootOverlayModel:void 0,locked:void 0,disableDnd:void 0,className:void 0,noPanelsOverlay:void 0,dndEdges:void 0,theme:void 0,disableTabsOverflowList:void 0,scrollbars:void 0};return Object.keys(e)})();class Ze extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}}class Ue extends Ze{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}}class Je extends w{get element(){throw new Error("dockview: not supported")}get activePanel(){return this._activePanel}get locked(){return this._locked}set locked(e){this._locked=e,x(this.container,"dv-locked-groupview","no-drop-target"===e||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return 0===this._panels.length}get hasWatermark(){return!(!this.watermark||!this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get isContentFocused(){return!!document.activeElement&&S(document.activeElement,this.contentContainer.element)}get location(){return this._location}set location(e){switch(this._location=e,x(this.container,"dv-groupview-floating",!1),x(this.container,"dv-groupview-popout",!1),e.type){case"grid":this.contentContainer.dropTarget.setTargetZones(["top","bottom","left","right","center"]);break;case"floating":this.contentContainer.dropTarget.setTargetZones(["center"]),this.contentContainer.dropTarget.setTargetZones(e?["center"]:["top","bottom","left","right","center"]),x(this.container,"dv-groupview-floating",!0);break;case"popout":this.contentContainer.dropTarget.setTargetZones(["center"]),x(this.container,"dv-groupview-popout",!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,i,n,s){var o;super(),this.container=e,this.accessor=t,this.id=i,this.options=n,this.groupPanel=s,this._isGroupActive=!1,this._locked=!1,this._location={type:"grid"},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._onMove=new v,this.onMove=this._onMove.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new v,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new v,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,x(this.container,"dv-groupview",!0),this._api=new ue(this.accessor),this.tabsContainer=new je(this.accessor,this.groupPanel),this.contentContainer=new Ge(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!n.hideHeader,this.locked=null!==(o=n.locked)&&void 0!==o&&o,this.addDisposables(this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart((e=>{this._onTabDragStart.fire(e)})),this.tabsContainer.onGroupDragStart((e=>{this._onGroupDragStart.fire(e)})),this.tabsContainer.onDrop((e=>{this.handleDropEvent("header",e.event,"center",e.index)})),this.contentContainer.onDidFocus((()=>{this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.onDidBlur((()=>{})),this.contentContainer.dropTarget.onDrop((e=>{this.handleDropEvent("content",e.nativeEvent,e.position)})),this.tabsContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(e)})),this.contentContainer.dropTarget.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"content",panel:this.activePanel,api:this._api,group:this.groupPanel,getData:a}))})),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOverEvent,this._onDidPanelTitleChange,this._onDidPanelParametersChange)}focusContent(){this.contentContainer.element.focus()}set renderContainer(e){this.panels.forEach((e=>{this.renderContainer.detatch(e)})),this._overwriteRenderContainer=e,this.panels.forEach((e=>{this.rerender(e)}))}get renderContainer(){var e;return null!==(e=this._overwriteRenderContainer)&&void 0!==e?e:this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){var e;return null!==(e=this._overwriteDropTargetContainer)&&void 0!==e?e:this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach((e=>{this.doAddPanel(e)})),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.accessor.options.createRightHeaderActionComponent&&(this._rightHeaderActions=this.accessor.options.createRightHeaderActionComponent(this.groupPanel),this.addDisposables(this._rightHeaderActions),this._rightHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element)),this.accessor.options.createLeftHeaderActionComponent&&(this._leftHeaderActions=this.accessor.options.createLeftHeaderActionComponent(this.groupPanel),this.addDisposables(this._leftHeaderActions),this._leftHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element)),this.accessor.options.createPrefixHeaderActionComponent&&(this._prefixHeaderActions=this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel),this.addDisposables(this._prefixHeaderActions),this._prefixHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element))}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){var e;const t={views:this.tabsContainer.panels,activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,id:this.id};return!1!==this.locked&&(t.locked=this.locked),this.header.hidden&&(t.hideHeader=!0),t}moveToNext(e){e||(e={}),e.panel||(e.panel=this.activePanel);const t=e.panel?this.panels.indexOf(e.panel):-1;let i;if(t0)i=t-1;else{if(e.suppressRoll)return;i=this.panels.length-1}this.openPanel(this.panels[i])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}openPanel(e,t){void 0===t&&(t={}),("number"!=typeof t.index||t.index>this.panels.length)&&(t.index=this.panels.length);const i=!!t.skipSetActive;e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:i}),this._activePanel!==e?(i||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()):this.contentContainer.renderPanel(e,{asActive:!0})}removePanel(e,t){void 0===t&&(t={skipSetActive:!1});const i="string"==typeof e?e:e.id,n=this._panels.find((e=>e.id===i));if(!n)throw new Error("invalid operation");return this._removePanel(n,t)}closeAllPanels(){if(this.panels.length>0){const e=[...this.panels];for(const t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){const t=1===this.panels.length&&1===this.accessor.groups.length;this.accessor.removePanel(e,t&&"emptyGroup"===this.accessor.options.noPanelsOverlay?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t){void 0===t&&(t=!1),(t||this.isActive!==e)&&(this._isGroupActive=e,x(this.container,"dv-active-group",e),x(this.container,"dv-inactive-group",!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0&&this.doSetActivePanel(this.panels[0]),this.updateContainer())}layout(e,t){var i;this._width=e,this._height=t,this.contentContainer.layout(this._width,this._height),(null===(i=this._activePanel)||void 0===i?void 0:i.layout)&&this._activePanel.layout(this._width,this._height)}_removePanel(e,t){const i=this._activePanel===e;if(this.doRemovePanel(e),i&&this.panels.length>0){const e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t.skipSetActive,skipSetGroupActive:t.skipSetActiveGroup})}return this._activePanel&&0===this.panels.length&&this.doSetActivePanel(void 0),t.skipSetActive||this.updateContainer(),e}doRemovePanel(e){const t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){const t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}const i=this._panelDisposables.get(e.id);i&&(i.dispose(),this._panelDisposables.delete(e.id)),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t,i){void 0===t&&(t=this.panels.length),void 0===i&&(i={skipSetActive:!1});const n=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),i.skipSetActive||this.contentContainer.openPanel(e),n||(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new w(e.api.onDidTitleChange((e=>this._onDidPanelTitleChange.fire(e))),e.api.onDidParametersChange((e=>this._onDidPanelParametersChange.fire(e))))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){this._activePanel!==e&&(this._activePanel=e,e&&(this.tabsContainer.setActivePanel(e),e.layout(this._width,this._height),this.updateMru(e),this._onDidActivePanelChange.fire({panel:e})))}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){var e,t;if(this.panels.forEach((e=>e.runEvents())),this.isEmpty&&!this.watermark){const e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,g(this.watermark.element,"pointerdown",(()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.element.appendChild(this.watermark.element)}!this.isEmpty&&this.watermark&&(this.watermark.element.remove(),null===(t=(e=this.watermark).dispose)||void 0===t||t.call(e),this.watermark=void 0)}canDisplayOverlay(e,t,i){const n=new Fe(e,i,t,a,this.accessor.getPanel(this.id));return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}handleDropEvent(e,t,i,n){if("no-drop-target"===this.locked)return;const s="number"==typeof n?this.panels[n]:void 0,o=new Ue({nativeEvent:t,position:i,panel:s,getData:()=>a(),kind:function(){switch(e){case"header":return"number"==typeof n?"tab":"header_space";case"content":return"content"}}(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(o),o.defaultPrevented)return;const r=a();if(r&&r.viewId===this.accessor.id){if("content"===e&&r.groupId===this.id){if("center"===i)return;if(null===r.panelId)return}if("header"===e&&r.groupId===this.id&&null===r.panelId)return;if(null===r.panelId){const{groupId:e}=r;return void this._onMove.fire({target:i,groupId:e,index:n})}if(-1!==this.tabsContainer.indexOf(r.panelId)&&1===this.tabsContainer.size)return;const{groupId:t,panelId:s}=r;if(this.id===t&&!i){if(this.tabsContainer.indexOf(s)===n)return}this._onMove.fire({target:i,groupId:r.groupId,itemId:r.panelId,index:n})}else this._onDidDrop.fire(new Ze({nativeEvent:t,position:i,panel:s,getData:()=>a(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,i;super.dispose(),null===(e=this.watermark)||void 0===e||e.element.remove(),null===(i=null===(t=this.watermark)||void 0===t?void 0:t.dispose)||void 0===i||i.call(t),this.watermark=void 0;for(const n of this.panels)n.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}}class $e extends Se{constructor(e,t,i){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),i&&this.initialize(i)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Xe extends Pe{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){const e="function"==typeof this._minimumWidth?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){const e="function"==typeof this._maximumWidth?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){const e="function"==typeof this._minimumHeight?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){const e="function"==typeof this._maximumHeight?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,i,n){super(e,t,null!=n?n:new $e(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=Number.MAX_SAFE_INTEGER,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=Number.MAX_SAFE_INTEGER,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=Number.MAX_SAFE_INTEGER,this._maximumHeight=Number.MAX_SAFE_INTEGER,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,"number"==typeof(null==i?void 0:i.minimumWidth)&&(this._minimumWidth=i.minimumWidth),"number"==typeof(null==i?void 0:i.maximumWidth)&&(this._maximumWidth=i.maximumWidth),"number"==typeof(null==i?void 0:i.minimumHeight)&&(this._minimumHeight=i.minimumHeight),"number"==typeof(null==i?void 0:i.maximumHeight)&&(this._maximumHeight=i.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.doSetGroupActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumWidth&&"function"!=typeof e.minimumWidth||(this._minimumWidth=e.minimumWidth),"number"!=typeof e.minimumHeight&&"function"!=typeof e.minimumHeight||(this._minimumHeight=e.minimumHeight),"number"!=typeof e.maximumWidth&&"function"!=typeof e.maximumWidth||(this._maximumWidth=e.maximumWidth),"number"!=typeof e.maximumHeight&&"function"!=typeof e.maximumHeight||(this._maximumHeight=e.maximumHeight)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({height:e.height,width:e.width})})),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),"boolean"==typeof e.isVisible&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){const e=super.toJSON(),t=e=>e===Number.MAX_SAFE_INTEGER?void 0:e,i=e=>e<=0?void 0:e;return Object.assign(Object.assign({},e),{minimumHeight:i(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:i(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}}const Ye="dockview: DockviewGroupPanelApiImpl not initialized";class qe extends $e{get location(){if(!this._group)throw new Error(Ye);return this._group.model.location}constructor(e,t){super(e,"__dockviewgroup__"),this.accessor=t,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return"popout"===this.location.type?this.location.getWindow():window}moveTo(e){var t,i,n,s;if(!this._group)throw new Error(Ye);const o=null!==(t=e.group)&&void 0!==t?t:this.accessor.addGroup({direction:we(null!==(i=e.position)&&void 0!==i?i:"right"),skipSetActive:null!==(n=e.skipSetActive)&&void 0!==n&&n});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:o,position:e.group&&null!==(s=e.position)&&void 0!==s?s:"center",index:e.index},skipSetActive:e.skipSetActive})}maximize(){if(!this._group)throw new Error(Ye);"grid"===this.location.type&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw new Error(Ye);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw new Error(Ye);this.isMaximized()&&this.accessor.exitMaximizedGroup()}initialize(e){this._group=e}}class Ke extends Xe{get minimumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumWidth;return"number"==typeof t?t:super.__minimumWidth()}get minimumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumHeight;return"number"==typeof t?t:super.__minimumHeight()}get maximumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumWidth;return"number"==typeof t?t:super.__maximumWidth()}get maximumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumHeight;return"number"==typeof t?t:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,i){var n,s,o,r,a,h;super(t,"groupview_default",{minimumHeight:null!==(s=null===(n=i.constraints)||void 0===n?void 0:n.minimumHeight)&&void 0!==s?s:100,minimumWidth:null!==(r=null===(o=i.constraints)||void 0===o?void 0:o.maximumHeight)&&void 0!==r?r:100,maximumHeight:null===(a=i.constraints)||void 0===a?void 0:a.maximumHeight,maximumWidth:null===(h=i.constraints)||void 0===h?void 0:h.maximumWidth},new qe(t,e)),this.api.initialize(this),this._model=new Je(this.element,e,t,i,this),this.addDisposables(this.model.onDidActivePanelChange((e=>{this.api._onDidActivePanelChange.fire(e)})))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}getComponent(){return this._model}toJSON(){return this.model.toJSON()}}const Qe={name:"dark",className:"dockview-theme-dark"},et={name:"light",className:"dockview-theme-light"},tt={name:"visualStudio",className:"dockview-theme-vs"},it={name:"abyss",className:"dockview-theme-abyss"},nt={name:"dracula",className:"dockview-theme-dracula"},st={name:"replit",className:"dockview-theme-replit",gap:10},ot={name:"abyssSpaced",className:"dockview-theme-abyss-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"},rt={name:"lightSpaced",className:"dockview-theme-light-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"};class at extends $e{get location(){return this.group.api.location}get title(){return this.panel.title}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){const t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this._onDidLocationChange.fire({location:this.group.api.location}))}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,i,n,s){super(e.id,n),this.panel=e,this.accessor=i,this._onDidTitleChange=new v,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new v,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new v,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new _,this._tabComponent=s,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}moveTo(e){var t,i;this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:null!==(t=e.group)&&void 0!==t?t:this._group,position:e.group&&null!==(i=e.position)&&void 0!==i?i:"center",index:e.index},skipSetActive:e.skipSetActive})}setTitle(e){this.panel.setTitle(e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}setupGroupEventListeners(e){var t;let i=null!==(t=null==e?void 0:e.isActive)&&void 0!==t&&t;this.groupEventsDisposable.value=new w(this.group.api.onDidVisibilityChange((e=>{const t=!e.isVisible&&this.isVisible,i=e.isVisible&&!this.isVisible,n=this.group.model.isPanelActive(this.panel);(t||i&&n)&&this._onDidVisibilityChange.fire(e)})),this.group.api.onDidLocationChange((e=>{this.group===this.panel.group&&this._onDidLocationChange.fire(e)})),this.group.api.onDidActiveChange((()=>{this.group===this.panel.group&&i!==this.isGroupActive&&(i=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))})))}}class ht extends w{get params(){return this._params}get title(){return this._title}get group(){return this._group}get renderer(){var e;return null!==(e=this._renderer)&&void 0!==e?e:this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,i,n,s,o,r,a){super(),this.id=e,this.accessor=n,this.containerApi=s,this.view=r,this._renderer=a.renderer,this._group=o,this._minimumWidth=a.minimumWidth,this._minimumHeight=a.minimumHeight,this._maximumWidth=a.maximumWidth,this._maximumHeight=a.maximumHeight,this.api=new at(this,this._group,n,t,i),this.addDisposables(this.api.onActiveChange((()=>{n.setActivePanel(this)})),this.api.onDidSizeChange((e=>{this.group.api.setSize(e)})),this.api.onDidRendererChange((()=>{this.group.model.rerender(this)})))}init(e){this._params=e.params,this.view.init(Object.assign(Object.assign({},e),{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){const e=new xe;this.api._onWillFocus.fire(e),e.defaultPrevented||this.api.isActive||this.api.setActive()}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth}}setTitle(e){e!==this.title&&(this._title=e,this.api._onDidTitleChange.fire({title:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){var t;this._params=Object.assign(Object.assign({},null!==(t=this._params)&&void 0!==t?t:{}),e.params);for(const i of Object.keys(e.params))void 0===e.params[i]&&delete this._params[i];this.view.update({params:this._params})}updateParentGroup(e,t){this._group=e,this.api.group=this._group;const i=this._group.model.isPanelActive(this),n=this.group.api.isActive&&i;(null==t?void 0:t.skipSetActive)||this.api.isActive!==n&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&i}),this.api.isVisible!==i&&this.api._onDidVisibilityChange.fire({isVisible:i})}runEvents(){const e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}}class dt extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-default-tab",this._content=document.createElement("div"),this._content.className="dv-default-tab-content",this.action=document.createElement("div"),this.action.className="dv-default-tab-action",this.action.appendChild(We({width:"11",height:"11",viewbox:"0 0 28 28",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"})),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this.addDisposables(e.api.onDidTitleChange((e=>{this._title=e.title,this.render()})),g(this.action,"pointerdown",(e=>{e.preventDefault()})),g(this.action,"click",(t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())}))),this.render()}render(){var e;this._content.textContent!==this._title&&(this._content.textContent=null!==(e=this._title)&&void 0!==e?e:"")}}class lt{get content(){return this._content}get tab(){return this._tab}constructor(e,t,i,n){this.accessor=e,this.id=t,this.contentComponent=i,this.tabComponent=n,this._content=this.createContentComponent(this.id,i),this._tab=this.createTabComponent(this.id,n)}createTabRenderer(e){var t;const i=this.createTabComponent(this.id,this.tabComponent);return this._params&&i.init(Object.assign(Object.assign({},this._params),{tabLocation:e})),this._updateEvent&&(null===(t=i.update)||void 0===t||t.call(i,this._updateEvent)),i}init(e){this._params=e,this.content.init(e),this.tab.init(Object.assign(Object.assign({},e),{tabLocation:"header"}))}layout(e,t){var i,n;null===(n=(i=this.content).layout)||void 0===n||n.call(i,e,t)}update(e){var t,i,n,s;this._updateEvent=e,null===(i=(t=this.content).update)||void 0===i||i.call(t,e),null===(s=(n=this.tab).update)||void 0===s||s.call(n,e)}dispose(){var e,t,i,n;null===(t=(e=this.content).dispose)||void 0===t||t.call(e),null===(n=(i=this.tab).dispose)||void 0===n||n.call(i)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){const i=null!=t?t:this.accessor.options.defaultTabComponent;if(i){if(this.accessor.options.createTabComponent){const t=this.accessor.options.createTabComponent({id:e,name:i});return t||new dt}console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new dt}}class pt{constructor(e){this.accessor=e}fromJSON(e,t){var i,n;const s=e.id,o=e.params,r=e.title,a=e.view,h=a?a.content.id:null!==(i=e.contentComponent)&&void 0!==i?i:"unknown",d=a?null===(n=a.tab)||void 0===n?void 0:n.id:e.tabComponent,l=new lt(this.accessor,s,h,d),p=new ht(s,h,d,this.accessor,new ue(this.accessor),t,l,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return p.init({title:null!=r?r:s,params:null!=o?o:{}}),p}}class ct extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-watermark"}init(e){}}const ut=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter((t=>t!==e)),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter((t=>t!==e)),this.update()}update(){for(let e=0;e{let e=null;const t=G();i.value=new w({dispose:()=>{t.release()}},g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),n=t.clientX-i.left,s=t.clientY-i.top;x(this._element,"dv-resize-container-dragging",!0);const o=this._element.getBoundingClientRect();null===e&&(e={x:t.clientX-o.left,y:t.clientY-o.top});const r=Math.max(0,this.getMinimumWidth(o.width)),a=Math.max(0,this.getMinimumHeight(o.height)),h=R(s-e.y,-a,Math.max(0,i.height-o.height+a)),d=R(e.y-s+i.height-o.height,-a,Math.max(0,i.height-o.height+a)),l=R(n-e.x,-r,Math.max(0,i.width-o.width+r)),p=R(e.x-n+i.width-o.width,-r,Math.max(0,i.width-o.width+r)),c={};h<=d?c.top=h:c.bottom=d,l<=p?c.left=l:c.right=p,this.setBounds(c)})),g(window,"pointerup",(()=>{x(this._element,"dv-resize-container-dragging",!1),i.dispose(),this._onDidChangeEnd.fire()})))};this.addDisposables(i,g(e,"pointerdown",(e=>{e.defaultPrevented?e.preventDefault():E(e)||n()})),g(this.options.content,"pointerdown",(e=>{e.defaultPrevented||E(e)||e.shiftKey&&n()})),g(this.options.content,"pointerdown",(()=>{ut.push(this._element)}),!0)),t.inDragMode&&n()}setupResize(e){const t=document.createElement("div");t.className=`dv-resize-handle-${e}`,this._element.appendChild(t);const i=new _;this.addDisposables(i,g(t,"pointerdown",(t=>{t.preventDefault();let n=null;const s=G();i.value=new w(g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),s=this._element.getBoundingClientRect(),o=t.clientY-i.top,r=t.clientX-i.left;let a,h,d,l,p,c;null===n&&(n={originalY:o,originalHeight:s.height,originalX:r,originalWidth:s.width});const u=()=>{a=R(o,-Number.MAX_VALUE,n.originalY+n.originalHeight>i.height?this.getMinimumHeight(i.height):Math.max(0,n.originalY+n.originalHeight-mt.MINIMUM_HEIGHT)),d=n.originalY+n.originalHeight-a,h=i.height-a-d},m=()=>{a=n.originalY-n.originalHeight,d=R(o-a,a<0&&"number"==typeof this.options.minimumInViewportHeight?-a+this.options.minimumInViewportHeight:mt.MINIMUM_HEIGHT,Number.MAX_VALUE),h=i.height-a-d},v=()=>{l=R(r,-Number.MAX_VALUE,n.originalX+n.originalWidth>i.width?this.getMinimumWidth(i.width):Math.max(0,n.originalX+n.originalWidth-mt.MINIMUM_WIDTH)),c=n.originalX+n.originalWidth-l,p=i.width-l-c},g=()=>{l=n.originalX-n.originalWidth,c=R(r-l,l<0&&"number"==typeof this.options.minimumInViewportWidth?-l+this.options.minimumInViewportWidth:mt.MINIMUM_WIDTH,Number.MAX_VALUE),p=i.width-l-c};switch(e){case"top":u();break;case"bottom":m();break;case"left":v();break;case"right":g();break;case"topleft":u(),v();break;case"topright":u(),g();break;case"bottomleft":m(),v();break;case"bottomright":m(),g()}const f={};a<=h?f.top=a:f.bottom=h,l<=p?f.left=l:f.right=p,f.height=d,f.width=c,this.setBounds(f)})),{dispose:()=>{s.release()}},g(window,"pointerup",(()=>{i.dispose(),this._onDidChangeEnd.fire()})))})))}getMinimumWidth(e){return"number"==typeof this.options.minimumInViewportWidth?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return"number"==typeof this.options.minimumInViewportHeight?e-this.options.minimumInViewportHeight:0}dispose(){ut.destroy(this._element),this._element.remove(),super.dispose()}}mt.MINIMUM_HEIGHT=20,mt.MINIMUM_WIDTH=20;class vt extends w{constructor(e,t){super(),this.group=e,this.overlay=t,this.addDisposables(t)}position(e){this.overlay.setBounds(e)}}const gt=100,ft=100,wt=100,_t=300,Dt=300;class bt{constructor(){this.cache=new Map,this.currentFrameId=0,this.rafId=null}getPosition(e){const t=this.cache.get(e);if(t&&t.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();const i=O(e);return this.cache.set(e,{rect:i,frameId:this.currentFrameId}),i}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||(this.rafId=requestAnimationFrame((()=>{this.currentFrameId++,this.rafId=null})))}}class Ct extends w{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this.positionCache=new bt,this.pendingUpdates=new Set,this.addDisposables(l.from((()=>{for(const e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose();this._disposed=!0})))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(const e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}detatch(e){if(this.map[e.api.id]){const{disposable:t,destroy:i}=this.map[e.api.id];return t.dispose(),i.dispose(),delete this.map[e.api.id],!0}return!1}attach(e){const{panel:t,referenceContainer:i}=e;if(!this.map[t.api.id]){const e=function(){const e=document.createElement("div");return e.tabIndex=-1,e}();e.className="dv-render-overlay",this.map[t.api.id]={panel:t,disposable:l.NONE,destroy:l.NONE,element:e}}const n=this.map[t.api.id].element;t.view.content.element.parentElement!==n&&n.appendChild(t.view.content.element),n.parentElement!==this.element&&this.element.appendChild(n);const s=()=>{const e=t.api.id;this.pendingUpdates.has(e)||(this.pendingUpdates.add(e),requestAnimationFrame((()=>{if(this.pendingUpdates.delete(e),this.isDisposed||!this.map[e])return;const s=this.positionCache.getPosition(i.element),o=this.positionCache.getPosition(this.element),r=s.left-o.left,a=s.top-o.top,h=s.width,d=s.height;n.style.left=`${r}px`,n.style.top=`${a}px`,n.style.width=`${h}px`,n.style.height=`${d}px`,x(n,"dv-render-overlay-float","floating"===t.group.api.location.type)})))},o=()=>{t.api.isVisible&&(this.positionCache.invalidate(),s()),n.style.display=t.api.isVisible?"":"none"},r=new _,a=()=>{"floating"===t.api.location.type?queueMicrotask((()=>{const e=this.accessor.floatingGroups.find((e=>e.group===t.api.group));if(!e)return;const i=e.overlay.element,s=()=>{const e=Number(i.getAttribute("aria-level"));n.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${2*e+1})`},o=new MutationObserver((()=>{s()}));r.value=l.from((()=>o.disconnect())),o.observe(i,{attributeFilter:["aria-level"],attributes:!0}),s()})):n.style.zIndex=""},h=new w(r,new ve(n,{onDragEnd:e=>{i.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{i.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{i.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{i.dropTarget.dnd.onDrop(e)},onDragOver:e=>{i.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange((()=>{o()})),t.api.onDidDimensionsChange((()=>{t.api.isVisible&&s()})),t.api.onDidLocationChange((()=>{a()})));return this.map[t.api.id].destroy=l.from((()=>{var e;t.view.content.element.parentElement===n&&n.removeChild(t.view.content.element),null===(e=n.parentElement)||void 0===e||e.removeChild(n)})),a(),queueMicrotask((()=>{this.isDisposed||o()})),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=h,this.map[t.api.id].resize=s,n}}var yt=function(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{h(n.next(e))}catch(t){o(t)}}function a(e){try{h(n.throw(e))}catch(t){o(t)}}function h(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}h((n=n.apply(e,t||[])).next())}))};class xt extends w{get window(){var e,t;return null!==(t=null===(e=this._window)||void 0===e?void 0:e.value)&&void 0!==t?t:null}constructor(e,t,i){super(),this.target=e,this.className=t,this.options=i,this._onWillClose=new v,this.onWillClose=this._onWillClose.event,this._onDidClose=new v,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;const e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){var e,t;this._window&&(this._onWillClose.fire(),null===(t=(e=this.options).onWillClose)||void 0===t||t.call(e,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire())}open(){var e,t;return yt(this,void 0,void 0,(function*(){if(this._window)throw new Error("instance of popout window is already open");const i=`${this.options.url}`,n=Object.entries({top:this.options.top,left:this.options.left,width:this.options.width,height:this.options.height}).map((e=>{let[t,i]=e;return`${t}=${i}`})).join(","),s=window.open(i,this.target,n);if(!s)return null;const o=new w;this._window={value:s,disposable:o},o.addDisposables(l.from((()=>{s.close()})),g(window,"beforeunload",(()=>{this.close()})));const r=this.createPopoutWindowContainer();return this.className&&r.classList.add(this.className),null===(t=(e=this.options).onDidOpen)||void 0===t||t.call(e,{id:this.target,window:s}),new Promise(((e,t)=>{s.addEventListener("unload",(e=>{})),s.addEventListener("load",(()=>{try{const t=s.document;t.title=document.title,t.body.appendChild(r),function(e,t){const i=Array.from(t);for(const s of i){if(s.href){const t=e.createElement("link");t.href=s.href,t.type=s.type,t.rel="stylesheet",e.head.appendChild(t)}let t=[];try{s.cssRules&&(t=Array.from(s.cssRules).map((e=>e.cssText)))}catch(n){}for(const i of t){const t=e.createElement("style");t.appendChild(e.createTextNode(i)),e.head.appendChild(t)}}}(t,window.document.styleSheets),g(s,"beforeunload",(()=>{this.close()})),e(r)}catch(i){t(i)}}))}))}))}createPopoutWindowContainer(){const e=document.createElement("div");return e.classList.add("dv-popout-window"),e.id="dv-popout-window",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e}}class St extends w{constructor(e){super(),this.accessor=e,this.init()}init(){const e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel((t=>{if(e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)})),this.accessor.onDidRemovePanel((t=>{if(!e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`);e.delete(t.api.id)})),this.accessor.onDidAddGroup((e=>{if(t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)})),this.accessor.onDidRemoveGroup((e=>{if(!t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`);t.delete(e.api.id)})))}}class At extends w{constructor(e){super(),this.root=e,this._active=null,this._activeDisposable=new _,this._element=document.createElement("div"),this._element.className="dv-popover-anchor",this._element.style.position="relative",this.root.prepend(this._element),this.addDisposables(l.from((()=>{this.close()})),this._activeDisposable)}openPopover(e,t){var i;this.close();const n=document.createElement("div");n.style.position="absolute",n.style.zIndex=null!==(i=t.zIndex)&&void 0!==i?i:"var(--dv-overlay-z-index)",n.appendChild(e);const s=this._element.getBoundingClientRect(),o=s.left,r=s.top;n.style.top=t.y-r+"px",n.style.left=t.x-o+"px",this._element.appendChild(n),this._active=n,this._activeDisposable.value=new w(g(window,"pointerdown",(e=>{var t;const i=e.target;if(!(i instanceof HTMLElement))return;let s=i;for(;s&&s!==n;)s=null!==(t=null==s?void 0:s.parentElement)&&void 0!==t?t:null;s||this.close()}))),requestAnimationFrame((()=>{!function(e,t,i){void 0===i&&(i={buffer:10});const n=i.buffer,s=e.getBoundingClientRect(),o=t.getBoundingClientRect();let r=0,a=0;const h=s.left-o.left,d=s.top-o.top,l=s.bottom-o.bottom,p=s.right-o.right;hn&&(r=-n-p),dn&&(a=-l-n),0===r&&0===a||(e.style.transform=`translate(${r}px, ${a}px)`)}(n,this.root)}))}close(){this._active&&(this._active.remove(),this._activeDisposable.dispose(),this._active=null)}}class zt extends w{get disabled(){return this._disabled}set disabled(e){var t;this.disabled!==e&&(this._disabled=e,e&&(null===(t=this.model)||void 0===t||t.clear()))}get model(){if(!this.disabled)return{clear:()=>{var e;this._model&&(null===(e=this._model.root.parentElement)||void 0===e||e.removeChild(this._model.root)),this._model=void 0},exists:()=>!!this._model,getElements:(e,t)=>{const i=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=i,this._model;const n=this.createContainer(),s=this.createAnchor();if(this._model={root:n,overlay:s,changed:i},n.appendChild(s),this.element.appendChild(n),(null==e?void 0:e.target)instanceof HTMLElement){const t=e.target.getBoundingClientRect(),i=this.element.getBoundingClientRect();s.style.left=t.left-i.left+"px",s.style.top=t.top-i.top+"px"}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(l.from((()=>{var e;null===(e=this.model)||void 0===e||e.clear()})))}createContainer(){const e=document.createElement("div");return e.className="dv-drop-target-container",e}createAnchor(){const e=document.createElement("div");return e.className="dv-drop-target-anchor",e.style.visibility="hidden",e}}const Pt={activationSize:{type:"pixels",value:10},size:{type:"pixels",value:20}};function Et(e){const t=e.from.activePanel;[...e.from.panels].map((t=>{const i=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),i})).forEach((i=>{e.to.model.openPanel(i,{skipSetActive:t!==i,skipSetGroupActive:!0})}))}class Ot extends de{get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap((e=>e.panels))}get options(){return this._options}get activePanel(){const e=this.activeGroup;if(e)return e.activePanel}get renderer(){var e;return null!==(e=this.options.defaultRenderer)&&void 0!==e?e:"onlyWhenVisible"}get api(){return this._api}get floatingGroups(){return this._floatingGroups}get popoutRestorationPromise(){return this._popoutRestorationPromise}constructor(e,t){var i,n,s;super(e,{proportionalLayout:!0,orientation:j.HORIZONTAL,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:null!==(n=null===(i=t.theme)||void 0===i?void 0:i.gap)&&void 0!==n?n:0,className:t.className}),this.nextGroupId=M(),this._deserializer=new pt(this),this._watermark=null,this._onWillDragPanel=new v,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new v,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new v,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new v,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidOpenPopoutWindowFail=new v,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidLayoutFromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new v({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidMovePanel=new v,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidMaximizedGroupChange=new v,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._floatingGroups=[],this._popoutGroups=[],this._popoutRestorationPromise=Promise.resolve(),this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new v,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._moving=!1,this._options=t,this.popupService=new At(this.element),this._themeClassnames=new I(this.element),this._api=new ue(this),this.rootDropTargetContainer=new zt(this.element,{disabled:!0}),this.overlayRenderContainer=new Ct(this.gridview.element,this),this._rootDropTarget=new be(this.element,{className:"dv-drop-target-edge",canDisplayOverlay:(e,t)=>{const i=a();if(i)return i.viewId===this.id&&("center"!==t||0===this.gridview.length);if("center"===t&&0!==this.gridview.length)return!1;const n=new Fe(e,"edge",t,a);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted},acceptedTargetZones:["top","bottom","left","right","center"],overlayModel:null!==(s=t.rootOverlayModel)&&void 0!==s?s:Pt,getOverrideTarget:()=>{var e;return null===(e=this.rootDropTargetContainer)||void 0===e?void 0:e.model}}),this.updateDropTargetModel(t),x(this.gridview.element,"dv-dockview",!0),x(this.element,"dv-debug",!!t.debug),this.updateTheme(),this.updateWatermark(),t.debug&&this.addDisposables(new St(this)),this.addDisposables(this.rootDropTargetContainer,this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onDidMovePanel,this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this._onUnhandledDragOverEvent,this._onDidMaximizedGroupChange,this._onDidOptionsChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidOpenPopoutWindowFail,this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.updateWatermark()})),this.onDidAdd((e=>{this._moving||this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._moving||this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._moving||this._onDidActiveGroupChange.fire(e)})),this.onDidMaximizedChange((e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})})),d.any(this.onDidAdd,this.onDidRemove)((()=>{this.updateWatermark()})),d.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidMovePanel,this.onDidActivePanelChange,this.onDidPopoutGroupPositionChange,this.onDidPopoutGroupSizeChange)((()=>{this._bufferOnDidLayoutChange.fire()})),l.from((()=>{for(const e of[...this._floatingGroups])e.dispose();for(const e of[...this._popoutGroups])e.disposable.dispose()})),this._rootDropTarget,this._rootDropTarget.onWillShowOverlay((e=>{this.gridview.length>0&&"center"===e.position||this._onWillShowOverlay.fire(new Te(e,{kind:"edge",panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget.onDrop((e=>{var t;const i=new Ue({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a,kind:"edge"});if(this._onWillDrop.fire(i),i.defaultPrevented)return;const n=a();n?this.moveGroupOrPanel({from:{groupId:n.groupId,panelId:null!==(t=n.panelId)&&void 0!==t?t:void 0},to:{group:this.orthogonalize(e.position),position:"center"}}):this._onDidDrop.fire(new Ze({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget)}setVisible(e,t){switch(e.api.location.type){case"grid":super.setVisible(e,t);break;case"floating":{const i=this.floatingGroups.find((t=>t.group===e));i&&(i.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case"popout":console.warn("dockview: You cannot hide a group that is in a popout window")}}addPopoutGroup(e,t){var i,n,s,o,r;if(e instanceof ht&&1===e.group.size)return this.addPopoutGroup(e.group,t);const a=function(e){function t(e){const t=[];for(let i=0;ie.startsWith("dockview-theme-"))),"string"!=typeof i);)n=n.parentElement;return i}(this.gridview.element),h=this.element;const d=(null==t?void 0:t.position)?t.position:e instanceof Ke?e.element.getBoundingClientRect():e.group?e.group.element.getBoundingClientRect():h.getBoundingClientRect(),p=null!==(n=null===(i=null==t?void 0:t.overridePopoutGroup)||void 0===i?void 0:i.id)&&void 0!==n?n:this.getNextGroupId(),c=new xt(`${this.id}-${p}`,null!=a?a:"",{url:null!==(r=null!==(s=null==t?void 0:t.popoutUrl)&&void 0!==s?s:null===(o=this.options)||void 0===o?void 0:o.popoutUrl)&&void 0!==r?r:"/popout.html",left:window.screenX+d.left,top:window.screenY+d.top,width:d.width,height:d.height,onDidOpen:null==t?void 0:t.onDidOpen,onWillClose:null==t?void 0:t.onWillClose}),u=new w(c,c.onDidClose((()=>{u.dispose()})));return c.open().then((i=>{var n;if(c.isDisposed)return!1;const s=(null==t?void 0:t.referenceGroup)?t.referenceGroup:e instanceof ht?e.group:e,o=e.api.location.type,r=null!==s.element.parentElement;let a;if(r?(null==t?void 0:t.overridePopoutGroup)?a=t.overridePopoutGroup:(a=this.createGroup({id:p}),i&&this._onDidAddGroup.fire(a)):a=s,null===i)return console.error("dockview: failed to create popout. perhaps you need to allow pop-ups for this website"),u.dispose(),this._onDidOpenPopoutWindowFail.fire(),this.movingLock((()=>Et({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),!1;const h=document.createElement("div");h.className="dv-overlay-render-container";const d=new Ct(h,this);let m;if(a.model.renderContainer=d,a.layout(c.window.innerWidth,c.window.innerHeight),!(null==t?void 0:t.overridePopoutGroup)&&r)if(e instanceof ht)this.movingLock((()=>{const t=s.model.removePanel(e);a.model.openPanel(t)}));else switch(this.movingLock((()=>Et({from:s,to:a}))),o){case"grid":s.api.setVisible(!1);break;case"floating":case"popout":m=null===(n=this._floatingGroups.find((t=>t.group.api.id===e.api.id)))||void 0===n?void 0:n.overlay.toJSON(),this.removeGroup(s)}i.classList.add("dv-dockview"),i.style.overflow="hidden",i.appendChild(h),i.appendChild(a.element);const f=document.createElement("div"),_=new zt(f,{disabled:this.rootDropTargetContainer.disabled});let D;i.appendChild(f),a.model.dropTargetContainer=_,a.model.location={type:"popout",getWindow:()=>c.window,popoutUrl:null==t?void 0:t.popoutUrl},r&&"grid"===e.api.location.type&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(a),u.addDisposables(a.api.onDidActiveChange((e=>{var t;e.isActive&&(null===(t=c.window)||void 0===t||t.focus())})),a.api.onWillFocus((()=>{var e;null===(e=c.window)||void 0===e||e.focus()})));const b=r&&s&&this.getPanel(s.id),C={window:c,popoutGroup:a,referenceGroup:b?s.id:void 0,disposable:{dispose:()=>(u.dispose(),D)}},y=function(e){const t=new v;let i,n=e.screenX,s=e.screenY;const o=()=>{if(e.closed)return;const r=e.screenX,a=e.screenY;r===n&&a===s||(clearTimeout(i),i=setTimeout((()=>{t.fire()}),100),n=r,s=a),requestAnimationFrame(o)};return o(),t}(c.window);return u.addDisposables(y,function(e,t){let i;return new w(g(e,"resize",(()=>{clearTimeout(i),i=setTimeout((()=>{t()}),100)})))}(c.window,(()=>{this._onDidPopoutGroupSizeChange.fire({width:c.window.innerWidth,height:c.window.innerHeight,group:a})})),y.event((()=>{this._onDidPopoutGroupPositionChange.fire({screenX:c.window.screenX,screenY:c.window.screenX,group:a})})),g(c.window,"resize",(()=>{a.layout(c.window.innerWidth,c.window.innerHeight)})),d,l.from((()=>{if(!this.isDisposed)if(r&&this.getPanel(s.id))this.movingLock((()=>Et({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),this.getPanel(a.id)&&this.doRemoveGroup(a,{skipPopoutAssociated:!0});else if(this.getPanel(a.id)){a.model.renderContainer=this.overlayRenderContainer,a.model.dropTargetContainer=this.rootDropTargetContainer,D=a;if(!this._popoutGroups.find((e=>e.popoutGroup===a)))return;m?this.addFloatingGroup(a,{height:m.height,width:m.width,position:m}):(this.doRemoveGroup(a,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),a.model.location={type:"grid"},this.movingLock((()=>{this.doAddGroup(a,[0])}))),this.doSetGroupAndPanelActive(a)}}))),this._popoutGroups.push(C),this.updateWatermark(),!0})).catch((e=>(console.error("dockview: failed to create popout.",e),!1)))}addFloatingGroup(e,t){var i,n,s,o,r;let a;if(e instanceof ht)a=this.createGroup(),this._onDidAddGroup.fire(a),this.movingLock((()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0}))),this.movingLock((()=>a.model.openPanel(e,{skipSetGroupActive:!0})));else{a=e;const n=null===(i=this._popoutGroups.find((e=>e.popoutGroup===a)))||void 0===i?void 0:i.referenceGroup,s=n?this.getPanel(n):void 0;"boolean"==typeof(null==t?void 0:t.skipRemoveGroup)&&t.skipRemoveGroup||(s?(this.movingLock((()=>Et({from:e,to:s}))),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(s,{skipDispose:!0}),a=s):this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}))}const h=function(){if(null==t?void 0:t.position){const e={};return"left"in t.position?e.left=Math.max(t.position.left,0):"right"in t.position?e.right=Math.max(t.position.right,0):e.left=ft,"top"in t.position?e.top=Math.max(t.position.top,0):"bottom"in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=wt,"number"==typeof t.width?e.width=Math.max(t.width,0):e.width=_t,"number"==typeof t.height?e.height=Math.max(t.height,0):e.height=Dt,e}return{left:"number"==typeof(null==t?void 0:t.x)?Math.max(t.x,0):ft,top:"number"==typeof(null==t?void 0:t.y)?Math.max(t.y,0):wt,width:"number"==typeof(null==t?void 0:t.width)?Math.max(t.width,0):_t,height:"number"==typeof(null==t?void 0:t.height)?Math.max(t.height,0):Dt}}(),d=new mt(Object.assign(Object.assign({container:this.gridview.element,content:a.element},h),{minimumInViewportWidth:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(s=null===(n=this.options.floatingGroupBounds)||void 0===n?void 0:n.minimumWidthWithinViewport)&&void 0!==s?s:gt,minimumInViewportHeight:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(r=null===(o=this.options.floatingGroupBounds)||void 0===o?void 0:o.minimumHeightWithinViewport)&&void 0!==r?r:gt})),l=a.element.querySelector(".dv-void-container");if(!l)throw new Error("failed to find drag handle");d.setupDrag(l,{inDragMode:"boolean"==typeof(null==t?void 0:t.inDragMode)&&t.inDragMode});const p=new vt(a,d),c=new w(a.api.onDidActiveChange((e=>{e.isActive&&d.bringToFront()})),b(a.element,(e=>{const{width:t,height:i}=e.contentRect;a.layout(t,i)})));p.addDisposables(d.onDidChange((()=>{a.layout(a.width,a.height)})),d.onDidChangeEnd((()=>{this._bufferOnDidLayoutChange.fire()})),a.onDidChange((e=>{d.setBounds({height:null==e?void 0:e.height,width:null==e?void 0:e.width})})),{dispose:()=>{c.dispose(),L(this._floatingGroups,p),a.model.location={type:"grid"},this.updateWatermark()}}),this._floatingGroups.push(p),a.model.location={type:"floating"},(null==t?void 0:t.skipActiveGroup)||this.doSetGroupAndPanelActive(a),this.updateWatermark()}orthogonalize(e,t){switch(this.gridview.normalize(),e){case"top":case"bottom":this.gridview.orientation===j.HORIZONTAL&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case"left":case"right":this.gridview.orientation===j.VERTICAL&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case"top":case"left":case"center":return this.createGroupAtLocation([0],void 0,t);case"bottom":case"right":return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw new Error(`unsupported position ${e}`)}}updateOptions(e){var t,i;if(super.updateOptions(e),"floatingGroupBounds"in e)for(const s of this._floatingGroups){switch(e.floatingGroupBounds){case"boundedWithinViewport":s.overlay.minimumInViewportHeight=void 0,s.overlay.minimumInViewportWidth=void 0;break;case void 0:s.overlay.minimumInViewportHeight=gt,s.overlay.minimumInViewportWidth=gt;break;default:s.overlay.minimumInViewportHeight=null===(t=e.floatingGroupBounds)||void 0===t?void 0:t.minimumHeightWithinViewport,s.overlay.minimumInViewportWidth=null===(i=e.floatingGroupBounds)||void 0===i?void 0:i.minimumWidthWithinViewport}s.overlay.setBounds()}this.updateDropTargetModel(e);const n=this.options.disableDnd;this._options=Object.assign(Object.assign({},this.options),e);n!==this.options.disableDnd&&this.updateDragAndDropState(),"theme"in e&&this.updateTheme(),this.layout(this.gridview.width,this.gridview.height,!0)}layout(e,t,i){if(super.layout(e,t,i),this._floatingGroups)for(const n of this._floatingGroups)n.overlay.setBounds()}updateDragAndDropState(){for(const e of this.groups)e.model.updateDragAndDropState()}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}getGroupPanel(e){return this.panels.find((t=>t.id===e))}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}moveToNext(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1])return void e.group.model.moveToNext({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupAndPanelActive(n)}moveToPrevious(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0])return void e.group.model.moveToPrevious({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){var e;const t=this.gridview.serialize(),i=this.panels.reduce(((e,t)=>(e[t.id]=t.toJSON(),e)),{}),n=this._floatingGroups.map((e=>({data:e.group.toJSON(),position:e.overlay.toJSON()}))),s=this._popoutGroups.map((e=>({data:e.popoutGroup.toJSON(),gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:"popout"===e.popoutGroup.api.location.type?e.popoutGroup.api.location.popoutUrl:void 0}))),o={grid:t,panels:i,activeGroup:null===(e=this.activeGroup)||void 0===e?void 0:e.id};return n.length>0&&(o.floatingGroups=n),s.length>0&&(o.popoutGroups=s),o}fromJSON(e){var t,i;if(this.clear(),"object"!=typeof e||null===e)throw new Error("serialized layout must be a non-null object");const{grid:n,panels:s,activeGroup:o}=e;if("branch"!==n.root.type||!Array.isArray(n.root.data))throw new Error("root must be of type branch");try{const r=this.width,a=this.height,h=e=>{const{id:t,locked:i,hideHeader:n,views:o,activeView:r}=e;if("string"!=typeof t)throw new Error("group id must be of type string");const a=this.createGroup({id:t,locked:!!i,hideHeader:!!n});this._onDidAddGroup.fire(a);const h=[];for(const d of o){const e=this._deserializer.fromJSON(s[d],a);h.push(e)}for(let s=0;s0&&a.model.openPanel(a.panels[a.panels.length-1],{skipSetGroupActive:!0}),a};this.gridview.deserialize(n,{fromJSON:e=>h(e.data)}),this.layout(r,a,!0);const d=null!==(t=e.floatingGroups)&&void 0!==t?t:[];for(const e of d){const{data:t,position:i}=e,n=h(t);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}const l=null!==(i=e.popoutGroups)&&void 0!==i?i:[],p=[];l.forEach(((e,t)=>{const{data:i,position:n,gridReferenceGroup:s,url:o}=e,r=h(i),a=new Promise((e=>{setTimeout((()=>{this.addPopoutGroup(r,{position:null!=n?n:void 0,overridePopoutGroup:s?r:void 0,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:o}),e()}),100*t)}));p.push(a)})),this._popoutRestorationPromise=Promise.all(p).then((()=>{}));for(const e of this._floatingGroups)e.overlay.setBounds();if("string"==typeof o){const e=this.getPanel(o);e&&this.doSetGroupAndPanelActive(e)}}catch(r){console.error("dockview: failed to deserialize layout. Reverting changes",r);for(const e of this.groups)for(const t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);for(const e of[...this._floatingGroups])e.dispose();throw this.clear(),r}this.updateWatermark(),requestAnimationFrame((()=>{this.overlayRenderContainer.updateAllPositions()})),this._onDidLayoutFromJSON.fire()}clear(){const e=Array.from(this._groups.values()).map((e=>e.value)),t=!!this.activeGroup;for(const i of e)this.removeGroup(i,{skipActive:!0});t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){for(const e of this._groups.entries()){const[t,i]=e;i.value.model.closeAllPanels()}}addPanel(e){var t,i;if(this.panels.find((t=>t.id===e.id)))throw new Error(`panel with id ${e.id} already exists`);let n;if(e.position&&e.floating)throw new Error("you can only provide one of: position, floating as arguments to .addPanel(...)");const s={width:e.initialWidth,height:e.initialHeight};let o;if(e.position)if(e.position.referencePanel){const t="string"==typeof e.position.referencePanel?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(o=e.position.index,!t)throw new Error(`referencePanel '${e.position.referencePanel}' does not exist`);n=this.findGroup(t)}else{if(!function(e){return!!e.referenceGroup}(e.position)){const t=this.orthogonalize(fe(e.position.direction)),i=this.createPanel(e,t);return t.model.openPanel(i,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:null==s?void 0:s.height,width:null==s?void 0:s.width}),i}if(n="string"==typeof e.position.referenceGroup?null===(t=this._groups.get(e.position.referenceGroup))||void 0===t?void 0:t.value:e.position.referenceGroup,o=e.position.index,!n)throw new Error(`referenceGroup '${e.position.referenceGroup}' does not exist`)}else n=this.activeGroup;let r;if(n){const t=he((null===(i=e.position)||void 0===i?void 0:i.direction)||"within");if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else if("floating"===n.api.location.type||"center"===t)r=this.createPanel(e,n),n.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),n.api.setSize({width:null==s?void 0:s.width,height:null==s?void 0:s.height}),e.inactive||this.doSetGroupAndPanelActive(n);else{const i=ee(n.element),a=te(this.gridview.orientation,i,t),h=this.createGroupAtLocation(a,this.orientationAtLocation(a)===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,h),h.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(h)}}else if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else{const t=this.createGroupAtLocation([0],this.gridview.orientation===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t)}return r}removePanel(e,t){void 0===t&&(t={removeEmptyGroup:!0});const i=e.group;if(!i)throw new Error(`cannot remove panel ${e.id}. it's missing a group.`);i.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),0===i.size&&t.removeEmptyGroup&&this.removeGroup(i,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ct}updateWatermark(){var e,t,i;if(0===this.groups.filter((e=>"grid"===e.api.location.type&&e.api.isVisible)).length){if(!this._watermark){this._watermark=this.createWatermarkComponent(),this._watermark.init({containerApi:new ue(this)});const e=document.createElement("div");e.className="dv-watermark-container",i="watermark-component",e.setAttribute("data-testid",i),e.appendChild(this._watermark.element),this.gridview.element.appendChild(e)}}else this._watermark&&(this._watermark.element.parentElement.remove(),null===(t=(e=this._watermark).dispose)||void 0===t||t.call(e),this._watermark=null)}addGroup(e){var t;if(e){let i;if(e.referencePanel){const t="string"==typeof e.referencePanel?this.panels.find((t=>t.id===e.referencePanel)):e.referencePanel;if(!t)throw new Error(`reference panel ${e.referencePanel} does not exist`);if(i=this.findGroup(t),!i)throw new Error(`reference group for reference panel ${e.referencePanel} does not exist`)}else{if(!function(e){return!!e.referenceGroup}(e)){const t=this.orthogonalize(fe(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}if(i="string"==typeof e.referenceGroup?null===(t=this._groups.get(e.referenceGroup))||void 0===t?void 0:t.value:e.referenceGroup,!i)throw new Error(`reference group ${e.referenceGroup} does not exist`)}const n=he(e.direction||"within"),s=ee(i.element),o=te(this.gridview.orientation,s,n),r=this.createGroup(e),a=this.getLocationOrientation(o)===j.VERTICAL?e.initialHeight:e.initialWidth;return this.doAddGroup(r,o,a),e.skipSetActive||this.doSetGroupAndPanelActive(r),r}{const t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===j.HORIZONTAL?j.HORIZONTAL:j.VERTICAL}removeGroup(e,t){this.doRemoveGroup(e,t)}doRemoveGroup(e,t){var i;const n=[...e.panels];if(!(null==t?void 0:t.skipDispose))for(const r of n)this.removePanel(r,{removeEmptyGroup:!1,skipDispose:null!==(i=null==t?void 0:t.skipDispose)&&void 0!==i&&i});const s=this.activePanel;if("floating"===e.api.location.type){const i=this._floatingGroups.find((t=>t.group===e));if(i){if((null==t?void 0:t.skipDispose)||(i.group.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)),L(this._floatingGroups,i),i.dispose(),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return i.group}throw new Error("failed to find floating group")}if("popout"===e.api.location.type){const i=this._popoutGroups.find((t=>t.popoutGroup===e));if(i){if(!(null==t?void 0:t.skipDispose)){if(!(null==t?void 0:t.skipPopoutAssociated)){const e=i.referenceGroup?this.getPanel(i.referenceGroup):void 0;e&&0===e.panels.length&&this.removeGroup(e)}i.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}L(this._popoutGroups,i);const n=i.disposable.dispose();if(!(null==t?void 0:t.skipPopoutReturn)&&n&&(this.doAddGroup(n,[0]),this.doSetGroupAndPanelActive(n)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return this.updateWatermark(),i.popoutGroup}throw new Error("failed to find popout group")}const o=super.doRemoveGroup(e,t);return(null==t?void 0:t.skipActive)||this.activePanel!==s&&this._onDidActivePanelChange.fire(this.activePanel),o}movingLock(e){const t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}moveGroupOrPanel(e){var t;const i=e.to.group,n=e.from.groupId,s=e.from.panelId,o=e.to.position,r=e.to.index,a=n?null===(t=this._groups.get(n))||void 0===t?void 0:t.value:void 0;if(!a)throw new Error(`Failed to find group id ${n}`);if(void 0!==s)if(o&&"center"!==o){const e=ee(i.element),t=te(this.gridview.orientation,e,o);if(a.size<2){const[e,n]=N(t);if("grid"===a.api.location.type){const t=ee(a.element),[i,o]=N(t);if(V(i,e))return this.gridview.moveView(i,o,n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}if("popout"===a.api.location.type){const e=this._popoutGroups.find((e=>e.popoutGroup===a)),i=this.movingLock((()=>e.popoutGroup.model.removePanel(e.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0})));this.doRemoveGroup(a,{skipActive:!0});const n=this.createGroupAtLocation(t);return this.movingLock((()=>n.model.openPanel(i))),this.doSetGroupAndPanelActive(n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}const r=this.movingLock((()=>this.doRemoveGroup(a,{skipActive:!0,skipDispose:!0}))),h=ee(i.element),d=te(this.gridview.orientation,h,o);this.movingLock((()=>this.doAddGroup(r,d))),this.doSetGroupAndPanelActive(r),this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);const i=te(this.gridview.orientation,e,o),n=this.createGroupAtLocation(i);this.movingLock((()=>n.model.openPanel(t,{skipSetGroupActive:!0}))),this.doSetGroupAndPanelActive(n),this._onDidMovePanel.fire({panel:t,from:a})}}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);0===a.model.size&&this.doRemoveGroup(a,{skipActive:!0});const n=0===i.model.size;this.movingLock((()=>{var s;return i.model.openPanel(t,{index:r,skipSetActive:null!==(s=e.skipSetActive)&&void 0!==s&&s&&!n,skipSetGroupActive:!0})})),e.skipSetActive||this.doSetGroupAndPanelActive(i),this._onDidMovePanel.fire({panel:t,from:a})}else this.moveGroup({from:{group:a},to:{group:i,position:o},skipSetActive:e.skipSetActive})}moveGroup(e){const t=e.from.group,i=e.to.group,n=e.to.position;if("center"===n){const n=t.activePanel,s=this.movingLock((()=>[...t.panels].map((e=>t.model.removePanel(e.id,{skipSetActive:!0})))));0===(null==t?void 0:t.model.size)&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock((()=>{for(const e of s)i.model.openPanel(e,{skipSetActive:e!==n,skipSetGroupActive:!0})})),!0!==e.skipSetActive?this.doSetGroupAndPanelActive(i):this.activePanel||this.doSetGroupAndPanelActive(i)}else{switch(t.api.location.type){case"grid":this.gridview.removeView(ee(t.element));break;case"floating":{const e=this._floatingGroups.find((e=>e.group===t));if(!e)throw new Error("failed to find floating group");e.dispose();break}case"popout":{const e=this._popoutGroups.find((e=>e.popoutGroup===t));if(!e)throw new Error("failed to find popout group");const n=this._popoutGroups.indexOf(e);if(n>=0&&this._popoutGroups.splice(n,1),e.referenceGroup){const t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose(),"grid"===i.api.location.type?(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"grid"}):"floating"===i.api.location.type&&(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"floating"});break}}if("grid"===i.api.location.type){const e=ee(i.element),s=te(this.gridview.orientation,e,n);let o;switch(this.gridview.orientation){case j.VERTICAL:o=e.length%2==0?t.api.width:t.api.height;break;case j.HORIZONTAL:o=e.length%2==0?t.api.height:t.api.width}this.gridview.addView(t,o,s)}else if("floating"===i.api.location.type){const e=this._floatingGroups.find((e=>e.group===i));if(e){const i=e.overlay.toJSON();let n,s;n="left"in i?i.left+50:"right"in i?Math.max(0,i.right-i.width-50):50,s="top"in i?i.top+50:"bottom"in i?Math.max(0,i.bottom-i.height-50):50,this.addFloatingGroup(t,{height:i.height,width:i.width,position:{left:n,top:s}})}}}if(t.panels.forEach((e=>{this._onDidMovePanel.fire({panel:e,from:t})})),!1===e.skipSetActive){const e=null!=i?i:t;this.doSetGroupAndPanelActive(e)}}doSetGroupActive(e){super.doSetGroupActive(e);const t=this.activePanel;this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);const t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e||(e={});let t=null==e?void 0:e.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${null==e?void 0:e.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();const i=new Ke(this,t,e);if(i.init({params:{},accessor:this}),!this._groups.has(i.id)){const e=new w(i.model.onTabDragStart((e=>{this._onWillDragPanel.fire(e)})),i.model.onGroupDragStart((e=>{this._onWillDragGroup.fire(e)})),i.model.onMove((e=>{const{groupId:t,itemId:n,target:s,index:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:n},to:{group:i,position:s,index:o}})})),i.model.onDidDrop((e=>{this._onDidDrop.fire(e)})),i.model.onWillDrop((e=>{this._onWillDrop.fire(e)})),i.model.onWillShowOverlay((e=>{this.options.disableDnd?e.preventDefault():this._onWillShowOverlay.fire(e)})),i.model.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})),i.model.onDidAddPanel((e=>{this._moving||this._onDidAddPanel.fire(e.panel)})),i.model.onDidRemovePanel((e=>{this._moving||this._onDidRemovePanel.fire(e.panel)})),i.model.onDidActivePanelChange((e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value!==e.panel&&this._onDidActivePanelChange.fire(e.panel)})),d.any(i.model.onDidPanelTitleChange,i.model.onDidPanelParametersChange)((()=>{this._bufferOnDidLayoutChange.fire()})));this._groups.set(i.id,{value:i,disposable:e})}return i.initialize(),i}createPanel(e,t){var i,n,s;const o=e.component,r=null!==(i=e.tabComponent)&&void 0!==i?i:this.options.defaultTabComponent,a=new lt(this,e.id,o,r),h=new ht(e.id,o,r,this,this._api,t,a,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return h.init({title:null!==(n=e.title)&&void 0!==n?n:e.id,params:null!==(s=null==e?void 0:e.params)&&void 0!==s?s:{}}),h}createGroupAtLocation(e,t,i){const n=this.createGroup(i);return this.doAddGroup(n,e,t),n}findGroup(e){var t;return null===(t=Array.from(this._groups.values()).find((t=>t.value.model.containsPanel(e))))||void 0===t?void 0:t.value}orientationAtLocation(e){const t=this.gridview.orientation;return e.length%2==1?t:ie(t)}updateDropTargetModel(e){"dndEdges"in e&&(this._rootDropTarget.disabled="boolean"==typeof e.dndEdges&&!1===e.dndEdges,"object"==typeof e.dndEdges&&null!==e.dndEdges?this._rootDropTarget.setOverlayModel(e.dndEdges):this._rootDropTarget.setOverlayModel(Pt)),"rootOverlayModel"in e&&this.updateDropTargetModel({dndEdges:e.dndEdges})}updateTheme(){var e,t;const i=null!==(e=this._options.theme)&&void 0!==e?e:it;if(this._themeClassnames.setClassNames(i.className),this.gridview.margin=null!==(t=i.gap)&&void 0!==t?t:0,"absolute"===i.dndOverlayMounting)this.rootDropTargetContainer.disabled=!1;else this.rootDropTargetContainer.disabled=!0}}class Gt extends de{get orientation(){return this.gridview.orientation}set orientation(e){this.gridview.orientation=e}get options(){return this._options}get deserializer(){return this._deserializer}set deserializer(e){this._deserializer=e}constructor(e,t){var i;super(e,{proportionalLayout:null===(i=t.proportionalLayout)||void 0===i||i,orientation:t.orientation,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,className:t.className}),this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._options=t,this.addDisposables(this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this.onDidAdd((e=>{this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._onDidActiveGroupChange.fire(e)})))}updateOptions(e){super.updateOptions(e);const t="string"==typeof e.orientation&&this.gridview.orientation!==e.orientation;this._options=Object.assign(Object.assign({},this.options),e),t&&(this.gridview.orientation=e.orientation),this.layout(this.gridview.width,this.gridview.height,!0)}removePanel(e){this.removeGroup(e)}toJSON(){var e;return{grid:this.gridview.serialize(),activePanel:null===(e=this.activeGroup)||void 0===e?void 0:e.id}}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t)}setActive(e){this._groups.forEach(((t,i)=>{t.value.setActive(e===t.value)}))}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}fromJSON(e){this.clear();const{grid:t,activePanel:i}=e;try{const e=[],n=this.width,s=this.height;if(this.gridview.deserialize(t,{fromJSON:t=>{const{data:i}=t,n=this.options.createComponent({id:i.id,name:i.component});return e.push((()=>n.init({params:i.params,minimumWidth:i.minimumWidth,maximumWidth:i.maximumWidth,minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,priority:i.priority,snap:!!i.snap,accessor:this,isVisible:t.visible}))),this._onDidAddGroup.fire(n),this.registerPanel(n),n}}),this.layout(n,s,!0),e.forEach((e=>e())),"string"==typeof i){const e=this.getPanel(i);e&&this.doSetGroupActive(e)}}catch(n){for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw this.clear(),n}this._onDidLayoutfromJSON.fire()}clear(){const e=this.activeGroup,t=Array.from(this._groups.values());for(const i of t)i.disposable.dispose(),this.doRemoveGroup(i.value,{skipActive:!0});e&&this.doSetGroupActive(void 0),this.gridview.clear()}movePanel(e,t){var i;let n;const s=this.gridview.remove(e),o=null===(i=this._groups.get(t.reference))||void 0===i?void 0:i.value;if(!o)throw new Error(`reference group ${t.reference} does not exist`);const r=he(t.direction);if("center"===r)throw new Error(`${r} not supported as an option`);{const e=ee(o.element);n=te(this.gridview.orientation,e,r)}this.doAddGroup(s,n,t.size)}addPanel(e){var t,i,n,s;let o=null!==(t=e.location)&&void 0!==t?t:[0];if(null===(i=e.position)||void 0===i?void 0:i.referencePanel){const t=null===(n=this._groups.get(e.position.referencePanel))||void 0===n?void 0:n.value;if(!t)throw new Error(`reference group ${e.position.referencePanel} does not exist`);const i=he(e.position.direction);if("center"===i)throw new Error(`${i} not supported as an option`);{const e=ee(t.element);o=te(this.gridview.orientation,e,i)}}const r=this.options.createComponent({id:e.id,name:e.component});return r.init({params:null!==(s=e.params)&&void 0!==s?s:{},minimumWidth:e.minimumWidth,maximumWidth:e.maximumWidth,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,priority:e.priority,snap:!!e.snap,accessor:this,isVisible:!0}),this.doAddGroup(r,o,e.size),this.registerPanel(r),this.doSetGroupActive(r),r}registerPanel(e){const t=new w(e.api.onDidFocusChange((t=>{t.isFocused&&this._groups.forEach((t=>{const i=t.value;i!==e?i.setActive(!1):i.setActive(!0)}))})));this._groups.set(e.id,{value:e,disposable:t})}moveGroup(e,t,i){const n=this.getPanel(t);if(!n)throw new Error("invalid operation");const s=ee(e.element),o=te(this.gridview.orientation,s,i),[r,a]=N(o),h=ee(n.element),[d,l]=N(h);if(V(d,r))return void this.gridview.moveView(d,l,a);const p=this.doRemoveGroup(n,{skipActive:!0,skipDispose:!0}),c=ee(e.element),u=te(this.gridview.orientation,c,i);this.doAddGroup(p,u)}removeGroup(e){super.removeGroup(e)}dispose(){super.dispose(),this._onDidLayoutfromJSON.dispose()}}class It extends re{get panels(){return this.splitview.getViews()}get options(){return this._options}get length(){return this._panels.size}get orientation(){return this.splitview.orientation}get splitview(){return this._splitview}set splitview(e){this._splitview&&this._splitview.dispose(),this._splitview=e,this._splitviewChangeDisposable.value=new w(this._splitview.onDidSashEnd((()=>{this._onDidLayoutChange.fire(void 0)})),this._splitview.onDidAddView((e=>this._onDidAddView.fire(e))),this._splitview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get height(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.orthogonalSize:this.splitview.size}get width(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.size:this.splitview.orthogonalSize}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._splitviewChangeDisposable=new _,this._panels=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.splitview=new U(this.element,t),this.addDisposables(this._onDidAddView,this._onDidLayoutfromJSON,this._onDidRemoveView,this._onDidLayoutChange)}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),"string"==typeof e.orientation&&(this.splitview.orientation=e.orientation),this._options=Object.assign(Object.assign({},this.options),e),this.splitview.layout(this.splitview.size,this.splitview.orthogonalSize)}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}movePanel(e,t){this.splitview.moveView(e,t)}setVisible(e,t){const i=this.panels.indexOf(e);this.splitview.setViewVisible(i,t)}setActive(e,t){this._activePanel=e,this.panels.filter((t=>t!==e)).forEach((e=>{e.api._onDidActiveChange.fire({isActive:!1}),t||e.focus()})),e.api._onDidActiveChange.fire({isActive:!0}),t||e.focus()}removePanel(e,t){const i=this._panels.get(e.id);if(!i)throw new Error(`unknown splitview panel ${e.id}`);i.dispose(),this._panels.delete(e.id);const n=this.panels.findIndex((t=>t===e));this.splitview.removeView(n,t).dispose();const s=this.panels;s.length>0&&this.setActive(s[s.length-1])}getPanel(e){return this.panels.find((t=>t.id===e))}addPanel(e){var t;if(this._panels.has(e.id))throw new Error(`panel ${e.id} already exists`);const i=this.options.createComponent({id:e.id,name:e.component});i.orientation=this.splitview.orientation,i.init({params:null!==(t=e.params)&&void 0!==t?t:{},minimumSize:e.minimumSize,maximumSize:e.maximumSize,snap:e.snap,priority:e.priority,accessor:this});const n="number"==typeof e.size?e.size:Z.Distribute,s="number"==typeof e.index?e.index:void 0;return this.splitview.addView(i,n,s),this.doAddView(i),this.setActive(i),i}layout(e,t){const[i,n]=this.splitview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.splitview.layout(i,n)}doAddView(e){const t=e.api.onDidFocusChange((t=>{t.isFocused&&this.setActive(e,!0)}));this._panels.set(e.id,t)}toJSON(){var e;return{views:this.splitview.getViews().map(((e,t)=>({size:this.splitview.getViewSize(t),data:e.toJSON(),snap:!!e.snap,priority:e.priority}))),activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,size:this.splitview.size,orientation:this.splitview.orientation}}fromJSON(e){this.clear();const{views:t,orientation:i,size:n,activeView:s}=e,o=[],r=this.width,a=this.height;if(this.splitview=new U(this.element,{orientation:i,proportionalLayout:this.options.proportionalLayout,descriptor:{size:n,views:t.map((e=>{const t=e.data;if(this._panels.has(t.id))throw new Error(`panel ${t.id} already exists`);const n=this.options.createComponent({id:t.id,name:t.component});return o.push((()=>{var i;n.init({params:null!==(i=t.params)&&void 0!==i?i:{},minimumSize:t.minimumSize,maximumSize:t.maximumSize,snap:e.snap,priority:e.priority,accessor:this})})),n.orientation=i,this.doAddView(n),setTimeout((()=>{this._onDidAddView.fire(n)}),0),{size:e.size,view:n}}))}}),this.layout(r,a),o.forEach((e=>e())),"string"==typeof s){const e=this.getPanel(s);e&&this.setActive(e)}this._onDidLayoutfromJSON.fire()}clear(){for(const e of this._panels.values())e.dispose();for(this._panels.clear();this.splitview.length>0;){this.splitview.removeView(0,Z.Distribute,!0).dispose()}}dispose(){for(const t of this._panels.values())t.dispose();this._panels.clear();const e=this.splitview.getViews();this._splitviewChangeDisposable.dispose(),this.splitview.dispose();for(const t of e)t.dispose();this.element.remove(),super.dispose()}}class Nt extends w{get element(){return this._element}constructor(){super(),this._expandedIcon=We({width:"11",height:"11",viewbox:"0 0 24 15",path:"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z"}),this._collapsedIcon=He(),this.disposable=new _,this.apiRef={api:null},this._element=document.createElement("div"),this.element.className="dv-default-header",this._content=document.createElement("span"),this._expander=document.createElement("div"),this._expander.className="dv-pane-header-icon",this.element.appendChild(this._expander),this.element.appendChild(this._content),this.addDisposables(g(this._element,"click",(()=>{var e;null===(e=this.apiRef.api)||void 0===e||e.setExpanded(!this.apiRef.api.isExpanded)})))}init(e){this.apiRef.api=e.api,this._content.textContent=e.title,this.updateIcon(),this.disposable.value=e.api.onDidExpansionChange((()=>{this.updateIcon()}))}updateIcon(){var e;const t=!!(null===(e=this.apiRef.api)||void 0===e?void 0:e.isExpanded);x(this._expander,"collapsed",!t),t?(this._expander.contains(this._collapsedIcon)&&this._collapsedIcon.remove(),this._expander.contains(this._expandedIcon)||this._expander.appendChild(this._expandedIcon)):(this._expander.contains(this._expandedIcon)&&this._expandedIcon.remove(),this._expander.contains(this._collapsedIcon)||this._expander.appendChild(this._collapsedIcon))}update(e){}dispose(){this.disposable.dispose(),super.dispose()}}const Vt=M(),Tt=Number.MAX_SAFE_INTEGER;class kt extends Oe{constructor(e){super({accessor:e.accessor,id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,disableDnd:e.disableDnd,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this.options=e}getBodyComponent(){return this.options.body}getHeaderComponent(){return this.options.header}}class Lt extends re{get id(){return this._id}get panels(){return this.paneview.getPanes()}set paneview(e){this._paneview=e,this._disposable.value=new w(this._paneview.onDidChange((()=>{this._onDidLayoutChange.fire(void 0)})),this._paneview.onDidAddView((e=>this._onDidAddView.fire(e))),this._paneview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get paneview(){return this._paneview}get minimumSize(){return this.paneview.minimumSize}get maximumSize(){return this.paneview.maximumSize}get height(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.orthogonalSize:this.paneview.size}get width(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.size:this.paneview.orthogonalSize}get options(){return this._options}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=Vt.next(),this._disposable=new _,this._viewDisposables=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.element.style.height="100%",this.element.style.width="100%",this.addDisposables(this._onDidLayoutChange,this._onDidLayoutfromJSON,this._onDidDrop,this._onDidAddView,this._onDidRemoveView,this._onUnhandledDragOverEvent),this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.paneview=new $(this.element,{orientation:j.VERTICAL}),this.addDisposables(this._disposable)}setVisible(e,t){const i=this.panels.indexOf(e);this.paneview.setViewVisible(i,t)}focus(){}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),this._options=Object.assign(Object.assign({},this.options),e)}addPanel(e){var t,i;const n=this.options.createComponent({id:e.id,name:e.component});let s;e.headerComponent&&this.options.createHeaderComponent&&(s=this.options.createHeaderComponent({id:e.id,name:e.headerComponent})),s||(s=new Nt);const o=new kt({id:e.id,component:e.component,headerComponent:e.headerComponent,header:s,body:n,orientation:j.VERTICAL,isExpanded:!!e.isExpanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:0,maximumBodySize:Tt});this.doAddPanel(o);const r="number"==typeof e.size?e.size:Z.Distribute,a="number"==typeof e.index?e.index:void 0;return o.init({params:null!==(i=e.params)&&void 0!==i?i:{},minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize,isExpanded:e.isExpanded,title:e.title,containerApi:new pe(this),accessor:this}),this.paneview.addPane(o,r,a),o.orientation=this.paneview.orientation,o}removePanel(e){const t=this.panels.findIndex((t=>t===e));this.paneview.removePane(t),this.doRemovePanel(e)}movePanel(e,t){this.paneview.moveView(e,t)}getPanel(e){return this.panels.find((t=>t.id===e))}layout(e,t){const[i,n]=this.paneview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.paneview.layout(i,n)}toJSON(){const e=e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e;return{views:this.paneview.getPanes().map(((t,i)=>{return{size:this.paneview.getViewSize(i),data:t.toJSON(),minimumSize:(n=t.minimumBodySize,n<=0?void 0:n),maximumSize:e(t.maximumBodySize),headerSize:t.headerSize,expanded:t.isExpanded()};var n})),size:this.paneview.size}}fromJSON(e){this.clear();const{views:t,size:i}=e,n=[],s=this.width,o=this.height;this.paneview=new $(this.element,{orientation:j.VERTICAL,descriptor:{size:i,views:t.map((e=>{var t,i,s;const o=e.data,r=this.options.createComponent({id:o.id,name:o.component});let a;o.headerComponent&&this.options.createHeaderComponent&&(a=this.options.createHeaderComponent({id:o.id,name:o.headerComponent})),a||(a=new Nt);const h=new kt({id:o.id,component:o.component,headerComponent:o.headerComponent,header:a,body:r,orientation:j.VERTICAL,isExpanded:!!e.expanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:null!==(i=e.minimumSize)&&void 0!==i?i:0,maximumBodySize:null!==(s=e.maximumSize)&&void 0!==s?s:Tt});return this.doAddPanel(h),n.push((()=>{var t;h.init({params:null!==(t=o.params)&&void 0!==t?t:{},minimumBodySize:e.minimumSize,maximumBodySize:e.maximumSize,title:o.title,isExpanded:!!e.expanded,containerApi:new pe(this),accessor:this}),h.orientation=this.paneview.orientation})),setTimeout((()=>{this._onDidAddView.fire(h)}),0),{size:e.size,view:h}}))}}),this.layout(s,o),n.forEach((e=>e())),this._onDidLayoutfromJSON.fire()}clear(){for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.paneview.dispose()}doAddPanel(e){const t=new w(e.onDidDrop((e=>{this._onDidDrop.fire(e)})),e.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})));this._viewDisposables.set(e.id,t)}doRemovePanel(e){const t=this._viewDisposables.get(e.id);t&&(t.dispose(),this._viewDisposables.delete(e.id))}dispose(){super.dispose();for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.element.remove(),this.paneview.dispose()}}class Rt extends Pe{get priority(){return this._priority}set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){const e="function"==typeof this._minimumSize?this._minimumSize():this._minimumSize;return e!==this._evaluatedMinimumSize&&(this._evaluatedMinimumSize=e,this.updateConstraints()),e}get maximumSize(){const e="function"==typeof this._maximumSize?this._maximumSize():this._maximumSize;return e!==this._evaluatedMaximumSize&&(this._evaluatedMaximumSize=e,this.updateConstraints()),e}get snap(){return this._snap}constructor(e,t){super(e,t,new Ae(e,t)),this._evaluatedMinimumSize=0,this._evaluatedMaximumSize=Number.POSITIVE_INFINITY,this._minimumSize=0,this._maximumSize=Number.POSITIVE_INFINITY,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this.api.initialize(this),this.addDisposables(this._onDidChange,this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.setActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumSize&&"function"!=typeof e.minimumSize||(this._minimumSize=e.minimumSize),"number"!=typeof e.maximumSize&&"function"!=typeof e.maximumSize||(this._maximumSize=e.maximumSize),this.updateConstraints()})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})))}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}layout(e,t){const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){super.init(e),this._priority=e.priority,e.minimumSize&&(this._minimumSize=e.minimumSize),e.maximumSize&&(this._maximumSize=e.maximumSize),e.snap&&(this._snap=e.snap)}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{minimumSize:(e=this.minimumSize,e<=0?void 0:e),maximumSize:(e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e)(this.maximumSize)});var e}updateConstraints(){this.api._onDidConstraintsChange.fire({maximumSize:this._evaluatedMaximumSize,minimumSize:this._evaluatedMinimumSize})}}function Mt(e,t){return new Ot(e,t).api}function Wt(e,t){const i=new It(e,t);return new le(i)}function Ht(e,t){const i=new Gt(e,t);return new ce(i)}function jt(e,t){const i=new Lt(e,t);return new pe(i)}},6376:(e,t,i)=>{i.d(t,{Pg:()=>D,O4:()=>n.O4,tu:()=>f,$R:()=>x,g1:()=>n.g1,i5:()=>n.i5,Vm:()=>A,TU:()=>C,M:()=>n.M,UM:()=>n.UM,Zc:()=>n.Zc,Hx:()=>n.Hx,MV:()=>n.MV,Qp:()=>n.Qp,Lt:()=>n.Lt,TR:()=>n.TR,ZS:()=>n.ZS});var n=i(5399),s=i(6204),o=i(2457);const r=(e,t)=>{const[i,n]=s.useState(),o=s.useRef(e.componentProps);return s.useImperativeHandle(t,(()=>({update:e=>{o.current=Object.assign(Object.assign({},o.current),e),n(Date.now())}})),[]),s.createElement(e.component,o.current)};r.displayName="DockviewReactJsBridge";const a=(()=>{let e=1;return{next:()=>`dockview_react_portal_key_${(e++).toString()}`}})(),h=s.createContext({});class d{constructor(e,t,i,n,s){this.parent=e,this.portalStore=t,this.component=i,this.parameters=n,this.context=s,this._initialProps={},this.disposed=!1,this.createPortal()}update(e){if(this.disposed)throw new Error("invalid operation: resource is already disposed");this.componentInstance?this.componentInstance.update(e):this._initialProps=Object.assign(Object.assign({},this._initialProps),e)}createPortal(){if(this.disposed)throw new Error("invalid operation: resource is already disposed");if("function"!=typeof(e=this.component)&&!(null==e?void 0:e.$$typeof))throw new Error("Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components");var e;const t=s.createElement(s.forwardRef(r),{component:this.component,componentProps:this.parameters,ref:e=>{this.componentInstance=e,Object.keys(this._initialProps).length>0&&(this.componentInstance.update(this._initialProps),this._initialProps={})}}),i=this.context?s.createElement(h.Provider,{value:this.context},t):t,n=o.createPortal(i,this.parent,a.next());this.ref={portal:n,disposable:this.portalStore.addPortal(n)}}dispose(){var e;null===(e=this.ref)||void 0===e||e.disposable.dispose(),this.disposed=!0}}const l=()=>{const[e,t]=s.useState([]);s.useDebugValue(`Portal count: ${e.length}`);return[e,s.useCallback((e=>{t((t=>[...t,e]));let i=!1;return n.GW.from((()=>{if(i)throw new Error("invalid operation: resource already disposed");i=!0,t((t=>t.filter((t=>t!==e))))}))}),[])]};class p{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._onDidFocus=new n.O4,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new n.O4,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;this._onDidFocus.dispose(),this._onDidBlur.dispose(),null===(e=this.part)||void 0===e||e.dispose()}}class c{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi,tabLocation:e.tabLocation})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class u{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{group:e.group,containerApi:e.containerApi})}focus(){}update(e){var t,i,n;this.parameters&&(this.parameters.params=e.params),null===(t=this.part)||void 0===t||t.update({params:null!==(n=null===(i=this.parameters)||void 0===i?void 0:i.params)&&void 0!==n?n:{}})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class m{get element(){return this._element}get part(){return this._part}constructor(e,t,i){this.component=e,this.reactPortalStore=t,this._group=i,this.mutableDisposable=new n.Gi,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.mutableDisposable.value=new n.KU(this._group.model.onDidAddPanel((()=>{this.updatePanels()})),this._group.model.onDidRemovePanel((()=>{this.updatePanels()})),this._group.model.onDidActivePanelChange((()=>{this.updateActivePanel()})),e.api.onDidActiveChange((()=>{this.updateGroupActive()}))),this._part=new d(this.element,this.reactPortalStore,this.component,{api:e.api,containerApi:e.containerApi,panels:this._group.model.panels,activePanel:this._group.model.activePanel,isGroupActive:this._group.api.isActive,group:this._group})}dispose(){var e;this.mutableDisposable.dispose(),null===(e=this._part)||void 0===e||e.dispose()}update(e){var t;null===(t=this._part)||void 0===t||t.update(e.params)}updatePanels(){this.update({params:{panels:this._group.model.panels}})}updateActivePanel(){this.update({params:{activePanel:this._group.model.activePanel}})}updateGroupActive(){this.update({params:{isGroupActive:this._group.api.isActive}})}}function v(e,t){return e?i=>new m(e,t,i):void 0}const g="props.defaultTabComponent";const f=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.gq.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.gq.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return;const s=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(s[g]=e.defaultTabComponent);const r={createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a}),createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a}),createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a}),createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a}),createTabComponent:e=>new c(e.id,s[e.name],{addPortal:a}),createWatermarkComponent:e.watermarkComponent?()=>new u("watermark",e.watermarkComponent,{addPortal:a}):void 0,defaultTabComponent:e.defaultTabComponent?g:void 0},h=(0,n.lT)(i.current,Object.assign(Object.assign({},function(e){return n.gq.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:d,clientHeight:l}=i.current;return h.layout(d,l),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onWillDrop((t=>{e.onWillDrop&&e.onWillDrop(t)}));return()=>{t.dispose()}}),[e.onWillDrop]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(i[g]=e.defaultTabComponent),o.current.updateOptions({defaultTabComponent:e.defaultTabComponent?g:void 0,createTabComponent:e=>new c(e.id,i[e.name],{addPortal:a})})}),[e.tabComponents,e.defaultTabComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createWatermarkComponent:e.watermarkComponent?()=>new u("watermark",e.watermarkComponent,{addPortal:a}):void 0})}),[e.watermarkComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a})})}),[e.rightHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a})})}),[e.leftHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a})})}),[e.prefixHeaderActionsComponent]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));f.displayName="DockviewComponent";const w=()=>s.createElement("svg",{height:"11",width:"11",viewBox:"0 0 28 28","aria-hidden":"false",focusable:!1,className:"dv-svg"},s.createElement("path",{d:"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"}));var _=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s{var{api:t,containerApi:i,params:n,hideClose:o,closeActionOverride:r,onPointerDown:a,onPointerUp:h,onPointerLeave:d,tabLocation:l}=e,p=_(e,["api","containerApi","params","hideClose","closeActionOverride","onPointerDown","onPointerUp","onPointerLeave","tabLocation"]);const c=function(e){const[t,i]=s.useState(e.title);return s.useEffect((()=>{const n=e.onDidTitleChange((e=>{i(e.title)}));return t!==e.title&&i(e.title),()=>{n.dispose()}}),[e]),t}(t),u=s.useRef(!1),m=s.useCallback((e=>{e.preventDefault(),r?r():t.close()}),[t,r]),v=s.useCallback((e=>{e.preventDefault()}),[]),g=s.useCallback((e=>{u.current=1===e.button,null==a||a(e)}),[a]),f=s.useCallback((e=>{u&&1===e.button&&!o&&(u.current=!1,m(e)),null==h||h(e)}),[h,m,o]),D=s.useCallback((e=>{u.current=!1,null==d||d(e)}),[d]);return s.createElement("div",Object.assign({"data-testid":"dockview-dv-default-tab"},p,{onPointerDown:g,onPointerUp:f,onPointerLeave:D,className:"dv-default-tab"}),s.createElement("span",{className:"dv-default-tab-content"},c),!o&&s.createElement("div",{className:"dv-default-tab-action",onPointerDown:v,onClick:m},s.createElement(w,null)))};class b extends n.hJ{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new d(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.fX(this._params.accessor)})}}const C=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.mH.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.mH.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.cO)(i.current,Object.assign(Object.assign({},function(e){return n.mH.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));C.displayName="SplitviewComponent";class y extends n.Tg{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new d(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.Tn(this._params.accessor)})}}const x=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.kQ.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.kQ.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new y(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.rc)(i.current,Object.assign(Object.assign({},function(e){return n.kQ.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new y(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));x.displayName="GridviewComponent";class S{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new d(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,title:e.title,containerApi:e.containerApi})}toJSON(){return{id:this.id}}update(e){var t;null===(t=this.part)||void 0===t||t.update(e.params)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}const A=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=l();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.jl.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.jl.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return()=>{};const s=null!==(t=e.headerComponents)&&void 0!==t?t:{},r={createComponent:t=>new S(t.id,e.components[t.name],{addPortal:a}),createHeaderComponent:e=>new S(e.id,s[e.name],{addPortal:a})},h=(0,n.iz)(i.current,Object.assign(Object.assign({},function(e){return n.jl.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:d,clientHeight:l}=i.current;return h.layout(d,l),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new S(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.headerComponents)&&void 0!==t?t:{};o.current.updateOptions({createHeaderComponent:e=>new S(e.id,i[e.name],{addPortal:a})})}),[e.headerComponents]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));A.displayName="PaneviewComponent"},6811:(e,t,i)=>{i.d(t,{Z:()=>P});i(6204);var n=i(1512),s=i(489),o=i(667),r=i(3651);const a={admonition:"admonition_Gfwi",admonitionHeading:"admonitionHeading_f1Ed",admonitionIcon:"admonitionIcon_kpSf",admonitionContent:"admonitionContent_UjKb"};var h=i(3188);function d(e){let{type:t,className:i,children:n}=e;return(0,h.jsx)("div",{className:(0,s.Z)(r.k.common.admonition,r.k.common.admonitionType(t),a.admonition,i),children:n})}function l(e){let{icon:t,title:i}=e;return(0,h.jsx)("div",{className:a.admonitionHeading,children:(0,h.jsx)("span",{className:a.admonitionIcon,children:t})})}function p(e){let{children:t}=e;return t?(0,h.jsx)("div",{className:a.admonitionContent,children:t}):null}function c(e){const{type:t,icon:i,title:n,children:s,className:o}=e;return(0,h.jsxs)(d,{type:t,className:o,children:[(0,h.jsx)(l,{title:n,icon:i}),(0,h.jsx)(p,{children:s})]})}function u(e){return(0,h.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const m={icon:(0,h.jsx)(u,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function v(e){return(0,h.jsx)(c,{...m,...e,className:(0,s.Z)("alert alert--secondary",e.className),children:e.children})}function g(e){return(0,h.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const f={icon:(0,h.jsx)(g,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function w(e){return(0,h.jsx)(c,{...f,...e,className:(0,s.Z)("alert alert--success",e.className),children:e.children})}function _(e){return(0,h.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const D={icon:(0,h.jsx)(_,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function b(e){return(0,h.jsx)(c,{...D,...e,className:(0,s.Z)("alert alert--info",e.className),children:e.children})}function C(e){return(0,h.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const y={icon:(0,h.jsx)(C,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function x(e){return(0,h.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,h.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const S={icon:(0,h.jsx)(x,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const A={icon:(0,h.jsx)(C,{}),title:(0,h.jsx)(o.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const z={...{note:v,tip:w,info:b,warning:function(e){return(0,h.jsx)(c,{...y,...e,className:(0,s.Z)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,h.jsx)(c,{...S,...e,className:(0,s.Z)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,h.jsx)(v,{title:"secondary",...e}),important:e=>(0,h.jsx)(b,{title:"important",...e}),success:e=>(0,h.jsx)(w,{title:"success",...e}),caution:function(e){return(0,h.jsx)(c,{...A,...e,className:(0,s.Z)("alert alert--warning",e.className),children:e.children})}}};function P(e){const t=(0,n.X)(e),i=(s=t.type,z[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),z.info));var s;return(0,h.jsx)(i,{...t})}},6283:(e,t,i)=>{i.d(t,{Z:()=>b});i(6204);var n=i(489),s=i(7393),o=i(6180),r=i(5161),a=i(7770),h=i(1427),d=i(3558),l=i(2292),p=i(600),c=i(3651),u=i(347),m=i(8517),v=i(9600),g=i(3188);function f(e){let{children:t}=e;const i=function(){const{metadata:e,frontMatter:t,contentTitle:i}=(0,o.k)();return t.hide_title||void 0!==i?null:e.title}();return(0,g.jsxs)("div",{className:(0,n.Z)(c.k.docs.docMarkdown,"markdown"),children:[i&&(0,g.jsx)("header",{children:(0,g.jsx)(u.Z,{as:"h1",children:(0,g.jsxs)("div",{style:{display:"flex",justifyContent:"space-between"},children:[(0,g.jsx)("div",{children:i}),(0,g.jsx)(v.e9,{})]})})}),(0,g.jsx)(m.Z,{children:t})]})}var w=i(9333),_=i(653);const D={docItemContainer:"docItemContainer_c0TR",docItemCol:"docItemCol_z5aJ"};function b(e){let{children:t}=e;const i=function(){const{frontMatter:e,toc:t}=(0,o.k)(),i=(0,s.i)(),n=e.hide_table_of_contents,r=!n&&t.length>0;return{hidden:n,mobile:r?(0,g.jsx)(l.Z,{}):void 0,desktop:!r||"desktop"!==i&&"ssr"!==i?void 0:(0,g.jsx)(p.Z,{})}}(),{metadata:{unlisted:c}}=(0,o.k)();return(0,g.jsxs)("div",{className:"row",children:[(0,g.jsxs)("div",{className:(0,n.Z)("col",!i.hidden&&D.docItemCol),children:[c&&(0,g.jsx)(_.Z,{}),(0,g.jsx)(a.Z,{}),(0,g.jsxs)("div",{className:D.docItemContainer,children:[(0,g.jsxs)("article",{children:[(0,g.jsx)(w.Z,{}),(0,g.jsx)(h.Z,{}),i.mobile,(0,g.jsx)(f,{children:t}),(0,g.jsx)(d.Z,{})]}),(0,g.jsx)(r.Z,{})]})]}),i.desktop&&(0,g.jsx)("div",{className:"toc-display col col--3",children:i.desktop})]})}},1743:(e,t,i)=>{i.d(t,{Z:()=>r});i(6204);var n=i(1446),s=i(9600),o=i(2873);const r={...n.Z,FrameworkSpecific:s.RV,CodeRunner:o.S}},9600:(e,t,i)=>{i.d(t,{GU:()=>p,RV:()=>v,e9:()=>u});var n=i(4940),s=i(6376),o=i(6204),r=i(2262),a=i(6261),h=i(3188);const d=[{value:"JavaScript",label:"JavaScript",icon:"img/js-icon.svg"},{value:"React",label:"React",icon:"img/react-icon.svg"},{value:"Vue",label:"Vue",icon:"img/vue-icon.svg"}],l=new s.O4({replay:!0});function p(){const[e,t]=o.useState(localStorage.getItem("dv-docs-framework")??d[0].value);o.useEffect((()=>{const e=l.event((e=>[t(e)]));return l.fire(localStorage.getItem("dv-docs-framework")??d[0].value),()=>{e.dispose()}}),[]);const i=o.useCallback((e=>{localStorage.setItem("dv-docs-framework",e),t(e),l.fire(e)}),[]);return[d.find((t=>t.value===e)),i]}const c=()=>{const[e,t]=p();return(0,h.jsxs)(r.fC,{children:[(0,h.jsx)(r.xz,{asChild:!0,children:(0,h.jsxs)("div",{className:"framework-menu-item-select",children:[(0,h.jsx)("span",{style:{padding:"0px 8px"},children:e.label}),(0,h.jsx)("img",{width:20,height:20,src:(0,a.Z)(e.icon),style:{marginRight:"8px"}})]})}),(0,h.jsx)(r.VY,{side:"bottom",align:"end",sideOffset:10,className:"DropdownMenuContent",children:d.map((e=>(0,h.jsx)(r.ck,{onClick:()=>t(e.label),className:"DropdownMenuItem",children:(0,h.jsxs)("div",{className:"framework-menu-item",children:[(0,h.jsx)("span",{style:{paddingRight:"8px"},children:e.label}),(0,h.jsx)("img",{width:20,height:20,src:(0,a.Z)(e.icon)})]})})))})]})},u=()=>(0,h.jsx)(n.Z,{children:()=>(0,h.jsx)(c,{})}),m=e=>{const[t]=p();return t.value===e.framework?e.children:null},v=e=>(0,h.jsx)(n.Z,{children:()=>(0,h.jsx)(m,{...e})})},2873:(e,t,i)=>{i.d(t,{S:()=>a});i(6204);var n=i(9600),s=i(4940),o=i(3188);const r=e=>{const[t]=(0,n.GU)();let i=t.label.toLowerCase();"javascript"===i&&(i="typescript");e.id,t.label.toLowerCase();const s=`/templates/${e.id}/${i}/index.html`;return(0,o.jsx)("iframe",{src:s,style:{width:"100%",height:`${e.height??300}px`}})},a=e=>(0,o.jsx)(s.Z,{children:()=>(0,o.jsx)(r,{...e})})}}]); +//# sourceMappingURL=17896441.d364d81b.js.map \ No newline at end of file diff --git a/assets/js/17896441.2b11f8df.js.map b/assets/js/17896441.d364d81b.js.map similarity index 99% rename from assets/js/17896441.2b11f8df.js.map rename to assets/js/17896441.d364d81b.js.map index d3b198d36..8863ee1dd 100644 --- a/assets/js/17896441.2b11f8df.js.map +++ b/assets/js/17896441.d364d81b.js.map @@ -1 +1 @@ -{"version":3,"file":"assets/js/17896441.2b11f8df.js","mappings":"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","sources":["webpack://dockview-docs/../dockview-core/dist/esm/dnd/dataTransfer.js","webpack://dockview-docs/../dockview-core/dist/esm/events.js","webpack://dockview-docs/../dockview-core/dist/esm/lifecycle.js","webpack://dockview-docs/../dockview-core/dist/esm/dom.js","webpack://dockview-docs/../dockview-core/dist/esm/array.js","webpack://dockview-docs/../dockview-core/dist/esm/math.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/viewItem.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/leafNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/branchNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/resizable.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/baseComponentGridview.js","webpack://dockview-docs/../dockview-core/dist/esm/api/component.api.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/abstractDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dnd.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/droptarget.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/api/panelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/splitviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/paneviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/basePanelView.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/panel/content.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/ghost.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/tab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/events.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/groupDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/scrollbar.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabs.js","webpack://dockview-docs/../dockview-core/dist/esm/svg.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabOverflowControl.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/gridviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/theme.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/deserializer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/watermark/watermark.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlay.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/constants.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlayRenderContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/popoutWindow.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/strictEventsSequencing.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/popupService.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dropTargetAnchorContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/entryPoints.js","webpack://dockview-docs/../dockview/dist/esm/react.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactContentPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactHeaderPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactWatermarkPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/headerActionsRenderer.js","webpack://dockview-docs/../dockview/dist/esm/dockview/dockview.js","webpack://dockview-docs/../dockview/dist/esm/svg.js","webpack://dockview-docs/../dockview/dist/esm/dockview/defaultTab.js","webpack://dockview-docs/../dockview/dist/esm/splitview/view.js","webpack://dockview-docs/../dockview/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview/dist/esm/gridview/view.js","webpack://dockview-docs/../dockview/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview/dist/esm/paneview/view.js","webpack://dockview-docs/../dockview/dist/esm/paneview/paneview.js","webpack://dockview-docs/./src/theme/Admonition/Layout/styles.module.css","webpack://dockview-docs/./src/theme/Admonition/Layout/index.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Note.js","webpack://dockview-docs/./src/theme/Admonition/Type/Note.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Tip.js","webpack://dockview-docs/./src/theme/Admonition/Type/Tip.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Info.js","webpack://dockview-docs/./src/theme/Admonition/Type/Info.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Warning.js","webpack://dockview-docs/./src/theme/Admonition/Type/Warning.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Danger.js","webpack://dockview-docs/./src/theme/Admonition/Type/Danger.js","webpack://dockview-docs/./src/theme/Admonition/Type/Caution.js","webpack://dockview-docs/./src/theme/Admonition/Types.js","webpack://dockview-docs/./src/theme/Admonition/index.js","webpack://dockview-docs/./src/theme/DocItem/Content/index.js","webpack://dockview-docs/./src/theme/DocItem/Layout/styles.module.css","webpack://dockview-docs/./src/theme/DocItem/Layout/index.js","webpack://dockview-docs/./src/theme/MDXComponents.js","webpack://dockview-docs/./src/components/frameworkSpecific.tsx","webpack://dockview-docs/./src/components/ui/codeRunner.tsx"],"sourcesContent":["class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nexport class AcceptableEvent {\n constructor() {\n this._isAccepted = false;\n }\n get isAccepted() {\n return this._isAccepted;\n }\n accept() {\n this._isAccepted = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn('dockview: stacktrace', this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `dockview: listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n var _a;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) {\n this._last = e;\n }\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn('dockview: stacktrace', (_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\n/**\n *\n * Event Emitter that fires events from a Microtask callback, only one event will fire per event-loop cycle.\n *\n * It's kind of like using an `asapScheduler` in RxJs with additional logic to only fire once per event-loop cycle.\n * This implementation exists to avoid external dependencies.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask\n * @see https://rxjs.dev/api/index/const/asapScheduler\n */\nexport class AsapEvent {\n constructor() {\n this._onFired = new Emitter();\n this._currentFireCount = 0;\n this._queued = false;\n this.onEvent = (e) => {\n /**\n * when the event is first subscribed to take note of the current fire count\n */\n const fireCountAtTimeOfEventSubscription = this._currentFireCount;\n return this._onFired.event(() => {\n /**\n * if the current fire count is greater than the fire count at event subscription\n * then the event has been fired since we subscribed and it's ok to \"on_next\" the event.\n *\n * if the count is not greater then what we are recieving is an event from the microtask\n * queue that was triggered before we actually subscribed and therfore we should ignore it.\n */\n if (this._currentFireCount > fireCountAtTimeOfEventSubscription) {\n e();\n }\n });\n };\n }\n fire() {\n this._currentFireCount++;\n if (this._queued) {\n return;\n }\n this._queued = true;\n queueMicrotask(() => {\n this._queued = false;\n this._onFired.fire();\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","import { Emitter, addDisposableListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class OverflowObserver extends CompositeDisposable {\n constructor(el) {\n super();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._value = null;\n this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {\n const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;\n const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;\n this._value = { hasScrollX, hasScrollY };\n this._onDidChange.fire(this._value);\n }));\n }\n}\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag, document) {\n return Array.prototype.slice.call(document.querySelectorAll(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\nexport function addTestId(element, id) {\n element.setAttribute('data-testid', id);\n}\n/**\n * Should be more efficient than element.querySelectorAll(\"*\") since there\n * is no need to store every element in-memory using this approach\n */\nfunction allTagsNamesInclusiveOfShadowDoms(tagNames) {\n const iframes = [];\n function findIframesInNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (tagNames.includes(node.tagName)) {\n iframes.push(node);\n }\n if (node.shadowRoot) {\n findIframesInNode(node.shadowRoot);\n }\n for (const child of node.children) {\n findIframesInNode(child);\n }\n }\n }\n findIframesInNode(document.documentElement);\n return iframes;\n}\nexport function disableIframePointEvents(rootNode = document) {\n const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);\n const original = new WeakMap(); // don't hold onto HTMLElement references longer than required\n for (const iframe of iframes) {\n original.set(iframe, iframe.style.pointerEvents);\n iframe.style.pointerEvents = 'none';\n }\n return {\n release: () => {\n var _a;\n for (const iframe of iframes) {\n iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';\n }\n iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required\n },\n };\n}\nexport function getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nexport class Classnames {\n constructor(element) {\n this.element = element;\n this._classNames = [];\n }\n setClassNames(classNames) {\n for (const className of this._classNames) {\n toggleClass(this.element, className, false);\n }\n this._classNames = classNames\n .split(' ')\n .filter((v) => v.trim().length > 0);\n for (const className of this._classNames) {\n toggleClass(this.element, className, true);\n }\n }\n}\nconst DEBOUCE_DELAY = 100;\nexport function isChildEntirelyVisibleWithinParent(child, parent) {\n //\n const childPosition = getDomNodePagePosition(child);\n const parentPosition = getDomNodePagePosition(parent);\n if (childPosition.left < parentPosition.left) {\n return false;\n }\n if (childPosition.left + childPosition.width >\n parentPosition.left + parentPosition.width) {\n return false;\n }\n return true;\n}\nexport function onDidWindowMoveEnd(window) {\n const emitter = new Emitter();\n let previousScreenX = window.screenX;\n let previousScreenY = window.screenY;\n let timeout;\n const checkMovement = () => {\n if (window.closed) {\n return;\n }\n const currentScreenX = window.screenX;\n const currentScreenY = window.screenY;\n if (currentScreenX !== previousScreenX ||\n currentScreenY !== previousScreenY) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n emitter.fire();\n }, DEBOUCE_DELAY);\n previousScreenX = currentScreenX;\n previousScreenY = currentScreenY;\n }\n requestAnimationFrame(checkMovement);\n };\n checkMovement();\n return emitter;\n}\nexport function onDidWindowResizeEnd(element, cb) {\n let resizeTimeout;\n const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n cb();\n }, DEBOUCE_DELAY);\n }));\n return disposable;\n}\nexport function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {\n const buffer = options.buffer;\n const rect = element.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n let translateX = 0;\n let translateY = 0;\n const left = rect.left - rootRect.left;\n const top = rect.top - rootRect.top;\n const bottom = rect.bottom - rootRect.bottom;\n const right = rect.right - rootRect.right;\n // Check horizontal overflow\n if (left < buffer) {\n translateX = buffer - left;\n }\n else if (right > buffer) {\n translateX = -buffer - right;\n }\n // Check vertical overflow\n if (top < buffer) {\n translateY = buffer - top;\n }\n else if (bottom > buffer) {\n translateY = -bottom - buffer;\n }\n // Apply the translation if needed\n if (translateX !== 0 || translateY !== 0) {\n element.style.transform = `translate(${translateX}px, ${translateY}px)`;\n }\n}\nexport function findRelativeZIndexParent(el) {\n let tmp = el;\n while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {\n tmp = tmp.parentElement;\n }\n return tmp;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n /**\n * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle\n * cases where `min` > `max` and in those cases return `min`.\n */\n return min;\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'dv-horizontal', 'dv-vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);\n }\n constructor(container, options) {\n var _a, _b;\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._margin = 0;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = this.createContainer();\n this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'dv-separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'dv-separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'dv-view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'dv-sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = disableIframePointEvents();\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n iframes.release();\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n /**\n * Margin explain:\n *\n * For `n` views in a splitview there will be `n-1` margins `m`.\n *\n * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.\n *\n * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.\n */\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.updateSashEnablement();\n if (this.viewItems.length === 0) {\n return;\n }\n const visibleViewItems = this.viewItems.filter((i) => i.visible);\n const sashCount = Math.max(0, visibleViewItems.length - 1);\n const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);\n let totalLeftOffset = 0;\n const viewLeftOffsets = [];\n const sashWidth = 4; // hardcoded in css\n const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {\n const flag = viewItem.visible ? 1 : 0;\n if (i === 0) {\n arr.push(flag);\n }\n else {\n arr.push(arr[i - 1] + flag);\n }\n return arr;\n }, []);\n // calculate both view and cash positions\n this.viewItems.forEach((view, i) => {\n totalLeftOffset += this.viewItems[i].size;\n viewLeftOffsets.push(totalLeftOffset);\n const size = view.visible ? view.size - marginReducedSize : 0;\n const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);\n const offset = i === 0 || visiblePanelsBeforeThisView === 0\n ? 0\n : viewLeftOffsets[i - 1] +\n (visiblePanelsBeforeThisView / sashCount) *\n marginReducedSize;\n if (i < this.viewItems.length - 1) {\n // calculate sash position\n const newSize = view.visible\n ? offset + size - sashWidth / 2 + this.margin / 2\n : offset;\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${newSize}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${newSize}px`;\n }\n }\n // calculate view position\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${size}px`;\n view.container.style.left = `${offset}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${size}px`;\n view.container.style.top = `${offset}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size - marginReducedSize, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'dv-view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'dv-sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical';\n element.className = `dv-split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","export const PROPERTY_KEYS_SPLITVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n orientation: undefined,\n descriptor: undefined,\n proportionalLayout: undefined,\n styles: undefined,\n margin: undefined,\n disableAutoResizing: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'dv-pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'dv-animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'dv-animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n get margin() {\n return this.splitview.margin;\n }\n set margin(value) {\n this.splitview.margin = value;\n this.children.forEach((child) => {\n if (child instanceof BranchNode) {\n child.margin = value;\n }\n });\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'dv-branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n margin,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n margin,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(_visible) {\n // noop\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n // }\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire({ visible });\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange(({ visible }) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction cloneNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(node.orientation, node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n result.addChild(cloneNode(child, child.size, child.orthogonalSize), child.size, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, node.orientation, orthogonalSize);\n }\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bdv-grid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n this.root.margin = value;\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n serializeBranchNode(this.getView(), this.orientation);\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire({\n view: node.view,\n isMaximized: true,\n });\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n const tmp = this._maximizedNode.leaf;\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire({\n view: tmp.view,\n isMaximized: false,\n });\n }\n serialize() {\n const maximizedView = this.maximizedView();\n let maxmizedViewLocation;\n if (maximizedView) {\n /**\n * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid\n * which is represented as a branch of indices\n */\n maxmizedViewLocation = getGridLocation(maximizedView.element);\n }\n if (this.hasMaximizedView()) {\n /**\n * the saved layout cannot be in its maxmized state otherwise all of the underlying\n * view dimensions will be wrong\n *\n * To counteract this we temporaily remove the maximized view to compute the serialized output\n * of the grid before adding back the maxmized view as to not alter the layout from the users\n * perspective when `.toJSON()` is called\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n const resullt = {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n if (maxmizedViewLocation) {\n resullt.maximizedNode = {\n location: maxmizedViewLocation,\n };\n }\n if (maximizedView) {\n // replace any maximzied view that was removed for serialization purposes\n this.maximizeView(maximizedView);\n }\n return resullt;\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this._onDidViewVisibilityChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n /**\n * The deserialied layout must be positioned through this.layout(...)\n * before any maximizedNode can be positioned\n */\n this.layout(json.width, json.height);\n if (json.maximizedNode) {\n const location = json.maximizedNode.location;\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n this.maximizeView(node.view);\n }\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n var _a;\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this.locked, this.margin, children);\n }\n else {\n const view = deserializer.fromJSON(node);\n if (typeof node.visible === 'boolean') {\n (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);\n }\n result = new LeafNode(view, orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n normalize() {\n if (!this._root) {\n return;\n }\n if (this._root.children.length !== 1) {\n return;\n }\n const oldRoot = this.root;\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n if (childReference instanceof LeafNode) {\n return;\n }\n oldRoot.element.remove();\n const child = oldRoot.removeChild(0); // Remove child to prevent double disposal\n oldRoot.dispose(); // Dispose old root (won't dispose removed child)\n child.dispose(); // Dispose the removed child\n this._root = cloneNode(childReference, childReference.size, childReference.orthogonalSize);\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation, locked, margin) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._margin = 0;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidViewVisibilityChange = new Emitter();\n this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'dv-grid-view';\n this._locked = locked !== null && locked !== void 0 ? locked : false;\n this._margin = margin !== null && margin !== void 0 ? margin : 0;\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n this._onDidViewVisibilityChange.fire();\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","export const PROPERTY_KEYS_GRIDVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n proportionalLayout: undefined,\n orientation: undefined,\n hideBorders: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, AsapEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidMaximizedChange = new Emitter();\n this.onDidMaximizedChange = this._onDidMaximizedChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new AsapEvent();\n this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;\n this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();\n this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {\n this._onDidMaximizedChange.fire({\n panel: event.view,\n isMaximized: event.isMaximized,\n });\n }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.layout(this.width, this.height, true);\n }), Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._onDidMaximizedChange, this._onDidViewVisibilityChangeMicroTaskQueue, this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._bufferOnDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n updateOptions(options) {\n var _a, _b, _c, _d;\n if (typeof options.proportionalLayout === 'boolean') {\n // this.gridview.proportionalLayout = options.proportionalLayout; // not supported\n }\n if (options.orientation) {\n this.gridview.orientation = options.orientation;\n }\n if ('styles' in options) {\n // this.gridview.styles = options.styles; // not supported\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;\n }\n if ('locked' in options) {\n this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;\n }\n if ('margin' in options) {\n this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;\n }\n if ('className' in options) {\n this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');\n }\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize || width !== this.width || height !== this.height;\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","export class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n get onDidMovePanel() {\n return this.component.onDidMovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n get onDidPopoutGroupSizeChange() {\n return this.component.onDidPopoutGroupSizeChange;\n }\n get onDidPopoutGroupPositionChange() {\n return this.component.onDidPopoutGroupPositionChange;\n }\n get onDidOpenPopoutWindowFail() {\n return this.component.onDidOpenPopoutWindowFail;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, options) {\n return this.component.addFloatingGroup(item, options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\n","import { disableIframePointEvents } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el, disabled) {\n super();\n this.el = el;\n this.disabled = disabled;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n setDisabled(disabled) {\n this.disabled = disabled;\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event) || this.disabled) {\n event.preventDefault();\n return;\n }\n const iframes = disableIframePointEvents();\n this.pointerEventsDisposable.value = {\n dispose: () => {\n iframes.release();\n },\n };\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n setTimeout(() => {\n this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing\n }, 0);\n }));\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nfunction setGPUOptimizedBounds(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Use traditional positioning but maintain GPU layer\n element.style.top = topPx;\n element.style.left = leftPx;\n element.style.width = widthPx;\n element.style.height = heightPx;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction setGPUOptimizedBoundsFromStrings(element, bounds) {\n const { top, left, width, height } = bounds;\n // Use traditional positioning but maintain GPU layer\n element.style.top = top;\n element.style.left = left;\n element.style.width = width;\n element.style.height = height;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction checkBoundsChanged(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Check if position or size changed (back to traditional method)\n return element.style.top !== topPx ||\n element.style.left !== leftPx ||\n element.style.width !== widthPx ||\n element.style.height !== heightPx;\n}\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._disabled = false;\n // use a set to take advantage of #.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => {\n var _a, _b, _c;\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();\n },\n onDragOver: (e) => {\n var _a, _b, _c, _d, _e, _f, _g;\n Droptarget.ACTUAL_TARGET = this;\n const overrideTarget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this._acceptedTargetZonesSet.size === 0) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;\n const width = target.offsetWidth;\n const height = target.offsetHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;\n const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n if (!this.options.canDisplayOverlay(e, quadrant)) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (overrideTarget) {\n //\n }\n else if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'dv-drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'dv-drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n target.classList.add('dv-drop-target');\n target.append(this.targetElement);\n // this.overlayElement.style.opacity = '0';\n // requestAnimationFrame(() => {\n // if (this.overlayElement) {\n // this.overlayElement.style.opacity = '';\n // }\n // });\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target) {\n return;\n }\n this.removeDropTarget();\n },\n onDragEnd: (e) => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target && Droptarget.ACTUAL_TARGET === this) {\n if (this._state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({\n position: this._state,\n nativeEvent: e,\n });\n }\n }\n this.removeDropTarget();\n target === null || target === void 0 ? void 0 : target.clear();\n },\n onDrop: (e) => {\n var _a, _b, _c;\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b, _c, _d, _e, _f, _g;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!target && !this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n if (target) {\n const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;\n const elBox = outlineEl.getBoundingClientRect();\n const ta = target.getElements(undefined, outlineEl);\n const el = ta.root;\n const overlay = ta.overlay;\n const bigbox = el.getBoundingClientRect();\n const rootTop = elBox.top - bigbox.top;\n const rootLeft = elBox.left - bigbox.left;\n const box = {\n top: rootTop,\n left: rootLeft,\n width: width,\n height: height,\n };\n if (rightClass) {\n box.left = rootLeft + width * (1 - size);\n box.width = width * size;\n }\n else if (leftClass) {\n box.width = width * size;\n }\n else if (topClass) {\n box.height = height * size;\n }\n else if (bottomClass) {\n box.top = rootTop + height * (1 - size);\n box.height = height * size;\n }\n if (isSmallX && isLeft) {\n box.width = 4;\n }\n if (isSmallX && isRight) {\n box.left = rootLeft + width - 4;\n box.width = 4;\n }\n // Use GPU-optimized bounds checking and setting\n if (!checkBoundsChanged(overlay, box)) {\n return;\n }\n setGPUOptimizedBounds(overlay, box);\n overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;\n toggleClass(overlay, 'dv-drop-target-left', isLeft);\n toggleClass(overlay, 'dv-drop-target-right', isRight);\n toggleClass(overlay, 'dv-drop-target-top', isTop);\n toggleClass(overlay, 'dv-drop-target-bottom', isBottom);\n toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');\n if (ta.changed) {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);\n setTimeout(() => {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);\n }, 10);\n }\n return;\n }\n if (!this.overlayElement) {\n return;\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n setGPUOptimizedBoundsFromStrings(this.overlayElement, box);\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n var _a;\n if (this.targetElement) {\n this._state = undefined;\n (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');\n this.targetElement.remove();\n this.targetElement = undefined;\n this.overlayElement = undefined;\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { AcceptableEvent } from '../events';\nexport const PROPERTY_KEYS_PANEVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n disableDnd: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\nexport class PaneviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, position, getData, panel) {\n super();\n this.nativeEvent = nativeEvent;\n this.position = position;\n this.getData = getData;\n this.panel = panel;\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id, component) {\n super();\n this.id = id;\n this.component = component;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this._parameters = {};\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onDidParametersChange = new Emitter();\n this.onDidParametersChange = this._onDidParametersChange.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);\n }\n getParameters() {\n return this._parameters;\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {\n this._parameters = parameters;\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onDidParametersChange.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id, component) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id, component) {\n super(id, component);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(options) {\n super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = 0;\n this._size = 0;\n this._isExpanded = false;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this.headerSize = options.headerSize;\n this.headerComponent = options.headerComponent;\n this._minimumBodySize = options.minimumBodySize;\n this._maximumBodySize = options.maximumBodySize;\n this._isExpanded = options.isExpanded;\n this._headerVisible = options.isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = options.orientation;\n this.element.classList.add('dv-pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'dv-pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'dv-pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewUnhandledDragOverEvent, } from './options';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(options) {\n super({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n isHeaderVisible: true,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.accessor = options.accessor;\n this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);\n if (!options.disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event, position) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n const firedEvent = new PaneviewUnhandledDragOverEvent(event, position, getPaneData, this);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n const target = group.dropTargetContainer;\n this.dropTarget = new Droptarget(this.element, {\n getOverlayOutline: () => {\n var _a;\n return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'\n ? this.element.parentElement\n : null;\n },\n className: 'dv-drop-target-content',\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n return true;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n getOverrideTarget: target ? () => target.model : undefined,\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisible':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n default:\n throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisible') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement, options) {\n var _a, _b;\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n // move the element off-screen initially otherwise it may in some cases be rendered at (0,0) momentarily\n ghostElement.style.top = '-9999px';\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nimport { addGhostImage } from '../../../dnd/ghost';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onPointDown = new Emitter();\n this.onPointerDown = this._onPointDown.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tab';\n this._element.tabIndex = 0;\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this.element, 'dv-inactive-tab', true);\n this.dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['left', 'right'],\n overlayModel: { activationSize: { value: 50, type: 'percentage' } },\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, this.dragHandler.onDragStart((event) => {\n if (event.dataTransfer) {\n const style = getComputedStyle(this.element);\n const newNode = this.element.cloneNode(true);\n Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));\n newNode.style.position = 'absolute';\n addGhostImage(event.dataTransfer, newNode, {\n y: -10,\n x: 30,\n });\n }\n this._onDragStart.fire(event);\n }), this.dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {\n this._onPointDown.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'dv-active-tab', isActive);\n toggleClass(this.element, 'dv-inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n this.dragHandler.setDisabled(!!this.accessor.options.disableDnd);\n }\n dispose() {\n super.dispose();\n }\n}\n","export class WillShowOverlayLocationEvent {\n get kind() {\n return this.options.kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n get panel() {\n return this.options.panel;\n }\n get api() {\n return this.options.api;\n }\n get group() {\n return this.options.group;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n getData() {\n return this.options.getData();\n }\n constructor(event, options) {\n this.event = event;\n this.options = options;\n }\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'pointerdown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.style.pointerEvents = 'none';\n ghostElement.style.top = '-9999px';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { toggleClass } from '../../../dom';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-void-container';\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n this.handler = new GroupDragHandler(this._element, accessor, group, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this.handler, this.handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTarget);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.handler.setDisabled(!!this.accessor.options.disableDnd);\n }\n}\n","import { toggleClass, watchElementResize } from './dom';\nimport { addDisposableListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nimport { clamp } from './math';\nexport class Scrollbar extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(scrollableElement) {\n super();\n this.scrollableElement = scrollableElement;\n this._scrollLeft = 0;\n this._element = document.createElement('div');\n this._element.className = 'dv-scrollable';\n this._horizontalScrollbar = document.createElement('div');\n this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';\n this.element.appendChild(scrollableElement);\n this.element.appendChild(this._horizontalScrollbar);\n this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {\n this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;\n this.calculateScrollbarStyles();\n }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {\n event.preventDefault();\n toggleClass(this.element, 'dv-scrollable-scrolling', true);\n const originalClientX = event.clientX;\n const originalScrollLeft = this._scrollLeft;\n const onPointerMove = (event) => {\n const deltaX = event.clientX - originalClientX;\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const p = clientWidth / scrollWidth;\n this._scrollLeft = originalScrollLeft + deltaX / p;\n this.calculateScrollbarStyles();\n };\n const onEnd = () => {\n toggleClass(this.element, 'dv-scrollable-scrolling', false);\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onEnd);\n document.removeEventListener('pointercancel', onEnd);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onEnd);\n document.addEventListener('pointercancel', onEnd);\n }), addDisposableListener(this.element, 'scroll', () => {\n this.calculateScrollbarStyles();\n }), addDisposableListener(this.scrollableElement, 'scroll', () => {\n this._scrollLeft = this.scrollableElement.scrollLeft;\n this.calculateScrollbarStyles();\n }), watchElementResize(this.element, () => {\n toggleClass(this.element, 'dv-scrollable-resizing', true);\n if (this._animationTimer) {\n clearTimeout(this._animationTimer);\n }\n this._animationTimer = setTimeout(() => {\n clearTimeout(this._animationTimer);\n toggleClass(this.element, 'dv-scrollable-resizing', false);\n }, 500);\n this.calculateScrollbarStyles();\n }));\n }\n calculateScrollbarStyles() {\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const hasScrollbar = scrollWidth > clientWidth;\n if (hasScrollbar) {\n const px = clientWidth * (clientWidth / scrollWidth);\n this._horizontalScrollbar.style.width = `${px}px`;\n this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);\n this.scrollableElement.scrollLeft = this._scrollLeft;\n const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);\n this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;\n }\n else {\n this._horizontalScrollbar.style.width = `0px`;\n this._horizontalScrollbar.style.left = `0px`;\n this._scrollLeft = 0;\n }\n }\n}\nScrollbar.MouseWheelSpeed = 1;\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../dom';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { Scrollbar } from '../../../scrollbar';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { Tab } from '../tab/tab';\nexport class Tabs extends CompositeDisposable {\n get showTabsOverflowControl() {\n return this._showTabsOverflowControl;\n }\n set showTabsOverflowControl(value) {\n if (this._showTabsOverflowControl == value) {\n return;\n }\n this._showTabsOverflowControl = value;\n if (value) {\n const observer = new OverflowObserver(this._tabsList);\n this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {\n const hasOverflow = event.hasScrollX || event.hasScrollY;\n this.toggleDropdown({ reset: !hasOverflow });\n }), addDisposableListener(this._tabsList, 'scroll', () => {\n this.toggleDropdown({ reset: false });\n }));\n }\n }\n get element() {\n return this._element;\n }\n get panels() {\n return this._tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this._tabs.length;\n }\n get tabs() {\n return this._tabs.map((_) => _.value);\n }\n constructor(group, accessor, options) {\n super();\n this.group = group;\n this.accessor = accessor;\n this._observerDisposable = new MutableDisposable();\n this._tabs = [];\n this.selectedIndex = -1;\n this._showTabsOverflowControl = false;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onOverflowTabsChange = new Emitter();\n this.onOverflowTabsChange = this._onOverflowTabsChange.event;\n this._tabsList = document.createElement('div');\n this._tabsList.className = 'dv-tabs-container dv-horizontal';\n this.showTabsOverflowControl = options.showTabsOverflowControl;\n if (accessor.options.scrollbars === 'native') {\n this._element = this._tabsList;\n }\n else {\n const scrollbar = new Scrollbar(this._tabsList);\n this._element = scrollbar.element;\n this.addDisposables(scrollbar);\n }\n this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }), Disposable.from(() => {\n for (const { value, disposable } of this._tabs) {\n disposable.dispose();\n value.dispose();\n }\n this._tabs = [];\n }));\n }\n indexOf(id) {\n return this._tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this._tabs[this.selectedIndex].value === tab);\n }\n setActivePanel(panel) {\n let runningWidth = 0;\n for (const tab of this._tabs) {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n if (isActivePanel) {\n const element = tab.value.element;\n const parentElement = element.parentElement;\n if (runningWidth < parentElement.scrollLeft ||\n runningWidth + element.clientWidth >\n parentElement.scrollLeft + parentElement.clientWidth) {\n parentElement.scrollLeft = runningWidth;\n }\n }\n runningWidth += tab.value.element.clientWidth;\n }\n }\n openPanel(panel, index = this._tabs.length) {\n if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onPointerDown((event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n inDragMode: true,\n });\n return;\n }\n switch (event.button) {\n case 0: // left click or touch\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n break;\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this._tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'tab',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n delete(id) {\n const index = this.indexOf(id);\n const tabToRemove = this._tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n addTab(tab, index = this._tabs.length) {\n if (index < 0 || index > this._tabs.length) {\n throw new Error('invalid location');\n }\n this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);\n this._tabs = [\n ...this._tabs.slice(0, index),\n tab,\n ...this._tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n toggleDropdown(options) {\n const tabs = options.reset\n ? []\n : this._tabs\n .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))\n .map((x) => x.value.panel.id);\n this._onOverflowTabsChange.fire({ tabs, reset: options.reset });\n }\n updateDragAndDropState() {\n for (const tab of this._tabs) {\n tab.value.updateDragAndDropState();\n }\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dv-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { VoidContainer } from './voidContainer';\nimport { findRelativeZIndexParent, toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Tabs } from './tabs';\nimport { createDropdownElementHandle, } from './tabOverflowControl';\nexport class TabsContainer extends CompositeDisposable {\n get onTabDragStart() {\n return this.tabs.onTabDragStart;\n }\n get panels() {\n return this.tabs.panels;\n }\n get size() {\n return this.tabs.size;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._hidden = false;\n this.dropdownPart = null;\n this._overflowTabs = [];\n this._dropdownDisposable = new MutableDisposable();\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'dv-right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'dv-left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'dv-pre-actions-container';\n this.tabs = new Tabs(group, accessor, {\n showTabsOverflowControl: !accessor.options.disableTabsOverflowList,\n });\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabs.element);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.tabs.onDrop((e) => this._onDrop.fire(e)), this.tabs.onWillShowOverlay((e) => this._onWillShowOverlay.fire(e)), accessor.onDidOptionsChange(() => {\n this.tabs.showTabsOverflowControl =\n !accessor.options.disableTabsOverflowList;\n }), this.tabs.onOverflowTabsChange((event) => {\n this.toggleDropdown(event);\n }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.size,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n inDragMode: true,\n });\n }\n }));\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n isActive(tab) {\n return this.tabs.isActive(tab);\n }\n indexOf(id) {\n return this.tabs.indexOf(id);\n }\n setActive(_isGroupActive) {\n // noop\n }\n delete(id) {\n this.tabs.delete(id);\n this.updateClassnames();\n }\n setActivePanel(panel) {\n this.tabs.setActivePanel(panel);\n }\n openPanel(panel, index = this.tabs.size) {\n this.tabs.openPanel(panel, index);\n this.updateClassnames();\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n updateClassnames() {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n toggleDropdown(options) {\n const tabs = options.reset ? [] : options.tabs;\n this._overflowTabs = tabs;\n if (this._overflowTabs.length > 0 && this.dropdownPart) {\n this.dropdownPart.update({ tabs: tabs.length });\n return;\n }\n if (this._overflowTabs.length === 0) {\n this._dropdownDisposable.dispose();\n return;\n }\n const root = document.createElement('div');\n root.className = 'dv-tabs-overflow-dropdown-root';\n const part = createDropdownElementHandle();\n part.update({ tabs: tabs.length });\n this.dropdownPart = part;\n root.appendChild(part.element);\n this.rightActionsContainer.prepend(root);\n this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {\n var _a, _b;\n root.remove();\n (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.dropdownPart = null;\n }), addDisposableListener(root, 'pointerdown', (event) => {\n event.preventDefault();\n }, { capture: true }), addDisposableListener(root, 'click', (event) => {\n const el = document.createElement('div');\n el.style.overflow = 'auto';\n el.className = 'dv-tabs-overflow-container';\n for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {\n const panelObject = this.group.panels.find((panel) => panel === tab.panel);\n const tabComponent = panelObject.view.createTabRenderer('headerOverflow');\n const child = tabComponent.element;\n const wrapper = document.createElement('div');\n toggleClass(wrapper, 'dv-tab', true);\n toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);\n toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);\n wrapper.addEventListener('click', (event) => {\n this.accessor.popupService.close();\n if (event.defaultPrevented) {\n return;\n }\n tab.element.scrollIntoView();\n tab.panel.api.setActive();\n });\n wrapper.appendChild(child);\n el.appendChild(wrapper);\n }\n const relativeParent = findRelativeZIndexParent(root);\n this.accessor.popupService.openPopover(el, {\n x: event.clientX,\n y: event.clientY,\n zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)\n ? `calc(${relativeParent.style.zIndex} * 2)`\n : undefined,\n });\n }));\n }\n updateDragAndDropState() {\n this.tabs.updateDragAndDropState();\n this.voidContainer.updateDragAndDropState();\n }\n}\n","import { createChevronRightButton } from '../../../svg';\nexport function createDropdownElementHandle() {\n const el = document.createElement('div');\n el.className = 'dv-tabs-overflow-dropdown-default';\n const text = document.createElement('span');\n text.textContent = ``;\n const icon = createChevronRightButton();\n el.appendChild(icon);\n el.appendChild(text);\n return {\n element: el,\n update: (params) => {\n text.textContent = `${params.tabs}`;\n },\n };\n}\n","import { AcceptableEvent } from '../events';\nexport class DockviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, target, position, getData, group) {\n super();\n this.nativeEvent = nativeEvent;\n this.target = target;\n this.position = position;\n this.getData = getData;\n this.group = group;\n }\n}\nexport const PROPERTY_KEYS_DOCKVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n hideBorders: undefined,\n singleTabMode: undefined,\n disableFloatingGroups: undefined,\n floatingGroupBounds: undefined,\n popoutUrl: undefined,\n defaultRenderer: undefined,\n debug: undefined,\n rootOverlayModel: undefined,\n locked: undefined,\n disableDnd: undefined,\n className: undefined,\n noPanelsOverlay: undefined,\n dndEdges: undefined,\n theme: undefined,\n disableTabsOverflowList: undefined,\n scrollbars: undefined,\n };\n return Object.keys(properties);\n})();\nexport function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nimport { DockviewUnhandledDragOverEvent, } from './options';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('dockview: not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._overwriteRenderContainer = null;\n this._overwriteDropTargetContainer = null;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._panelDisposables = new Map();\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPanelTitleChange = new Emitter();\n this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;\n this._onDidPanelParametersChange = new Emitter();\n this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n toggleClass(this.container, 'dv-groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n panel: this.activePanel,\n api: this._api,\n group: this.groupPanel,\n getData: getPanelData,\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this._onUnhandledDragOverEvent, this._onDidPanelTitleChange, this._onDidPanelParametersChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n set dropTargetContainer(value) {\n this._overwriteDropTargetContainer = value;\n }\n get dropTargetContainer() {\n var _a;\n return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionComponent) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionComponent) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionComponent) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;\n this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'\n ? { removeEmptyGroup: false }\n : undefined);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'dv-active-group', isGroupActive);\n toggleClass(this.container, 'dv-inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n const index = this.mostRecentlyUsed.indexOf(panel);\n this.mostRecentlyUsed.splice(index, 1);\n }\n const disposable = this._panelDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._panelDisposables.delete(panel.id);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'pointerdown', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.contentContainer.element.appendChild(this.watermark.element);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n }\n }\n canDisplayOverlay(event, position, target) {\n const firedEvent = new DockviewUnhandledDragOverEvent(event, target, position, getPanelData, this.accessor.getPanel(this.id));\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (type === 'content') {\n if (data.groupId === this.id) {\n // don't allow to drop on self for center position\n if (position === 'center') {\n return;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return;\n }\n }\n }\n if (type === 'header') {\n if (data.groupId === this.id) {\n if (data.panelId === null) {\n return;\n }\n }\n }\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n updateDragAndDropState() {\n this.tabsContainer.updateDragAndDropState();\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, component, panel) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumWidth();\n }\n get minimumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumHeight();\n }\n get maximumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumHeight();\n }\n get maximumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumWidth();\n }\n __minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n __maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get isActive() {\n return this.api.isActive;\n }\n get isVisible() {\n return this.api.isVisible;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nconst NOT_INITIALIZED_MESSAGE = 'dockview: DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id, '__dockviewgroup__');\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c, _d;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get minimumWidth() {\n var _a;\n const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;\n if (typeof activePanelMinimumWidth === 'number') {\n return activePanelMinimumWidth;\n }\n return super.__minimumWidth();\n }\n get minimumHeight() {\n var _a;\n const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;\n if (typeof activePanelMinimumHeight === 'number') {\n return activePanelMinimumHeight;\n }\n return super.__minimumHeight();\n }\n get maximumWidth() {\n var _a;\n const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;\n if (typeof activePanelMaximumWidth === 'number') {\n return activePanelMaximumWidth;\n }\n return super.__maximumWidth();\n }\n get maximumHeight() {\n var _a;\n const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;\n if (typeof activePanelMaximumHeight === 'number') {\n return activePanelMaximumHeight;\n }\n return super.__maximumHeight();\n }\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n var _a, _b, _c, _d, _e, _f;\n super(id, 'groupview_default', {\n minimumHeight: (_b = (_a = options.constraints) === null || _a === void 0 ? void 0 : _a.minimumHeight) !== null && _b !== void 0 ? _b : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: (_d = (_c = options.constraints) === null || _c === void 0 ? void 0 : _c.maximumHeight) !== null && _d !== void 0 ? _d : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n maximumHeight: (_e = options.constraints) === null || _e === void 0 ? void 0 : _e.maximumHeight,\n maximumWidth: (_f = options.constraints) === null || _f === void 0 ? void 0 : _f.maximumWidth,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n this.addDisposables(this.model.onDidActivePanelChange((event) => {\n this.api._onDidActivePanelChange.fire(event);\n }));\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export const themeDark = {\n name: 'dark',\n className: 'dockview-theme-dark',\n};\nexport const themeLight = {\n name: 'light',\n className: 'dockview-theme-light',\n};\nexport const themeVisualStudio = {\n name: 'visualStudio',\n className: 'dockview-theme-vs',\n};\nexport const themeAbyss = {\n name: 'abyss',\n className: 'dockview-theme-abyss',\n};\nexport const themeDracula = {\n name: 'dracula',\n className: 'dockview-theme-dracula',\n};\nexport const themeReplit = {\n name: 'replit',\n className: 'dockview-theme-replit',\n gap: 10,\n};\nexport const themeAbyssSpaced = {\n name: 'abyssSpaced',\n className: 'dockview-theme-abyss-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\nexport const themeLightSpaced = {\n name: 'lightSpaced',\n className: 'dockview-theme-light-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n get tabComponent() {\n return this._tabComponent;\n }\n constructor(panel, group, accessor, component, tabComponent) {\n super(panel.id, component);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this._tabComponent = tabComponent;\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a, _b;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,\n position: options.group\n ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n const hasBecomeHidden = !event.isVisible && this.isVisible;\n const hasBecomeVisible = event.isVisible && !this.isVisible;\n const isActivePanel = this.group.model.isPanelActive(this.panel);\n if (hasBecomeHidden || (hasBecomeVisible && isActivePanel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n get minimumWidth() {\n return this._minimumWidth;\n }\n get minimumHeight() {\n return this._minimumHeight;\n }\n get maximumWidth() {\n return this._maximumWidth;\n }\n get maximumHeight() {\n return this._maximumHeight;\n }\n constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this._minimumWidth = options.minimumWidth;\n this._minimumHeight = options.minimumHeight;\n this._maximumWidth = options.maximumWidth;\n this._maximumHeight = options.maximumHeight;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange(() => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n minimumHeight: this._minimumHeight,\n maximumHeight: this._maximumHeight,\n minimumWidth: this._minimumWidth,\n maximumWidth: this._maximumWidth,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: this._params,\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-default-tab';\n this._content = document.createElement('div');\n this._content.className = 'dv-default-tab-content';\n this.action = document.createElement('div');\n this.action.className = 'dv-default-tab-action';\n this.action.appendChild(createCloseButton());\n this._element.appendChild(this._content);\n this._element.appendChild(this.action);\n this.render();\n }\n init(params) {\n this._title = params.title;\n this.addDisposables(params.api.onDidTitleChange((event) => {\n this._title = event.title;\n this.render();\n }), addDisposableListener(this.action, 'pointerdown', (ev) => {\n ev.preventDefault();\n }), addDisposableListener(this.action, 'click', (ev) => {\n if (ev.defaultPrevented) {\n return;\n }\n ev.preventDefault();\n params.api.close();\n }));\n this.render();\n }\n render() {\n var _a;\n if (this._content.textContent !== this._title) {\n this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n createTabRenderer(tabLocation) {\n var _a;\n const cmp = this.createTabComponent(this.id, this.tabComponent);\n if (this._params) {\n cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));\n }\n if (this._updateEvent) {\n (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);\n }\n return cmp;\n }\n init(params) {\n this._params = params;\n this.content.init(params);\n this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n this._updateEvent = event;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n return this.accessor.options.createComponent({\n id,\n name: componentName,\n });\n }\n createTabComponent(id, componentName) {\n const name = componentName !== null && componentName !== void 0 ? componentName : this.accessor.options.defaultTabComponent;\n if (name) {\n if (this.accessor.options.createTabComponent) {\n const component = this.accessor.options.createTabComponent({\n id,\n name,\n });\n if (component) {\n return component;\n }\n else {\n return new DefaultTab();\n }\n }\n console.warn(`dockview: tabComponent '${componentName}' was not found. falling back to the default tab.`);\n }\n return new DefaultTab();\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n minimumWidth: panelData.minimumWidth,\n minimumHeight: panelData.minimumHeight,\n maximumWidth: panelData.maximumWidth,\n maximumHeight: panelData.maximumHeight,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-watermark';\n }\n init(_params) {\n // noop\n }\n}\n","import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nclass AriaLevelTracker {\n constructor() {\n this._orderedList = [];\n }\n push(element) {\n this._orderedList = [\n ...this._orderedList.filter((item) => item !== element),\n element,\n ];\n this.update();\n }\n destroy(element) {\n this._orderedList = this._orderedList.filter((item) => item !== element);\n this.update();\n }\n update() {\n for (let i = 0; i < this._orderedList.length; i++) {\n this._orderedList[i].setAttribute('aria-level', `${i}`);\n this._orderedList[i].style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${i * 2})`;\n }\n }\n}\nconst arialLevelTracker = new AriaLevelTracker();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n get element() {\n return this._element;\n }\n get isVisible() {\n return this._isVisible;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this._isVisible = true;\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));\n arialLevelTracker.push(this._element);\n }\n setVisible(isVisible) {\n if (isVisible === this.isVisible) {\n return;\n }\n this._isVisible = isVisible;\n toggleClass(this.element, 'dv-hidden', !this.isVisible);\n }\n bringToFront() {\n arialLevelTracker.push(this._element);\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if ('top' in bounds && typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n this._element.style.bottom = 'auto';\n this.verticalAlignment = 'top';\n }\n if ('bottom' in bounds && typeof bounds.bottom === 'number') {\n this._element.style.bottom = `${bounds.bottom}px`;\n this._element.style.top = 'auto';\n this.verticalAlignment = 'bottom';\n }\n if ('left' in bounds && typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n this._element.style.right = 'auto';\n this.horiziontalAlignment = 'left';\n }\n if ('right' in bounds && typeof bounds.right === 'number') {\n this._element.style.right = `${bounds.right}px`;\n this._element.style.left = 'auto';\n this.horiziontalAlignment = 'right';\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n if (this.verticalAlignment === 'top') {\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.top = `${top}px`;\n this._element.style.bottom = 'auto';\n }\n if (this.verticalAlignment === 'bottom') {\n const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.bottom = `${bottom}px`;\n this._element.style.top = 'auto';\n }\n if (this.horiziontalAlignment === 'left') {\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.left = `${left}px`;\n this._element.style.right = 'auto';\n }\n if (this.horiziontalAlignment === 'right') {\n const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.right = `${right}px`;\n this._element.style.left = 'auto';\n }\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n const result = {};\n if (this.verticalAlignment === 'top') {\n result.top = parseFloat(this._element.style.top);\n }\n else if (this.verticalAlignment === 'bottom') {\n result.bottom = parseFloat(this._element.style.bottom);\n }\n else {\n result.top = element.top - container.top;\n }\n if (this.horiziontalAlignment === 'left') {\n result.left = parseFloat(this._element.style.left);\n }\n else if (this.horiziontalAlignment === 'right') {\n result.right = parseFloat(this._element.style.right);\n }\n else {\n result.left = element.left - container.left;\n }\n result.width = element.width;\n result.height = element.height;\n return result;\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable({\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const bottom = clamp(offset.y -\n y +\n containerRect.height -\n overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n this.setBounds(bounds);\n }), addDisposableListener(window, 'pointerup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'pointerdown', () => {\n arialLevelTracker.push(this._element);\n }, true));\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let bottom = undefined;\n let height = undefined;\n let left = undefined;\n let right = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n bottom = containerRect.height - top - height;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n bottom = containerRect.height - top - height;\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n right = containerRect.width - left - width;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n right = containerRect.width - left - width;\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n bounds.height = height;\n bounds.width = width;\n this.setBounds(bounds);\n }), {\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointerup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return 0;\n }\n dispose() {\n arialLevelTracker.destroy(this._element);\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };\nexport const DESERIALIZATION_POPOUT_DELAY_MS = 100;\n","import { DragAndDropObserver } from '../dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from '../dom';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../lifecycle';\nclass PositionCache {\n constructor() {\n this.cache = new Map();\n this.currentFrameId = 0;\n this.rafId = null;\n }\n getPosition(element) {\n const cached = this.cache.get(element);\n if (cached && cached.frameId === this.currentFrameId) {\n return cached.rect;\n }\n this.scheduleFrameUpdate();\n const rect = getDomNodePagePosition(element);\n this.cache.set(element, { rect, frameId: this.currentFrameId });\n return rect;\n }\n invalidate() {\n this.currentFrameId++;\n }\n scheduleFrameUpdate() {\n if (this.rafId)\n return;\n this.rafId = requestAnimationFrame(() => {\n this.currentFrameId++;\n this.rafId = null;\n });\n }\n}\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element, accessor) {\n super();\n this.element = element;\n this.accessor = accessor;\n this.map = {};\n this._disposed = false;\n this.positionCache = new PositionCache();\n this.pendingUpdates = new Set();\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n updateAllPositions() {\n if (this._disposed) {\n return;\n }\n // Invalidate position cache to force recalculation\n this.positionCache.invalidate();\n // Call resize function directly for all visible panels\n for (const entry of Object.values(this.map)) {\n if (entry.panel.api.isVisible && entry.resize) {\n entry.resize();\n }\n }\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n const panelId = panel.api.id;\n if (this.pendingUpdates.has(panelId)) {\n return; // Update already scheduled\n }\n this.pendingUpdates.add(panelId);\n requestAnimationFrame(() => {\n this.pendingUpdates.delete(panelId);\n if (this.isDisposed || !this.map[panelId]) {\n return;\n }\n const box = this.positionCache.getPosition(referenceContainer.element);\n const box2 = this.positionCache.getPosition(this.element);\n // Use traditional positioning for overlay containers\n const left = box.left - box2.left;\n const top = box.top - box2.top;\n const width = box.width;\n const height = box.height;\n focusContainer.style.left = `${left}px`;\n focusContainer.style.top = `${top}px`;\n focusContainer.style.width = `${width}px`;\n focusContainer.style.height = `${height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n });\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n this.positionCache.invalidate();\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const observerDisposable = new MutableDisposable();\n const correctLayerPosition = () => {\n if (panel.api.location.type === 'floating') {\n queueMicrotask(() => {\n const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);\n if (!floatingGroup) {\n return;\n }\n const element = floatingGroup.overlay.element;\n const update = () => {\n const level = Number(element.getAttribute('aria-level'));\n focusContainer.style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${level * 2 + 1})`;\n };\n const observer = new MutationObserver(() => {\n update();\n });\n observerDisposable.value = Disposable.from(() => observer.disconnect());\n observer.observe(element, {\n attributeFilter: ['aria-level'],\n attributes: true,\n });\n update();\n });\n }\n else {\n focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here\n }\n };\n const disposable = new CompositeDisposable(observerDisposable, \n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange(() => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }), panel.api.onDidLocationChange(() => {\n correctLayerPosition();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n correctLayerPosition();\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n // store the resize function for direct access\n this.map[panel.api.id].resize = resize;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableListener } from './events';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(Disposable.from(() => {\n externalWindow.close();\n }), addDisposableListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve, reject) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n try {\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n }\n catch (err) {\n // only except this is the DOM isn't setup. e.g. in a in correctly configured test\n reject(err);\n }\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { CompositeDisposable } from '../lifecycle';\nexport class StrictEventsSequencing extends CompositeDisposable {\n constructor(accessor) {\n super();\n this.accessor = accessor;\n this.init();\n }\n init() {\n const panels = new Set();\n const groups = new Set();\n this.addDisposables(this.accessor.onDidAddPanel((panel) => {\n if (panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${panel.api.id} but panel already exists`);\n }\n else {\n panels.add(panel.api.id);\n }\n }), this.accessor.onDidRemovePanel((panel) => {\n if (!panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${panel.api.id} but panel does not exists`);\n }\n else {\n panels.delete(panel.api.id);\n }\n }), this.accessor.onDidAddGroup((group) => {\n if (groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${group.api.id} but group already exists`);\n }\n else {\n groups.add(group.api.id);\n }\n }), this.accessor.onDidRemoveGroup((group) => {\n if (!groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${group.api.id} but group does not exists`);\n }\n else {\n groups.delete(group.api.id);\n }\n }));\n }\n}\n","import { shiftAbsoluteElementIntoView } from '../../dom';\nimport { addDisposableListener } from '../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';\nexport class PopupService extends CompositeDisposable {\n constructor(root) {\n super();\n this.root = root;\n this._active = null;\n this._activeDisposable = new MutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-popover-anchor';\n this._element.style.position = 'relative';\n this.root.prepend(this._element);\n this.addDisposables(Disposable.from(() => {\n this.close();\n }), this._activeDisposable);\n }\n openPopover(element, position) {\n var _a;\n this.close();\n const wrapper = document.createElement('div');\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';\n wrapper.appendChild(element);\n const anchorBox = this._element.getBoundingClientRect();\n const offsetX = anchorBox.left;\n const offsetY = anchorBox.top;\n wrapper.style.top = `${position.y - offsetY}px`;\n wrapper.style.left = `${position.x - offsetX}px`;\n this._element.appendChild(wrapper);\n this._active = wrapper;\n this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {\n var _a;\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n let el = target;\n while (el && el !== wrapper) {\n el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;\n }\n if (el) {\n return; // clicked within popover\n }\n this.close();\n }));\n requestAnimationFrame(() => {\n shiftAbsoluteElementIntoView(wrapper, this.root);\n });\n }\n close() {\n if (this._active) {\n this._active.remove();\n this._activeDisposable.dispose();\n this._active = null;\n }\n }\n}\n","import { CompositeDisposable, Disposable } from '../lifecycle';\nexport class DropTargetAnchorContainer extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n var _a;\n if (this.disabled === value) {\n return;\n }\n this._disabled = value;\n if (value) {\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }\n }\n get model() {\n if (this.disabled) {\n return undefined;\n }\n return {\n clear: () => {\n var _a;\n if (this._model) {\n (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);\n }\n this._model = undefined;\n },\n exists: () => {\n return !!this._model;\n },\n getElements: (event, outline) => {\n const changed = this._outline !== outline;\n this._outline = outline;\n if (this._model) {\n this._model.changed = changed;\n return this._model;\n }\n const container = this.createContainer();\n const anchor = this.createAnchor();\n this._model = { root: container, overlay: anchor, changed };\n container.appendChild(anchor);\n this.element.appendChild(container);\n if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {\n const targetBox = event.target.getBoundingClientRect();\n const box = this.element.getBoundingClientRect();\n anchor.style.left = `${targetBox.left - box.left}px`;\n anchor.style.top = `${targetBox.top - box.top}px`;\n }\n return this._model;\n },\n };\n }\n constructor(element, options) {\n super();\n this.element = element;\n this._disabled = false;\n this._disabled = options.disabled;\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }));\n }\n createContainer() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-container';\n return el;\n }\n createAnchor() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-anchor';\n el.style.visibility = 'hidden';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, orthogonal, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { DockviewUnhandledDragOverEvent, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../overlay/overlay';\nimport { addTestId, Classnames, getDockviewTheme, onDidWindowResizeEnd, onDidWindowMoveEnd, toggleClass, watchElementResize, } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, DESERIALIZATION_POPOUT_DELAY_MS, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlay/overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nimport { StrictEventsSequencing } from './strictEventsSequencing';\nimport { PopupService } from './components/popupService';\nimport { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';\nimport { themeAbyss } from './theme';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';\n }\n get api() {\n return this._api;\n }\n get floatingGroups() {\n return this._floatingGroups;\n }\n /**\n * Promise that resolves when all popout groups from the last fromJSON call are restored.\n * Useful for tests that need to wait for delayed popout creation.\n */\n get popoutRestorationPromise() {\n return this._popoutRestorationPromise;\n }\n constructor(container, options) {\n var _a, _b, _c;\n super(container, {\n proportionalLayout: true,\n orientation: Orientation.HORIZONTAL,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,\n className: options.className,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this._watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPopoutGroupSizeChange = new Emitter();\n this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;\n this._onDidPopoutGroupPositionChange = new Emitter();\n this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;\n this._onDidOpenPopoutWindowFail = new Emitter();\n this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter({ replay: true });\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this.onDidMovePanel = this._onDidMovePanel.event;\n this._onDidMaximizedGroupChange = new Emitter();\n this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._popoutRestorationPromise = Promise.resolve();\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidOptionsChange = new Emitter();\n this.onDidOptionsChange = this._onDidOptionsChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n this._options = options;\n this.popupService = new PopupService(this.element);\n this._themeClassnames = new Classnames(this.element);\n this._api = new DockviewApi(this);\n this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });\n this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);\n this._rootDropTarget = new Droptarget(this.element, {\n className: 'dv-drop-target-edge',\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n const firedEvent = new DockviewUnhandledDragOverEvent(event, 'edge', position, getPanelData);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,\n getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.updateDropTargetModel(options);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.updateTheme();\n this.updateWatermark();\n if (options.debug) {\n this.addDisposables(new StrictEventsSequencing(this));\n }\n this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.updateWatermark();\n }), this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), this.onDidMaximizedChange((event) => {\n this._onDidMaximizedGroupChange.fire({\n group: event.panel,\n isMaximized: event.isMaximized,\n });\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }), this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n }\n setVisible(panel, visible) {\n switch (panel.api.location.type) {\n case 'grid':\n super.setVisible(panel, visible);\n break;\n case 'floating': {\n const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);\n if (item) {\n item.overlay.setVisible(visible);\n panel.api._onDidVisibilityChange.fire({\n isVisible: visible,\n });\n }\n break;\n }\n case 'popout':\n console.warn('dockview: You cannot hide a group that is in a popout window');\n break;\n }\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c, _d, _e;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group, options);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return false;\n }\n const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)\n ? options.referenceGroup\n : itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n /**\n * The group that is being added doesn't already exist within the DOM, the most likely occurrence\n * of this case is when being called from the `fromJSON(...)` method\n */\n const isGroupAddedToDom = referenceGroup.element.parentElement !== null;\n let group;\n if (!isGroupAddedToDom) {\n group = referenceGroup;\n }\n else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {\n group = options.overridePopoutGroup;\n }\n else {\n group = this.createGroup({ id: groupId });\n if (popoutContainer) {\n this._onDidAddGroup.fire(group);\n }\n }\n if (popoutContainer === null) {\n console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');\n popoutWindowDisposable.dispose();\n this._onDidOpenPopoutWindowFail.fire();\n // if the popout window was blocked, we need to move the group back to the reference group\n // and set it to visible\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n return false;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready, this);\n group.model.renderContainer = overlayRenderContainer;\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n let floatingBox;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n floatingBox = (_a = this._floatingGroups\n .find((value) => value.group.api.id ===\n itemToPopout.api.id)) === null || _a === void 0 ? void 0 : _a.overlay.toJSON();\n this.removeGroup(referenceGroup);\n break;\n }\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n const anchor = document.createElement('div');\n const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });\n popoutContainer.appendChild(anchor);\n group.model.dropTargetContainer = dropTargetContainer;\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,\n };\n if (isGroupAddedToDom &&\n itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const isValidReferenceGroup = isGroupAddedToDom &&\n referenceGroup &&\n this.getPanel(referenceGroup.id);\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: isValidReferenceGroup\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);\n popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {\n this._onDidPopoutGroupSizeChange.fire({\n width: _window.window.innerWidth,\n height: _window.window.innerHeight,\n group,\n });\n }), _onDidWindowPositionChange.event(() => {\n this._onDidPopoutGroupPositionChange.fire({\n screenX: _window.window.screenX,\n screenY: _window.window.screenX,\n group,\n });\n }), \n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableListener(_window.window, 'resize', () => {\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.isDisposed) {\n return; // cleanup may run after instance is disposed\n }\n if (isGroupAddedToDom &&\n this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else if (this.getPanel(group.id)) {\n group.model.renderContainer =\n this.overlayRenderContainer;\n group.model.dropTargetContainer =\n this.rootDropTargetContainer;\n returnedGroup = group;\n const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);\n if (alreadyRemoved) {\n /**\n * If this popout group was explicitly removed then we shouldn't run the additional\n * steps. To tell if the running of this disposable is the result of this popout group\n * being explicitly removed we can check if this popout group is still referenced in\n * the `this._popoutGroups` list.\n */\n return;\n }\n if (floatingBox) {\n this.addFloatingGroup(group, {\n height: floatingBox.height,\n width: floatingBox.width,\n position: floatingBox,\n });\n }\n else {\n this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n skipPopoutReturn: true,\n });\n group.model.location = { type: 'grid' };\n this.movingLock(() => {\n // suppress group add events since the group already exists\n this.doAddGroup(group, [0]);\n });\n }\n this.doSetGroupAndPanelActive(group);\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n return true;\n })\n .catch((err) => {\n console.error('dockview: failed to create popout.', err);\n return false;\n });\n }\n addFloatingGroup(item, options) {\n var _a, _b, _c, _d, _e;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n this.movingLock(() => group.model.openPanel(item, { skipSetGroupActive: true }));\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: false,\n });\n }\n }\n }\n function getAnchoredBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n const result = {};\n if ('left' in options.position) {\n result.left = Math.max(options.position.left, 0);\n }\n else if ('right' in options.position) {\n result.right = Math.max(options.position.right, 0);\n }\n else {\n result.left = DEFAULT_FLOATING_GROUP_POSITION.left;\n }\n if ('top' in options.position) {\n result.top = Math.max(options.position.top, 0);\n }\n else if ('bottom' in options.position) {\n result.bottom = Math.max(options.position.bottom, 0);\n }\n else {\n result.top = DEFAULT_FLOATING_GROUP_POSITION.top;\n }\n if (typeof options.width === 'number') {\n result.width = Math.max(options.width, 0);\n }\n else {\n result.width = DEFAULT_FLOATING_GROUP_POSITION.width;\n }\n if (typeof options.height === 'number') {\n result.height = Math.max(options.height, 0);\n }\n else {\n result.height = DEFAULT_FLOATING_GROUP_POSITION.height;\n }\n return result;\n }\n return {\n left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'\n ? Math.max(options.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left,\n top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'\n ? Math.max(options.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top,\n width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'\n ? Math.max(options.width, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.width,\n height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'\n ? Math.max(options.height, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.height,\n };\n }\n const anchoredBox = getAnchoredBox();\n const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));\n const el = group.element.querySelector('.dv-void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {\n if (event.isActive) {\n overlay.bringToFront();\n }\n }), watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n }));\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.width, group.height);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n remove(this._floatingGroups, floatingGroupPanel);\n group.model.location = { type: 'grid' };\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n group.model.location = { type: 'floating' };\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position, options) {\n this.gridview.normalize();\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0], undefined, options); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n super.updateOptions(options);\n if ('floatingGroupBounds' in options) {\n for (const group of this._floatingGroups) {\n switch (options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds();\n }\n }\n this.updateDropTargetModel(options);\n const oldDisableDnd = this.options.disableDnd;\n this._options = Object.assign(Object.assign({}, this.options), options);\n const newDisableDnd = this.options.disableDnd;\n if (oldDisableDnd !== newDisableDnd) {\n this.updateDragAndDropState();\n }\n if ('theme' in options) {\n this.updateTheme();\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n updateDragAndDropState() {\n // Update draggable state for all tabs and void containers\n for (const group of this.groups) {\n group.model.updateDragAndDropState();\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n url: group.popoutGroup.api.location.type === 'popout'\n ? group.popoutGroup.api.location.popoutUrl\n : undefined,\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n this._onDidAddGroup.fire(group);\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n position: position,\n width: position.width,\n height: position.height,\n skipRemoveGroup: true,\n inDragMode: false,\n });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n // Create a promise that resolves when all popout groups are created\n const popoutPromises = [];\n // Queue popup group creation with delays to avoid browser blocking\n serializedPopoutGroups.forEach((serializedPopoutGroup, index) => {\n const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n // Add a small delay for each popup after the first to avoid browser popup blocking\n const popoutPromise = new Promise((resolve) => {\n setTimeout(() => {\n this.addPopoutGroup(group, {\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup ? group : undefined,\n referenceGroup: gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined,\n popoutUrl: url,\n });\n resolve();\n }, index * DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup\n });\n popoutPromises.push(popoutPromise);\n });\n // Store the promise for tests to wait on\n this._popoutRestorationPromise = Promise.all(popoutPromises).then(() => void 0);\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n console.error('dockview: failed to deserialize layout. Reverting changes', err);\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n // Force position updates for always visible panels after DOM layout is complete\n requestAnimationFrame(() => {\n this.overlayRenderContainer.updateAllPositions();\n });\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n const initial = {\n width: options.initialWidth,\n height: options.initialHeight,\n };\n let index;\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n index = options.position.index;\n if (!referencePanel) {\n throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n index = options.position.index;\n if (!referenceGroup) {\n throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n group.api.setSize({\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n });\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const floatingGroupOptions = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n referenceGroup.api.setSize({\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation, this.orientationAtLocation(relativeLocation) ===\n Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const coordinates = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else {\n const group = this.createGroupAtLocation([0], this.gridview.orientation === Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n if (this.options.createWatermarkComponent) {\n return this.options.createWatermarkComponent();\n }\n return new Watermark();\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this._watermark) {\n this._watermark = this.createWatermarkComponent();\n this._watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n addTestId(watermarkContainer, 'watermark-component');\n watermarkContainer.appendChild(this._watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this._watermark) {\n this._watermark.element.parentElement.remove();\n (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this._watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction), options);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroup(options);\n const size = this.getLocationOrientation(relativeLocation) ===\n Orientation.VERTICAL\n ? options.initialHeight\n : options.initialWidth;\n this.doAddGroup(group, relativeLocation, size);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n const group = this.createGroup(options);\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n getLocationOrientation(location) {\n return location.length % 2 == 0 &&\n this.gridview.orientation === Orientation.HORIZONTAL\n ? Orientation.HORIZONTAL\n : Orientation.VERTICAL;\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup && refGroup.panels.length === 0) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._popoutGroups, selectedGroup);\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n skipSetActive: options.skipSetActive,\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n // Check if destination group is empty - if so, force render the component\n const isDestinationGroupEmpty = destinationGroup.model.size === 0;\n this.movingLock(() => {\n var _a;\n return destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetActive: ((_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false) && !isDestinationGroupEmpty,\n skipSetGroupActive: true,\n });\n });\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(destinationGroup);\n }\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n }\n if (sourceGroup.api.location.type === 'popout') {\n /**\n * the source group is a popout group with a single panel\n *\n * 1. remove the panel from the group without triggering any events\n * 2. remove the popout group\n * 3. create a new group at the requested location and add that panel\n */\n const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);\n const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {\n skipSetActive: true,\n skipSetActiveGroup: true,\n }));\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n const newGroup = this.createGroupAtLocation(targetLocation);\n this.movingLock(() => newGroup.model.openPanel(removedPanel));\n this.doSetGroupAndPanelActive(newGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n // Ensure group becomes active after move\n if (options.skipSetActive !== true) {\n // For center moves (merges), we need to ensure the target group is active\n // unless explicitly told not to (skipSetActive: true)\n this.doSetGroupAndPanelActive(to);\n }\n else if (!this.activePanel) {\n // Even with skipSetActive: true, ensure there's an active panel if none exists\n // This maintains basic functionality while respecting skipSetActive\n this.doSetGroupAndPanelActive(to);\n }\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n // Remove from popout groups list to prevent automatic restoration\n const index = this._popoutGroups.indexOf(selectedPopoutGroup);\n if (index >= 0) {\n this._popoutGroups.splice(index, 1);\n }\n // Clean up the reference group (ghost) if it exists and is hidden\n if (selectedPopoutGroup.referenceGroup) {\n const referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);\n if (referenceGroup && !referenceGroup.api.isVisible) {\n this.doRemoveGroup(referenceGroup, {\n skipActive: true,\n });\n }\n }\n // Manually dispose the window without triggering restoration\n selectedPopoutGroup.window.dispose();\n // Update group's location and containers for target\n if (to.api.location.type === 'grid') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'grid' };\n }\n else if (to.api.location.type === 'floating') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'floating' };\n }\n break;\n }\n }\n // For moves to grid locations\n if (to.api.location.type === 'grid') {\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n // Add to grid for all moves targeting grid location\n let size;\n switch (this.gridview.orientation) {\n case Orientation.VERTICAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.width\n : from.api.height;\n break;\n case Orientation.HORIZONTAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.height\n : from.api.width;\n break;\n }\n this.gridview.addView(from, size, dropLocation);\n }\n else if (to.api.location.type === 'floating') {\n // For moves to floating locations, add as floating group\n // Get the position/size from the target floating group\n const targetFloatingGroup = this._floatingGroups.find((x) => x.group === to);\n if (targetFloatingGroup) {\n const box = targetFloatingGroup.overlay.toJSON();\n // Calculate position based on available properties\n let left, top;\n if ('left' in box) {\n left = box.left + 50;\n }\n else if ('right' in box) {\n left = Math.max(0, box.right - box.width - 50);\n }\n else {\n left = 50; // Default fallback\n }\n if ('top' in box) {\n top = box.top + 50;\n }\n else if ('bottom' in box) {\n top = Math.max(0, box.bottom - box.height - 50);\n }\n else {\n top = 50; // Default fallback\n }\n this.addFloatingGroup(from, {\n height: box.height,\n width: box.width,\n position: {\n left,\n top,\n },\n });\n }\n }\n }\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel, from });\n });\n // Ensure group becomes active after move\n if (options.skipSetActive === false) {\n // Only activate when explicitly requested (skipSetActive: false)\n // Use 'to' group for non-center moves since 'from' may have been destroyed\n const targetGroup = to !== null && to !== void 0 ? to : from;\n this.doSetGroupAndPanelActive(targetGroup);\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`dockview: Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, {\n renderer: options.renderer,\n minimumWidth: options.minimumWidth,\n minimumHeight: options.minimumHeight,\n maximumWidth: options.maximumWidth,\n maximumHeight: options.maximumHeight,\n });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location, size, options) {\n const group = this.createGroup(options);\n this.doAddGroup(group, location, size);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n orientationAtLocation(location) {\n const rootOrientation = this.gridview.orientation;\n return location.length % 2 == 1\n ? rootOrientation\n : orthogonal(rootOrientation);\n }\n updateDropTargetModel(options) {\n if ('dndEdges' in options) {\n this._rootDropTarget.disabled =\n typeof options.dndEdges === 'boolean' &&\n options.dndEdges === false;\n if (typeof options.dndEdges === 'object' &&\n options.dndEdges !== null) {\n this._rootDropTarget.setOverlayModel(options.dndEdges);\n }\n else {\n this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);\n }\n }\n if ('rootOverlayModel' in options) {\n this.updateDropTargetModel({ dndEdges: options.dndEdges });\n }\n }\n updateTheme() {\n var _a, _b;\n const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;\n this._themeClassnames.setClassNames(theme.className);\n this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;\n switch (theme.dndOverlayMounting) {\n case 'absolute':\n this.rootDropTargetContainer.disabled = false;\n break;\n case 'relative':\n default:\n this.rootDropTargetContainer.disabled = true;\n break;\n }\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(container, options) {\n var _a;\n super(container, {\n proportionalLayout: (_a = options.proportionalLayout) !== null && _a !== void 0 ? _a : true,\n orientation: options.orientation,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n className: options.className,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n }\n updateOptions(options) {\n super.updateOptions(options);\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n const { data } = node;\n const view = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.registerPanel(view);\n this.doAddGroup(view, relativeLocation, options.size);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n if (this._splitview) {\n this._splitview.dispose();\n }\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n if (typeof options.orientation === 'string') {\n this.splitview.orientation = options.orientation;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_a = options.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n this.element.remove();\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = {\n api: null,\n };\n this._element = document.createElement('div');\n this.element.className = 'dv-default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dv-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nconst HEADER_SIZE = 22;\nconst MINIMUM_BODY_SIZE = 0;\nconst MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super({\n accessor: options.accessor,\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n disableDnd: options.disableDnd,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b;\n const body = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n let header;\n if (options.headerComponent && this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: options.id,\n name: options.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: MINIMUM_BODY_SIZE,\n maximumBodySize: MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_b = options.params) !== null && _b !== void 0 ? _b : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n headerSize: view.headerSize,\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c;\n const data = view.data;\n const body = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n let header;\n if (data.headerComponent &&\n this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: data.id,\n name: data.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,\n maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = new CompositeDisposable(panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), panel.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }));\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.element.remove();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id, componentName));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n","import { GridviewApi, PaneviewApi, SplitviewApi, } from '../api/component.api';\nimport { DockviewComponent } from '../dockview/dockviewComponent';\nimport { GridviewComponent } from '../gridview/gridviewComponent';\nimport { PaneviewComponent } from '../paneview/paneviewComponent';\nimport { SplitviewComponent } from '../splitview/splitviewComponent';\nexport function createDockview(element, options) {\n const component = new DockviewComponent(element, options);\n return component.api;\n}\nexport function createSplitview(element, options) {\n const component = new SplitviewComponent(element, options);\n return new SplitviewApi(component);\n}\nexport function createGridview(element, options) {\n const component = new GridviewComponent(element, options);\n return new GridviewApi(component);\n}\nexport function createPaneview(element, options) {\n const component = new PaneviewComponent(element, options);\n return new PaneviewApi(component);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { DockviewDisposable, } from 'dockview-core';\n/**\n * This component is intended to interface between vanilla-js and React hence we need to be\n * creative in how we update props.\n * A ref of the component is exposed with an update method; which when called stores the props\n * as a ref within this component and forcefully triggers a re-render of the component using\n * the ref of props we just set on the renderered component as the props passed to the inner\n * component\n */\nconst ReactComponentBridge = (props, ref) => {\n const [_, triggerRender] = React.useState();\n const _props = React.useRef(props.componentProps);\n React.useImperativeHandle(ref, () => ({\n update: (componentProps) => {\n _props.current = Object.assign(Object.assign({}, _props.current), componentProps);\n /**\n * setting a arbitrary piece of state within this component will\n * trigger a re-render.\n * we use this rather than updating through a prop since we can\n * pass a ref into the vanilla-js world.\n */\n triggerRender(Date.now());\n },\n }), []);\n return React.createElement(props.component, _props.current);\n};\nReactComponentBridge.displayName = 'DockviewReactJsBridge';\n/**\n * Since we are storing the React.Portal references in a rendered array they\n * require a key property like any other React element rendered in an array\n * to prevent excessive re-rendering\n */\nconst uniquePortalKeyGenerator = (() => {\n let value = 1;\n return { next: () => `dockview_react_portal_key_${(value++).toString()}` };\n})();\nexport const ReactPartContext = React.createContext({});\nexport class ReactPart {\n constructor(parent, portalStore, component, parameters, context) {\n this.parent = parent;\n this.portalStore = portalStore;\n this.component = component;\n this.parameters = parameters;\n this.context = context;\n this._initialProps = {};\n this.disposed = false;\n this.createPortal();\n }\n update(props) {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!this.componentInstance) {\n // if the component is yet to be mounted store the props\n this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);\n }\n else {\n this.componentInstance.update(props);\n }\n }\n createPortal() {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!isReactComponent(this.component)) {\n /**\n * we know this isn't a React.FunctionComponent so throw an error here.\n * if we do not intercept then React library will throw a very obsure error\n * for the same reason... at least at this point we will emit a sensible stacktrace.\n */\n throw new Error('Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components');\n }\n const bridgeComponent = React.createElement(React.forwardRef(ReactComponentBridge), {\n component: this\n .component,\n componentProps: this.parameters,\n ref: (element) => {\n this.componentInstance = element;\n if (Object.keys(this._initialProps).length > 0) {\n this.componentInstance.update(this._initialProps);\n this._initialProps = {}; // don't keep a reference to the users object once no longer required\n }\n },\n });\n const node = this.context\n ? React.createElement(ReactPartContext.Provider, { value: this.context }, bridgeComponent)\n : bridgeComponent;\n const portal = ReactDOM.createPortal(node, this.parent, uniquePortalKeyGenerator.next());\n this.ref = {\n portal,\n disposable: this.portalStore.addPortal(portal),\n };\n }\n dispose() {\n var _a;\n (_a = this.ref) === null || _a === void 0 ? void 0 : _a.disposable.dispose();\n this.disposed = true;\n }\n}\n/**\n * A React Hook that returns an array of portals to be rendered by the user of this hook\n * and a disposable function to add a portal. Calling dispose removes this portal from the\n * portal array\n */\nexport const usePortalsLifecycle = () => {\n const [portals, setPortals] = React.useState([]);\n React.useDebugValue(`Portal count: ${portals.length}`);\n const addPortal = React.useCallback((portal) => {\n setPortals((existingPortals) => [...existingPortals, portal]);\n let disposed = false;\n return DockviewDisposable.from(() => {\n if (disposed) {\n throw new Error('invalid operation: resource already disposed');\n }\n disposed = true;\n setPortals((existingPortals) => existingPortals.filter((p) => p !== portal));\n });\n }, []);\n return [portals, addPortal];\n};\nexport function isReactComponent(component) {\n /**\n * Yes, we could use \"react-is\" but that would introduce an unwanted peer dependency\n * so for now we will check in a rather crude fashion...\n */\n return (typeof component === 'function' /** Functional Componnts */ ||\n !!(component === null || component === void 0 ? void 0 : component.$$typeof) /** React.memo(...) Components */);\n}\n","import { ReactPart } from '../react';\nimport { DockviewEmitter, } from 'dockview-core';\nexport class ReactPanelContentPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._onDidFocus = new DockviewEmitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new DockviewEmitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n focus() {\n // TODO\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n containerApi: parameters.containerApi,\n });\n }\n update(event) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });\n }\n layout(_width, _height) {\n // noop\n }\n dispose() {\n var _a;\n this._onDidFocus.dispose();\n this._onDidBlur.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nexport class ReactPanelHeaderPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n focus() {\n //noop\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n containerApi: parameters.containerApi,\n tabLocation: parameters.tabLocation,\n });\n }\n update(event) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });\n }\n layout(_width, _height) {\n // noop - retrieval from api\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nexport class ReactWatermarkPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n group: parameters.group,\n containerApi: parameters.containerApi,\n });\n }\n focus() {\n // noop\n }\n update(params) {\n var _a, _b, _c;\n if (this.parameters) {\n this.parameters.params = params.params;\n }\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: (_c = (_b = this.parameters) === null || _b === void 0 ? void 0 : _b.params) !== null && _c !== void 0 ? _c : {} });\n }\n layout(_width, _height) {\n // noop - retrieval from api\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nimport { DockviewCompositeDisposable, DockviewMutableDisposable, } from 'dockview-core';\nexport class ReactHeaderActionsRendererPart {\n get element() {\n return this._element;\n }\n get part() {\n return this._part;\n }\n constructor(component, reactPortalStore, _group) {\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._group = _group;\n this.mutableDisposable = new DockviewMutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.mutableDisposable.value = new DockviewCompositeDisposable(this._group.model.onDidAddPanel(() => {\n this.updatePanels();\n }), this._group.model.onDidRemovePanel(() => {\n this.updatePanels();\n }), this._group.model.onDidActivePanelChange(() => {\n this.updateActivePanel();\n }), parameters.api.onDidActiveChange(() => {\n this.updateGroupActive();\n }));\n this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n api: parameters.api,\n containerApi: parameters.containerApi,\n panels: this._group.model.panels,\n activePanel: this._group.model.activePanel,\n isGroupActive: this._group.api.isActive,\n group: this._group,\n });\n }\n dispose() {\n var _a;\n this.mutableDisposable.dispose();\n (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n update(event) {\n var _a;\n (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);\n }\n updatePanels() {\n this.update({ params: { panels: this._group.model.panels } });\n }\n updateActivePanel() {\n this.update({\n params: {\n activePanel: this._group.model.activePanel,\n },\n });\n }\n updateGroupActive() {\n this.update({\n params: {\n isGroupActive: this._group.api.isActive,\n },\n });\n }\n}\n","import React from 'react';\nimport { PROPERTY_KEYS_DOCKVIEW, createDockview, } from 'dockview-core';\nimport { ReactPanelContentPart } from './reactContentPart';\nimport { ReactPanelHeaderPart } from './reactHeaderPart';\nimport { usePortalsLifecycle } from '../react';\nimport { ReactWatermarkPart } from './reactWatermarkPart';\nimport { ReactHeaderActionsRendererPart } from './headerActionsRenderer';\nfunction createGroupControlElement(component, store) {\n return component\n ? (groupPanel) => {\n return new ReactHeaderActionsRendererPart(component, store, groupPanel);\n }\n : undefined;\n}\nconst DEFAULT_REACT_TAB = 'props.defaultTabComponent';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_DOCKVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const DockviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const dockviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_DOCKVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (dockviewRef.current) {\n dockviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_DOCKVIEW.map((key) => props[key]));\n React.useEffect(() => {\n var _a;\n if (!domRef.current) {\n return;\n }\n const frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};\n if (props.defaultTabComponent) {\n frameworkTabComponents[DEFAULT_REACT_TAB] =\n props.defaultTabComponent;\n }\n const frameworkOptions = {\n createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal }),\n createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal }),\n createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal }),\n createComponent: (options) => {\n return new ReactPanelContentPart(options.id, props.components[options.name], {\n addPortal,\n });\n },\n createTabComponent(options) {\n return new ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {\n addPortal,\n });\n },\n createWatermarkComponent: props.watermarkComponent\n ? () => {\n return new ReactWatermarkPart('watermark', props.watermarkComponent, {\n addPortal,\n });\n }\n : undefined,\n defaultTabComponent: props.defaultTabComponent\n ? DEFAULT_REACT_TAB\n : undefined,\n };\n const api = createDockview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n dockviewRef.current = api;\n return () => {\n dockviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = dockviewRef.current.onDidDrop((event) => {\n if (props.onDidDrop) {\n props.onDidDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onDidDrop]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = dockviewRef.current.onWillDrop((event) => {\n if (props.onWillDrop) {\n props.onWillDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onWillDrop]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactPanelContentPart(options.id, props.components[options.name], {\n addPortal,\n });\n },\n });\n }, [props.components]);\n React.useEffect(() => {\n var _a;\n if (!dockviewRef.current) {\n return;\n }\n const frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};\n if (props.defaultTabComponent) {\n frameworkTabComponents[DEFAULT_REACT_TAB] =\n props.defaultTabComponent;\n }\n dockviewRef.current.updateOptions({\n defaultTabComponent: props.defaultTabComponent\n ? DEFAULT_REACT_TAB\n : undefined,\n createTabComponent(options) {\n return new ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {\n addPortal,\n });\n },\n });\n }, [props.tabComponents, props.defaultTabComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createWatermarkComponent: props.watermarkComponent\n ? () => {\n return new ReactWatermarkPart('watermark', props.watermarkComponent, {\n addPortal,\n });\n }\n : undefined,\n });\n }, [props.watermarkComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal }),\n });\n }, [props.rightHeaderActionsComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal }),\n });\n }, [props.leftHeaderActionsComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal }),\n });\n }, [props.prefixHeaderActionsComponent]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nDockviewReact.displayName = 'DockviewComponent';\n","import React from 'react';\nexport const CloseButton = () => (React.createElement(\"svg\", { height: \"11\", width: \"11\", viewBox: \"0 0 28 28\", \"aria-hidden\": 'false', focusable: false, className: \"dv-svg\" },\n React.createElement(\"path\", { d: \"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\" })));\nexport const ExpandMore = () => {\n return (React.createElement(\"svg\", { width: \"11\", height: \"11\", viewBox: \"0 0 24 15\", \"aria-hidden\": 'false', focusable: false, className: \"dv-svg\" },\n React.createElement(\"path\", { d: \"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z\" })));\n};\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { CloseButton } from '../svg';\nfunction useTitle(api) {\n const [title, setTitle] = React.useState(api.title);\n React.useEffect(() => {\n const disposable = api.onDidTitleChange((event) => {\n setTitle(event.title);\n });\n // Depending on the order in which React effects are run, the title may already be out of sync (cf. issue #1003).\n if (title !== api.title) {\n setTitle(api.title);\n }\n return () => {\n disposable.dispose();\n };\n }, [api]);\n return title;\n}\nexport const DockviewDefaultTab = (_a) => {\n var { api, containerApi: _containerApi, params: _params, hideClose, closeActionOverride, onPointerDown, onPointerUp, onPointerLeave, tabLocation } = _a, rest = __rest(_a, [\"api\", \"containerApi\", \"params\", \"hideClose\", \"closeActionOverride\", \"onPointerDown\", \"onPointerUp\", \"onPointerLeave\", \"tabLocation\"]);\n const title = useTitle(api);\n const isMiddleMouseButton = React.useRef(false);\n const onClose = React.useCallback((event) => {\n event.preventDefault();\n if (closeActionOverride) {\n closeActionOverride();\n }\n else {\n api.close();\n }\n }, [api, closeActionOverride]);\n const onBtnPointerDown = React.useCallback((event) => {\n event.preventDefault();\n }, []);\n const _onPointerDown = React.useCallback((event) => {\n isMiddleMouseButton.current = event.button === 1;\n onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(event);\n }, [onPointerDown]);\n const _onPointerUp = React.useCallback((event) => {\n if (isMiddleMouseButton && event.button === 1 && !hideClose) {\n isMiddleMouseButton.current = false;\n onClose(event);\n }\n onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp(event);\n }, [onPointerUp, onClose, hideClose]);\n const _onPointerLeave = React.useCallback((event) => {\n isMiddleMouseButton.current = false;\n onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(event);\n }, [onPointerLeave]);\n return (React.createElement(\"div\", Object.assign({ \"data-testid\": \"dockview-dv-default-tab\" }, rest, { onPointerDown: _onPointerDown, onPointerUp: _onPointerUp, onPointerLeave: _onPointerLeave, className: \"dv-default-tab\" }),\n React.createElement(\"span\", { className: \"dv-default-tab-content\" }, title),\n !hideClose && (React.createElement(\"div\", { className: \"dv-default-tab-action\", onPointerDown: onBtnPointerDown, onClick: onClose },\n React.createElement(CloseButton, null)))));\n};\n","import { SplitviewApi, SplitviewPanel, } from 'dockview-core';\nimport { ReactPart } from '../react';\nexport class ReactPanelView extends SplitviewPanel {\n constructor(id, component, reactComponent, reactPortalStore) {\n super(id, component);\n this.reactComponent = reactComponent;\n this.reactPortalStore = reactPortalStore;\n }\n getComponent() {\n var _a, _b;\n return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {\n params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},\n api: this.api,\n containerApi: new SplitviewApi(this._params.accessor),\n });\n }\n}\n","import React from 'react';\nimport { createSplitview, PROPERTY_KEYS_SPLITVIEW, } from 'dockview-core';\nimport { usePortalsLifecycle } from '../react';\nimport { ReactPanelView } from './view';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_SPLITVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const SplitviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const splitviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_SPLITVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (splitviewRef.current) {\n splitviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_SPLITVIEW.map((key) => props[key]));\n React.useEffect(() => {\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const frameworkOptions = {\n createComponent: (options) => {\n return new ReactPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n };\n const api = createSplitview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n splitviewRef.current = api;\n return () => {\n splitviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!splitviewRef.current) {\n return;\n }\n splitviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nSplitviewReact.displayName = 'SplitviewComponent';\n","import { GridviewApi, GridviewPanel, } from 'dockview-core';\nimport { ReactPart } from '../react';\nexport class ReactGridPanelView extends GridviewPanel {\n constructor(id, component, reactComponent, reactPortalStore) {\n super(id, component);\n this.reactComponent = reactComponent;\n this.reactPortalStore = reactPortalStore;\n }\n getComponent() {\n var _a, _b;\n return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {\n params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},\n api: this.api,\n // TODO: fix casting hack\n containerApi: new GridviewApi(this._params\n .accessor),\n });\n }\n}\n","import React from 'react';\nimport { createGridview, PROPERTY_KEYS_GRIDVIEW, } from 'dockview-core';\nimport { ReactGridPanelView } from './view';\nimport { usePortalsLifecycle } from '../react';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_GRIDVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const GridviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const gridviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_GRIDVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (gridviewRef.current) {\n gridviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_GRIDVIEW.map((key) => props[key]));\n React.useEffect(() => {\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const frameworkOptions = {\n createComponent: (options) => {\n return new ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n };\n const api = createGridview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n gridviewRef.current = api;\n return () => {\n gridviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!gridviewRef.current) {\n return;\n }\n gridviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nGridviewReact.displayName = 'GridviewComponent';\n","import { ReactPart } from '../react';\nexport class PanePanelSection {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n title: parameters.title,\n containerApi: parameters.containerApi,\n });\n }\n toJSON() {\n return {\n id: this.id,\n };\n }\n update(params) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(params.params);\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import React from 'react';\nimport { createPaneview, PROPERTY_KEYS_PANEVIEW, } from 'dockview-core';\nimport { usePortalsLifecycle } from '../react';\nimport { PanePanelSection } from './view';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_PANEVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const PaneviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const paneviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_PANEVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (paneviewRef.current) {\n paneviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_PANEVIEW.map((key) => props[key]));\n React.useEffect(() => {\n var _a;\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};\n const frameworkOptions = {\n createComponent: (options) => {\n return new PanePanelSection(options.id, props.components[options.name], { addPortal });\n },\n createHeaderComponent: (options) => {\n return new PanePanelSection(options.id, headerComponents[options.name], { addPortal });\n },\n };\n const api = createPaneview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n paneviewRef.current = api;\n return () => {\n paneviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!paneviewRef.current) {\n return;\n }\n paneviewRef.current.updateOptions({\n createComponent: (options) => {\n return new PanePanelSection(options.id, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n React.useEffect(() => {\n var _a;\n if (!paneviewRef.current) {\n return;\n }\n const headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};\n paneviewRef.current.updateOptions({\n createHeaderComponent: (options) => {\n return new PanePanelSection(options.id, headerComponents[options.name], { addPortal });\n },\n });\n }, [props.headerComponents]);\n React.useEffect(() => {\n if (!paneviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = paneviewRef.current.onDidDrop((event) => {\n if (props.onDidDrop) {\n props.onDidDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onDidDrop]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nPaneviewReact.displayName = 'PaneviewComponent';\n","// extracted by mini-css-extract-plugin\nexport default {\"admonition\":\"admonition_Gfwi\",\"admonitionHeading\":\"admonitionHeading_f1Ed\",\"admonitionIcon\":\"admonitionIcon_kpSf\",\"admonitionContent\":\"admonitionContent_UjKb\"};","import React from 'react';\nimport clsx from 'clsx';\nimport { ThemeClassNames } from '@docusaurus/theme-common';\nimport styles from './styles.module.css';\nfunction AdmonitionContainer({ type, className, children }) {\n return (\n \n {children}\n \n );\n}\nfunction AdmonitionHeading({ icon, title }) {\n return (\n
\n {icon}\n {/* {title} */}\n
\n );\n}\nfunction AdmonitionContent({ children }) {\n return children ? (\n
{children}
\n ) : null;\n}\nexport default function AdmonitionLayout(props) {\n const { type, icon, title, children, className } = props;\n return (\n \n \n {children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconNote(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconNote from '@theme/Admonition/Icon/Note';\nconst infimaClassName = 'alert alert--secondary';\nconst defaultProps = {\n icon: ,\n title: (\n \n note\n \n ),\n};\nexport default function AdmonitionTypeNote(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconTip(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconTip from '@theme/Admonition/Icon/Tip';\nconst infimaClassName = 'alert alert--success';\nconst defaultProps = {\n icon: ,\n title: (\n \n tip\n \n ),\n};\nexport default function AdmonitionTypeTip(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconInfo(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconInfo from '@theme/Admonition/Icon/Info';\nconst infimaClassName = 'alert alert--info';\nconst defaultProps = {\n icon: ,\n title: (\n \n info\n \n ),\n};\nexport default function AdmonitionTypeInfo(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconCaution(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconWarning from '@theme/Admonition/Icon/Warning';\nconst infimaClassName = 'alert alert--warning';\nconst defaultProps = {\n icon: ,\n title: (\n \n warning\n \n ),\n};\nexport default function AdmonitionTypeWarning(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconDanger(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconDanger from '@theme/Admonition/Icon/Danger';\nconst infimaClassName = 'alert alert--danger';\nconst defaultProps = {\n icon: ,\n title: (\n \n danger\n \n ),\n};\nexport default function AdmonitionTypeDanger(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconWarning from '@theme/Admonition/Icon/Warning';\nconst infimaClassName = 'alert alert--warning';\nconst defaultProps = {\n icon: ,\n title: (\n \n caution\n \n ),\n};\n// TODO remove before v4: Caution replaced by Warning\n// see https://github.com/facebook/docusaurus/issues/7558\nexport default function AdmonitionTypeCaution(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nimport AdmonitionTypeNote from '@theme/Admonition/Type/Note';\nimport AdmonitionTypeTip from '@theme/Admonition/Type/Tip';\nimport AdmonitionTypeInfo from '@theme/Admonition/Type/Info';\nimport AdmonitionTypeWarning from '@theme/Admonition/Type/Warning';\nimport AdmonitionTypeDanger from '@theme/Admonition/Type/Danger';\nimport AdmonitionTypeCaution from '@theme/Admonition/Type/Caution';\nconst admonitionTypes = {\n note: AdmonitionTypeNote,\n tip: AdmonitionTypeTip,\n info: AdmonitionTypeInfo,\n warning: AdmonitionTypeWarning,\n danger: AdmonitionTypeDanger,\n};\n// Undocumented legacy admonition type aliases\n// Provide hardcoded/untranslated retrocompatible label\n// See also https://github.com/facebook/docusaurus/issues/7767\nconst admonitionAliases = {\n secondary: (props) => ,\n important: (props) => ,\n success: (props) => ,\n caution: AdmonitionTypeCaution,\n};\nexport default {\n ...admonitionTypes,\n ...admonitionAliases,\n};\n","import React from 'react';\nimport {processAdmonitionProps} from '@docusaurus/theme-common';\nimport AdmonitionTypes from '@theme/Admonition/Types';\nfunction getAdmonitionTypeComponent(type) {\n const component = AdmonitionTypes[type];\n if (component) {\n return component;\n }\n console.warn(\n `No admonition component found for admonition type \"${type}\". Using Info as fallback.`,\n );\n return AdmonitionTypes.info;\n}\nexport default function Admonition(unprocessedProps) {\n const props = processAdmonitionProps(unprocessedProps);\n const AdmonitionTypeComponent = getAdmonitionTypeComponent(props.type);\n return ;\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { ThemeClassNames } from '@docusaurus/theme-common';\nimport { useDoc } from '@docusaurus/theme-common/internal';\nimport Heading from '@theme/Heading';\nimport MDXContent from '@theme/MDXContent';\nimport { FrameworkSelector } from '@site/src/components/frameworkSpecific';\n/**\n Title can be declared inside md content or declared through\n front matter and added manually. To make both cases consistent,\n the added title is added under the same div.markdown block\n See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120\n\n We render a \"synthetic title\" if:\n - user doesn't ask to hide it with front matter\n - the markdown content does not already contain a top-level h1 heading\n*/\nfunction useSyntheticTitle() {\n const { metadata, frontMatter, contentTitle } = useDoc();\n const shouldRender =\n !frontMatter.hide_title && typeof contentTitle === 'undefined';\n if (!shouldRender) {\n return null;\n }\n return metadata.title;\n}\nexport default function DocItemContent({ children }) {\n const syntheticTitle = useSyntheticTitle();\n return (\n
\n {syntheticTitle && (\n
\n \n {\n \n
{syntheticTitle}
\n \n
\n }\n \n \n )}\n {children}\n \n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"docItemContainer\":\"docItemContainer_c0TR\",\"docItemCol\":\"docItemCol_z5aJ\"};","import React from 'react';\nimport clsx from 'clsx';\nimport { useWindowSize } from '@docusaurus/theme-common';\nimport { useDoc } from '@docusaurus/theme-common/internal';\nimport DocItemPaginator from '@theme/DocItem/Paginator';\nimport DocVersionBanner from '@theme/DocVersionBanner';\nimport DocVersionBadge from '@theme/DocVersionBadge';\nimport DocItemFooter from '@theme/DocItem/Footer';\nimport DocItemTOCMobile from '@theme/DocItem/TOC/Mobile';\nimport DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop';\nimport DocItemContent from '@theme/DocItem/Content';\nimport DocBreadcrumbs from '@theme/DocBreadcrumbs';\nimport Unlisted from '@theme/Unlisted';\nimport styles from './styles.module.css';\n/**\n * Decide if the toc should be rendered, on mobile or desktop viewports\n */\nfunction useDocTOC() {\n const { frontMatter, toc } = useDoc();\n const windowSize = useWindowSize();\n const hidden = frontMatter.hide_table_of_contents;\n const canRender = !hidden && toc.length > 0;\n const mobile = canRender ? : undefined;\n const desktop =\n canRender && (windowSize === 'desktop' || windowSize === 'ssr') ? (\n \n ) : undefined;\n return {\n hidden,\n mobile,\n desktop,\n };\n}\nexport default function DocItemLayout({ children }) {\n const docTOC = useDocTOC();\n const {\n metadata: { unlisted },\n } = useDoc();\n return (\n
\n
\n {unlisted && }\n \n
\n
\n \n \n {docTOC.mobile}\n {children}\n \n
\n \n
\n
\n {docTOC.desktop && (\n
{docTOC.desktop}
\n )}\n
\n );\n}\n","import React from 'react';\n// Import the original mapper\nimport MDXComponents from '@theme-original/MDXComponents';\nimport { FrameworkSpecific } from '@site/src/components/frameworkSpecific';\nimport { CodeRunner } from '../components/ui/codeRunner';\n\nexport default {\n // Re-use the default mapping\n ...MDXComponents,\n // Map the \"\" tag to our Highlight component\n // `Highlight` will receive all props that were passed to `` in MDX\n FrameworkSpecific,\n CodeRunner,\n};\n","import BrowserOnly from '@docusaurus/BrowserOnly';\nimport { DockviewEmitter } from 'dockview';\nimport * as React from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport useBaseUrl from '@docusaurus/useBaseUrl';\nimport './frameworkSpecific.css';\n\nexport interface FrameworkDescriptor {\n value: string;\n label: string;\n icon: string;\n}\n\nconst frameworks: FrameworkDescriptor[] = [\n { value: 'JavaScript', label: 'JavaScript', icon: 'img/js-icon.svg' },\n { value: 'React', label: 'React', icon: 'img/react-icon.svg' },\n { value: 'Vue', label: 'Vue', icon: 'img/vue-icon.svg' },\n // { value: 'Angular', label: 'Angular' },\n];\n\nconst activeFrameworkGlobal = new DockviewEmitter({ replay: true });\n\nexport function useActiveFramework(): [\n FrameworkDescriptor,\n (value: string) => void\n] {\n const [value, setValue] = React.useState(\n localStorage.getItem('dv-docs-framework') ?? frameworks[0].value\n );\n\n React.useEffect(() => {\n const disposable = activeFrameworkGlobal.event((value) => [\n setValue(value),\n ]);\n\n activeFrameworkGlobal.fire(\n localStorage.getItem('dv-docs-framework') ?? frameworks[0].value\n );\n\n return () => {\n disposable.dispose();\n };\n }, []);\n\n const setter = React.useCallback((value: string) => {\n localStorage.setItem('dv-docs-framework', value);\n setValue(value);\n activeFrameworkGlobal.fire(value);\n }, []);\n\n const option = frameworks.find((_) => _.value === value);\n\n return [option, setter];\n}\n\n\n\nconst FrameworkSelector1 = () => {\n const [activeFramework, setActiveFramework] = useActiveFramework();\n\n const onChange = (event: React.ChangeEvent) => [\n setActiveFramework(event.target.value),\n ];\n\n return (\n \n \n
\n \n {activeFramework.label}\n \n \n
\n
\n \n {frameworks.map((framework) => {\n return (\n setActiveFramework(framework.label)}\n className=\"DropdownMenuItem\"\n >\n
\n \n {framework.label}\n \n \n
\n \n );\n })}\n \n
\n );\n};\n\nexport const FrameworkSelector = () => {\n return {() => };\n};\n\nconst FrameworkSpecific1 = (props: {\n framework: string;\n children: React.ReactNode;\n}) => {\n const [activeFramework] = useActiveFramework();\n\n if (activeFramework.value === props.framework) {\n return props.children;\n }\n\n return null;\n};\n\nexport const FrameworkSpecific = (props: {\n framework: string;\n children: React.ReactNode;\n}) => {\n return {() => };\n};\n","import * as React from 'react';\nimport { useActiveFramework } from '../frameworkSpecific';\nimport BrowserOnly from '@docusaurus/BrowserOnly';\n\nconst BASE_SANDBOX_URL =\n 'https://codesandbox.io/s/github/mathuo/dockview/tree/gh-pages';\n\nexport const _CodeRunner = (props: { id: string; height: number }) => {\n const [framework] = useActiveFramework();\n\n let frameworkName = framework.label.toLowerCase();\n\n if (frameworkName === 'javascript') {\n frameworkName = 'typescript';\n }\n\n const sandboxUrl = `${BASE_SANDBOX_URL}/templates/${\n props.id\n }/${framework.label.toLowerCase()}`;\n const path = `/templates/${props.id}/${frameworkName}/index.html`;\n return (\n \n );\n};\n\nexport const CodeRunner = (props: { id: string; height: number }) => {\n return {() => <_CodeRunner {...props} />};\n};\n\nconst CodeSandbox = (props: { url: string }) => {\n return (\n \n {`Open in `}\n \n \n CodeSandbox\n \n \n \n );\n};\n"],"names":["TransferObject","PanelTransfer","constructor","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","Event","Disposable","any","_len","arguments","length","children","Array","_key","listener","disposables","map","child","dispose","forEach","d","DockviewEvent","_defaultPrevented","defaultPrevented","preventDefault","AcceptableEvent","_isAccepted","isAccepted","accept","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","_last","options","_listeners","_disposed","event","_event","replay","push","index","indexOf","splice","add","fire","e","queueMicrotask","delete","addDisposableListener","element","type","addEventListener","removeEventListener","events","Map","size","set","AsapEvent","_onFired","_currentFireCount","_queued","onEvent","fireCountAtTimeOfEventSubscription","NONE","from","func","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","_len2","_key2","arg","MutableDisposable","_disposable","disposable","OverflowObserver","el","_onDidChange","onDidChange","_value","watchElementResize","entry","hasScrollX","target","scrollWidth","clientWidth","hasScrollY","scrollHeight","clientHeight","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","document","activeElement","loosingFocus","onFocus","onBlur","window","setTimeout","_refreshStateHandler","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","getDomNodePagePosition","domNode","left","top","width","height","getBoundingClientRect","scrollX","scrollY","disableIframePointEvents","rootNode","iframes","tagNames","findIframesInNode","node","nodeType","Node","ELEMENT_NODE","includes","tagName","shadowRoot","documentElement","allTagsNamesInclusiveOfShadowDoms","original","WeakMap","iframe","style","pointerEvents","release","get","Classnames","_classNames","setClassNames","classNames","split","filter","v","trim","tail","arr","slice","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","array","findIndex","t","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","contentSize","_contentSize","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","disabled","_disabled","margin","_margin","_b","_this","sashes","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","overloadMaxDelta","snapBefore","snapAfter","x","NEGATIVE_INFINITY","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","VERTICAL","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","Low","High","round","relayout","getViews","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","start","clientX","clientY","sashIndex","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","total","proportion","lowPriorityIndex","emptyDelta","visibleViewItems","sashCount","marginReducedSize","totalLeftOffset","viewLeftOffsets","runningVisiblePanelCount","flag","visiblePanelsBeforeThisView","offset","sashWidth","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","PROPERTY_KEYS_SPLITVIEW","properties","disableAutoResizing","Object","keys","Paneview","splitview","paneItems","skipAnimation","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","clearTimeout","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","_onDidVisibilityChange","onDidVisibilityChange","childDescriptor","setupChildrenEvents","_visible","isChildVisible","setChildVisible","wereAllChildrenHidden","areAllChildrenHidden","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","_ref","findLeaf","candiateNode","last","cloneNode","flipNode","orthogonal","totalSize","childSize","getGridLocation","parentElement","test","firstElementChild","lastElementChild","nextElementSibling","indexInParent","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","directionOrientation","getDirectionOrientation","rest","_index","serializeBranchNode","box","isGridBranchNode","toJSON","Gridview","_root","root","locked","_locked","branch","pop","maximizedView","_maximizedNode","leaf","hasMaximizedView","maximizeView","getNode","exitMaximizedView","getView","hiddenOnMaximize","hideAllViewsBut","parent","exclude","_onDidMaximizedNodeChange","isMaximized","showViewsInReverseOrder","serialize","maxmizedViewLocation","resullt","maximizedNode","_onDidViewVisibilityChange","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","call","oldRoot","normalize","childReference","insertOrthogonalSplitviewAtRoot","progmaticSelect","_getViews","nodeCachedVisibleSize","path","n","l","onDidViewVisibilityChange","onDidMaximizedNodeChange","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","PROPERTY_KEYS_GRIDVIEW","hideBorders","Resizable","_element","disableResizing","_disableResizing","offsetParent","currentElement","DocumentFragment","host","isInDocument","contentRect","nextLayoutId","toTarget","BaseGrid","id","_id","_groups","groups","values","gridview","activeGroup","_activeGroup","_onDidRemove","onDidRemove","_onDidAdd","onDidAdd","_onDidMaximizedChange","onDidMaximizedChange","_onDidActiveChange","onDidActiveChange","_bufferOnDidLayoutChange","onDidLayoutChange","_onDidViewVisibilityChangeMicroTaskQueue","onDidViewVisibilityChangeMicroTaskQueue","panel","isVisible","updateOptions","_c","_d","maximizeGroup","doSetGroupActive","isMaximizedGroup","exitMaximizedGroup","hasMaximizedGroup","doAddGroup","group","doRemoveGroup","has","skipActive","getPanel","setActive","removeGroup","moveToNext","moveToPrevious","forceResize","SplitviewApi","component","panels","onDidLayoutFromJSON","removePanel","focus","addPanel","movePanel","PaneviewApi","onDidDrop","onUnhandledDragOverEvent","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","force","DockviewApi","totalPanels","onDidMovePanel","onWillDrop","onWillShowOverlay","onWillDragGroup","onWillDragPanel","onDidPopoutGroupSizeChange","onDidPopoutGroupPositionChange","onDidOpenPopoutWindowFail","activePanel","getGroupPanel","addGroup","closeAllGroups","getGroup","addFloatingGroup","onDidMaximizedGroupChange","addPopoutGroup","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","setDisabled","isCancelled","dataTransfer","effectAllowed","items","DragAndDropObserver","callbacks","registerListeners","onDragEnter","onDragOver","onDragLeave","onDragEnd","onDrop","WillShowOverlayEvent","nativeEvent","directionToPosition","positionToDirection","DEFAULT_ACTIVATION_SIZE","DEFAULT_SIZE","Droptarget","_state","_onDrop","_onWillShowOverlay","_acceptedTargetZonesSet","Set","acceptedTargetZones","dnd","getOverrideTarget","getElements","_e","_f","_g","ACTUAL_TARGET","overrideTarget","removeDropTarget","getOverlayOutline","offsetWidth","offsetHeight","rect","currentTarget","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","willShowOverlayEvent","markAsUsed","targetElement","overlayElement","append","toggleClasses","stopPropagation","setTargetZones","setOverlayModel","model","overlayModel","USED_EVENT_ID","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","sizeOptions","outlineEl","elBox","ta","overlay","bigbox","rootTop","rootLeft","bounds","topPx","leftPx","widthPx","heightPx","checkBoundsChanged","visibility","transform","setGPUOptimizedBounds","changed","setGPUOptimizedBoundsFromStrings","overlayType","activationSizeOptions","activationSize","threshold","xp","yp","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","PROPERTY_KEYS_PANEVIEW","disableDnd","PaneviewUnhandledDragOverEvent","WillFocusEvent","PanelApiImpl","isFocused","_isFocused","isActive","_isActive","_isVisible","_width","_height","_parameters","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onWillFocus","onWillFocus","_onWillVisibilityChange","onWillVisibilityChange","_onActiveChange","onActiveChange","_onDidParametersChange","onDidParametersChange","getParameters","initialize","parameters","update","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","_params","api","tabIndex","outline","overflow","focusTracker","part","init","getComponent","assign","key","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","header","display","_onDidChangeExpansionState","_isExpanded","headerComponent","isHeaderVisible","accessor","ev","isPanelExpanded","renderOnce","expanded","body","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","lineHeight","minHeight","maxHeight","DraggablePaneviewPanel","_onDidDrop","_onUnhandledDragOverEvent","initDragFeatures","accessorId","draggable","handler","firedEvent","containerApi","existingPanel","allPanels","fromIndex","toIndex","ContentContainer","dropTargetContainer","dropTarget","theme","dndPanelOverlay","shiftKey","show","hide","renderPanel","asActive","doRender","isPanelActive","content","renderer","renderContainer","detatch","attach","referenceContainer","openPanel","closePanel","addGhostImage","ghostElement","setDragImage","TabDragHandler","Tab","_onPointDown","onPointerDown","_onDropped","dragHandler","getComputedStyle","newNode","getPropertyValue","getPropertyPriority","setContent","updateDragAndDropState","WillShowOverlayLocationEvent","kind","GroupDragHandler","dragEvent","bgColor","color","backgroundColor","padding","fontSize","borderRadius","textContent","VoidContainer","Scrollbar","scrollableElement","_scrollLeft","_horizontalScrollbar","deltaY","MouseWheelSpeed","calculateScrollbarStyles","originalClientX","originalScrollLeft","deltaX","onEnd","scrollLeft","_animationTimer","px","percentageComplete","Tabs","showTabsOverflowControl","_showTabsOverflowControl","_tabsList","_observerDisposable","hasOverflow","toggleDropdown","reset","_tabs","tabs","selectedIndex","_onTabDragStart","onTabDragStart","_onOverflowTabsChange","onOverflowTabsChange","scrollbars","scrollbar","button","tab","setActivePanel","runningWidth","isActivePanel","find","isFloatingGroupsEnabled","disableFloatingGroups","isFloatingWithOnePanel","inDragMode","addTab","tabToRemove","childPosition","parentPosition","isChildEntirelyVisibleWithinParent","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createChevronRightButton","TabsContainer","hidden","_hidden","dropdownPart","_overflowTabs","_dropdownDisposable","_onGroupDragStart","onGroupDragStart","singleTabMode","rightActionsContainer","leftActionsContainer","preActionsContainer","disableTabsOverflowList","voidContainer","onDidOptionsChange","setRightActionsElement","rightActions","setLeftActionsElement","leftActions","setPrefixActionsElement","preActions","_isGroupActive","updateClassnames","text","icon","createDropdownElementHandle","prepend","capture","panelObject","createTabRenderer","wrapper","popupService","close","scrollIntoView","relativeParent","zIndex","findRelativeZIndexParent","openPopover","DockviewUnhandledDragOverEvent","PROPERTY_KEYS_DOCKVIEW","floatingGroupBounds","popoutUrl","defaultRenderer","debug","rootOverlayModel","noPanelsOverlay","dndEdges","DockviewDidDropEvent","DockviewWillDropEvent","_kind","DockviewGroupPanelModel","_activePanel","_panels","isEmpty","hasWatermark","watermark","tabsContainer","isContentFocused","contentContainer","_location","groupPanel","_onDidLocationChange","mostRecentlyUsed","_overwriteRenderContainer","_overwriteDropTargetContainer","_panelDisposables","_onMove","onMove","_onWillDrop","_onDidAddPanel","_onDidPanelTitleChange","onDidPanelTitleChange","_onDidPanelParametersChange","onDidPanelParametersChange","_onDidRemovePanel","_onDidActivePanelChange","_api","hideHeader","handleDropEvent","focusContent","rerender","overlayRenderContainer","rootDropTargetContainer","doAddPanel","updateContainer","createRightHeaderActionComponent","_rightHeaderActions","createLeftHeaderActionComponent","_leftHeaderActions","createPrefixHeaderActionComponent","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","skipSetActive","updateParentGroup","doSetActivePanel","skipSetGroupActive","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isLast","removeEmptyGroup","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActiveGroup","hasExistingPanel","updateMru","onDidTitleChange","runEvents","createWatermarkComponent","willDropEvent","getKind","itemId","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","__minimumWidth","__minimumHeight","__maximumHeight","__maximumWidth","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_maximumWidth","_evaluatedMaximumWidth","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","MAX_SAFE_INTEGER","maximum","minimum","NOT_INITIALIZED_MESSAGE","DockviewGroupPanelApiImpl","_group","onDidLocationChange","getWindow","moveTo","moveGroupOrPanel","maximize","exitMaximized","DockviewGroupPanel","activePanelMinimumWidth","activePanelMinimumHeight","activePanelMaximumWidth","activePanelMaximumHeight","_model","constraints","themeDark","name","themeLight","themeVisualStudio","themeAbyss","themeDracula","themeReplit","gap","themeAbyssSpaced","dndOverlayMounting","themeLightSpaced","DockviewPanelApiImpl","oldGroup","_onDidGroupChange","setupGroupEventListeners","tabComponent","_tabComponent","_onDidTitleChange","_onDidActiveGroupChange","onDidGroupChange","_onDidRendererChange","onDidRendererChange","groupEventsDisposable","setTitle","setRenderer","previousGroup","_trackGroupActive","hasBecomeHidden","hasBecomeVisible","DockviewPanel","_title","_renderer","contentComponent","isPanelVisible","DefaultTab","_content","action","render","DockviewPanelModel","_tab","createContentComponent","createTabComponent","tabLocation","cmp","_updateEvent","componentName","createComponent","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","arialLevelTracker","_orderedList","destroy","setAttribute","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bottom","right","bringToFront","verticalAlignment","horiziontalAlignment","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","parseFloat","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DEFAULT_FLOATING_GROUP_POSITION","PositionCache","cache","currentFrameId","rafId","getPosition","cached","frameId","scheduleFrameUpdate","invalidate","OverlayRenderContainer","positionCache","pendingUpdates","updateAllPositions","createFocusableElement","focusContainer","box2","visibilityChanged","observerDisposable","correctLayerPosition","floatingGroup","floatingGroups","level","getAttribute","MutationObserver","attributeFilter","attributes","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","apply","PopoutWindow","_window","_onWillClose","onWillClose","_onDidClose","onDidClose","dimensions","screenX","screenY","innerWidth","innerHeight","open","url","features","entries","join","externalWindow","createPopoutWindowContainer","onDidOpen","externalDocument","styleSheetList","styleSheets","styleSheet","href","link","rel","head","cssTexts","cssRules","rule","cssText","err","createTextNode","addStyles","StrictEventsSequencing","PopupService","_active","_activeDisposable","anchorBox","offsetX","offsetY","HTMLElement","buffer","rootRect","translateX","translateY","shiftAbsoluteElementIntoView","DropTargetAnchorContainer","exists","_outline","anchor","createAnchor","targetBox","DEFAULT_ROOT_OVERLAY_MODEL","moveGroupWithoutDestroying","removedPanel","DockviewComponent","flatMap","_options","_floatingGroups","popoutRestorationPromise","_popoutRestorationPromise","nextGroupId","_deserializer","_watermark","_onWillDragPanel","_onWillDragGroup","_onDidPopoutGroupSizeChange","_onDidPopoutGroupPositionChange","_onDidOpenPopoutWindowFail","_onDidLayoutFromJSON","_onDidMovePanel","_onDidMaximizedGroupChange","_popoutGroups","_onDidRemoveGroup","_onDidAddGroup","_onDidOptionsChange","_moving","_themeClassnames","_rootDropTarget","updateDropTargetModel","updateTheme","updateWatermark","orthogonalize","itemToPopout","toClassList","list","cls","startsWith","getDockviewTheme","overridePopoutGroup","getNextGroupId","popoutWindowDisposable","popoutContainer","referenceGroup","referenceLocation","isGroupAddedToDom","createGroup","error","movingLock","gready","floatingBox","returnedGroup","doSetGroupAndPanelActive","isValidReferenceGroup","popoutGroup","_onDidWindowPositionChange","emitter","timeout","previousScreenX","previousScreenY","checkMovement","closed","currentScreenX","currentScreenY","onDidWindowMoveEnd","resizeTimeout","onDidWindowResizeEnd","skipPopoutAssociated","skipPopoutReturn","catch","popoutReferenceGroupId","popoutReferenceGroup","skipRemoveGroup","anchoredBox","getAnchoredBox","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","skipActiveGroup","createGroupAtLocation","oldDisableDnd","floating","includePanel","collection","floats","popoutGroups","gridReferenceGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","serializedPopoutGroups","popoutPromises","serializedPopoutGroup","popoutPromise","all","hasActiveGroup","initial","initialWidth","initialHeight","referencePanel","findGroup","isPanelOptionsWithGroup","createPanel","inactive","floatingGroupOptions","relativeLocation","orientationAtLocation","coordinates","watermarkContainer","isGroupOptionsWithGroup","selectedGroup","refGroup","removedGroup","re","isMoving","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","newGroup","targetGroup","updatedReferenceLocation","dropLocation","isDestinationGroupEmpty","moveGroup","selectedFloatingGroup","selectedPopoutGroup","targetFloatingGroup","GridviewComponent","_onDidLayoutfromJSON","hasOrientationChanged","serializedGridview","queue","registerPanel","f","reference","groupItem","SplitviewComponent","_splitview","_splitviewChangeDisposable","_onDidLayoutChange","skipFocus","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","MAXIMUM_BODY_SIZE","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","createHeaderComponent","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","createDockview","createSplitview","createGridview","createPaneview","ReactComponentBridge","props","ref","triggerRender","React","_props","componentProps","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","$$typeof","bridgeComponent","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","existingPortals","DockviewDisposable","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","prevProps","changes","propKey","propValue","frameworkTabComponents","tabComponents","frameworkOptions","leftHeaderActionsComponent","rightHeaderActionsComponent","prefixHeaderActionsComponent","components","watermarkComponent","obj","extractCoreOptions","onReady","CloseButton","viewBox","focusable","__rest","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","DockviewDefaultTab","_containerApi","hideClose","closeActionOverride","onPointerUp","onPointerLeave","useTitle","isMiddleMouseButton","onClose","onBtnPointerDown","_onPointerDown","_onPointerUp","_onPointerLeave","onClick","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","headerComponents","AdmonitionContainer","_jsx","clsx","ThemeClassNames","common","admonition","admonitionType","AdmonitionHeading","_ref2","admonitionHeading","admonitionIcon","AdmonitionContent","_ref3","admonitionContent","AdmonitionLayout","_jsxs","AdmonitionIconNote","fillRule","defaultProps","IconNote","Translate","description","AdmonitionTypeNote","AdmonitionIconTip","IconTip","AdmonitionTypeTip","AdmonitionIconInfo","IconInfo","AdmonitionTypeInfo","AdmonitionIconCaution","IconWarning","AdmonitionIconDanger","IconDanger","note","tip","info","warning","danger","secondary","important","success","caution","Admonition","unprocessedProps","processAdmonitionProps","AdmonitionTypeComponent","AdmonitionTypes","DocItemContent","syntheticTitle","metadata","frontMatter","contentTitle","useDoc","hide_title","useSyntheticTitle","docs","docMarkdown","Heading","as","justifyContent","FrameworkSelector","MDXContent","DocItemLayout","docTOC","toc","windowSize","useWindowSize","hide_table_of_contents","canRender","mobile","DocItemTOCMobile","desktop","DocItemTOCDesktop","useDocTOC","unlisted","docItemCol","Unlisted","DocVersionBanner","docItemContainer","DocBreadcrumbs","DocVersionBadge","DocItemFooter","DocItemPaginator","MDXComponents","FrameworkSpecific","CodeRunner","frameworks","label","activeFrameworkGlobal","useActiveFramework","setValue","localStorage","getItem","setter","setItem","FrameworkSelector1","activeFramework","setActiveFramework","DropdownMenu","asChild","src","useBaseUrl","marginRight","side","align","sideOffset","framework","paddingRight","BrowserOnly","FrameworkSpecific1","_CodeRunner","frameworkName","toLowerCase"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/js/17896441.d364d81b.js","mappings":"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","sources":["webpack://dockview-docs/../dockview-core/dist/esm/dnd/dataTransfer.js","webpack://dockview-docs/../dockview-core/dist/esm/events.js","webpack://dockview-docs/../dockview-core/dist/esm/lifecycle.js","webpack://dockview-docs/../dockview-core/dist/esm/dom.js","webpack://dockview-docs/../dockview-core/dist/esm/array.js","webpack://dockview-docs/../dockview-core/dist/esm/math.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/viewItem.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/leafNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/branchNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/resizable.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/baseComponentGridview.js","webpack://dockview-docs/../dockview-core/dist/esm/api/component.api.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/abstractDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dnd.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/droptarget.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/api/panelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/splitviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/paneviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/basePanelView.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/panel/content.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/ghost.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/tab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/events.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/groupDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/scrollbar.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabs.js","webpack://dockview-docs/../dockview-core/dist/esm/svg.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabOverflowControl.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/gridviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/theme.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/deserializer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/watermark/watermark.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlay.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/constants.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlayRenderContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/popoutWindow.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/strictEventsSequencing.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/popupService.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dropTargetAnchorContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/entryPoints.js","webpack://dockview-docs/../dockview/dist/esm/react.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactContentPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactHeaderPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactWatermarkPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/headerActionsRenderer.js","webpack://dockview-docs/../dockview/dist/esm/dockview/dockview.js","webpack://dockview-docs/../dockview/dist/esm/svg.js","webpack://dockview-docs/../dockview/dist/esm/dockview/defaultTab.js","webpack://dockview-docs/../dockview/dist/esm/splitview/view.js","webpack://dockview-docs/../dockview/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview/dist/esm/gridview/view.js","webpack://dockview-docs/../dockview/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview/dist/esm/paneview/view.js","webpack://dockview-docs/../dockview/dist/esm/paneview/paneview.js","webpack://dockview-docs/./src/theme/Admonition/Layout/styles.module.css","webpack://dockview-docs/./src/theme/Admonition/Layout/index.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Note.js","webpack://dockview-docs/./src/theme/Admonition/Type/Note.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Tip.js","webpack://dockview-docs/./src/theme/Admonition/Type/Tip.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Info.js","webpack://dockview-docs/./src/theme/Admonition/Type/Info.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Warning.js","webpack://dockview-docs/./src/theme/Admonition/Type/Warning.js","webpack://dockview-docs/./src/theme/Admonition/Icon/Danger.js","webpack://dockview-docs/./src/theme/Admonition/Type/Danger.js","webpack://dockview-docs/./src/theme/Admonition/Type/Caution.js","webpack://dockview-docs/./src/theme/Admonition/Types.js","webpack://dockview-docs/./src/theme/Admonition/index.js","webpack://dockview-docs/./src/theme/DocItem/Content/index.js","webpack://dockview-docs/./src/theme/DocItem/Layout/styles.module.css","webpack://dockview-docs/./src/theme/DocItem/Layout/index.js","webpack://dockview-docs/./src/theme/MDXComponents.js","webpack://dockview-docs/./src/components/frameworkSpecific.tsx","webpack://dockview-docs/./src/components/ui/codeRunner.tsx"],"sourcesContent":["class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nexport class AcceptableEvent {\n constructor() {\n this._isAccepted = false;\n }\n get isAccepted() {\n return this._isAccepted;\n }\n accept() {\n this._isAccepted = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn('dockview: stacktrace', this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `dockview: listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n var _a;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) {\n this._last = e;\n }\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn('dockview: stacktrace', (_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\n/**\n *\n * Event Emitter that fires events from a Microtask callback, only one event will fire per event-loop cycle.\n *\n * It's kind of like using an `asapScheduler` in RxJs with additional logic to only fire once per event-loop cycle.\n * This implementation exists to avoid external dependencies.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask\n * @see https://rxjs.dev/api/index/const/asapScheduler\n */\nexport class AsapEvent {\n constructor() {\n this._onFired = new Emitter();\n this._currentFireCount = 0;\n this._queued = false;\n this.onEvent = (e) => {\n /**\n * when the event is first subscribed to take note of the current fire count\n */\n const fireCountAtTimeOfEventSubscription = this._currentFireCount;\n return this._onFired.event(() => {\n /**\n * if the current fire count is greater than the fire count at event subscription\n * then the event has been fired since we subscribed and it's ok to \"on_next\" the event.\n *\n * if the count is not greater then what we are recieving is an event from the microtask\n * queue that was triggered before we actually subscribed and therfore we should ignore it.\n */\n if (this._currentFireCount > fireCountAtTimeOfEventSubscription) {\n e();\n }\n });\n };\n }\n fire() {\n this._currentFireCount++;\n if (this._queued) {\n return;\n }\n this._queued = true;\n queueMicrotask(() => {\n this._queued = false;\n this._onFired.fire();\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","import { Emitter, addDisposableListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class OverflowObserver extends CompositeDisposable {\n constructor(el) {\n super();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._value = null;\n this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {\n const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;\n const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;\n this._value = { hasScrollX, hasScrollY };\n this._onDidChange.fire(this._value);\n }));\n }\n}\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag, document) {\n return Array.prototype.slice.call(document.querySelectorAll(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\nexport function addTestId(element, id) {\n element.setAttribute('data-testid', id);\n}\n/**\n * Should be more efficient than element.querySelectorAll(\"*\") since there\n * is no need to store every element in-memory using this approach\n */\nfunction allTagsNamesInclusiveOfShadowDoms(tagNames) {\n const iframes = [];\n function findIframesInNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (tagNames.includes(node.tagName)) {\n iframes.push(node);\n }\n if (node.shadowRoot) {\n findIframesInNode(node.shadowRoot);\n }\n for (const child of node.children) {\n findIframesInNode(child);\n }\n }\n }\n findIframesInNode(document.documentElement);\n return iframes;\n}\nexport function disableIframePointEvents(rootNode = document) {\n const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);\n const original = new WeakMap(); // don't hold onto HTMLElement references longer than required\n for (const iframe of iframes) {\n original.set(iframe, iframe.style.pointerEvents);\n iframe.style.pointerEvents = 'none';\n }\n return {\n release: () => {\n var _a;\n for (const iframe of iframes) {\n iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';\n }\n iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required\n },\n };\n}\nexport function getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nexport class Classnames {\n constructor(element) {\n this.element = element;\n this._classNames = [];\n }\n setClassNames(classNames) {\n for (const className of this._classNames) {\n toggleClass(this.element, className, false);\n }\n this._classNames = classNames\n .split(' ')\n .filter((v) => v.trim().length > 0);\n for (const className of this._classNames) {\n toggleClass(this.element, className, true);\n }\n }\n}\nconst DEBOUCE_DELAY = 100;\nexport function isChildEntirelyVisibleWithinParent(child, parent) {\n //\n const childPosition = getDomNodePagePosition(child);\n const parentPosition = getDomNodePagePosition(parent);\n if (childPosition.left < parentPosition.left) {\n return false;\n }\n if (childPosition.left + childPosition.width >\n parentPosition.left + parentPosition.width) {\n return false;\n }\n return true;\n}\nexport function onDidWindowMoveEnd(window) {\n const emitter = new Emitter();\n let previousScreenX = window.screenX;\n let previousScreenY = window.screenY;\n let timeout;\n const checkMovement = () => {\n if (window.closed) {\n return;\n }\n const currentScreenX = window.screenX;\n const currentScreenY = window.screenY;\n if (currentScreenX !== previousScreenX ||\n currentScreenY !== previousScreenY) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n emitter.fire();\n }, DEBOUCE_DELAY);\n previousScreenX = currentScreenX;\n previousScreenY = currentScreenY;\n }\n requestAnimationFrame(checkMovement);\n };\n checkMovement();\n return emitter;\n}\nexport function onDidWindowResizeEnd(element, cb) {\n let resizeTimeout;\n const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n cb();\n }, DEBOUCE_DELAY);\n }));\n return disposable;\n}\nexport function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {\n const buffer = options.buffer;\n const rect = element.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n let translateX = 0;\n let translateY = 0;\n const left = rect.left - rootRect.left;\n const top = rect.top - rootRect.top;\n const bottom = rect.bottom - rootRect.bottom;\n const right = rect.right - rootRect.right;\n // Check horizontal overflow\n if (left < buffer) {\n translateX = buffer - left;\n }\n else if (right > buffer) {\n translateX = -buffer - right;\n }\n // Check vertical overflow\n if (top < buffer) {\n translateY = buffer - top;\n }\n else if (bottom > buffer) {\n translateY = -bottom - buffer;\n }\n // Apply the translation if needed\n if (translateX !== 0 || translateY !== 0) {\n element.style.transform = `translate(${translateX}px, ${translateY}px)`;\n }\n}\nexport function findRelativeZIndexParent(el) {\n let tmp = el;\n while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {\n tmp = tmp.parentElement;\n }\n return tmp;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n /**\n * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle\n * cases where `min` > `max` and in those cases return `min`.\n */\n return min;\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'dv-horizontal', 'dv-vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);\n }\n constructor(container, options) {\n var _a, _b;\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._margin = 0;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = this.createContainer();\n this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'dv-separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'dv-separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'dv-view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'dv-sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = disableIframePointEvents();\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n iframes.release();\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n /**\n * Margin explain:\n *\n * For `n` views in a splitview there will be `n-1` margins `m`.\n *\n * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.\n *\n * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.\n */\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.updateSashEnablement();\n if (this.viewItems.length === 0) {\n return;\n }\n const visibleViewItems = this.viewItems.filter((i) => i.visible);\n const sashCount = Math.max(0, visibleViewItems.length - 1);\n const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);\n let totalLeftOffset = 0;\n const viewLeftOffsets = [];\n const sashWidth = 4; // hardcoded in css\n const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {\n const flag = viewItem.visible ? 1 : 0;\n if (i === 0) {\n arr.push(flag);\n }\n else {\n arr.push(arr[i - 1] + flag);\n }\n return arr;\n }, []);\n // calculate both view and cash positions\n this.viewItems.forEach((view, i) => {\n totalLeftOffset += this.viewItems[i].size;\n viewLeftOffsets.push(totalLeftOffset);\n const size = view.visible ? view.size - marginReducedSize : 0;\n const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);\n const offset = i === 0 || visiblePanelsBeforeThisView === 0\n ? 0\n : viewLeftOffsets[i - 1] +\n (visiblePanelsBeforeThisView / sashCount) *\n marginReducedSize;\n if (i < this.viewItems.length - 1) {\n // calculate sash position\n const newSize = view.visible\n ? offset + size - sashWidth / 2 + this.margin / 2\n : offset;\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${newSize}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${newSize}px`;\n }\n }\n // calculate view position\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${size}px`;\n view.container.style.left = `${offset}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${size}px`;\n view.container.style.top = `${offset}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size - marginReducedSize, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'dv-view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'dv-sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical';\n element.className = `dv-split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","export const PROPERTY_KEYS_SPLITVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n orientation: undefined,\n descriptor: undefined,\n proportionalLayout: undefined,\n styles: undefined,\n margin: undefined,\n disableAutoResizing: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'dv-pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'dv-animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'dv-animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n get margin() {\n return this.splitview.margin;\n }\n set margin(value) {\n this.splitview.margin = value;\n this.children.forEach((child) => {\n if (child instanceof BranchNode) {\n child.margin = value;\n }\n });\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'dv-branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n margin,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n margin,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(_visible) {\n // noop\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n // }\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire({ visible });\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange(({ visible }) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction cloneNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(node.orientation, node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n result.addChild(cloneNode(child, child.size, child.orthogonalSize), child.size, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, node.orientation, orthogonalSize);\n }\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bdv-grid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n this.root.margin = value;\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n serializeBranchNode(this.getView(), this.orientation);\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire({\n view: node.view,\n isMaximized: true,\n });\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n const tmp = this._maximizedNode.leaf;\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire({\n view: tmp.view,\n isMaximized: false,\n });\n }\n serialize() {\n const maximizedView = this.maximizedView();\n let maxmizedViewLocation;\n if (maximizedView) {\n /**\n * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid\n * which is represented as a branch of indices\n */\n maxmizedViewLocation = getGridLocation(maximizedView.element);\n }\n if (this.hasMaximizedView()) {\n /**\n * the saved layout cannot be in its maxmized state otherwise all of the underlying\n * view dimensions will be wrong\n *\n * To counteract this we temporaily remove the maximized view to compute the serialized output\n * of the grid before adding back the maxmized view as to not alter the layout from the users\n * perspective when `.toJSON()` is called\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n const resullt = {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n if (maxmizedViewLocation) {\n resullt.maximizedNode = {\n location: maxmizedViewLocation,\n };\n }\n if (maximizedView) {\n // replace any maximzied view that was removed for serialization purposes\n this.maximizeView(maximizedView);\n }\n return resullt;\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this._onDidViewVisibilityChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n /**\n * The deserialied layout must be positioned through this.layout(...)\n * before any maximizedNode can be positioned\n */\n this.layout(json.width, json.height);\n if (json.maximizedNode) {\n const location = json.maximizedNode.location;\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n this.maximizeView(node.view);\n }\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n var _a;\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this.locked, this.margin, children);\n }\n else {\n const view = deserializer.fromJSON(node);\n if (typeof node.visible === 'boolean') {\n (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);\n }\n result = new LeafNode(view, orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n normalize() {\n if (!this._root) {\n return;\n }\n if (this._root.children.length !== 1) {\n return;\n }\n const oldRoot = this.root;\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n if (childReference instanceof LeafNode) {\n return;\n }\n oldRoot.element.remove();\n const child = oldRoot.removeChild(0); // Remove child to prevent double disposal\n oldRoot.dispose(); // Dispose old root (won't dispose removed child)\n child.dispose(); // Dispose the removed child\n this._root = cloneNode(childReference, childReference.size, childReference.orthogonalSize);\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation, locked, margin) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._margin = 0;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidViewVisibilityChange = new Emitter();\n this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'dv-grid-view';\n this._locked = locked !== null && locked !== void 0 ? locked : false;\n this._margin = margin !== null && margin !== void 0 ? margin : 0;\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n this._onDidViewVisibilityChange.fire();\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","export const PROPERTY_KEYS_GRIDVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n proportionalLayout: undefined,\n orientation: undefined,\n hideBorders: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, AsapEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidMaximizedChange = new Emitter();\n this.onDidMaximizedChange = this._onDidMaximizedChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new AsapEvent();\n this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;\n this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();\n this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {\n this._onDidMaximizedChange.fire({\n panel: event.view,\n isMaximized: event.isMaximized,\n });\n }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.layout(this.width, this.height, true);\n }), Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._onDidMaximizedChange, this._onDidViewVisibilityChangeMicroTaskQueue, this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._bufferOnDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n updateOptions(options) {\n var _a, _b, _c, _d;\n if (typeof options.proportionalLayout === 'boolean') {\n // this.gridview.proportionalLayout = options.proportionalLayout; // not supported\n }\n if (options.orientation) {\n this.gridview.orientation = options.orientation;\n }\n if ('styles' in options) {\n // this.gridview.styles = options.styles; // not supported\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;\n }\n if ('locked' in options) {\n this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;\n }\n if ('margin' in options) {\n this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;\n }\n if ('className' in options) {\n this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');\n }\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize || width !== this.width || height !== this.height;\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","export class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n get onDidMovePanel() {\n return this.component.onDidMovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n get onDidPopoutGroupSizeChange() {\n return this.component.onDidPopoutGroupSizeChange;\n }\n get onDidPopoutGroupPositionChange() {\n return this.component.onDidPopoutGroupPositionChange;\n }\n get onDidOpenPopoutWindowFail() {\n return this.component.onDidOpenPopoutWindowFail;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, options) {\n return this.component.addFloatingGroup(item, options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\n","import { disableIframePointEvents } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el, disabled) {\n super();\n this.el = el;\n this.disabled = disabled;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n setDisabled(disabled) {\n this.disabled = disabled;\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event) || this.disabled) {\n event.preventDefault();\n return;\n }\n const iframes = disableIframePointEvents();\n this.pointerEventsDisposable.value = {\n dispose: () => {\n iframes.release();\n },\n };\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n setTimeout(() => {\n this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing\n }, 0);\n }));\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nfunction setGPUOptimizedBounds(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Use traditional positioning but maintain GPU layer\n element.style.top = topPx;\n element.style.left = leftPx;\n element.style.width = widthPx;\n element.style.height = heightPx;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction setGPUOptimizedBoundsFromStrings(element, bounds) {\n const { top, left, width, height } = bounds;\n // Use traditional positioning but maintain GPU layer\n element.style.top = top;\n element.style.left = left;\n element.style.width = width;\n element.style.height = height;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction checkBoundsChanged(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Check if position or size changed (back to traditional method)\n return element.style.top !== topPx ||\n element.style.left !== leftPx ||\n element.style.width !== widthPx ||\n element.style.height !== heightPx;\n}\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._disabled = false;\n // use a set to take advantage of #.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => {\n var _a, _b, _c;\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();\n },\n onDragOver: (e) => {\n var _a, _b, _c, _d, _e, _f, _g;\n Droptarget.ACTUAL_TARGET = this;\n const overrideTarget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this._acceptedTargetZonesSet.size === 0) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;\n const width = target.offsetWidth;\n const height = target.offsetHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;\n const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n if (!this.options.canDisplayOverlay(e, quadrant)) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (overrideTarget) {\n //\n }\n else if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'dv-drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'dv-drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n target.classList.add('dv-drop-target');\n target.append(this.targetElement);\n // this.overlayElement.style.opacity = '0';\n // requestAnimationFrame(() => {\n // if (this.overlayElement) {\n // this.overlayElement.style.opacity = '';\n // }\n // });\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target) {\n return;\n }\n this.removeDropTarget();\n },\n onDragEnd: (e) => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target && Droptarget.ACTUAL_TARGET === this) {\n if (this._state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({\n position: this._state,\n nativeEvent: e,\n });\n }\n }\n this.removeDropTarget();\n target === null || target === void 0 ? void 0 : target.clear();\n },\n onDrop: (e) => {\n var _a, _b, _c;\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b, _c, _d, _e, _f, _g;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!target && !this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n if (target) {\n const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;\n const elBox = outlineEl.getBoundingClientRect();\n const ta = target.getElements(undefined, outlineEl);\n const el = ta.root;\n const overlay = ta.overlay;\n const bigbox = el.getBoundingClientRect();\n const rootTop = elBox.top - bigbox.top;\n const rootLeft = elBox.left - bigbox.left;\n const box = {\n top: rootTop,\n left: rootLeft,\n width: width,\n height: height,\n };\n if (rightClass) {\n box.left = rootLeft + width * (1 - size);\n box.width = width * size;\n }\n else if (leftClass) {\n box.width = width * size;\n }\n else if (topClass) {\n box.height = height * size;\n }\n else if (bottomClass) {\n box.top = rootTop + height * (1 - size);\n box.height = height * size;\n }\n if (isSmallX && isLeft) {\n box.width = 4;\n }\n if (isSmallX && isRight) {\n box.left = rootLeft + width - 4;\n box.width = 4;\n }\n // Use GPU-optimized bounds checking and setting\n if (!checkBoundsChanged(overlay, box)) {\n return;\n }\n setGPUOptimizedBounds(overlay, box);\n overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;\n toggleClass(overlay, 'dv-drop-target-left', isLeft);\n toggleClass(overlay, 'dv-drop-target-right', isRight);\n toggleClass(overlay, 'dv-drop-target-top', isTop);\n toggleClass(overlay, 'dv-drop-target-bottom', isBottom);\n toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');\n if (ta.changed) {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);\n setTimeout(() => {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);\n }, 10);\n }\n return;\n }\n if (!this.overlayElement) {\n return;\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n setGPUOptimizedBoundsFromStrings(this.overlayElement, box);\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n var _a;\n if (this.targetElement) {\n this._state = undefined;\n (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');\n this.targetElement.remove();\n this.targetElement = undefined;\n this.overlayElement = undefined;\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { AcceptableEvent } from '../events';\nexport const PROPERTY_KEYS_PANEVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n disableDnd: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\nexport class PaneviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, position, getData, panel) {\n super();\n this.nativeEvent = nativeEvent;\n this.position = position;\n this.getData = getData;\n this.panel = panel;\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id, component) {\n super();\n this.id = id;\n this.component = component;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this._parameters = {};\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onDidParametersChange = new Emitter();\n this.onDidParametersChange = this._onDidParametersChange.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);\n }\n getParameters() {\n return this._parameters;\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {\n this._parameters = parameters;\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onDidParametersChange.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id, component) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id, component) {\n super(id, component);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(options) {\n super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = 0;\n this._size = 0;\n this._isExpanded = false;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this.headerSize = options.headerSize;\n this.headerComponent = options.headerComponent;\n this._minimumBodySize = options.minimumBodySize;\n this._maximumBodySize = options.maximumBodySize;\n this._isExpanded = options.isExpanded;\n this._headerVisible = options.isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = options.orientation;\n this.element.classList.add('dv-pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'dv-pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'dv-pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewUnhandledDragOverEvent, } from './options';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(options) {\n super({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n isHeaderVisible: true,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.accessor = options.accessor;\n this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);\n if (!options.disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event, position) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n const firedEvent = new PaneviewUnhandledDragOverEvent(event, position, getPaneData, this);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n const target = group.dropTargetContainer;\n this.dropTarget = new Droptarget(this.element, {\n getOverlayOutline: () => {\n var _a;\n return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'\n ? this.element.parentElement\n : null;\n },\n className: 'dv-drop-target-content',\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n return true;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n getOverrideTarget: target ? () => target.model : undefined,\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisible':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n default:\n throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisible') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement, options) {\n var _a, _b;\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n // move the element off-screen initially otherwise it may in some cases be rendered at (0,0) momentarily\n ghostElement.style.top = '-9999px';\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nimport { addGhostImage } from '../../../dnd/ghost';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onPointDown = new Emitter();\n this.onPointerDown = this._onPointDown.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tab';\n this._element.tabIndex = 0;\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this.element, 'dv-inactive-tab', true);\n this.dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['left', 'right'],\n overlayModel: { activationSize: { value: 50, type: 'percentage' } },\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, this.dragHandler.onDragStart((event) => {\n if (event.dataTransfer) {\n const style = getComputedStyle(this.element);\n const newNode = this.element.cloneNode(true);\n Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));\n newNode.style.position = 'absolute';\n addGhostImage(event.dataTransfer, newNode, {\n y: -10,\n x: 30,\n });\n }\n this._onDragStart.fire(event);\n }), this.dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {\n this._onPointDown.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'dv-active-tab', isActive);\n toggleClass(this.element, 'dv-inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n this.dragHandler.setDisabled(!!this.accessor.options.disableDnd);\n }\n dispose() {\n super.dispose();\n }\n}\n","export class WillShowOverlayLocationEvent {\n get kind() {\n return this.options.kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n get panel() {\n return this.options.panel;\n }\n get api() {\n return this.options.api;\n }\n get group() {\n return this.options.group;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n getData() {\n return this.options.getData();\n }\n constructor(event, options) {\n this.event = event;\n this.options = options;\n }\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'pointerdown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.style.pointerEvents = 'none';\n ghostElement.style.top = '-9999px';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { toggleClass } from '../../../dom';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-void-container';\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n this.handler = new GroupDragHandler(this._element, accessor, group, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this.handler, this.handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTarget);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.handler.setDisabled(!!this.accessor.options.disableDnd);\n }\n}\n","import { toggleClass, watchElementResize } from './dom';\nimport { addDisposableListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nimport { clamp } from './math';\nexport class Scrollbar extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(scrollableElement) {\n super();\n this.scrollableElement = scrollableElement;\n this._scrollLeft = 0;\n this._element = document.createElement('div');\n this._element.className = 'dv-scrollable';\n this._horizontalScrollbar = document.createElement('div');\n this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';\n this.element.appendChild(scrollableElement);\n this.element.appendChild(this._horizontalScrollbar);\n this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {\n this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;\n this.calculateScrollbarStyles();\n }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {\n event.preventDefault();\n toggleClass(this.element, 'dv-scrollable-scrolling', true);\n const originalClientX = event.clientX;\n const originalScrollLeft = this._scrollLeft;\n const onPointerMove = (event) => {\n const deltaX = event.clientX - originalClientX;\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const p = clientWidth / scrollWidth;\n this._scrollLeft = originalScrollLeft + deltaX / p;\n this.calculateScrollbarStyles();\n };\n const onEnd = () => {\n toggleClass(this.element, 'dv-scrollable-scrolling', false);\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onEnd);\n document.removeEventListener('pointercancel', onEnd);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onEnd);\n document.addEventListener('pointercancel', onEnd);\n }), addDisposableListener(this.element, 'scroll', () => {\n this.calculateScrollbarStyles();\n }), addDisposableListener(this.scrollableElement, 'scroll', () => {\n this._scrollLeft = this.scrollableElement.scrollLeft;\n this.calculateScrollbarStyles();\n }), watchElementResize(this.element, () => {\n toggleClass(this.element, 'dv-scrollable-resizing', true);\n if (this._animationTimer) {\n clearTimeout(this._animationTimer);\n }\n this._animationTimer = setTimeout(() => {\n clearTimeout(this._animationTimer);\n toggleClass(this.element, 'dv-scrollable-resizing', false);\n }, 500);\n this.calculateScrollbarStyles();\n }));\n }\n calculateScrollbarStyles() {\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const hasScrollbar = scrollWidth > clientWidth;\n if (hasScrollbar) {\n const px = clientWidth * (clientWidth / scrollWidth);\n this._horizontalScrollbar.style.width = `${px}px`;\n this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);\n this.scrollableElement.scrollLeft = this._scrollLeft;\n const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);\n this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;\n }\n else {\n this._horizontalScrollbar.style.width = `0px`;\n this._horizontalScrollbar.style.left = `0px`;\n this._scrollLeft = 0;\n }\n }\n}\nScrollbar.MouseWheelSpeed = 1;\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../dom';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { Scrollbar } from '../../../scrollbar';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { Tab } from '../tab/tab';\nexport class Tabs extends CompositeDisposable {\n get showTabsOverflowControl() {\n return this._showTabsOverflowControl;\n }\n set showTabsOverflowControl(value) {\n if (this._showTabsOverflowControl == value) {\n return;\n }\n this._showTabsOverflowControl = value;\n if (value) {\n const observer = new OverflowObserver(this._tabsList);\n this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {\n const hasOverflow = event.hasScrollX || event.hasScrollY;\n this.toggleDropdown({ reset: !hasOverflow });\n }), addDisposableListener(this._tabsList, 'scroll', () => {\n this.toggleDropdown({ reset: false });\n }));\n }\n }\n get element() {\n return this._element;\n }\n get panels() {\n return this._tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this._tabs.length;\n }\n get tabs() {\n return this._tabs.map((_) => _.value);\n }\n constructor(group, accessor, options) {\n super();\n this.group = group;\n this.accessor = accessor;\n this._observerDisposable = new MutableDisposable();\n this._tabs = [];\n this.selectedIndex = -1;\n this._showTabsOverflowControl = false;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onOverflowTabsChange = new Emitter();\n this.onOverflowTabsChange = this._onOverflowTabsChange.event;\n this._tabsList = document.createElement('div');\n this._tabsList.className = 'dv-tabs-container dv-horizontal';\n this.showTabsOverflowControl = options.showTabsOverflowControl;\n if (accessor.options.scrollbars === 'native') {\n this._element = this._tabsList;\n }\n else {\n const scrollbar = new Scrollbar(this._tabsList);\n this._element = scrollbar.element;\n this.addDisposables(scrollbar);\n }\n this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }), Disposable.from(() => {\n for (const { value, disposable } of this._tabs) {\n disposable.dispose();\n value.dispose();\n }\n this._tabs = [];\n }));\n }\n indexOf(id) {\n return this._tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this._tabs[this.selectedIndex].value === tab);\n }\n setActivePanel(panel) {\n let runningWidth = 0;\n for (const tab of this._tabs) {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n if (isActivePanel) {\n const element = tab.value.element;\n const parentElement = element.parentElement;\n if (runningWidth < parentElement.scrollLeft ||\n runningWidth + element.clientWidth >\n parentElement.scrollLeft + parentElement.clientWidth) {\n parentElement.scrollLeft = runningWidth;\n }\n }\n runningWidth += tab.value.element.clientWidth;\n }\n }\n openPanel(panel, index = this._tabs.length) {\n if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onPointerDown((event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n inDragMode: true,\n });\n return;\n }\n switch (event.button) {\n case 0: // left click or touch\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n break;\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this._tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'tab',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n delete(id) {\n const index = this.indexOf(id);\n const tabToRemove = this._tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n addTab(tab, index = this._tabs.length) {\n if (index < 0 || index > this._tabs.length) {\n throw new Error('invalid location');\n }\n this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);\n this._tabs = [\n ...this._tabs.slice(0, index),\n tab,\n ...this._tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n toggleDropdown(options) {\n const tabs = options.reset\n ? []\n : this._tabs\n .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))\n .map((x) => x.value.panel.id);\n this._onOverflowTabsChange.fire({ tabs, reset: options.reset });\n }\n updateDragAndDropState() {\n for (const tab of this._tabs) {\n tab.value.updateDragAndDropState();\n }\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dv-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { VoidContainer } from './voidContainer';\nimport { findRelativeZIndexParent, toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Tabs } from './tabs';\nimport { createDropdownElementHandle, } from './tabOverflowControl';\nexport class TabsContainer extends CompositeDisposable {\n get onTabDragStart() {\n return this.tabs.onTabDragStart;\n }\n get panels() {\n return this.tabs.panels;\n }\n get size() {\n return this.tabs.size;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._hidden = false;\n this.dropdownPart = null;\n this._overflowTabs = [];\n this._dropdownDisposable = new MutableDisposable();\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'dv-right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'dv-left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'dv-pre-actions-container';\n this.tabs = new Tabs(group, accessor, {\n showTabsOverflowControl: !accessor.options.disableTabsOverflowList,\n });\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabs.element);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.tabs.onDrop((e) => this._onDrop.fire(e)), this.tabs.onWillShowOverlay((e) => this._onWillShowOverlay.fire(e)), accessor.onDidOptionsChange(() => {\n this.tabs.showTabsOverflowControl =\n !accessor.options.disableTabsOverflowList;\n }), this.tabs.onOverflowTabsChange((event) => {\n this.toggleDropdown(event);\n }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.size,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n inDragMode: true,\n });\n }\n }));\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n isActive(tab) {\n return this.tabs.isActive(tab);\n }\n indexOf(id) {\n return this.tabs.indexOf(id);\n }\n setActive(_isGroupActive) {\n // noop\n }\n delete(id) {\n this.tabs.delete(id);\n this.updateClassnames();\n }\n setActivePanel(panel) {\n this.tabs.setActivePanel(panel);\n }\n openPanel(panel, index = this.tabs.size) {\n this.tabs.openPanel(panel, index);\n this.updateClassnames();\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n updateClassnames() {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n toggleDropdown(options) {\n const tabs = options.reset ? [] : options.tabs;\n this._overflowTabs = tabs;\n if (this._overflowTabs.length > 0 && this.dropdownPart) {\n this.dropdownPart.update({ tabs: tabs.length });\n return;\n }\n if (this._overflowTabs.length === 0) {\n this._dropdownDisposable.dispose();\n return;\n }\n const root = document.createElement('div');\n root.className = 'dv-tabs-overflow-dropdown-root';\n const part = createDropdownElementHandle();\n part.update({ tabs: tabs.length });\n this.dropdownPart = part;\n root.appendChild(part.element);\n this.rightActionsContainer.prepend(root);\n this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {\n var _a, _b;\n root.remove();\n (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.dropdownPart = null;\n }), addDisposableListener(root, 'pointerdown', (event) => {\n event.preventDefault();\n }, { capture: true }), addDisposableListener(root, 'click', (event) => {\n const el = document.createElement('div');\n el.style.overflow = 'auto';\n el.className = 'dv-tabs-overflow-container';\n for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {\n const panelObject = this.group.panels.find((panel) => panel === tab.panel);\n const tabComponent = panelObject.view.createTabRenderer('headerOverflow');\n const child = tabComponent.element;\n const wrapper = document.createElement('div');\n toggleClass(wrapper, 'dv-tab', true);\n toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);\n toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);\n wrapper.addEventListener('click', (event) => {\n this.accessor.popupService.close();\n if (event.defaultPrevented) {\n return;\n }\n tab.element.scrollIntoView();\n tab.panel.api.setActive();\n });\n wrapper.appendChild(child);\n el.appendChild(wrapper);\n }\n const relativeParent = findRelativeZIndexParent(root);\n this.accessor.popupService.openPopover(el, {\n x: event.clientX,\n y: event.clientY,\n zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)\n ? `calc(${relativeParent.style.zIndex} * 2)`\n : undefined,\n });\n }));\n }\n updateDragAndDropState() {\n this.tabs.updateDragAndDropState();\n this.voidContainer.updateDragAndDropState();\n }\n}\n","import { createChevronRightButton } from '../../../svg';\nexport function createDropdownElementHandle() {\n const el = document.createElement('div');\n el.className = 'dv-tabs-overflow-dropdown-default';\n const text = document.createElement('span');\n text.textContent = ``;\n const icon = createChevronRightButton();\n el.appendChild(icon);\n el.appendChild(text);\n return {\n element: el,\n update: (params) => {\n text.textContent = `${params.tabs}`;\n },\n };\n}\n","import { AcceptableEvent } from '../events';\nexport class DockviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, target, position, getData, group) {\n super();\n this.nativeEvent = nativeEvent;\n this.target = target;\n this.position = position;\n this.getData = getData;\n this.group = group;\n }\n}\nexport const PROPERTY_KEYS_DOCKVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n hideBorders: undefined,\n singleTabMode: undefined,\n disableFloatingGroups: undefined,\n floatingGroupBounds: undefined,\n popoutUrl: undefined,\n defaultRenderer: undefined,\n debug: undefined,\n rootOverlayModel: undefined,\n locked: undefined,\n disableDnd: undefined,\n className: undefined,\n noPanelsOverlay: undefined,\n dndEdges: undefined,\n theme: undefined,\n disableTabsOverflowList: undefined,\n scrollbars: undefined,\n };\n return Object.keys(properties);\n})();\nexport function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nimport { DockviewUnhandledDragOverEvent, } from './options';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('dockview: not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._overwriteRenderContainer = null;\n this._overwriteDropTargetContainer = null;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._panelDisposables = new Map();\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPanelTitleChange = new Emitter();\n this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;\n this._onDidPanelParametersChange = new Emitter();\n this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n toggleClass(this.container, 'dv-groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n panel: this.activePanel,\n api: this._api,\n group: this.groupPanel,\n getData: getPanelData,\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this._onUnhandledDragOverEvent, this._onDidPanelTitleChange, this._onDidPanelParametersChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n set dropTargetContainer(value) {\n this._overwriteDropTargetContainer = value;\n }\n get dropTargetContainer() {\n var _a;\n return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionComponent) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionComponent) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionComponent) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;\n this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'\n ? { removeEmptyGroup: false }\n : undefined);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'dv-active-group', isGroupActive);\n toggleClass(this.container, 'dv-inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n const index = this.mostRecentlyUsed.indexOf(panel);\n this.mostRecentlyUsed.splice(index, 1);\n }\n const disposable = this._panelDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._panelDisposables.delete(panel.id);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'pointerdown', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.contentContainer.element.appendChild(this.watermark.element);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n }\n }\n canDisplayOverlay(event, position, target) {\n const firedEvent = new DockviewUnhandledDragOverEvent(event, target, position, getPanelData, this.accessor.getPanel(this.id));\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (type === 'content') {\n if (data.groupId === this.id) {\n // don't allow to drop on self for center position\n if (position === 'center') {\n return;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return;\n }\n }\n }\n if (type === 'header') {\n if (data.groupId === this.id) {\n if (data.panelId === null) {\n return;\n }\n }\n }\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n updateDragAndDropState() {\n this.tabsContainer.updateDragAndDropState();\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, component, panel) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumWidth();\n }\n get minimumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumHeight();\n }\n get maximumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumHeight();\n }\n get maximumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumWidth();\n }\n __minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n __maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get isActive() {\n return this.api.isActive;\n }\n get isVisible() {\n return this.api.isVisible;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nconst NOT_INITIALIZED_MESSAGE = 'dockview: DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id, '__dockviewgroup__');\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c, _d;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get minimumWidth() {\n var _a;\n const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;\n if (typeof activePanelMinimumWidth === 'number') {\n return activePanelMinimumWidth;\n }\n return super.__minimumWidth();\n }\n get minimumHeight() {\n var _a;\n const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;\n if (typeof activePanelMinimumHeight === 'number') {\n return activePanelMinimumHeight;\n }\n return super.__minimumHeight();\n }\n get maximumWidth() {\n var _a;\n const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;\n if (typeof activePanelMaximumWidth === 'number') {\n return activePanelMaximumWidth;\n }\n return super.__maximumWidth();\n }\n get maximumHeight() {\n var _a;\n const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;\n if (typeof activePanelMaximumHeight === 'number') {\n return activePanelMaximumHeight;\n }\n return super.__maximumHeight();\n }\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n var _a, _b, _c, _d, _e, _f;\n super(id, 'groupview_default', {\n minimumHeight: (_b = (_a = options.constraints) === null || _a === void 0 ? void 0 : _a.minimumHeight) !== null && _b !== void 0 ? _b : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: (_d = (_c = options.constraints) === null || _c === void 0 ? void 0 : _c.maximumHeight) !== null && _d !== void 0 ? _d : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n maximumHeight: (_e = options.constraints) === null || _e === void 0 ? void 0 : _e.maximumHeight,\n maximumWidth: (_f = options.constraints) === null || _f === void 0 ? void 0 : _f.maximumWidth,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n this.addDisposables(this.model.onDidActivePanelChange((event) => {\n this.api._onDidActivePanelChange.fire(event);\n }));\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export const themeDark = {\n name: 'dark',\n className: 'dockview-theme-dark',\n};\nexport const themeLight = {\n name: 'light',\n className: 'dockview-theme-light',\n};\nexport const themeVisualStudio = {\n name: 'visualStudio',\n className: 'dockview-theme-vs',\n};\nexport const themeAbyss = {\n name: 'abyss',\n className: 'dockview-theme-abyss',\n};\nexport const themeDracula = {\n name: 'dracula',\n className: 'dockview-theme-dracula',\n};\nexport const themeReplit = {\n name: 'replit',\n className: 'dockview-theme-replit',\n gap: 10,\n};\nexport const themeAbyssSpaced = {\n name: 'abyssSpaced',\n className: 'dockview-theme-abyss-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\nexport const themeLightSpaced = {\n name: 'lightSpaced',\n className: 'dockview-theme-light-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n get tabComponent() {\n return this._tabComponent;\n }\n constructor(panel, group, accessor, component, tabComponent) {\n super(panel.id, component);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this._tabComponent = tabComponent;\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a, _b;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,\n position: options.group\n ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n const hasBecomeHidden = !event.isVisible && this.isVisible;\n const hasBecomeVisible = event.isVisible && !this.isVisible;\n const isActivePanel = this.group.model.isPanelActive(this.panel);\n if (hasBecomeHidden || (hasBecomeVisible && isActivePanel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n get minimumWidth() {\n return this._minimumWidth;\n }\n get minimumHeight() {\n return this._minimumHeight;\n }\n get maximumWidth() {\n return this._maximumWidth;\n }\n get maximumHeight() {\n return this._maximumHeight;\n }\n constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this._minimumWidth = options.minimumWidth;\n this._minimumHeight = options.minimumHeight;\n this._maximumWidth = options.maximumWidth;\n this._maximumHeight = options.maximumHeight;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange(() => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n minimumHeight: this._minimumHeight,\n maximumHeight: this._maximumHeight,\n minimumWidth: this._minimumWidth,\n maximumWidth: this._maximumWidth,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: this._params,\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-default-tab';\n this._content = document.createElement('div');\n this._content.className = 'dv-default-tab-content';\n this.action = document.createElement('div');\n this.action.className = 'dv-default-tab-action';\n this.action.appendChild(createCloseButton());\n this._element.appendChild(this._content);\n this._element.appendChild(this.action);\n this.render();\n }\n init(params) {\n this._title = params.title;\n this.addDisposables(params.api.onDidTitleChange((event) => {\n this._title = event.title;\n this.render();\n }), addDisposableListener(this.action, 'pointerdown', (ev) => {\n ev.preventDefault();\n }), addDisposableListener(this.action, 'click', (ev) => {\n if (ev.defaultPrevented) {\n return;\n }\n ev.preventDefault();\n params.api.close();\n }));\n this.render();\n }\n render() {\n var _a;\n if (this._content.textContent !== this._title) {\n this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n createTabRenderer(tabLocation) {\n var _a;\n const cmp = this.createTabComponent(this.id, this.tabComponent);\n if (this._params) {\n cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));\n }\n if (this._updateEvent) {\n (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);\n }\n return cmp;\n }\n init(params) {\n this._params = params;\n this.content.init(params);\n this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n this._updateEvent = event;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n return this.accessor.options.createComponent({\n id,\n name: componentName,\n });\n }\n createTabComponent(id, componentName) {\n const name = componentName !== null && componentName !== void 0 ? componentName : this.accessor.options.defaultTabComponent;\n if (name) {\n if (this.accessor.options.createTabComponent) {\n const component = this.accessor.options.createTabComponent({\n id,\n name,\n });\n if (component) {\n return component;\n }\n else {\n return new DefaultTab();\n }\n }\n console.warn(`dockview: tabComponent '${componentName}' was not found. falling back to the default tab.`);\n }\n return new DefaultTab();\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n minimumWidth: panelData.minimumWidth,\n minimumHeight: panelData.minimumHeight,\n maximumWidth: panelData.maximumWidth,\n maximumHeight: panelData.maximumHeight,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-watermark';\n }\n init(_params) {\n // noop\n }\n}\n","import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nclass AriaLevelTracker {\n constructor() {\n this._orderedList = [];\n }\n push(element) {\n this._orderedList = [\n ...this._orderedList.filter((item) => item !== element),\n element,\n ];\n this.update();\n }\n destroy(element) {\n this._orderedList = this._orderedList.filter((item) => item !== element);\n this.update();\n }\n update() {\n for (let i = 0; i < this._orderedList.length; i++) {\n this._orderedList[i].setAttribute('aria-level', `${i}`);\n this._orderedList[i].style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${i * 2})`;\n }\n }\n}\nconst arialLevelTracker = new AriaLevelTracker();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n get element() {\n return this._element;\n }\n get isVisible() {\n return this._isVisible;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this._isVisible = true;\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));\n arialLevelTracker.push(this._element);\n }\n setVisible(isVisible) {\n if (isVisible === this.isVisible) {\n return;\n }\n this._isVisible = isVisible;\n toggleClass(this.element, 'dv-hidden', !this.isVisible);\n }\n bringToFront() {\n arialLevelTracker.push(this._element);\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if ('top' in bounds && typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n this._element.style.bottom = 'auto';\n this.verticalAlignment = 'top';\n }\n if ('bottom' in bounds && typeof bounds.bottom === 'number') {\n this._element.style.bottom = `${bounds.bottom}px`;\n this._element.style.top = 'auto';\n this.verticalAlignment = 'bottom';\n }\n if ('left' in bounds && typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n this._element.style.right = 'auto';\n this.horiziontalAlignment = 'left';\n }\n if ('right' in bounds && typeof bounds.right === 'number') {\n this._element.style.right = `${bounds.right}px`;\n this._element.style.left = 'auto';\n this.horiziontalAlignment = 'right';\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n if (this.verticalAlignment === 'top') {\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.top = `${top}px`;\n this._element.style.bottom = 'auto';\n }\n if (this.verticalAlignment === 'bottom') {\n const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.bottom = `${bottom}px`;\n this._element.style.top = 'auto';\n }\n if (this.horiziontalAlignment === 'left') {\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.left = `${left}px`;\n this._element.style.right = 'auto';\n }\n if (this.horiziontalAlignment === 'right') {\n const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.right = `${right}px`;\n this._element.style.left = 'auto';\n }\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n const result = {};\n if (this.verticalAlignment === 'top') {\n result.top = parseFloat(this._element.style.top);\n }\n else if (this.verticalAlignment === 'bottom') {\n result.bottom = parseFloat(this._element.style.bottom);\n }\n else {\n result.top = element.top - container.top;\n }\n if (this.horiziontalAlignment === 'left') {\n result.left = parseFloat(this._element.style.left);\n }\n else if (this.horiziontalAlignment === 'right') {\n result.right = parseFloat(this._element.style.right);\n }\n else {\n result.left = element.left - container.left;\n }\n result.width = element.width;\n result.height = element.height;\n return result;\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable({\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const bottom = clamp(offset.y -\n y +\n containerRect.height -\n overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n this.setBounds(bounds);\n }), addDisposableListener(window, 'pointerup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'pointerdown', () => {\n arialLevelTracker.push(this._element);\n }, true));\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let bottom = undefined;\n let height = undefined;\n let left = undefined;\n let right = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n bottom = containerRect.height - top - height;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n bottom = containerRect.height - top - height;\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n right = containerRect.width - left - width;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n right = containerRect.width - left - width;\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n bounds.height = height;\n bounds.width = width;\n this.setBounds(bounds);\n }), {\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointerup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return 0;\n }\n dispose() {\n arialLevelTracker.destroy(this._element);\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };\nexport const DESERIALIZATION_POPOUT_DELAY_MS = 100;\n","import { DragAndDropObserver } from '../dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from '../dom';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../lifecycle';\nclass PositionCache {\n constructor() {\n this.cache = new Map();\n this.currentFrameId = 0;\n this.rafId = null;\n }\n getPosition(element) {\n const cached = this.cache.get(element);\n if (cached && cached.frameId === this.currentFrameId) {\n return cached.rect;\n }\n this.scheduleFrameUpdate();\n const rect = getDomNodePagePosition(element);\n this.cache.set(element, { rect, frameId: this.currentFrameId });\n return rect;\n }\n invalidate() {\n this.currentFrameId++;\n }\n scheduleFrameUpdate() {\n if (this.rafId)\n return;\n this.rafId = requestAnimationFrame(() => {\n this.currentFrameId++;\n this.rafId = null;\n });\n }\n}\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element, accessor) {\n super();\n this.element = element;\n this.accessor = accessor;\n this.map = {};\n this._disposed = false;\n this.positionCache = new PositionCache();\n this.pendingUpdates = new Set();\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n updateAllPositions() {\n if (this._disposed) {\n return;\n }\n // Invalidate position cache to force recalculation\n this.positionCache.invalidate();\n // Call resize function directly for all visible panels\n for (const entry of Object.values(this.map)) {\n if (entry.panel.api.isVisible && entry.resize) {\n entry.resize();\n }\n }\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n const panelId = panel.api.id;\n if (this.pendingUpdates.has(panelId)) {\n return; // Update already scheduled\n }\n this.pendingUpdates.add(panelId);\n requestAnimationFrame(() => {\n this.pendingUpdates.delete(panelId);\n if (this.isDisposed || !this.map[panelId]) {\n return;\n }\n const box = this.positionCache.getPosition(referenceContainer.element);\n const box2 = this.positionCache.getPosition(this.element);\n // Use traditional positioning for overlay containers\n const left = box.left - box2.left;\n const top = box.top - box2.top;\n const width = box.width;\n const height = box.height;\n focusContainer.style.left = `${left}px`;\n focusContainer.style.top = `${top}px`;\n focusContainer.style.width = `${width}px`;\n focusContainer.style.height = `${height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n });\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n this.positionCache.invalidate();\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const observerDisposable = new MutableDisposable();\n const correctLayerPosition = () => {\n if (panel.api.location.type === 'floating') {\n queueMicrotask(() => {\n const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);\n if (!floatingGroup) {\n return;\n }\n const element = floatingGroup.overlay.element;\n const update = () => {\n const level = Number(element.getAttribute('aria-level'));\n focusContainer.style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${level * 2 + 1})`;\n };\n const observer = new MutationObserver(() => {\n update();\n });\n observerDisposable.value = Disposable.from(() => observer.disconnect());\n observer.observe(element, {\n attributeFilter: ['aria-level'],\n attributes: true,\n });\n update();\n });\n }\n else {\n focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here\n }\n };\n const disposable = new CompositeDisposable(observerDisposable, \n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange(() => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }), panel.api.onDidLocationChange(() => {\n correctLayerPosition();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n correctLayerPosition();\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n // store the resize function for direct access\n this.map[panel.api.id].resize = resize;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableListener } from './events';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(Disposable.from(() => {\n externalWindow.close();\n }), addDisposableListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve, reject) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n try {\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n }\n catch (err) {\n // only except this is the DOM isn't setup. e.g. in a in correctly configured test\n reject(err);\n }\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { CompositeDisposable } from '../lifecycle';\nexport class StrictEventsSequencing extends CompositeDisposable {\n constructor(accessor) {\n super();\n this.accessor = accessor;\n this.init();\n }\n init() {\n const panels = new Set();\n const groups = new Set();\n this.addDisposables(this.accessor.onDidAddPanel((panel) => {\n if (panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${panel.api.id} but panel already exists`);\n }\n else {\n panels.add(panel.api.id);\n }\n }), this.accessor.onDidRemovePanel((panel) => {\n if (!panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${panel.api.id} but panel does not exists`);\n }\n else {\n panels.delete(panel.api.id);\n }\n }), this.accessor.onDidAddGroup((group) => {\n if (groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${group.api.id} but group already exists`);\n }\n else {\n groups.add(group.api.id);\n }\n }), this.accessor.onDidRemoveGroup((group) => {\n if (!groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${group.api.id} but group does not exists`);\n }\n else {\n groups.delete(group.api.id);\n }\n }));\n }\n}\n","import { shiftAbsoluteElementIntoView } from '../../dom';\nimport { addDisposableListener } from '../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';\nexport class PopupService extends CompositeDisposable {\n constructor(root) {\n super();\n this.root = root;\n this._active = null;\n this._activeDisposable = new MutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-popover-anchor';\n this._element.style.position = 'relative';\n this.root.prepend(this._element);\n this.addDisposables(Disposable.from(() => {\n this.close();\n }), this._activeDisposable);\n }\n openPopover(element, position) {\n var _a;\n this.close();\n const wrapper = document.createElement('div');\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';\n wrapper.appendChild(element);\n const anchorBox = this._element.getBoundingClientRect();\n const offsetX = anchorBox.left;\n const offsetY = anchorBox.top;\n wrapper.style.top = `${position.y - offsetY}px`;\n wrapper.style.left = `${position.x - offsetX}px`;\n this._element.appendChild(wrapper);\n this._active = wrapper;\n this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {\n var _a;\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n let el = target;\n while (el && el !== wrapper) {\n el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;\n }\n if (el) {\n return; // clicked within popover\n }\n this.close();\n }));\n requestAnimationFrame(() => {\n shiftAbsoluteElementIntoView(wrapper, this.root);\n });\n }\n close() {\n if (this._active) {\n this._active.remove();\n this._activeDisposable.dispose();\n this._active = null;\n }\n }\n}\n","import { CompositeDisposable, Disposable } from '../lifecycle';\nexport class DropTargetAnchorContainer extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n var _a;\n if (this.disabled === value) {\n return;\n }\n this._disabled = value;\n if (value) {\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }\n }\n get model() {\n if (this.disabled) {\n return undefined;\n }\n return {\n clear: () => {\n var _a;\n if (this._model) {\n (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);\n }\n this._model = undefined;\n },\n exists: () => {\n return !!this._model;\n },\n getElements: (event, outline) => {\n const changed = this._outline !== outline;\n this._outline = outline;\n if (this._model) {\n this._model.changed = changed;\n return this._model;\n }\n const container = this.createContainer();\n const anchor = this.createAnchor();\n this._model = { root: container, overlay: anchor, changed };\n container.appendChild(anchor);\n this.element.appendChild(container);\n if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {\n const targetBox = event.target.getBoundingClientRect();\n const box = this.element.getBoundingClientRect();\n anchor.style.left = `${targetBox.left - box.left}px`;\n anchor.style.top = `${targetBox.top - box.top}px`;\n }\n return this._model;\n },\n };\n }\n constructor(element, options) {\n super();\n this.element = element;\n this._disabled = false;\n this._disabled = options.disabled;\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }));\n }\n createContainer() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-container';\n return el;\n }\n createAnchor() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-anchor';\n el.style.visibility = 'hidden';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, orthogonal, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { DockviewUnhandledDragOverEvent, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../overlay/overlay';\nimport { addTestId, Classnames, getDockviewTheme, onDidWindowResizeEnd, onDidWindowMoveEnd, toggleClass, watchElementResize, } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, DESERIALIZATION_POPOUT_DELAY_MS, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlay/overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nimport { StrictEventsSequencing } from './strictEventsSequencing';\nimport { PopupService } from './components/popupService';\nimport { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';\nimport { themeAbyss } from './theme';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';\n }\n get api() {\n return this._api;\n }\n get floatingGroups() {\n return this._floatingGroups;\n }\n /**\n * Promise that resolves when all popout groups from the last fromJSON call are restored.\n * Useful for tests that need to wait for delayed popout creation.\n */\n get popoutRestorationPromise() {\n return this._popoutRestorationPromise;\n }\n constructor(container, options) {\n var _a, _b, _c;\n super(container, {\n proportionalLayout: true,\n orientation: Orientation.HORIZONTAL,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,\n className: options.className,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this._watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPopoutGroupSizeChange = new Emitter();\n this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;\n this._onDidPopoutGroupPositionChange = new Emitter();\n this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;\n this._onDidOpenPopoutWindowFail = new Emitter();\n this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter({ replay: true });\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this.onDidMovePanel = this._onDidMovePanel.event;\n this._onDidMaximizedGroupChange = new Emitter();\n this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._popoutRestorationPromise = Promise.resolve();\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidOptionsChange = new Emitter();\n this.onDidOptionsChange = this._onDidOptionsChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n this._options = options;\n this.popupService = new PopupService(this.element);\n this._themeClassnames = new Classnames(this.element);\n this._api = new DockviewApi(this);\n this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });\n this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);\n this._rootDropTarget = new Droptarget(this.element, {\n className: 'dv-drop-target-edge',\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n const firedEvent = new DockviewUnhandledDragOverEvent(event, 'edge', position, getPanelData);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,\n getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.updateDropTargetModel(options);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.updateTheme();\n this.updateWatermark();\n if (options.debug) {\n this.addDisposables(new StrictEventsSequencing(this));\n }\n this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.updateWatermark();\n }), this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), this.onDidMaximizedChange((event) => {\n this._onDidMaximizedGroupChange.fire({\n group: event.panel,\n isMaximized: event.isMaximized,\n });\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }), this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n }\n setVisible(panel, visible) {\n switch (panel.api.location.type) {\n case 'grid':\n super.setVisible(panel, visible);\n break;\n case 'floating': {\n const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);\n if (item) {\n item.overlay.setVisible(visible);\n panel.api._onDidVisibilityChange.fire({\n isVisible: visible,\n });\n }\n break;\n }\n case 'popout':\n console.warn('dockview: You cannot hide a group that is in a popout window');\n break;\n }\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c, _d, _e;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group, options);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return false;\n }\n const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)\n ? options.referenceGroup\n : itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n /**\n * The group that is being added doesn't already exist within the DOM, the most likely occurrence\n * of this case is when being called from the `fromJSON(...)` method\n */\n const isGroupAddedToDom = referenceGroup.element.parentElement !== null;\n let group;\n if (!isGroupAddedToDom) {\n group = referenceGroup;\n }\n else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {\n group = options.overridePopoutGroup;\n }\n else {\n group = this.createGroup({ id: groupId });\n if (popoutContainer) {\n this._onDidAddGroup.fire(group);\n }\n }\n if (popoutContainer === null) {\n console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');\n popoutWindowDisposable.dispose();\n this._onDidOpenPopoutWindowFail.fire();\n // if the popout window was blocked, we need to move the group back to the reference group\n // and set it to visible\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n return false;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready, this);\n group.model.renderContainer = overlayRenderContainer;\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n let floatingBox;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n floatingBox = (_a = this._floatingGroups\n .find((value) => value.group.api.id ===\n itemToPopout.api.id)) === null || _a === void 0 ? void 0 : _a.overlay.toJSON();\n this.removeGroup(referenceGroup);\n break;\n }\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n const anchor = document.createElement('div');\n const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });\n popoutContainer.appendChild(anchor);\n group.model.dropTargetContainer = dropTargetContainer;\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,\n };\n if (isGroupAddedToDom &&\n itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const isValidReferenceGroup = isGroupAddedToDom &&\n referenceGroup &&\n this.getPanel(referenceGroup.id);\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: isValidReferenceGroup\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);\n popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {\n this._onDidPopoutGroupSizeChange.fire({\n width: _window.window.innerWidth,\n height: _window.window.innerHeight,\n group,\n });\n }), _onDidWindowPositionChange.event(() => {\n this._onDidPopoutGroupPositionChange.fire({\n screenX: _window.window.screenX,\n screenY: _window.window.screenX,\n group,\n });\n }), \n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableListener(_window.window, 'resize', () => {\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.isDisposed) {\n return; // cleanup may run after instance is disposed\n }\n if (isGroupAddedToDom &&\n this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else if (this.getPanel(group.id)) {\n group.model.renderContainer =\n this.overlayRenderContainer;\n group.model.dropTargetContainer =\n this.rootDropTargetContainer;\n returnedGroup = group;\n const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);\n if (alreadyRemoved) {\n /**\n * If this popout group was explicitly removed then we shouldn't run the additional\n * steps. To tell if the running of this disposable is the result of this popout group\n * being explicitly removed we can check if this popout group is still referenced in\n * the `this._popoutGroups` list.\n */\n return;\n }\n if (floatingBox) {\n this.addFloatingGroup(group, {\n height: floatingBox.height,\n width: floatingBox.width,\n position: floatingBox,\n });\n }\n else {\n this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n skipPopoutReturn: true,\n });\n group.model.location = { type: 'grid' };\n this.movingLock(() => {\n // suppress group add events since the group already exists\n this.doAddGroup(group, [0]);\n });\n }\n this.doSetGroupAndPanelActive(group);\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n return true;\n })\n .catch((err) => {\n console.error('dockview: failed to create popout.', err);\n return false;\n });\n }\n addFloatingGroup(item, options) {\n var _a, _b, _c, _d, _e;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n this.movingLock(() => group.model.openPanel(item, { skipSetGroupActive: true }));\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: false,\n });\n }\n }\n }\n function getAnchoredBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n const result = {};\n if ('left' in options.position) {\n result.left = Math.max(options.position.left, 0);\n }\n else if ('right' in options.position) {\n result.right = Math.max(options.position.right, 0);\n }\n else {\n result.left = DEFAULT_FLOATING_GROUP_POSITION.left;\n }\n if ('top' in options.position) {\n result.top = Math.max(options.position.top, 0);\n }\n else if ('bottom' in options.position) {\n result.bottom = Math.max(options.position.bottom, 0);\n }\n else {\n result.top = DEFAULT_FLOATING_GROUP_POSITION.top;\n }\n if (typeof options.width === 'number') {\n result.width = Math.max(options.width, 0);\n }\n else {\n result.width = DEFAULT_FLOATING_GROUP_POSITION.width;\n }\n if (typeof options.height === 'number') {\n result.height = Math.max(options.height, 0);\n }\n else {\n result.height = DEFAULT_FLOATING_GROUP_POSITION.height;\n }\n return result;\n }\n return {\n left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'\n ? Math.max(options.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left,\n top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'\n ? Math.max(options.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top,\n width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'\n ? Math.max(options.width, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.width,\n height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'\n ? Math.max(options.height, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.height,\n };\n }\n const anchoredBox = getAnchoredBox();\n const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));\n const el = group.element.querySelector('.dv-void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {\n if (event.isActive) {\n overlay.bringToFront();\n }\n }), watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n }));\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.width, group.height);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n remove(this._floatingGroups, floatingGroupPanel);\n group.model.location = { type: 'grid' };\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n group.model.location = { type: 'floating' };\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position, options) {\n this.gridview.normalize();\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0], undefined, options); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n super.updateOptions(options);\n if ('floatingGroupBounds' in options) {\n for (const group of this._floatingGroups) {\n switch (options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds();\n }\n }\n this.updateDropTargetModel(options);\n const oldDisableDnd = this.options.disableDnd;\n this._options = Object.assign(Object.assign({}, this.options), options);\n const newDisableDnd = this.options.disableDnd;\n if (oldDisableDnd !== newDisableDnd) {\n this.updateDragAndDropState();\n }\n if ('theme' in options) {\n this.updateTheme();\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n updateDragAndDropState() {\n // Update draggable state for all tabs and void containers\n for (const group of this.groups) {\n group.model.updateDragAndDropState();\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n url: group.popoutGroup.api.location.type === 'popout'\n ? group.popoutGroup.api.location.popoutUrl\n : undefined,\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n this._onDidAddGroup.fire(group);\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n position: position,\n width: position.width,\n height: position.height,\n skipRemoveGroup: true,\n inDragMode: false,\n });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n // Create a promise that resolves when all popout groups are created\n const popoutPromises = [];\n // Queue popup group creation with delays to avoid browser blocking\n serializedPopoutGroups.forEach((serializedPopoutGroup, index) => {\n const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n // Add a small delay for each popup after the first to avoid browser popup blocking\n const popoutPromise = new Promise((resolve) => {\n setTimeout(() => {\n this.addPopoutGroup(group, {\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup ? group : undefined,\n referenceGroup: gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined,\n popoutUrl: url,\n });\n resolve();\n }, index * DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup\n });\n popoutPromises.push(popoutPromise);\n });\n // Store the promise for tests to wait on\n this._popoutRestorationPromise = Promise.all(popoutPromises).then(() => void 0);\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n console.error('dockview: failed to deserialize layout. Reverting changes', err);\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n // Force position updates for always visible panels after DOM layout is complete\n requestAnimationFrame(() => {\n this.overlayRenderContainer.updateAllPositions();\n });\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n const initial = {\n width: options.initialWidth,\n height: options.initialHeight,\n };\n let index;\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n index = options.position.index;\n if (!referencePanel) {\n throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n index = options.position.index;\n if (!referenceGroup) {\n throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n group.api.setSize({\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n });\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const floatingGroupOptions = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n referenceGroup.api.setSize({\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation, this.orientationAtLocation(relativeLocation) ===\n Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const coordinates = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else {\n const group = this.createGroupAtLocation([0], this.gridview.orientation === Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n if (this.options.createWatermarkComponent) {\n return this.options.createWatermarkComponent();\n }\n return new Watermark();\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this._watermark) {\n this._watermark = this.createWatermarkComponent();\n this._watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n addTestId(watermarkContainer, 'watermark-component');\n watermarkContainer.appendChild(this._watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this._watermark) {\n this._watermark.element.parentElement.remove();\n (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this._watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction), options);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroup(options);\n const size = this.getLocationOrientation(relativeLocation) ===\n Orientation.VERTICAL\n ? options.initialHeight\n : options.initialWidth;\n this.doAddGroup(group, relativeLocation, size);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n const group = this.createGroup(options);\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n getLocationOrientation(location) {\n return location.length % 2 == 0 &&\n this.gridview.orientation === Orientation.HORIZONTAL\n ? Orientation.HORIZONTAL\n : Orientation.VERTICAL;\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup && refGroup.panels.length === 0) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._popoutGroups, selectedGroup);\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n skipSetActive: options.skipSetActive,\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n // Check if destination group is empty - if so, force render the component\n const isDestinationGroupEmpty = destinationGroup.model.size === 0;\n this.movingLock(() => {\n var _a;\n return destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetActive: ((_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false) && !isDestinationGroupEmpty,\n skipSetGroupActive: true,\n });\n });\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(destinationGroup);\n }\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n }\n if (sourceGroup.api.location.type === 'popout') {\n /**\n * the source group is a popout group with a single panel\n *\n * 1. remove the panel from the group without triggering any events\n * 2. remove the popout group\n * 3. create a new group at the requested location and add that panel\n */\n const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);\n const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {\n skipSetActive: true,\n skipSetActiveGroup: true,\n }));\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n const newGroup = this.createGroupAtLocation(targetLocation);\n this.movingLock(() => newGroup.model.openPanel(removedPanel));\n this.doSetGroupAndPanelActive(newGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n // Ensure group becomes active after move\n if (options.skipSetActive !== true) {\n // For center moves (merges), we need to ensure the target group is active\n // unless explicitly told not to (skipSetActive: true)\n this.doSetGroupAndPanelActive(to);\n }\n else if (!this.activePanel) {\n // Even with skipSetActive: true, ensure there's an active panel if none exists\n // This maintains basic functionality while respecting skipSetActive\n this.doSetGroupAndPanelActive(to);\n }\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n // Remove from popout groups list to prevent automatic restoration\n const index = this._popoutGroups.indexOf(selectedPopoutGroup);\n if (index >= 0) {\n this._popoutGroups.splice(index, 1);\n }\n // Clean up the reference group (ghost) if it exists and is hidden\n if (selectedPopoutGroup.referenceGroup) {\n const referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);\n if (referenceGroup && !referenceGroup.api.isVisible) {\n this.doRemoveGroup(referenceGroup, {\n skipActive: true,\n });\n }\n }\n // Manually dispose the window without triggering restoration\n selectedPopoutGroup.window.dispose();\n // Update group's location and containers for target\n if (to.api.location.type === 'grid') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'grid' };\n }\n else if (to.api.location.type === 'floating') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'floating' };\n }\n break;\n }\n }\n // For moves to grid locations\n if (to.api.location.type === 'grid') {\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n // Add to grid for all moves targeting grid location\n let size;\n switch (this.gridview.orientation) {\n case Orientation.VERTICAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.width\n : from.api.height;\n break;\n case Orientation.HORIZONTAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.height\n : from.api.width;\n break;\n }\n this.gridview.addView(from, size, dropLocation);\n }\n else if (to.api.location.type === 'floating') {\n // For moves to floating locations, add as floating group\n // Get the position/size from the target floating group\n const targetFloatingGroup = this._floatingGroups.find((x) => x.group === to);\n if (targetFloatingGroup) {\n const box = targetFloatingGroup.overlay.toJSON();\n // Calculate position based on available properties\n let left, top;\n if ('left' in box) {\n left = box.left + 50;\n }\n else if ('right' in box) {\n left = Math.max(0, box.right - box.width - 50);\n }\n else {\n left = 50; // Default fallback\n }\n if ('top' in box) {\n top = box.top + 50;\n }\n else if ('bottom' in box) {\n top = Math.max(0, box.bottom - box.height - 50);\n }\n else {\n top = 50; // Default fallback\n }\n this.addFloatingGroup(from, {\n height: box.height,\n width: box.width,\n position: {\n left,\n top,\n },\n });\n }\n }\n }\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel, from });\n });\n // Ensure group becomes active after move\n if (options.skipSetActive === false) {\n // Only activate when explicitly requested (skipSetActive: false)\n // Use 'to' group for non-center moves since 'from' may have been destroyed\n const targetGroup = to !== null && to !== void 0 ? to : from;\n this.doSetGroupAndPanelActive(targetGroup);\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`dockview: Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, {\n renderer: options.renderer,\n minimumWidth: options.minimumWidth,\n minimumHeight: options.minimumHeight,\n maximumWidth: options.maximumWidth,\n maximumHeight: options.maximumHeight,\n });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location, size, options) {\n const group = this.createGroup(options);\n this.doAddGroup(group, location, size);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n orientationAtLocation(location) {\n const rootOrientation = this.gridview.orientation;\n return location.length % 2 == 1\n ? rootOrientation\n : orthogonal(rootOrientation);\n }\n updateDropTargetModel(options) {\n if ('dndEdges' in options) {\n this._rootDropTarget.disabled =\n typeof options.dndEdges === 'boolean' &&\n options.dndEdges === false;\n if (typeof options.dndEdges === 'object' &&\n options.dndEdges !== null) {\n this._rootDropTarget.setOverlayModel(options.dndEdges);\n }\n else {\n this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);\n }\n }\n if ('rootOverlayModel' in options) {\n this.updateDropTargetModel({ dndEdges: options.dndEdges });\n }\n }\n updateTheme() {\n var _a, _b;\n const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;\n this._themeClassnames.setClassNames(theme.className);\n this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;\n switch (theme.dndOverlayMounting) {\n case 'absolute':\n this.rootDropTargetContainer.disabled = false;\n break;\n case 'relative':\n default:\n this.rootDropTargetContainer.disabled = true;\n break;\n }\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(container, options) {\n var _a;\n super(container, {\n proportionalLayout: (_a = options.proportionalLayout) !== null && _a !== void 0 ? _a : true,\n orientation: options.orientation,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n className: options.className,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n }\n updateOptions(options) {\n super.updateOptions(options);\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n const { data } = node;\n const view = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.doAddGroup(view, relativeLocation, options.size);\n this.registerPanel(view);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n if (this._splitview) {\n this._splitview.dispose();\n }\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n if (typeof options.orientation === 'string') {\n this.splitview.orientation = options.orientation;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_a = options.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n this.element.remove();\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = {\n api: null,\n };\n this._element = document.createElement('div');\n this.element.className = 'dv-default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dv-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nconst HEADER_SIZE = 22;\nconst MINIMUM_BODY_SIZE = 0;\nconst MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super({\n accessor: options.accessor,\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n disableDnd: options.disableDnd,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b;\n const body = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n let header;\n if (options.headerComponent && this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: options.id,\n name: options.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: MINIMUM_BODY_SIZE,\n maximumBodySize: MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_b = options.params) !== null && _b !== void 0 ? _b : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n headerSize: view.headerSize,\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c;\n const data = view.data;\n const body = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n let header;\n if (data.headerComponent &&\n this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: data.id,\n name: data.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,\n maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = new CompositeDisposable(panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), panel.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }));\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.element.remove();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id, componentName));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n","import { GridviewApi, PaneviewApi, SplitviewApi, } from '../api/component.api';\nimport { DockviewComponent } from '../dockview/dockviewComponent';\nimport { GridviewComponent } from '../gridview/gridviewComponent';\nimport { PaneviewComponent } from '../paneview/paneviewComponent';\nimport { SplitviewComponent } from '../splitview/splitviewComponent';\nexport function createDockview(element, options) {\n const component = new DockviewComponent(element, options);\n return component.api;\n}\nexport function createSplitview(element, options) {\n const component = new SplitviewComponent(element, options);\n return new SplitviewApi(component);\n}\nexport function createGridview(element, options) {\n const component = new GridviewComponent(element, options);\n return new GridviewApi(component);\n}\nexport function createPaneview(element, options) {\n const component = new PaneviewComponent(element, options);\n return new PaneviewApi(component);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { DockviewDisposable, } from 'dockview-core';\n/**\n * This component is intended to interface between vanilla-js and React hence we need to be\n * creative in how we update props.\n * A ref of the component is exposed with an update method; which when called stores the props\n * as a ref within this component and forcefully triggers a re-render of the component using\n * the ref of props we just set on the renderered component as the props passed to the inner\n * component\n */\nconst ReactComponentBridge = (props, ref) => {\n const [_, triggerRender] = React.useState();\n const _props = React.useRef(props.componentProps);\n React.useImperativeHandle(ref, () => ({\n update: (componentProps) => {\n _props.current = Object.assign(Object.assign({}, _props.current), componentProps);\n /**\n * setting a arbitrary piece of state within this component will\n * trigger a re-render.\n * we use this rather than updating through a prop since we can\n * pass a ref into the vanilla-js world.\n */\n triggerRender(Date.now());\n },\n }), []);\n return React.createElement(props.component, _props.current);\n};\nReactComponentBridge.displayName = 'DockviewReactJsBridge';\n/**\n * Since we are storing the React.Portal references in a rendered array they\n * require a key property like any other React element rendered in an array\n * to prevent excessive re-rendering\n */\nconst uniquePortalKeyGenerator = (() => {\n let value = 1;\n return { next: () => `dockview_react_portal_key_${(value++).toString()}` };\n})();\nexport const ReactPartContext = React.createContext({});\nexport class ReactPart {\n constructor(parent, portalStore, component, parameters, context) {\n this.parent = parent;\n this.portalStore = portalStore;\n this.component = component;\n this.parameters = parameters;\n this.context = context;\n this._initialProps = {};\n this.disposed = false;\n this.createPortal();\n }\n update(props) {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!this.componentInstance) {\n // if the component is yet to be mounted store the props\n this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);\n }\n else {\n this.componentInstance.update(props);\n }\n }\n createPortal() {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!isReactComponent(this.component)) {\n /**\n * we know this isn't a React.FunctionComponent so throw an error here.\n * if we do not intercept then React library will throw a very obsure error\n * for the same reason... at least at this point we will emit a sensible stacktrace.\n */\n throw new Error('Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components');\n }\n const bridgeComponent = React.createElement(React.forwardRef(ReactComponentBridge), {\n component: this\n .component,\n componentProps: this.parameters,\n ref: (element) => {\n this.componentInstance = element;\n if (Object.keys(this._initialProps).length > 0) {\n this.componentInstance.update(this._initialProps);\n this._initialProps = {}; // don't keep a reference to the users object once no longer required\n }\n },\n });\n const node = this.context\n ? React.createElement(ReactPartContext.Provider, { value: this.context }, bridgeComponent)\n : bridgeComponent;\n const portal = ReactDOM.createPortal(node, this.parent, uniquePortalKeyGenerator.next());\n this.ref = {\n portal,\n disposable: this.portalStore.addPortal(portal),\n };\n }\n dispose() {\n var _a;\n (_a = this.ref) === null || _a === void 0 ? void 0 : _a.disposable.dispose();\n this.disposed = true;\n }\n}\n/**\n * A React Hook that returns an array of portals to be rendered by the user of this hook\n * and a disposable function to add a portal. Calling dispose removes this portal from the\n * portal array\n */\nexport const usePortalsLifecycle = () => {\n const [portals, setPortals] = React.useState([]);\n React.useDebugValue(`Portal count: ${portals.length}`);\n const addPortal = React.useCallback((portal) => {\n setPortals((existingPortals) => [...existingPortals, portal]);\n let disposed = false;\n return DockviewDisposable.from(() => {\n if (disposed) {\n throw new Error('invalid operation: resource already disposed');\n }\n disposed = true;\n setPortals((existingPortals) => existingPortals.filter((p) => p !== portal));\n });\n }, []);\n return [portals, addPortal];\n};\nexport function isReactComponent(component) {\n /**\n * Yes, we could use \"react-is\" but that would introduce an unwanted peer dependency\n * so for now we will check in a rather crude fashion...\n */\n return (typeof component === 'function' /** Functional Componnts */ ||\n !!(component === null || component === void 0 ? void 0 : component.$$typeof) /** React.memo(...) Components */);\n}\n","import { ReactPart } from '../react';\nimport { DockviewEmitter, } from 'dockview-core';\nexport class ReactPanelContentPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._onDidFocus = new DockviewEmitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new DockviewEmitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n focus() {\n // TODO\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n containerApi: parameters.containerApi,\n });\n }\n update(event) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });\n }\n layout(_width, _height) {\n // noop\n }\n dispose() {\n var _a;\n this._onDidFocus.dispose();\n this._onDidBlur.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nexport class ReactPanelHeaderPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n focus() {\n //noop\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n containerApi: parameters.containerApi,\n tabLocation: parameters.tabLocation,\n });\n }\n update(event) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });\n }\n layout(_width, _height) {\n // noop - retrieval from api\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nexport class ReactWatermarkPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n group: parameters.group,\n containerApi: parameters.containerApi,\n });\n }\n focus() {\n // noop\n }\n update(params) {\n var _a, _b, _c;\n if (this.parameters) {\n this.parameters.params = params.params;\n }\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: (_c = (_b = this.parameters) === null || _b === void 0 ? void 0 : _b.params) !== null && _c !== void 0 ? _c : {} });\n }\n layout(_width, _height) {\n // noop - retrieval from api\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nimport { DockviewCompositeDisposable, DockviewMutableDisposable, } from 'dockview-core';\nexport class ReactHeaderActionsRendererPart {\n get element() {\n return this._element;\n }\n get part() {\n return this._part;\n }\n constructor(component, reactPortalStore, _group) {\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._group = _group;\n this.mutableDisposable = new DockviewMutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.mutableDisposable.value = new DockviewCompositeDisposable(this._group.model.onDidAddPanel(() => {\n this.updatePanels();\n }), this._group.model.onDidRemovePanel(() => {\n this.updatePanels();\n }), this._group.model.onDidActivePanelChange(() => {\n this.updateActivePanel();\n }), parameters.api.onDidActiveChange(() => {\n this.updateGroupActive();\n }));\n this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n api: parameters.api,\n containerApi: parameters.containerApi,\n panels: this._group.model.panels,\n activePanel: this._group.model.activePanel,\n isGroupActive: this._group.api.isActive,\n group: this._group,\n });\n }\n dispose() {\n var _a;\n this.mutableDisposable.dispose();\n (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n update(event) {\n var _a;\n (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);\n }\n updatePanels() {\n this.update({ params: { panels: this._group.model.panels } });\n }\n updateActivePanel() {\n this.update({\n params: {\n activePanel: this._group.model.activePanel,\n },\n });\n }\n updateGroupActive() {\n this.update({\n params: {\n isGroupActive: this._group.api.isActive,\n },\n });\n }\n}\n","import React from 'react';\nimport { PROPERTY_KEYS_DOCKVIEW, createDockview, } from 'dockview-core';\nimport { ReactPanelContentPart } from './reactContentPart';\nimport { ReactPanelHeaderPart } from './reactHeaderPart';\nimport { usePortalsLifecycle } from '../react';\nimport { ReactWatermarkPart } from './reactWatermarkPart';\nimport { ReactHeaderActionsRendererPart } from './headerActionsRenderer';\nfunction createGroupControlElement(component, store) {\n return component\n ? (groupPanel) => {\n return new ReactHeaderActionsRendererPart(component, store, groupPanel);\n }\n : undefined;\n}\nconst DEFAULT_REACT_TAB = 'props.defaultTabComponent';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_DOCKVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const DockviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const dockviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_DOCKVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (dockviewRef.current) {\n dockviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_DOCKVIEW.map((key) => props[key]));\n React.useEffect(() => {\n var _a;\n if (!domRef.current) {\n return;\n }\n const frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};\n if (props.defaultTabComponent) {\n frameworkTabComponents[DEFAULT_REACT_TAB] =\n props.defaultTabComponent;\n }\n const frameworkOptions = {\n createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal }),\n createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal }),\n createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal }),\n createComponent: (options) => {\n return new ReactPanelContentPart(options.id, props.components[options.name], {\n addPortal,\n });\n },\n createTabComponent(options) {\n return new ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {\n addPortal,\n });\n },\n createWatermarkComponent: props.watermarkComponent\n ? () => {\n return new ReactWatermarkPart('watermark', props.watermarkComponent, {\n addPortal,\n });\n }\n : undefined,\n defaultTabComponent: props.defaultTabComponent\n ? DEFAULT_REACT_TAB\n : undefined,\n };\n const api = createDockview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n dockviewRef.current = api;\n return () => {\n dockviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = dockviewRef.current.onDidDrop((event) => {\n if (props.onDidDrop) {\n props.onDidDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onDidDrop]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = dockviewRef.current.onWillDrop((event) => {\n if (props.onWillDrop) {\n props.onWillDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onWillDrop]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactPanelContentPart(options.id, props.components[options.name], {\n addPortal,\n });\n },\n });\n }, [props.components]);\n React.useEffect(() => {\n var _a;\n if (!dockviewRef.current) {\n return;\n }\n const frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};\n if (props.defaultTabComponent) {\n frameworkTabComponents[DEFAULT_REACT_TAB] =\n props.defaultTabComponent;\n }\n dockviewRef.current.updateOptions({\n defaultTabComponent: props.defaultTabComponent\n ? DEFAULT_REACT_TAB\n : undefined,\n createTabComponent(options) {\n return new ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {\n addPortal,\n });\n },\n });\n }, [props.tabComponents, props.defaultTabComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createWatermarkComponent: props.watermarkComponent\n ? () => {\n return new ReactWatermarkPart('watermark', props.watermarkComponent, {\n addPortal,\n });\n }\n : undefined,\n });\n }, [props.watermarkComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal }),\n });\n }, [props.rightHeaderActionsComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal }),\n });\n }, [props.leftHeaderActionsComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal }),\n });\n }, [props.prefixHeaderActionsComponent]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nDockviewReact.displayName = 'DockviewComponent';\n","import React from 'react';\nexport const CloseButton = () => (React.createElement(\"svg\", { height: \"11\", width: \"11\", viewBox: \"0 0 28 28\", \"aria-hidden\": 'false', focusable: false, className: \"dv-svg\" },\n React.createElement(\"path\", { d: \"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\" })));\nexport const ExpandMore = () => {\n return (React.createElement(\"svg\", { width: \"11\", height: \"11\", viewBox: \"0 0 24 15\", \"aria-hidden\": 'false', focusable: false, className: \"dv-svg\" },\n React.createElement(\"path\", { d: \"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z\" })));\n};\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { CloseButton } from '../svg';\nfunction useTitle(api) {\n const [title, setTitle] = React.useState(api.title);\n React.useEffect(() => {\n const disposable = api.onDidTitleChange((event) => {\n setTitle(event.title);\n });\n // Depending on the order in which React effects are run, the title may already be out of sync (cf. issue #1003).\n if (title !== api.title) {\n setTitle(api.title);\n }\n return () => {\n disposable.dispose();\n };\n }, [api]);\n return title;\n}\nexport const DockviewDefaultTab = (_a) => {\n var { api, containerApi: _containerApi, params: _params, hideClose, closeActionOverride, onPointerDown, onPointerUp, onPointerLeave, tabLocation } = _a, rest = __rest(_a, [\"api\", \"containerApi\", \"params\", \"hideClose\", \"closeActionOverride\", \"onPointerDown\", \"onPointerUp\", \"onPointerLeave\", \"tabLocation\"]);\n const title = useTitle(api);\n const isMiddleMouseButton = React.useRef(false);\n const onClose = React.useCallback((event) => {\n event.preventDefault();\n if (closeActionOverride) {\n closeActionOverride();\n }\n else {\n api.close();\n }\n }, [api, closeActionOverride]);\n const onBtnPointerDown = React.useCallback((event) => {\n event.preventDefault();\n }, []);\n const _onPointerDown = React.useCallback((event) => {\n isMiddleMouseButton.current = event.button === 1;\n onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(event);\n }, [onPointerDown]);\n const _onPointerUp = React.useCallback((event) => {\n if (isMiddleMouseButton && event.button === 1 && !hideClose) {\n isMiddleMouseButton.current = false;\n onClose(event);\n }\n onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp(event);\n }, [onPointerUp, onClose, hideClose]);\n const _onPointerLeave = React.useCallback((event) => {\n isMiddleMouseButton.current = false;\n onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(event);\n }, [onPointerLeave]);\n return (React.createElement(\"div\", Object.assign({ \"data-testid\": \"dockview-dv-default-tab\" }, rest, { onPointerDown: _onPointerDown, onPointerUp: _onPointerUp, onPointerLeave: _onPointerLeave, className: \"dv-default-tab\" }),\n React.createElement(\"span\", { className: \"dv-default-tab-content\" }, title),\n !hideClose && (React.createElement(\"div\", { className: \"dv-default-tab-action\", onPointerDown: onBtnPointerDown, onClick: onClose },\n React.createElement(CloseButton, null)))));\n};\n","import { SplitviewApi, SplitviewPanel, } from 'dockview-core';\nimport { ReactPart } from '../react';\nexport class ReactPanelView extends SplitviewPanel {\n constructor(id, component, reactComponent, reactPortalStore) {\n super(id, component);\n this.reactComponent = reactComponent;\n this.reactPortalStore = reactPortalStore;\n }\n getComponent() {\n var _a, _b;\n return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {\n params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},\n api: this.api,\n containerApi: new SplitviewApi(this._params.accessor),\n });\n }\n}\n","import React from 'react';\nimport { createSplitview, PROPERTY_KEYS_SPLITVIEW, } from 'dockview-core';\nimport { usePortalsLifecycle } from '../react';\nimport { ReactPanelView } from './view';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_SPLITVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const SplitviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const splitviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_SPLITVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (splitviewRef.current) {\n splitviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_SPLITVIEW.map((key) => props[key]));\n React.useEffect(() => {\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const frameworkOptions = {\n createComponent: (options) => {\n return new ReactPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n };\n const api = createSplitview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n splitviewRef.current = api;\n return () => {\n splitviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!splitviewRef.current) {\n return;\n }\n splitviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nSplitviewReact.displayName = 'SplitviewComponent';\n","import { GridviewApi, GridviewPanel, } from 'dockview-core';\nimport { ReactPart } from '../react';\nexport class ReactGridPanelView extends GridviewPanel {\n constructor(id, component, reactComponent, reactPortalStore) {\n super(id, component);\n this.reactComponent = reactComponent;\n this.reactPortalStore = reactPortalStore;\n }\n getComponent() {\n var _a, _b;\n return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {\n params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},\n api: this.api,\n // TODO: fix casting hack\n containerApi: new GridviewApi(this._params\n .accessor),\n });\n }\n}\n","import React from 'react';\nimport { createGridview, PROPERTY_KEYS_GRIDVIEW, } from 'dockview-core';\nimport { ReactGridPanelView } from './view';\nimport { usePortalsLifecycle } from '../react';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_GRIDVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const GridviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const gridviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_GRIDVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (gridviewRef.current) {\n gridviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_GRIDVIEW.map((key) => props[key]));\n React.useEffect(() => {\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const frameworkOptions = {\n createComponent: (options) => {\n return new ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n };\n const api = createGridview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n gridviewRef.current = api;\n return () => {\n gridviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!gridviewRef.current) {\n return;\n }\n gridviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nGridviewReact.displayName = 'GridviewComponent';\n","import { ReactPart } from '../react';\nexport class PanePanelSection {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n title: parameters.title,\n containerApi: parameters.containerApi,\n });\n }\n toJSON() {\n return {\n id: this.id,\n };\n }\n update(params) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(params.params);\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import React from 'react';\nimport { createPaneview, PROPERTY_KEYS_PANEVIEW, } from 'dockview-core';\nimport { usePortalsLifecycle } from '../react';\nimport { PanePanelSection } from './view';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_PANEVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const PaneviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const paneviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_PANEVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (paneviewRef.current) {\n paneviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_PANEVIEW.map((key) => props[key]));\n React.useEffect(() => {\n var _a;\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};\n const frameworkOptions = {\n createComponent: (options) => {\n return new PanePanelSection(options.id, props.components[options.name], { addPortal });\n },\n createHeaderComponent: (options) => {\n return new PanePanelSection(options.id, headerComponents[options.name], { addPortal });\n },\n };\n const api = createPaneview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n paneviewRef.current = api;\n return () => {\n paneviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!paneviewRef.current) {\n return;\n }\n paneviewRef.current.updateOptions({\n createComponent: (options) => {\n return new PanePanelSection(options.id, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n React.useEffect(() => {\n var _a;\n if (!paneviewRef.current) {\n return;\n }\n const headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};\n paneviewRef.current.updateOptions({\n createHeaderComponent: (options) => {\n return new PanePanelSection(options.id, headerComponents[options.name], { addPortal });\n },\n });\n }, [props.headerComponents]);\n React.useEffect(() => {\n if (!paneviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = paneviewRef.current.onDidDrop((event) => {\n if (props.onDidDrop) {\n props.onDidDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onDidDrop]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nPaneviewReact.displayName = 'PaneviewComponent';\n","// extracted by mini-css-extract-plugin\nexport default {\"admonition\":\"admonition_Gfwi\",\"admonitionHeading\":\"admonitionHeading_f1Ed\",\"admonitionIcon\":\"admonitionIcon_kpSf\",\"admonitionContent\":\"admonitionContent_UjKb\"};","import React from 'react';\nimport clsx from 'clsx';\nimport { ThemeClassNames } from '@docusaurus/theme-common';\nimport styles from './styles.module.css';\nfunction AdmonitionContainer({ type, className, children }) {\n return (\n \n {children}\n \n );\n}\nfunction AdmonitionHeading({ icon, title }) {\n return (\n
\n {icon}\n {/* {title} */}\n
\n );\n}\nfunction AdmonitionContent({ children }) {\n return children ? (\n
{children}
\n ) : null;\n}\nexport default function AdmonitionLayout(props) {\n const { type, icon, title, children, className } = props;\n return (\n \n \n {children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconNote(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconNote from '@theme/Admonition/Icon/Note';\nconst infimaClassName = 'alert alert--secondary';\nconst defaultProps = {\n icon: ,\n title: (\n \n note\n \n ),\n};\nexport default function AdmonitionTypeNote(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconTip(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconTip from '@theme/Admonition/Icon/Tip';\nconst infimaClassName = 'alert alert--success';\nconst defaultProps = {\n icon: ,\n title: (\n \n tip\n \n ),\n};\nexport default function AdmonitionTypeTip(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconInfo(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconInfo from '@theme/Admonition/Icon/Info';\nconst infimaClassName = 'alert alert--info';\nconst defaultProps = {\n icon: ,\n title: (\n \n info\n \n ),\n};\nexport default function AdmonitionTypeInfo(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconCaution(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconWarning from '@theme/Admonition/Icon/Warning';\nconst infimaClassName = 'alert alert--warning';\nconst defaultProps = {\n icon: ,\n title: (\n \n warning\n \n ),\n};\nexport default function AdmonitionTypeWarning(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nexport default function AdmonitionIconDanger(props) {\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconDanger from '@theme/Admonition/Icon/Danger';\nconst infimaClassName = 'alert alert--danger';\nconst defaultProps = {\n icon: ,\n title: (\n \n danger\n \n ),\n};\nexport default function AdmonitionTypeDanger(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport Translate from '@docusaurus/Translate';\nimport AdmonitionLayout from '@theme/Admonition/Layout';\nimport IconWarning from '@theme/Admonition/Icon/Warning';\nconst infimaClassName = 'alert alert--warning';\nconst defaultProps = {\n icon: ,\n title: (\n \n caution\n \n ),\n};\n// TODO remove before v4: Caution replaced by Warning\n// see https://github.com/facebook/docusaurus/issues/7558\nexport default function AdmonitionTypeCaution(props) {\n return (\n \n {props.children}\n \n );\n}\n","import React from 'react';\nimport AdmonitionTypeNote from '@theme/Admonition/Type/Note';\nimport AdmonitionTypeTip from '@theme/Admonition/Type/Tip';\nimport AdmonitionTypeInfo from '@theme/Admonition/Type/Info';\nimport AdmonitionTypeWarning from '@theme/Admonition/Type/Warning';\nimport AdmonitionTypeDanger from '@theme/Admonition/Type/Danger';\nimport AdmonitionTypeCaution from '@theme/Admonition/Type/Caution';\nconst admonitionTypes = {\n note: AdmonitionTypeNote,\n tip: AdmonitionTypeTip,\n info: AdmonitionTypeInfo,\n warning: AdmonitionTypeWarning,\n danger: AdmonitionTypeDanger,\n};\n// Undocumented legacy admonition type aliases\n// Provide hardcoded/untranslated retrocompatible label\n// See also https://github.com/facebook/docusaurus/issues/7767\nconst admonitionAliases = {\n secondary: (props) => ,\n important: (props) => ,\n success: (props) => ,\n caution: AdmonitionTypeCaution,\n};\nexport default {\n ...admonitionTypes,\n ...admonitionAliases,\n};\n","import React from 'react';\nimport {processAdmonitionProps} from '@docusaurus/theme-common';\nimport AdmonitionTypes from '@theme/Admonition/Types';\nfunction getAdmonitionTypeComponent(type) {\n const component = AdmonitionTypes[type];\n if (component) {\n return component;\n }\n console.warn(\n `No admonition component found for admonition type \"${type}\". Using Info as fallback.`,\n );\n return AdmonitionTypes.info;\n}\nexport default function Admonition(unprocessedProps) {\n const props = processAdmonitionProps(unprocessedProps);\n const AdmonitionTypeComponent = getAdmonitionTypeComponent(props.type);\n return ;\n}\n","import React from 'react';\nimport clsx from 'clsx';\nimport { ThemeClassNames } from '@docusaurus/theme-common';\nimport { useDoc } from '@docusaurus/theme-common/internal';\nimport Heading from '@theme/Heading';\nimport MDXContent from '@theme/MDXContent';\nimport { FrameworkSelector } from '@site/src/components/frameworkSpecific';\n/**\n Title can be declared inside md content or declared through\n front matter and added manually. To make both cases consistent,\n the added title is added under the same div.markdown block\n See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120\n\n We render a \"synthetic title\" if:\n - user doesn't ask to hide it with front matter\n - the markdown content does not already contain a top-level h1 heading\n*/\nfunction useSyntheticTitle() {\n const { metadata, frontMatter, contentTitle } = useDoc();\n const shouldRender =\n !frontMatter.hide_title && typeof contentTitle === 'undefined';\n if (!shouldRender) {\n return null;\n }\n return metadata.title;\n}\nexport default function DocItemContent({ children }) {\n const syntheticTitle = useSyntheticTitle();\n return (\n
\n {syntheticTitle && (\n
\n \n {\n \n
{syntheticTitle}
\n \n
\n }\n \n \n )}\n {children}\n \n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"docItemContainer\":\"docItemContainer_c0TR\",\"docItemCol\":\"docItemCol_z5aJ\"};","import React from 'react';\nimport clsx from 'clsx';\nimport { useWindowSize } from '@docusaurus/theme-common';\nimport { useDoc } from '@docusaurus/theme-common/internal';\nimport DocItemPaginator from '@theme/DocItem/Paginator';\nimport DocVersionBanner from '@theme/DocVersionBanner';\nimport DocVersionBadge from '@theme/DocVersionBadge';\nimport DocItemFooter from '@theme/DocItem/Footer';\nimport DocItemTOCMobile from '@theme/DocItem/TOC/Mobile';\nimport DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop';\nimport DocItemContent from '@theme/DocItem/Content';\nimport DocBreadcrumbs from '@theme/DocBreadcrumbs';\nimport Unlisted from '@theme/Unlisted';\nimport styles from './styles.module.css';\n/**\n * Decide if the toc should be rendered, on mobile or desktop viewports\n */\nfunction useDocTOC() {\n const { frontMatter, toc } = useDoc();\n const windowSize = useWindowSize();\n const hidden = frontMatter.hide_table_of_contents;\n const canRender = !hidden && toc.length > 0;\n const mobile = canRender ? : undefined;\n const desktop =\n canRender && (windowSize === 'desktop' || windowSize === 'ssr') ? (\n \n ) : undefined;\n return {\n hidden,\n mobile,\n desktop,\n };\n}\nexport default function DocItemLayout({ children }) {\n const docTOC = useDocTOC();\n const {\n metadata: { unlisted },\n } = useDoc();\n return (\n
\n
\n {unlisted && }\n \n
\n
\n \n \n {docTOC.mobile}\n {children}\n \n
\n \n
\n
\n {docTOC.desktop && (\n
{docTOC.desktop}
\n )}\n
\n );\n}\n","import React from 'react';\n// Import the original mapper\nimport MDXComponents from '@theme-original/MDXComponents';\nimport { FrameworkSpecific } from '@site/src/components/frameworkSpecific';\nimport { CodeRunner } from '../components/ui/codeRunner';\n\nexport default {\n // Re-use the default mapping\n ...MDXComponents,\n // Map the \"\" tag to our Highlight component\n // `Highlight` will receive all props that were passed to `` in MDX\n FrameworkSpecific,\n CodeRunner,\n};\n","import BrowserOnly from '@docusaurus/BrowserOnly';\nimport { DockviewEmitter } from 'dockview';\nimport * as React from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport useBaseUrl from '@docusaurus/useBaseUrl';\nimport './frameworkSpecific.css';\n\nexport interface FrameworkDescriptor {\n value: string;\n label: string;\n icon: string;\n}\n\nconst frameworks: FrameworkDescriptor[] = [\n { value: 'JavaScript', label: 'JavaScript', icon: 'img/js-icon.svg' },\n { value: 'React', label: 'React', icon: 'img/react-icon.svg' },\n { value: 'Vue', label: 'Vue', icon: 'img/vue-icon.svg' },\n // { value: 'Angular', label: 'Angular' },\n];\n\nconst activeFrameworkGlobal = new DockviewEmitter({ replay: true });\n\nexport function useActiveFramework(): [\n FrameworkDescriptor,\n (value: string) => void\n] {\n const [value, setValue] = React.useState(\n localStorage.getItem('dv-docs-framework') ?? frameworks[0].value\n );\n\n React.useEffect(() => {\n const disposable = activeFrameworkGlobal.event((value) => [\n setValue(value),\n ]);\n\n activeFrameworkGlobal.fire(\n localStorage.getItem('dv-docs-framework') ?? frameworks[0].value\n );\n\n return () => {\n disposable.dispose();\n };\n }, []);\n\n const setter = React.useCallback((value: string) => {\n localStorage.setItem('dv-docs-framework', value);\n setValue(value);\n activeFrameworkGlobal.fire(value);\n }, []);\n\n const option = frameworks.find((_) => _.value === value);\n\n return [option, setter];\n}\n\n\n\nconst FrameworkSelector1 = () => {\n const [activeFramework, setActiveFramework] = useActiveFramework();\n\n const onChange = (event: React.ChangeEvent) => [\n setActiveFramework(event.target.value),\n ];\n\n return (\n \n \n
\n \n {activeFramework.label}\n \n \n
\n
\n \n {frameworks.map((framework) => {\n return (\n setActiveFramework(framework.label)}\n className=\"DropdownMenuItem\"\n >\n
\n \n {framework.label}\n \n \n
\n \n );\n })}\n \n
\n );\n};\n\nexport const FrameworkSelector = () => {\n return {() => };\n};\n\nconst FrameworkSpecific1 = (props: {\n framework: string;\n children: React.ReactNode;\n}) => {\n const [activeFramework] = useActiveFramework();\n\n if (activeFramework.value === props.framework) {\n return props.children;\n }\n\n return null;\n};\n\nexport const FrameworkSpecific = (props: {\n framework: string;\n children: React.ReactNode;\n}) => {\n return {() => };\n};\n","import * as React from 'react';\nimport { useActiveFramework } from '../frameworkSpecific';\nimport BrowserOnly from '@docusaurus/BrowserOnly';\n\nconst BASE_SANDBOX_URL =\n 'https://codesandbox.io/s/github/mathuo/dockview/tree/gh-pages';\n\nexport const _CodeRunner = (props: { id: string; height: number }) => {\n const [framework] = useActiveFramework();\n\n let frameworkName = framework.label.toLowerCase();\n\n if (frameworkName === 'javascript') {\n frameworkName = 'typescript';\n }\n\n const sandboxUrl = `${BASE_SANDBOX_URL}/templates/${\n props.id\n }/${framework.label.toLowerCase()}`;\n const path = `/templates/${props.id}/${frameworkName}/index.html`;\n return (\n \n );\n};\n\nexport const CodeRunner = (props: { id: string; height: number }) => {\n return {() => <_CodeRunner {...props} />};\n};\n\nconst CodeSandbox = (props: { url: string }) => {\n return (\n \n {`Open in `}\n \n \n CodeSandbox\n \n \n \n );\n};\n"],"names":["TransferObject","PanelTransfer","constructor","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","Event","Disposable","any","_len","arguments","length","children","Array","_key","listener","disposables","map","child","dispose","forEach","d","DockviewEvent","_defaultPrevented","defaultPrevented","preventDefault","AcceptableEvent","_isAccepted","isAccepted","accept","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","_last","options","_listeners","_disposed","event","_event","replay","push","index","indexOf","splice","add","fire","e","queueMicrotask","delete","addDisposableListener","element","type","addEventListener","removeEventListener","events","Map","size","set","AsapEvent","_onFired","_currentFireCount","_queued","onEvent","fireCountAtTimeOfEventSubscription","NONE","from","func","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","_len2","_key2","arg","MutableDisposable","_disposable","disposable","OverflowObserver","el","_onDidChange","onDidChange","_value","watchElementResize","entry","hasScrollX","target","scrollWidth","clientWidth","hasScrollY","scrollHeight","clientHeight","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","document","activeElement","loosingFocus","onFocus","onBlur","window","setTimeout","_refreshStateHandler","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","getDomNodePagePosition","domNode","left","top","width","height","getBoundingClientRect","scrollX","scrollY","disableIframePointEvents","rootNode","iframes","tagNames","findIframesInNode","node","nodeType","Node","ELEMENT_NODE","includes","tagName","shadowRoot","documentElement","allTagsNamesInclusiveOfShadowDoms","original","WeakMap","iframe","style","pointerEvents","release","get","Classnames","_classNames","setClassNames","classNames","split","filter","v","trim","tail","arr","slice","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","array","findIndex","t","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","contentSize","_contentSize","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","disabled","_disabled","margin","_margin","_b","_this","sashes","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","overloadMaxDelta","snapBefore","snapAfter","x","NEGATIVE_INFINITY","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","VERTICAL","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","Low","High","round","relayout","getViews","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","start","clientX","clientY","sashIndex","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","total","proportion","lowPriorityIndex","emptyDelta","visibleViewItems","sashCount","marginReducedSize","totalLeftOffset","viewLeftOffsets","runningVisiblePanelCount","flag","visiblePanelsBeforeThisView","offset","sashWidth","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","PROPERTY_KEYS_SPLITVIEW","properties","disableAutoResizing","Object","keys","Paneview","splitview","paneItems","skipAnimation","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","clearTimeout","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","_onDidVisibilityChange","onDidVisibilityChange","childDescriptor","setupChildrenEvents","_visible","isChildVisible","setChildVisible","wereAllChildrenHidden","areAllChildrenHidden","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","_ref","findLeaf","candiateNode","last","cloneNode","flipNode","orthogonal","totalSize","childSize","getGridLocation","parentElement","test","firstElementChild","lastElementChild","nextElementSibling","indexInParent","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","directionOrientation","getDirectionOrientation","rest","_index","serializeBranchNode","box","isGridBranchNode","toJSON","Gridview","_root","root","locked","_locked","branch","pop","maximizedView","_maximizedNode","leaf","hasMaximizedView","maximizeView","getNode","exitMaximizedView","getView","hiddenOnMaximize","hideAllViewsBut","parent","exclude","_onDidMaximizedNodeChange","isMaximized","showViewsInReverseOrder","serialize","maxmizedViewLocation","resullt","maximizedNode","_onDidViewVisibilityChange","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","call","oldRoot","normalize","childReference","insertOrthogonalSplitviewAtRoot","progmaticSelect","_getViews","nodeCachedVisibleSize","path","n","l","onDidViewVisibilityChange","onDidMaximizedNodeChange","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","PROPERTY_KEYS_GRIDVIEW","hideBorders","Resizable","_element","disableResizing","_disableResizing","offsetParent","currentElement","DocumentFragment","host","isInDocument","contentRect","nextLayoutId","toTarget","BaseGrid","id","_id","_groups","groups","values","gridview","activeGroup","_activeGroup","_onDidRemove","onDidRemove","_onDidAdd","onDidAdd","_onDidMaximizedChange","onDidMaximizedChange","_onDidActiveChange","onDidActiveChange","_bufferOnDidLayoutChange","onDidLayoutChange","_onDidViewVisibilityChangeMicroTaskQueue","onDidViewVisibilityChangeMicroTaskQueue","panel","isVisible","updateOptions","_c","_d","maximizeGroup","doSetGroupActive","isMaximizedGroup","exitMaximizedGroup","hasMaximizedGroup","doAddGroup","group","doRemoveGroup","has","skipActive","getPanel","setActive","removeGroup","moveToNext","moveToPrevious","forceResize","SplitviewApi","component","panels","onDidLayoutFromJSON","removePanel","focus","addPanel","movePanel","PaneviewApi","onDidDrop","onUnhandledDragOverEvent","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","force","DockviewApi","totalPanels","onDidMovePanel","onWillDrop","onWillShowOverlay","onWillDragGroup","onWillDragPanel","onDidPopoutGroupSizeChange","onDidPopoutGroupPositionChange","onDidOpenPopoutWindowFail","activePanel","getGroupPanel","addGroup","closeAllGroups","getGroup","addFloatingGroup","onDidMaximizedGroupChange","addPopoutGroup","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","setDisabled","isCancelled","dataTransfer","effectAllowed","items","DragAndDropObserver","callbacks","registerListeners","onDragEnter","onDragOver","onDragLeave","onDragEnd","onDrop","WillShowOverlayEvent","nativeEvent","directionToPosition","positionToDirection","DEFAULT_ACTIVATION_SIZE","DEFAULT_SIZE","Droptarget","_state","_onDrop","_onWillShowOverlay","_acceptedTargetZonesSet","Set","acceptedTargetZones","dnd","getOverrideTarget","getElements","_e","_f","_g","ACTUAL_TARGET","overrideTarget","removeDropTarget","getOverlayOutline","offsetWidth","offsetHeight","rect","currentTarget","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","willShowOverlayEvent","markAsUsed","targetElement","overlayElement","append","toggleClasses","stopPropagation","setTargetZones","setOverlayModel","model","overlayModel","USED_EVENT_ID","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","sizeOptions","outlineEl","elBox","ta","overlay","bigbox","rootTop","rootLeft","bounds","topPx","leftPx","widthPx","heightPx","checkBoundsChanged","visibility","transform","setGPUOptimizedBounds","changed","setGPUOptimizedBoundsFromStrings","overlayType","activationSizeOptions","activationSize","threshold","xp","yp","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","PROPERTY_KEYS_PANEVIEW","disableDnd","PaneviewUnhandledDragOverEvent","WillFocusEvent","PanelApiImpl","isFocused","_isFocused","isActive","_isActive","_isVisible","_width","_height","_parameters","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onWillFocus","onWillFocus","_onWillVisibilityChange","onWillVisibilityChange","_onActiveChange","onActiveChange","_onDidParametersChange","onDidParametersChange","getParameters","initialize","parameters","update","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","_params","api","tabIndex","outline","overflow","focusTracker","part","init","getComponent","assign","key","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","header","display","_onDidChangeExpansionState","_isExpanded","headerComponent","isHeaderVisible","accessor","ev","isPanelExpanded","renderOnce","expanded","body","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","lineHeight","minHeight","maxHeight","DraggablePaneviewPanel","_onDidDrop","_onUnhandledDragOverEvent","initDragFeatures","accessorId","draggable","handler","firedEvent","containerApi","existingPanel","allPanels","fromIndex","toIndex","ContentContainer","dropTargetContainer","dropTarget","theme","dndPanelOverlay","shiftKey","show","hide","renderPanel","asActive","doRender","isPanelActive","content","renderer","renderContainer","detatch","attach","referenceContainer","openPanel","closePanel","addGhostImage","ghostElement","setDragImage","TabDragHandler","Tab","_onPointDown","onPointerDown","_onDropped","dragHandler","getComputedStyle","newNode","getPropertyValue","getPropertyPriority","setContent","updateDragAndDropState","WillShowOverlayLocationEvent","kind","GroupDragHandler","dragEvent","bgColor","color","backgroundColor","padding","fontSize","borderRadius","textContent","VoidContainer","Scrollbar","scrollableElement","_scrollLeft","_horizontalScrollbar","deltaY","MouseWheelSpeed","calculateScrollbarStyles","originalClientX","originalScrollLeft","deltaX","onEnd","scrollLeft","_animationTimer","px","percentageComplete","Tabs","showTabsOverflowControl","_showTabsOverflowControl","_tabsList","_observerDisposable","hasOverflow","toggleDropdown","reset","_tabs","tabs","selectedIndex","_onTabDragStart","onTabDragStart","_onOverflowTabsChange","onOverflowTabsChange","scrollbars","scrollbar","button","tab","setActivePanel","runningWidth","isActivePanel","find","isFloatingGroupsEnabled","disableFloatingGroups","isFloatingWithOnePanel","inDragMode","addTab","tabToRemove","childPosition","parentPosition","isChildEntirelyVisibleWithinParent","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createChevronRightButton","TabsContainer","hidden","_hidden","dropdownPart","_overflowTabs","_dropdownDisposable","_onGroupDragStart","onGroupDragStart","singleTabMode","rightActionsContainer","leftActionsContainer","preActionsContainer","disableTabsOverflowList","voidContainer","onDidOptionsChange","setRightActionsElement","rightActions","setLeftActionsElement","leftActions","setPrefixActionsElement","preActions","_isGroupActive","updateClassnames","text","icon","createDropdownElementHandle","prepend","capture","panelObject","createTabRenderer","wrapper","popupService","close","scrollIntoView","relativeParent","zIndex","findRelativeZIndexParent","openPopover","DockviewUnhandledDragOverEvent","PROPERTY_KEYS_DOCKVIEW","floatingGroupBounds","popoutUrl","defaultRenderer","debug","rootOverlayModel","noPanelsOverlay","dndEdges","DockviewDidDropEvent","DockviewWillDropEvent","_kind","DockviewGroupPanelModel","_activePanel","_panels","isEmpty","hasWatermark","watermark","tabsContainer","isContentFocused","contentContainer","_location","groupPanel","_onDidLocationChange","mostRecentlyUsed","_overwriteRenderContainer","_overwriteDropTargetContainer","_panelDisposables","_onMove","onMove","_onWillDrop","_onDidAddPanel","_onDidPanelTitleChange","onDidPanelTitleChange","_onDidPanelParametersChange","onDidPanelParametersChange","_onDidRemovePanel","_onDidActivePanelChange","_api","hideHeader","handleDropEvent","focusContent","rerender","overlayRenderContainer","rootDropTargetContainer","doAddPanel","updateContainer","createRightHeaderActionComponent","_rightHeaderActions","createLeftHeaderActionComponent","_leftHeaderActions","createPrefixHeaderActionComponent","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","skipSetActive","updateParentGroup","doSetActivePanel","skipSetGroupActive","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isLast","removeEmptyGroup","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActiveGroup","hasExistingPanel","updateMru","onDidTitleChange","runEvents","createWatermarkComponent","willDropEvent","getKind","itemId","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","__minimumWidth","__minimumHeight","__maximumHeight","__maximumWidth","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_maximumWidth","_evaluatedMaximumWidth","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","MAX_SAFE_INTEGER","maximum","minimum","NOT_INITIALIZED_MESSAGE","DockviewGroupPanelApiImpl","_group","onDidLocationChange","getWindow","moveTo","moveGroupOrPanel","maximize","exitMaximized","DockviewGroupPanel","activePanelMinimumWidth","activePanelMinimumHeight","activePanelMaximumWidth","activePanelMaximumHeight","_model","constraints","themeDark","name","themeLight","themeVisualStudio","themeAbyss","themeDracula","themeReplit","gap","themeAbyssSpaced","dndOverlayMounting","themeLightSpaced","DockviewPanelApiImpl","oldGroup","_onDidGroupChange","setupGroupEventListeners","tabComponent","_tabComponent","_onDidTitleChange","_onDidActiveGroupChange","onDidGroupChange","_onDidRendererChange","onDidRendererChange","groupEventsDisposable","setTitle","setRenderer","previousGroup","_trackGroupActive","hasBecomeHidden","hasBecomeVisible","DockviewPanel","_title","_renderer","contentComponent","isPanelVisible","DefaultTab","_content","action","render","DockviewPanelModel","_tab","createContentComponent","createTabComponent","tabLocation","cmp","_updateEvent","componentName","createComponent","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","arialLevelTracker","_orderedList","destroy","setAttribute","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bottom","right","bringToFront","verticalAlignment","horiziontalAlignment","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","parseFloat","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DEFAULT_FLOATING_GROUP_POSITION","PositionCache","cache","currentFrameId","rafId","getPosition","cached","frameId","scheduleFrameUpdate","invalidate","OverlayRenderContainer","positionCache","pendingUpdates","updateAllPositions","createFocusableElement","focusContainer","box2","visibilityChanged","observerDisposable","correctLayerPosition","floatingGroup","floatingGroups","level","getAttribute","MutationObserver","attributeFilter","attributes","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","apply","PopoutWindow","_window","_onWillClose","onWillClose","_onDidClose","onDidClose","dimensions","screenX","screenY","innerWidth","innerHeight","open","url","features","entries","join","externalWindow","createPopoutWindowContainer","onDidOpen","externalDocument","styleSheetList","styleSheets","styleSheet","href","link","rel","head","cssTexts","cssRules","rule","cssText","err","createTextNode","addStyles","StrictEventsSequencing","PopupService","_active","_activeDisposable","anchorBox","offsetX","offsetY","HTMLElement","buffer","rootRect","translateX","translateY","shiftAbsoluteElementIntoView","DropTargetAnchorContainer","exists","_outline","anchor","createAnchor","targetBox","DEFAULT_ROOT_OVERLAY_MODEL","moveGroupWithoutDestroying","removedPanel","DockviewComponent","flatMap","_options","_floatingGroups","popoutRestorationPromise","_popoutRestorationPromise","nextGroupId","_deserializer","_watermark","_onWillDragPanel","_onWillDragGroup","_onDidPopoutGroupSizeChange","_onDidPopoutGroupPositionChange","_onDidOpenPopoutWindowFail","_onDidLayoutFromJSON","_onDidMovePanel","_onDidMaximizedGroupChange","_popoutGroups","_onDidRemoveGroup","_onDidAddGroup","_onDidOptionsChange","_moving","_themeClassnames","_rootDropTarget","updateDropTargetModel","updateTheme","updateWatermark","orthogonalize","itemToPopout","toClassList","list","cls","startsWith","getDockviewTheme","overridePopoutGroup","getNextGroupId","popoutWindowDisposable","popoutContainer","referenceGroup","referenceLocation","isGroupAddedToDom","createGroup","error","movingLock","gready","floatingBox","returnedGroup","doSetGroupAndPanelActive","isValidReferenceGroup","popoutGroup","_onDidWindowPositionChange","emitter","timeout","previousScreenX","previousScreenY","checkMovement","closed","currentScreenX","currentScreenY","onDidWindowMoveEnd","resizeTimeout","onDidWindowResizeEnd","skipPopoutAssociated","skipPopoutReturn","catch","popoutReferenceGroupId","popoutReferenceGroup","skipRemoveGroup","anchoredBox","getAnchoredBox","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","skipActiveGroup","createGroupAtLocation","oldDisableDnd","floating","includePanel","collection","floats","popoutGroups","gridReferenceGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","serializedPopoutGroups","popoutPromises","serializedPopoutGroup","popoutPromise","all","hasActiveGroup","initial","initialWidth","initialHeight","referencePanel","findGroup","isPanelOptionsWithGroup","createPanel","inactive","floatingGroupOptions","relativeLocation","orientationAtLocation","coordinates","watermarkContainer","isGroupOptionsWithGroup","selectedGroup","refGroup","removedGroup","re","isMoving","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","newGroup","targetGroup","updatedReferenceLocation","dropLocation","isDestinationGroupEmpty","moveGroup","selectedFloatingGroup","selectedPopoutGroup","targetFloatingGroup","GridviewComponent","_onDidLayoutfromJSON","hasOrientationChanged","serializedGridview","queue","registerPanel","f","reference","groupItem","SplitviewComponent","_splitview","_splitviewChangeDisposable","_onDidLayoutChange","skipFocus","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","MAXIMUM_BODY_SIZE","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","createHeaderComponent","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","createDockview","createSplitview","createGridview","createPaneview","ReactComponentBridge","props","ref","triggerRender","React","_props","componentProps","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","$$typeof","bridgeComponent","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","existingPortals","DockviewDisposable","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","prevProps","changes","propKey","propValue","frameworkTabComponents","tabComponents","frameworkOptions","leftHeaderActionsComponent","rightHeaderActionsComponent","prefixHeaderActionsComponent","components","watermarkComponent","obj","extractCoreOptions","onReady","CloseButton","viewBox","focusable","__rest","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","DockviewDefaultTab","_containerApi","hideClose","closeActionOverride","onPointerUp","onPointerLeave","useTitle","isMiddleMouseButton","onClose","onBtnPointerDown","_onPointerDown","_onPointerUp","_onPointerLeave","onClick","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","headerComponents","AdmonitionContainer","_jsx","clsx","ThemeClassNames","common","admonition","admonitionType","AdmonitionHeading","_ref2","admonitionHeading","admonitionIcon","AdmonitionContent","_ref3","admonitionContent","AdmonitionLayout","_jsxs","AdmonitionIconNote","fillRule","defaultProps","IconNote","Translate","description","AdmonitionTypeNote","AdmonitionIconTip","IconTip","AdmonitionTypeTip","AdmonitionIconInfo","IconInfo","AdmonitionTypeInfo","AdmonitionIconCaution","IconWarning","AdmonitionIconDanger","IconDanger","note","tip","info","warning","danger","secondary","important","success","caution","Admonition","unprocessedProps","processAdmonitionProps","AdmonitionTypeComponent","AdmonitionTypes","DocItemContent","syntheticTitle","metadata","frontMatter","contentTitle","useDoc","hide_title","useSyntheticTitle","docs","docMarkdown","Heading","as","justifyContent","FrameworkSelector","MDXContent","DocItemLayout","docTOC","toc","windowSize","useWindowSize","hide_table_of_contents","canRender","mobile","DocItemTOCMobile","desktop","DocItemTOCDesktop","useDocTOC","unlisted","docItemCol","Unlisted","DocVersionBanner","docItemContainer","DocBreadcrumbs","DocVersionBadge","DocItemFooter","DocItemPaginator","MDXComponents","FrameworkSpecific","CodeRunner","frameworks","label","activeFrameworkGlobal","useActiveFramework","setValue","localStorage","getItem","setter","setItem","FrameworkSelector1","activeFramework","setActiveFramework","DropdownMenu","asChild","src","useBaseUrl","marginRight","side","align","sideOffset","framework","paddingRight","BrowserOnly","FrameworkSpecific1","_CodeRunner","frameworkName","toLowerCase"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/1800.80e2cff8.js b/assets/js/1800.c393a774.js similarity index 99% rename from assets/js/1800.80e2cff8.js rename to assets/js/1800.c393a774.js index 703f83acd..9b8384de9 100644 --- a/assets/js/1800.80e2cff8.js +++ b/assets/js/1800.c393a774.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[1800],{5399:(e,t,i)=>{i.d(t,{CJ:()=>Gt,KU:()=>w,GW:()=>l,O4:()=>v,Gi:()=>f,Tn:()=>ue,Tg:()=>Xe,g1:()=>U,i5:()=>F,gq:()=>Ue,kQ:()=>oe,jl:()=>Ce,mH:()=>j,fX:()=>le,hJ:()=>Mt,lT:()=>Rt,rc:()=>Ht,iz:()=>Ft,cO:()=>Wt,M:()=>we,UM:()=>it,Zc:()=>ot,Hx:()=>Qe,MV:()=>nt,Qp:()=>et,Lt:()=>rt,TR:()=>st,ZS:()=>tt});class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var d,l;r.INSTANCE=new r,function(e){e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=t.map((t=>t(e)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}}}}(d||(d={}));class p{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class u{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class m{static create(){var e;return new m(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class c{constructor(e,t){this.callback=e,this.stacktrace=t}}class v{static setLeakageMonitorEnabled(e){e!==v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.clear(),v.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new c(e,v.ENABLE_TRACKING?m.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):v.ENABLE_TRACKING}}},v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.add(this._event,m.create())),this._event}fire(e){var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const i of this._listeners)i.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(v.ENABLE_TRACKING&&queueMicrotask((()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())})),this._listeners=[]),v.ENABLE_TRACKING&&this._event&&v.MEMORY_LEAK_WATCHER.delete(this._event))}}function g(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}v.ENABLE_TRACKING=!1,v.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class _{constructor(){this._onFired=new v,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event((()=>{this._currentFireCount>t&&e()}))}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask((()=>{this._queued=!1,this._onFired.fire()})))}dispose(){this._onFired.dispose()}}!function(e){e.NONE={dispose:()=>{}},e.from=function(e){return{dispose:()=>{e()}}}}(l||(l={}));class w{get isDisposed(){return this._isDisposed}constructor(){this._isDisposed=!1;for(var e=arguments.length,t=new Array(e),i=0;ithis._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class f{constructor(){this._disposable=l.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=l.NONE)}}class D extends w{constructor(e){super(),this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,b(e,(e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)})))}}function b(e,t){const i=new ResizeObserver((e=>{requestAnimationFrame((()=>{const i=e[0];t(i)}))}));return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const C=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function x(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function z(e){return new A(e)}class A extends w{constructor(e){super(),this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=x(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{x(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(g(e,"focus",n,!0)),this.addDisposables(g(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const E="dv-quasiPreventDefault";function P(e){return e[E]}function G(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function O(e){void 0===e&&(e=document);const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const n of t)i.set(n,n.style.pointerEvents),n.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class I{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const t of this._classNames)S(this.element,t,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const t of this._classNames)S(this.element,t,!0)}}function V(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function N(e,t){if(e.length!==t.length)return!1;for(let i=0;i-1&&(e.splice(i,1),e.unshift(t))}function L(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function k(e,t){const i=e.findIndex((e=>e===t));return i>-1&&(e.splice(i,1),!0)}const M=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),R=()=>{let e=1;return{next:()=>(e++).toString()}},W=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;nt;n--)i.push(n);return i};class H{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=M(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var F,B,U,J;!function(e){e.HORIZONTAL="HORIZONTAL",e.VERTICAL="VERTICAL"}(F||(F={})),function(e){e[e.MAXIMUM=0]="MAXIMUM",e[e.MINIMUM=1]="MINIMUM",e[e.DISABLED=2]="DISABLED",e[e.ENABLED=3]="ENABLED"}(B||(B={})),function(e){e.Low="low",e.High="high",e.Normal="normal"}(U||(U={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(J||(J={}));class ${get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,C(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==F.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce(((e,t)=>e+t.minimumSize),0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce(((e,t)=>e+t.maximumSize),0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,S(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,S(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,n,s=this;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new v,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=function(e,t,i,n,o,r,a,h,d){if(void 0===i&&(i=s.viewItems.map((e=>e.size))),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===a&&(a=Number.POSITIVE_INFINITY),e<0||e>s.viewItems.length)return 0;const l=W(e,-1),p=W(e+1,s.viewItems.length);if(o)for(const s of o)T(l,s),T(p,s);if(n)for(const s of n)L(l,s),L(p,s);const u=l.map((e=>s.viewItems[e])),m=l.map((e=>i[e])),c=p.map((e=>s.viewItems[e])),v=p.map((e=>i[e])),g=l.reduce(((e,t)=>e+s.viewItems[t].minimumSize-i[t]),0),_=l.reduce(((e,t)=>e+s.viewItems[t].maximumSize-i[t]),0),w=0===p.length?Number.POSITIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].minimumSize),0),f=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].maximumSize),0),D=Math.max(g,f),b=Math.min(w,_);let C=!1;if(h){const e=s.viewItems[h.index],i=t>=h.limitDelta;C=i!==e.visible,e.setVisible(i,h.size)}if(!C&&d){const e=s.viewItems[d.index],i=t{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(C(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(y(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=W(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>this.viewItems[e].priority===U.Low)),e],s=i.filter((e=>this.viewItems[e].priority===U.High)),o=this.viewItems[e];t=Math.round(t),t=M(t,o.minimumSize,Math.min(o.maximumSize,this._size)),o.size=t,this.relayout(n,s)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=M(t,e.minimumSize,e.maximumSize),e.size=t;const n=W(this.viewItems.length).filter((e=>e!==i)),s=[...n.filter((e=>this.viewItems[e].priority===U.Low)),i],o=n.filter((e=>this.viewItems[e].priority===U.High));this.relayout([...s,i],o)}addView(e,t,i,n){void 0===t&&(t={type:"distribute"}),void 0===i&&(i=this.viewItems.length);const s=document.createElement("div");let o;s.className="dv-view",s.appendChild(e.element),o="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange((e=>this.onDidChange(a,e.size))),a=new H(s,e,o,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(s)}});if(i===this.viewItems.length?this.viewContainer.appendChild(s):this.viewContainer.insertBefore(s,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=O(),n=this._orientation===F.HORIZONTAL?t.clientX:t.clientY,s=function(e,t){for(let i=0;it.container===e)),o=this.viewItems.map((e=>e.size));let r,a;const h=W(s,-1),d=W(s+1,this.viewItems.length),l=h.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-o[t])),0),p=h.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t])),0),u=0===d.length?Number.POSITIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].minimumSize)),0),m=0===d.length?Number.NEGATIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize)),0),c=Math.max(l,m),v=Math.min(u,p),g=this.findFirstSnapIndex(h),_=this.findFirstSnapIndex(d);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?c-t:c+t,size:e.size}}if("number"==typeof _){const e=this.viewItems[_],t=Math.floor(e.viewMinimumSize/2);a={index:_,limitDelta:e.visible?v+t:v-t,size:e.size}}const w=e=>{const t=(this._orientation===F.HORIZONTAL?e.clientX:e.clientY)-n;this.resize(s,t,o,void 0,void 0,c,v,r,a),this.distributeEmptySpace(),this.layoutViews()},f=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",f),document.removeEventListener("pointercancel",f),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",w),document.addEventListener("pointerup",f),document.addEventListener("pointercancel",f)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}n||this.relayout([i]),n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=M(i,r.minimumSize,r.maximumSize);const n=W(this.viewItems.length),s=n.filter((e=>this.viewItems[e].priority===U.Low)),o=n.filter((e=>this.viewItems[e].priority===U.High));this.relayout(s,o)}removeView(e,t,i){void 0===i&&(i=!1);const n=this.viewItems.splice(e,1)[0];if(n.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),n=void 0===i?this.getViewSize(e):J.Invisible(i),s=this.removeView(e,void 0,!0);this.addView(s,n,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=M(Math.round(s*e/t),n.minimumSize,n.maximumSize))}}else{const t=W(this.viewItems.length),n=t.filter((e=>this.viewItems[e].priority===U.Low)),s=t.filter((e=>this.viewItems[e].priority===U.High));this.resize(this.viewItems.length-1,e-i,void 0,n,s)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=W(this.viewItems.length-1,-1),s=n.filter((e=>this.viewItems[e].priority===U.Low)),o=n.filter((e=>this.viewItems[e].priority===U.High));for(const r of o)T(n,r);for(const r of s)L(n,r);"number"==typeof e&&L(n,e);for(let r=0;0!==i&&r0&&(this._proportions=this.viewItems.map((e=>e.visible?e.size/this._contentSize:void 0)))}layoutViews(){if(this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter((e=>e.visible)),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let n=0;const s=[],o=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((e,r)=>{n+=this.viewItems[r].size,s.push(n);const a=e.visible?e.size-i:0,h=Math.max(0,o[r]-1),d=0===r||0===h?0:s[r-1]+h/t*i;if(r0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const s=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const o=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let a=0;a0||this.startSnappingEnabled)?this.updateSash(e,B.MINIMUM):l&&t[a]&&(r{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class Z extends w{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:F.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new $(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach((e=>{const t=new w(e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}))),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize})),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire(void 0)})),this.splitview.onDidAddView((()=>{this._onDidChange.fire()})),this.splitview.onDidRemoveView((()=>{this._onDidChange.fire()})))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i,n){void 0===i&&(i=this.splitview.length),void 0===n&&(n=!1);const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t){void 0===t&&(t={skipDispose:!1});const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),y(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,C(this.element,"dv-animated")}),200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach((e=>{e.disposable.dispose(),e.pane.dispose()})),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===F.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===F.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===F.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===F.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===F.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===F.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,n){void 0===n&&(n=0),this.view=e,this.orientation=t,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=n,this._disposable=this.view.onDidChange((e=>{e?this._onDidChange.fire({size:this.orientation===F.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===F.VERTICAL?e.height:e.width}):this._onDidChange.fire({})}))}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class Y extends w{get width(){return this.orientation===F.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===F.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0)))}get maximumSize(){return Math.min(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY)))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===F.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===F.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===F.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===F.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return U.Normal;const e=this.children.map((e=>void 0===e.priority?U.Normal:e.priority));return e.some((e=>e===U.High))?U.High:e.some((e=>e===U.Low))?U.Low:U.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach((t=>{t instanceof Y&&(t.margin=e)}))}constructor(e,t,i,n,s,o,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=l.NONE,this.children=[],this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=s,this._size=n,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=a.map((e=>e.node)),this.splitview=new $(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new $(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=o,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire({})}))),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const n=0===this.splitview.contentSize;(t&&i||!t&&n)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new w(d.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((e,t)=>e instanceof Y?e.onDidVisibilityChange((e=>{let{visible:i}=e;this.setChildVisible(t,i)})):l.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function q(e,t){if(e instanceof X)return e;if(e instanceof Y)return q(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];n.addChild(K(i,i.size,i.orthogonalSize),i.size,0,!0)}return n}return new X(e.view,e.orientation,i)}function Q(e,t,i){if(e instanceof Y){const n=new Y(ie(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(Q(r,i,h),h,0,!0)}return n}return new X(e.view,ie(e.orientation),i)}function ee(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=function(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}(t);return[...ee(t.parentElement.parentElement.parentElement),i]}function te(e,t,i){const n=function(e,t){return t.length%2==0?ie(e):e}(e,t),s=function(e){return"top"===e||"bottom"===e?F.VERTICAL:F.HORIZONTAL}(i);if(n===s){const[e,n]=V(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}const ie=e=>e===F.HORIZONTAL?F.VERTICAL:F.HORIZONTAL;const ne=(e,t)=>{const i=t===F.VERTICAL?e.box.width:e.box.height;return function(e){return!!e.children}(e)?{type:"branch",data:e.children.map((e=>ne(e,ie(t)))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class se{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=Q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof Y&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=ee(e.element),[n,s]=this.getNode(i);if(!(s instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n=0;n--){const s=i.children[n];s instanceof X?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=ee(e.element)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,n=i===F.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,n),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,n]=this.getNode(t);if(!(n instanceof X))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ie(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new X(r,t,n,e.size)}return o}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=K(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new Y(ie(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Q(t,t.orthogonalSize,t.size),J.Distribute,0)}else this._root.addChild(e,J.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const n={height:e.height,width:e.width};if(e instanceof X)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let o=0;o-1;s--){const n=i[s],o=e[s]||0;if(t?o-1>-1:o+1h.getChildSize(t)));if(h.removeChild(l,t).dispose(),a instanceof Y){m.splice(l,1,...a.children.map((e=>e.size)));for(let e=0;e0;)a.removeChild(0)}else{const e=new X(a.view,ie(a.orientation),a.size),t=u?a.orthogonalSize:J.Invisible(a.orthogonalSize);h.addChild(e,t,l)}a.dispose();for(let c=0;c=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,i)}}const oe=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class re extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t){void 0===t&&(t=!1),super(),this._disableResizing=t,this._element=e,this.addDisposables(b(this._element,(e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const ae=R();function he(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class de extends re{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map((e=>e.value))}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=ae.next(),this._groups=new Map,this._onDidRemove=new v,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new v,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new v,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new _,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new _,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new se(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange((e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})})),this.gridview.onDidViewVisibilityChange((()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire())),this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.layout(this.width,this.height,!0)})),l.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),d.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)((()=>{this._bufferOnDidLayoutChange.fire()})),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(ee(e.element))}updateOptions(e){var t,i,n,s;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t,i){void 0===t&&(t=[0]),this.gridview.addView(e,null!=i?i:J.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),n=this.gridview.remove(e,J.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return n}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class le{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class pe{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ue{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPanel(){return this.component.onDidAddGroup}get onDidRemovePanel(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActiveGroupChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get panels(){return this.component.groups}get orientation(){return this.component.orientation}set orientation(e){this.component.updateOptions({orientation:e})}constructor(e){this.component=e}focus(){this.component.focus()}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e,t){this.component.removePanel(e,t)}movePanel(e,t){this.component.movePanel(e,t)}getPanel(e){return this.component.getPanel(e)}fromJSON(e){return this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}get panels(){return this.component.panels}get groups(){return this.component.groups}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e){this.component.removePanel(e)}addGroup(e){return this.component.addGroup(e)}closeAllGroups(){return this.component.closeAllGroups()}removeGroup(e){this.component.removeGroup(e)}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.addFloatingGroup(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}moveToNext(e){this.component.moveToNext(e)}moveToPrevious(e){this.component.moveToPrevious(e)}maximizeGroup(e){this.component.maximizeGroup(e.group)}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.exitMaximizedGroup()}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.addPopoutGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ce extends w{constructor(e,t){super(),this.el=e,this.disabled=t,this.dataDisposable=new f,this.pointerEventsDisposable=new f,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this.addDisposables(this._onDragStart,this.dataDisposable,this.pointerEventsDisposable),this.configure()}setDisabled(e){this.disabled=e}isCancelled(e){return!1}configure(){this.addDisposables(this._onDragStart,g(this.el,"dragstart",(e=>{if(e.defaultPrevented||this.isCancelled(e)||this.disabled)return void e.preventDefault();const t=O();if(this.pointerEventsDisposable.value={dispose:()=>{t.release()}},this.el.classList.add("dv-dragged"),setTimeout((()=>this.el.classList.remove("dv-dragged")),0),this.dataDisposable.value=this.getData(e),this._onDragStart.fire(e),e.dataTransfer){e.dataTransfer.effectAllowed="move";e.dataTransfer.items.length>0||e.dataTransfer.setData("text/plain","")}})),g(this.el,"dragend",(()=>{this.pointerEventsDisposable.dispose(),setTimeout((()=>{this.dataDisposable.dispose()}),0)})))}}class ve extends w{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(g(this.element,"dragenter",(e=>{this.onDragEnter(e)}),!0)),this.addDisposables(g(this.element,"dragover",(e=>{this.onDragOver(e)}),!0)),this.addDisposables(g(this.element,"dragleave",(e=>{this.onDragLeave(e)}))),this.addDisposables(g(this.element,"dragend",(e=>{this.onDragEnd(e)}))),this.addDisposables(g(this.element,"drop",(e=>{this.onDrop(e)})))}}class ge extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}constructor(e){super(),this.options=e}}function _e(e){switch(e){case"above":return"top";case"below":return"bottom";case"left":return"left";case"right":return"right";case"within":return"center";default:throw new Error(`invalid direction '${e}'`)}}function we(e){switch(e){case"top":return"above";case"bottom":return"below";case"left":return"left";case"right":return"right";case"center":return"within";default:throw new Error(`invalid position '${e}'`)}}const fe={value:20,type:"percentage"},De={value:50,type:"percentage"};class be extends w{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new ve(this.element,{onDragEnter:()=>{var e,t,i;null===(i=null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||void 0===i||i.getElements()},onDragOver:e=>{var t,i,n,s,o,r,a;be.ACTUAL_TARGET=this;const h=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);if(0===this._acceptedTargetZonesSet.size){if(h)return;return void this.removeDropTarget()}const d=null!==(o=null===(s=(n=this.options).getOverlayOutline)||void 0===s?void 0:s.call(n))&&void 0!==o?o:this.element,l=d.offsetWidth,p=d.offsetHeight;if(0===l||0===p)return;const u=e.currentTarget.getBoundingClientRect(),m=(null!==(r=e.clientX)&&void 0!==r?r:0)-u.left,c=(null!==(a=e.clientY)&&void 0!==a?a:0)-u.top,v=this.calculateQuadrant(this._acceptedTargetZonesSet,m,c,l,p);if(this.isAlreadyUsed(e)||null===v)return void this.removeDropTarget();if(!this.options.canDisplayOverlay(e,v)){if(h)return;return void this.removeDropTarget()}const g=new ge({nativeEvent:e,position:v});this._onWillShowOverlay.fire(g),g.defaultPrevented?this.removeDropTarget():(this.markAsUsed(e),h||this.targetElement||(this.targetElement=document.createElement("div"),this.targetElement.className="dv-drop-target-dropzone",this.overlayElement=document.createElement("div"),this.overlayElement.className="dv-drop-target-selection",this._state="center",this.targetElement.appendChild(this.overlayElement),d.classList.add("dv-drop-target"),d.append(this.targetElement)),this.toggleClasses(v,l,p),this._state=v)},onDragLeave:()=>{var e,t;(null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||this.removeDropTarget()},onDragEnd:e=>{var t,i;const n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);n&&be.ACTUAL_TARGET===this&&this._state&&(e.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:e})),this.removeDropTarget(),null==n||n.clear()},onDrop:e=>{var t,i,n;e.preventDefault();const s=this._state;this.removeDropTarget(),null===(n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t))||void 0===n||n.clear(),s&&(e.stopPropagation(),this._onDrop.fire({position:s,nativeEvent:e}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(e){e[be.USED_EVENT_ID]=!0}isAlreadyUsed(e){const t=e[be.USED_EVENT_ID];return"boolean"==typeof t&&t}toggleClasses(e,t,i){var n,s,o,r,a,h,d;const l=null===(s=(n=this.options).getOverrideTarget)||void 0===s?void 0:s.call(n);if(!l&&!this.overlayElement)return;const p=t<100,u=i<100,m="left"===e,c="right"===e,v="top"===e,g="bottom"===e,_=!p&&c,w=!p&&m,f=!u&&v,D=!u&&g;let b=1;const C=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.size)&&void 0!==r?r:De;if("percentage"===C.type?b=M(C.value,0,100)/100:((_||w)&&(b=M(0,C.value,t)/t),(f||D)&&(b=M(0,C.value,i)/i)),l){const n=null!==(d=null===(h=(a=this.options).getOverlayOutline)||void 0===h?void 0:h.call(a))&&void 0!==d?d:this.element,s=n.getBoundingClientRect(),o=l.getElements(void 0,n),r=o.root,u=o.overlay,C=r.getBoundingClientRect(),y=s.top-C.top,x=s.left-C.left,z={top:y,left:x,width:t,height:i};if(_?(z.left=x+t*(1-b),z.width=t*b):w?z.width=t*b:f?z.height=i*b:D&&(z.top=y+i*(1-b),z.height=i*b),p&&m&&(z.width=4),p&&c&&(z.left=x+t-4,z.width=4),!function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;return e.style.top!==r||e.style.left!==a||e.style.width!==h||e.style.height!==d}(u,z))return;return function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;e.style.top=r,e.style.left=a,e.style.width=h,e.style.height=d,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(u,z),u.className="dv-drop-target-anchor"+(this.options.className?` ${this.options.className}`:""),S(u,"dv-drop-target-left",m),S(u,"dv-drop-target-right",c),S(u,"dv-drop-target-top",v),S(u,"dv-drop-target-bottom",g),S(u,"dv-drop-target-center","center"===e),void(o.changed&&(S(u,"dv-drop-target-anchor-container-changed",!0),setTimeout((()=>{S(u,"dv-drop-target-anchor-container-changed",!1)}),10)))}if(!this.overlayElement)return;const y={top:"0px",left:"0px",width:"100%",height:"100%"};_?(y.left=100*(1-b)+"%",y.width=100*b+"%"):w?y.width=100*b+"%":f?y.height=100*b+"%":D&&(y.top=100*(1-b)+"%",y.height=100*b+"%"),function(e,t){const{top:i,left:n,width:s,height:o}=t;e.style.top=i,e.style.left=n,e.style.width=s,e.style.height=o,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(this.overlayElement,y),S(this.overlayElement,"dv-drop-target-small-vertical",u),S(this.overlayElement,"dv-drop-target-small-horizontal",p),S(this.overlayElement,"dv-drop-target-left",m),S(this.overlayElement,"dv-drop-target-right",c),S(this.overlayElement,"dv-drop-target-top",v),S(this.overlayElement,"dv-drop-target-bottom",g),S(this.overlayElement,"dv-drop-target-center","center"===e)}calculateQuadrant(e,t,i,n,s){var o,r;const a=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.activationSize)&&void 0!==r?r:fe;return"percentage"===a.type?function(e,t,i,n,s,o){const r=100*t/n,a=100*i/s;if(e.has("left")&&r100-o)return"right";if(e.has("top")&&a100-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value):function(e,t,i,n,s,o){if(e.has("left")&&tn-o)return"right";if(e.has("top")&&is-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value)}removeDropTarget(){var e;this.targetElement&&(this._state=void 0,null===(e=this.targetElement.parentElement)||void 0===e||e.classList.remove("dv-drop-target"),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0)}}be.USED_EVENT_ID="__dockview_droptarget_event_is_used__";const Ce=(()=>{const e={disableAutoResizing:void 0,disableDnd:void 0,className:void 0};return Object.keys(e)})();class ye extends u{constructor(e,t,i,n){super(),this.nativeEvent=e,this.position=t,this.getData=i,this.panel=n}}class Se extends p{constructor(){super()}}class xe extends w{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new f,this._onDidDimensionChange=new v,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new v,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new v,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new v,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new v,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new v,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange((e=>{this._isFocused=e.isFocused})),this.onDidActiveChange((e=>{this._isActive=e.isActive})),this.onDidVisibilityChange((e=>{this._isVisible=e.isVisible})),this.onDidDimensionsChange((e=>{this._width=e.width,this._height=e.height})),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event((t=>{this._parameters=t,e.update({params:t})}))}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}}class ze extends xe{constructor(e,t){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v({replay:!0}),this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Ae extends ze{set pane(e){this._pane=e}constructor(e,t){super(e,t),this._onDidExpansionChange=new v({replay:!0}),this.onDidExpansionChange=this._onDidExpansionChange.event,this._onMouseEnter=new v({}),this.onMouseEnter=this._onMouseEnter.event,this._onMouseLeave=new v({}),this.onMouseLeave=this._onMouseLeave.event,this.addDisposables(this._onDidExpansionChange,this._onMouseEnter,this._onMouseLeave)}setExpanded(e){var t;null===(t=this._pane)||void 0===t||t.setExpanded(e)}get isExpanded(){var e;return!!(null===(e=this._pane)||void 0===e?void 0:e.isExpanded())}}class Ee extends w{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){var e;return null===(e=this._params)||void 0===e?void 0:e.params}constructor(e,t,i){super(),this.id=e,this.component=t,this.api=i,this._height=0,this._width=0,this._element=document.createElement("div"),this._element.tabIndex=-1,this._element.style.outline="none",this._element.style.height="100%",this._element.style.width="100%",this._element.style.overflow="hidden";const n=z(this._element);this.addDisposables(this.api,n.onDidFocus((()=>{this.api._onDidChangeFocus.fire({isFocused:!0})})),n.onDidBlur((()=>{this.api._onDidChangeFocus.fire({isFocused:!1})})),n)}focus(){const e=new Se;this.api._onWillFocus.fire(e),e.defaultPrevented||this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t,i;this._params=Object.assign(Object.assign({},this._params),{params:Object.assign(Object.assign({},null===(t=this._params)||void 0===t?void 0:t.params),e.params)});for(const n of Object.keys(e.params))void 0===e.params[n]&&delete this._params.params[n];null===(i=this.part)||void 0===i||i.update({params:this._params.params})}toJSON(){var e,t;const i=null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{};return{id:this.id,component:this.component,params:Object.keys(i).length>0?i:void 0}}dispose(){var e;this.api.dispose(),null===(e=this.part)||void 0===e||e.dispose(),super.dispose()}}class Pe extends Ee{set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){return this.headerSize+(this.isExpanded()?this._minimumBodySize:0)}get maximumSize(){return this.headerSize+(this.isExpanded()?this._maximumBodySize:0)}get size(){return this._size}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get minimumBodySize(){return this._minimumBodySize}set minimumBodySize(e){this._minimumBodySize="number"==typeof e?e:0}get maximumBodySize(){return this._maximumBodySize}set maximumBodySize(e){this._maximumBodySize="number"==typeof e?e:Number.POSITIVE_INFINITY}get headerVisible(){return this._headerVisible}set headerVisible(e){this._headerVisible=e,this.header.style.display=e?"":"none"}constructor(e){super(e.id,e.component,new Ae(e.id,e.component)),this._onDidChangeExpansionState=new v({replay:!0}),this.onDidChangeExpansionState=this._onDidChangeExpansionState.event,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=0,this._size=0,this._isExpanded=!1,this.api.pane=this,this.api.initialize(this),this.headerSize=e.headerSize,this.headerComponent=e.headerComponent,this._minimumBodySize=e.minimumBodySize,this._maximumBodySize=e.maximumBodySize,this._isExpanded=e.isExpanded,this._headerVisible=e.isHeaderVisible,this._onDidChangeExpansionState.fire(this.isExpanded()),this._orientation=e.orientation,this.element.classList.add("dv-pane"),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})),g(this.element,"mouseenter",(e=>{this.api._onMouseEnter.fire(e)})),g(this.element,"mouseleave",(e=>{this.api._onMouseLeave.fire(e)}))),this.addDisposables(this._onDidChangeExpansionState,this.onDidChangeExpansionState((e=>{this.api._onDidExpansionChange.fire({isExpanded:e})})),this.api.onDidFocusChange((e=>{this.header&&(e.isFocused?y(this.header,"focused"):C(this.header,"focused"))}))),this.renderOnce()}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}isExpanded(){return this._isExpanded}setExpanded(e){this._isExpanded!==e&&(this._isExpanded=e,e?(this.animationTimer&&clearTimeout(this.animationTimer),this.body&&this.element.appendChild(this.body)):this.animationTimer=setTimeout((()=>{var e;null===(e=this.body)||void 0===e||e.remove()}),200),this._onDidChange.fire(e?{size:this.width}:{}),this._onDidChangeExpansionState.fire(e))}layout(e,t){this._size=e,this._orthogonalSize=t;const[i,n]=this.orientation===F.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){var t,i;super.init(e),"number"==typeof e.minimumBodySize&&(this.minimumBodySize=e.minimumBodySize),"number"==typeof e.maximumBodySize&&(this.maximumBodySize=e.maximumBodySize),this.bodyPart=this.getBodyComponent(),this.headerPart=this.getHeaderComponent(),this.bodyPart.init(Object.assign(Object.assign({},e),{api:this.api})),this.headerPart.init(Object.assign(Object.assign({},e),{api:this.api})),null===(t=this.body)||void 0===t||t.append(this.bodyPart.element),null===(i=this.header)||void 0===i||i.append(this.headerPart.element),"boolean"==typeof e.isExpanded&&this.setExpanded(e.isExpanded)}toJSON(){const e=this._params;return Object.assign(Object.assign({},super.toJSON()),{headerComponent:this.headerComponent,title:e.title})}renderOnce(){this.header=document.createElement("div"),this.header.tabIndex=0,this.header.className="dv-pane-header",this.header.style.height=`${this.headerSize}px`,this.header.style.lineHeight=`${this.headerSize}px`,this.header.style.minHeight=`${this.headerSize}px`,this.header.style.maxHeight=`${this.headerSize}px`,this.element.appendChild(this.header),this.body=document.createElement("div"),this.body.className="dv-pane-body",this.element.appendChild(this.body)}getComponent(){return{update:e=>{var t,i;null===(t=this.bodyPart)||void 0===t||t.update({params:e}),null===(i=this.headerPart)||void 0===i||i.update({params:e})},dispose:()=>{var e,t;null===(e=this.bodyPart)||void 0===e||e.dispose(),null===(t=this.headerPart)||void 0===t||t.dispose()}}}}class Ge extends Pe{constructor(e){super({id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,isHeaderVisible:!0,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.accessor=e.accessor,this.addDisposables(this._onDidDrop,this._onUnhandledDragOverEvent),e.disableDnd||this.initDragFeatures()}initDragFeatures(){if(!this.header)return;const e=this.id,t=this.accessor.id;this.header.draggable=!0,this.handler=new class extends ce{getData(){return r.getInstance().setData([new o(t,e)],o.prototype),{dispose:()=>{r.getInstance().clearData(o.prototype)}}}}(this.header),this.target=new be(this.element,{acceptedTargetZones:["top","bottom"],overlayModel:{activationSize:{type:"percentage",value:50}},canDisplayOverlay:(e,t)=>{const i=h();if(i&&i.paneId!==this.id&&i.viewId===this.accessor.id)return!0;const n=new ye(e,t,h,this);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}}),this.addDisposables(this._onDidDrop,this.handler,this.target,this.target.onDrop((e=>{this.onDrop(e)})))}onDrop(e){const t=h();if(!t||t.viewId!==this.accessor.id)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,api:new pe(this.accessor),getData:h}));const i=this._params.containerApi,n=t.paneId,s=i.getPanel(n);if(!s)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,getData:h,api:new pe(this.accessor)}));const o=i.panels,r=o.indexOf(s);let a=i.panels.indexOf(this);"left"!==e.position&&"top"!==e.position||(a=Math.max(0,a-1)),"right"!==e.position&&"bottom"!==e.position||(r>a&&a++,a=Math.min(o.length-1,a)),i.movePanel(r,a)}}class Oe extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this.disposable=new f,this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-content-container",this._element.tabIndex=-1,this.addDisposables(this._onDidFocus,this._onDidBlur);const i=t.dropTargetContainer;this.dropTarget=new be(this.element,{getOverlayOutline:()=>{var t;return"group"===(null===(t=e.options.theme)||void 0===t?void 0:t.dndPanelOverlay)?this.element.parentElement:null},className:"dv-drop-target-content",acceptedTargetZones:["top","bottom","left","right","center"],canDisplayOverlay:(e,t)=>{if("no-drop-target"===this.group.locked||this.group.locked&&"center"===t)return!1;const i=a();return!(!i&&e.shiftKey&&"floating"!==this.group.location.type)&&(!(!i||i.viewId!==this.accessor.id)||this.group.canDisplayOverlay(e,t,"content"))},getOverrideTarget:i?()=>i.model:void 0}),this.addDisposables(this.dropTarget)}show(){this.element.style.display=""}hide(){this.element.style.display="none"}renderPanel(e,t){void 0===t&&(t={asActive:!0});const i=t.asActive||this.panel&&this.group.isPanelActive(this.panel);let n;switch(this.panel&&this.panel.view.content.element.parentElement===this._element&&this._element.removeChild(this.panel.view.content.element),this.panel=e,e.api.renderer){case"onlyWhenVisible":this.group.renderContainer.detatch(e),this.panel&&i&&this._element.appendChild(this.panel.view.content.element),n=this._element;break;case"always":e.view.content.element.parentElement===this._element&&this._element.removeChild(e.view.content.element),n=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw new Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(i){const e=z(n),t=new w;t.addDisposables(e,e.onDidFocus((()=>this._onDidFocus.fire())),e.onDidBlur((()=>this._onDidBlur.fire()))),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){var e;this.panel&&"onlyWhenVisible"===this.panel.api.renderer&&(null===(e=this.panel.view.content.element.parentElement)||void 0===e||e.removeChild(this.panel.view.content.element)),this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}}function Ie(e,t,i){var n,s;y(t,"dv-dragged"),t.style.top="-9999px",document.body.appendChild(t),e.setDragImage(t,null!==(n=null==i?void 0:i.x)&&void 0!==n?n:0,null!==(s=null==i?void 0:i.y)&&void 0!==s?s:0),setTimeout((()=>{C(t,"dv-dragged"),t.remove()}),0)}class Ve extends ce{constructor(e,t,i,n,s){super(e,s),this.accessor=t,this.group=i,this.panel=n,this.panelTransfer=r.getInstance()}getData(e){return this.panelTransfer.setData([new s(this.accessor.id,this.group.id,this.panel.id)],s.prototype),{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Ne extends w{get element(){return this._element}constructor(e,t,i){super(),this.panel=e,this.accessor=t,this.group=i,this.content=void 0,this._onPointDown=new v,this.onPointerDown=this._onPointDown.event,this._onDropped=new v,this.onDrop=this._onDropped.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-tab",this._element.tabIndex=0,this._element.draggable=!this.accessor.options.disableDnd,S(this.element,"dv-inactive-tab",!0),this.dragHandler=new Ve(this._element,this.accessor,this.group,this.panel,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["left","right"],overlayModel:{activationSize:{value:50,type:"percentage"}},canDisplayOverlay:(e,t)=>{if(this.group.locked)return!1;const i=a();return!(!i||this.accessor.id!==i.viewId)||this.group.model.canDisplayOverlay(e,t,"tab")},getOverrideTarget:()=>{var e;return null===(e=i.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this._onPointDown,this._onDropped,this._onDragStart,this.dragHandler.onDragStart((e=>{if(e.dataTransfer){const t=getComputedStyle(this.element),i=this.element.cloneNode(!0);Array.from(t).forEach((e=>i.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e)))),i.style.position="absolute",Ie(e.dataTransfer,i,{y:-10,x:30})}this._onDragStart.fire(e)})),this.dragHandler,g(this._element,"pointerdown",(e=>{this._onPointDown.fire(e)})),this.dropTarget.onDrop((e=>{this._onDropped.fire(e)})),this.dropTarget)}setActive(e){S(this.element,"dv-active-tab",e),S(this.element,"dv-inactive-tab",!e)}setContent(e){this.content&&this._element.removeChild(this.content.element),this.content=e,this._element.appendChild(this.content.element)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,this.dragHandler.setDisabled(!!this.accessor.options.disableDnd)}dispose(){super.dispose()}}class Te{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}}class Le extends ce{constructor(e,t,i,n){super(e,n),this.accessor=t,this.group=i,this.panelTransfer=r.getInstance(),this.addDisposables(g(e,"pointerdown",(e=>{e.shiftKey&&(e[E]=!0)}),!0))}isCancelled(e){return"floating"===this.group.api.location.type&&!e.shiftKey}getData(e){const t=e.dataTransfer;this.panelTransfer.setData([new s(this.accessor.id,this.group.id,null)],s.prototype);const i=window.getComputedStyle(this.el),n=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-background-color"),o=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-color");if(t){const e=document.createElement("div");e.style.backgroundColor=n,e.style.color=o,e.style.padding="2px 8px",e.style.height="24px",e.style.fontSize="11px",e.style.lineHeight="20px",e.style.borderRadius="12px",e.style.position="absolute",e.style.pointerEvents="none",e.style.top="-9999px",e.textContent=`Multiple Panels (${this.group.size})`,Ie(t,e,{y:-10,x:30})}return{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class ke extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-void-container",this._element.draggable=!this.accessor.options.disableDnd,S(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.addDisposables(this._onDrop,this._onDragStart,g(this._element,"pointerdown",(()=>{this.accessor.doSetGroupActive(this.group)}))),this.handler=new Le(this._element,e,t,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["center"],canDisplayOverlay:(e,i)=>{const n=a();return!(!n||this.accessor.id!==n.viewId)||t.model.canDisplayOverlay(e,i,"header_space")},getOverrideTarget:()=>{var e;return null===(e=t.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this.handler,this.handler.onDragStart((e=>{this._onDragStart.fire(e)})),this.dropTarget.onDrop((e=>{this._onDrop.fire(e)})),this.dropTarget)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,S(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.handler.setDisabled(!!this.accessor.options.disableDnd)}}class Me extends w{get element(){return this._element}constructor(e){super(),this.scrollableElement=e,this._scrollLeft=0,this._element=document.createElement("div"),this._element.className="dv-scrollable",this._horizontalScrollbar=document.createElement("div"),this._horizontalScrollbar.className="dv-scrollbar-horizontal",this.element.appendChild(e),this.element.appendChild(this._horizontalScrollbar),this.addDisposables(g(this.element,"wheel",(e=>{this._scrollLeft+=e.deltaY*Me.MouseWheelSpeed,this.calculateScrollbarStyles()})),g(this._horizontalScrollbar,"pointerdown",(e=>{e.preventDefault(),S(this.element,"dv-scrollable-scrolling",!0);const t=e.clientX,i=this._scrollLeft,n=e=>{const n=e.clientX-t,{clientWidth:s}=this.element,{scrollWidth:o}=this.scrollableElement,r=s/o;this._scrollLeft=i+n/r,this.calculateScrollbarStyles()},s=()=>{S(this.element,"dv-scrollable-scrolling",!1),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",s),document.removeEventListener("pointercancel",s)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",s),document.addEventListener("pointercancel",s)})),g(this.element,"scroll",(()=>{this.calculateScrollbarStyles()})),g(this.scrollableElement,"scroll",(()=>{this._scrollLeft=this.scrollableElement.scrollLeft,this.calculateScrollbarStyles()})),b(this.element,(()=>{S(this.element,"dv-scrollable-resizing",!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout((()=>{clearTimeout(this._animationTimer),S(this.element,"dv-scrollable-resizing",!1)}),500),this.calculateScrollbarStyles()})))}calculateScrollbarStyles(){const{clientWidth:e}=this.element,{scrollWidth:t}=this.scrollableElement;if(t>e){const i=e*(e/t);this._horizontalScrollbar.style.width=`${i}px`,this._scrollLeft=M(this._scrollLeft,0,this.scrollableElement.scrollWidth-e),this.scrollableElement.scrollLeft=this._scrollLeft;const n=this._scrollLeft/(t-e);this._horizontalScrollbar.style.left=(e-i)*n+"px"}else this._horizontalScrollbar.style.width="0px",this._horizontalScrollbar.style.left="0px",this._scrollLeft=0}}Me.MouseWheelSpeed=1;class Re extends w{get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e&&(this._showTabsOverflowControl=e,e)){const e=new D(this._tabsList);this._observerDisposable.value=new w(e,e.onDidChange((e=>{const t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t})})),g(this._tabsList,"scroll",(()=>{this.toggleDropdown({reset:!1})})))}}get element(){return this._element}get panels(){return this._tabs.map((e=>e.value.panel.id))}get size(){return this._tabs.length}get tabs(){return this._tabs.map((e=>e.value))}constructor(e,t,i){if(super(),this.group=e,this.accessor=t,this._observerDisposable=new f,this._tabs=[],this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new v,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement("div"),this._tabsList.className="dv-tabs-container dv-horizontal",this.showTabsOverflowControl=i.showTabsOverflowControl,"native"===t.options.scrollbars)this._element=this._tabsList;else{const e=new Me(this._tabsList);this._element=e.element,this.addDisposables(e)}this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,g(this.element,"pointerdown",(e=>{if(e.defaultPrevented)return;0===e.button&&this.accessor.doSetGroupActive(this.group)})),l.from((()=>{for(const{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[]})))}indexOf(e){return this._tabs.findIndex((t=>t.value.panel.id===e))}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}setActivePanel(e){let t=0;for(const i of this._tabs){const n=e.id===i.value.panel.id;if(i.value.setActive(n),n){const e=i.value.element,n=e.parentElement;(tn.scrollLeft+n.clientWidth)&&(n.scrollLeft=t)}t+=i.value.element.clientWidth}}openPanel(e,t){if(void 0===t&&(t=this._tabs.length),this._tabs.find((t=>t.value.panel.id===e.id)))return;const i=new Ne(e,this.accessor,this.group);i.setContent(e.view.tab);const n=new w(i.onDragStart((t=>{this._onTabDragStart.fire({nativeEvent:t,panel:e})})),i.onPointerDown((t=>{if(t.defaultPrevented)return;const n=!this.accessor.options.disableFloatingGroups,s="floating"===this.group.api.location.type&&1===this.size;if(n&&!s&&t.shiftKey){t.preventDefault();const e=this.accessor.getGroupPanel(i.panel.id),{top:n,left:s}=i.element.getBoundingClientRect(),{top:o,left:r}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:s-r,y:n-o,inDragMode:!0})}else if(0===t.button)this.group.activePanel!==e&&this.group.model.openPanel(e)})),i.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this._tabs.findIndex((e=>e.value===i))})})),i.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"tab",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))}))),s={value:i,disposable:n};this.addTab(s,t)}delete(e){const t=this.indexOf(e),i=this._tabs.splice(t,1)[0],{value:n,disposable:s}=i;s.dispose(),n.dispose(),n.element.remove()}addTab(e,t){if(void 0===t&&(t=this._tabs.length),t<0||t>this._tabs.length)throw new Error("invalid location");this._tabsList.insertBefore(e.value.element,this._tabsList.children[t]),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){const t=e.reset?[]:this._tabs.filter((e=>!function(e,t){const i=G(e),n=G(t);return!(i.leftn.left+n.width)}(e.value.element,this._tabsList))).map((e=>e.value.panel.id));this._onOverflowTabsChange.fire({tabs:t,reset:e.reset})}updateDragAndDropState(){for(const e of this._tabs)e.value.updateDragAndDropState()}}const We=e=>{const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"height",e.height),t.setAttributeNS(null,"width",e.width),t.setAttributeNS(null,"viewBox",e.viewbox),t.setAttributeNS(null,"aria-hidden","false"),t.setAttributeNS(null,"focusable","false"),t.classList.add("dv-svg");const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d",e.path),t.appendChild(i),t},He=()=>We({width:"11",height:"11",viewbox:"0 0 15 25",path:"M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z"});class Fe extends w{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?"none":""}get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this.dropdownPart=null,this._overflowTabs=[],this._dropdownDisposable=new f,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement("div"),this._element.className="dv-tabs-and-actions-container",S(this._element,"dv-full-width-single-tab","fullwidth"===this.accessor.options.singleTabMode),this.rightActionsContainer=document.createElement("div"),this.rightActionsContainer.className="dv-right-actions-container",this.leftActionsContainer=document.createElement("div"),this.leftActionsContainer.className="dv-left-actions-container",this.preActionsContainer=document.createElement("div"),this.preActionsContainer.className="dv-pre-actions-container",this.tabs=new Re(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new ke(this.accessor,this.group),this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.addDisposables(this.tabs.onDrop((e=>this._onDrop.fire(e))),this.tabs.onWillShowOverlay((e=>this._onWillShowOverlay.fire(e))),e.onDidOptionsChange((()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList})),this.tabs.onOverflowTabsChange((e=>{this.toggleDropdown(e)})),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart((e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})})),this.voidContainer.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})})),this.voidContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"header_space",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))})),g(this.voidContainer.element,"pointerdown",(e=>{if(e.defaultPrevented)return;if(!this.accessor.options.disableFloatingGroups&&e.shiftKey&&"floating"!==this.group.api.location.type){e.preventDefault();const{top:t,left:i}=this.element.getBoundingClientRect(),{top:n,left:s}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:i-s+20,y:t-n+20,inDragMode:!0})}})))}show(){this.hidden||(this.element.style.display="")}hide(){this._element.style.display="none"}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&(this.rightActions.remove(),this.rightActions=void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&(this.leftActions.remove(),this.leftActions=void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&(this.preActions.remove(),this.preActions=void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}openPanel(e,t){void 0===t&&(t=this.tabs.size),this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}updateClassnames(){S(this._element,"dv-single-tab",1===this.size)}toggleDropdown(e){const t=e.reset?[]:e.tabs;if(this._overflowTabs=t,this._overflowTabs.length>0&&this.dropdownPart)return void this.dropdownPart.update({tabs:t.length});if(0===this._overflowTabs.length)return void this._dropdownDisposable.dispose();const i=document.createElement("div");i.className="dv-tabs-overflow-dropdown-root";const n=function(){const e=document.createElement("div");e.className="dv-tabs-overflow-dropdown-default";const t=document.createElement("span");t.textContent="";const i=He();return e.appendChild(i),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}();n.update({tabs:t.length}),this.dropdownPart=n,i.appendChild(n.element),this.rightActionsContainer.prepend(i),this._dropdownDisposable.value=new w(l.from((()=>{var e,t;i.remove(),null===(t=null===(e=this.dropdownPart)||void 0===e?void 0:e.dispose)||void 0===t||t.call(e),this.dropdownPart=null})),g(i,"pointerdown",(e=>{e.preventDefault()}),{capture:!0}),g(i,"click",(e=>{const t=document.createElement("div");t.style.overflow="auto",t.className="dv-tabs-overflow-container";for(const i of this.tabs.tabs.filter((e=>this._overflowTabs.includes(e.panel.id)))){const e=this.group.panels.find((e=>e===i.panel)),n=e.view.createTabRenderer("headerOverflow").element,s=document.createElement("div");S(s,"dv-tab",!0),S(s,"dv-active-tab",e.api.isActive),S(s,"dv-inactive-tab",!e.api.isActive),s.addEventListener("click",(e=>{this.accessor.popupService.close(),e.defaultPrevented||(i.element.scrollIntoView(),i.panel.api.setActive())})),s.appendChild(n),t.appendChild(s)}const n=function(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}(i);this.accessor.popupService.openPopover(t,{x:e.clientX,y:e.clientY,zIndex:(null==n?void 0:n.style.zIndex)?`calc(${n.style.zIndex} * 2)`:void 0})})))}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}}class Be extends u{constructor(e,t,i,n,s){super(),this.nativeEvent=e,this.target=t,this.position=i,this.getData=n,this.group=s}}const Ue=(()=>{const e={disableAutoResizing:void 0,hideBorders:void 0,singleTabMode:void 0,disableFloatingGroups:void 0,floatingGroupBounds:void 0,popoutUrl:void 0,defaultRenderer:void 0,debug:void 0,rootOverlayModel:void 0,locked:void 0,disableDnd:void 0,className:void 0,noPanelsOverlay:void 0,dndEdges:void 0,theme:void 0,disableTabsOverflowList:void 0,scrollbars:void 0};return Object.keys(e)})();class Je extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}}class $e extends Je{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}}class je extends w{get element(){throw new Error("dockview: not supported")}get activePanel(){return this._activePanel}get locked(){return this._locked}set locked(e){this._locked=e,S(this.container,"dv-locked-groupview","no-drop-target"===e||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return 0===this._panels.length}get hasWatermark(){return!(!this.watermark||!this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get isContentFocused(){return!!document.activeElement&&x(document.activeElement,this.contentContainer.element)}get location(){return this._location}set location(e){switch(this._location=e,S(this.container,"dv-groupview-floating",!1),S(this.container,"dv-groupview-popout",!1),e.type){case"grid":this.contentContainer.dropTarget.setTargetZones(["top","bottom","left","right","center"]);break;case"floating":this.contentContainer.dropTarget.setTargetZones(["center"]),this.contentContainer.dropTarget.setTargetZones(e?["center"]:["top","bottom","left","right","center"]),S(this.container,"dv-groupview-floating",!0);break;case"popout":this.contentContainer.dropTarget.setTargetZones(["center"]),S(this.container,"dv-groupview-popout",!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,i,n,s){var o;super(),this.container=e,this.accessor=t,this.id=i,this.options=n,this.groupPanel=s,this._isGroupActive=!1,this._locked=!1,this._location={type:"grid"},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._onMove=new v,this.onMove=this._onMove.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new v,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new v,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,S(this.container,"dv-groupview",!0),this._api=new me(this.accessor),this.tabsContainer=new Fe(this.accessor,this.groupPanel),this.contentContainer=new Oe(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!n.hideHeader,this.locked=null!==(o=n.locked)&&void 0!==o&&o,this.addDisposables(this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart((e=>{this._onTabDragStart.fire(e)})),this.tabsContainer.onGroupDragStart((e=>{this._onGroupDragStart.fire(e)})),this.tabsContainer.onDrop((e=>{this.handleDropEvent("header",e.event,"center",e.index)})),this.contentContainer.onDidFocus((()=>{this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.onDidBlur((()=>{})),this.contentContainer.dropTarget.onDrop((e=>{this.handleDropEvent("content",e.nativeEvent,e.position)})),this.tabsContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(e)})),this.contentContainer.dropTarget.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"content",panel:this.activePanel,api:this._api,group:this.groupPanel,getData:a}))})),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOverEvent,this._onDidPanelTitleChange,this._onDidPanelParametersChange)}focusContent(){this.contentContainer.element.focus()}set renderContainer(e){this.panels.forEach((e=>{this.renderContainer.detatch(e)})),this._overwriteRenderContainer=e,this.panels.forEach((e=>{this.rerender(e)}))}get renderContainer(){var e;return null!==(e=this._overwriteRenderContainer)&&void 0!==e?e:this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){var e;return null!==(e=this._overwriteDropTargetContainer)&&void 0!==e?e:this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach((e=>{this.doAddPanel(e)})),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.accessor.options.createRightHeaderActionComponent&&(this._rightHeaderActions=this.accessor.options.createRightHeaderActionComponent(this.groupPanel),this.addDisposables(this._rightHeaderActions),this._rightHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element)),this.accessor.options.createLeftHeaderActionComponent&&(this._leftHeaderActions=this.accessor.options.createLeftHeaderActionComponent(this.groupPanel),this.addDisposables(this._leftHeaderActions),this._leftHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element)),this.accessor.options.createPrefixHeaderActionComponent&&(this._prefixHeaderActions=this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel),this.addDisposables(this._prefixHeaderActions),this._prefixHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element))}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){var e;const t={views:this.tabsContainer.panels,activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,id:this.id};return!1!==this.locked&&(t.locked=this.locked),this.header.hidden&&(t.hideHeader=!0),t}moveToNext(e){e||(e={}),e.panel||(e.panel=this.activePanel);const t=e.panel?this.panels.indexOf(e.panel):-1;let i;if(t0)i=t-1;else{if(e.suppressRoll)return;i=this.panels.length-1}this.openPanel(this.panels[i])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}openPanel(e,t){void 0===t&&(t={}),("number"!=typeof t.index||t.index>this.panels.length)&&(t.index=this.panels.length);const i=!!t.skipSetActive;e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:i}),this._activePanel!==e?(i||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()):this.contentContainer.renderPanel(e,{asActive:!0})}removePanel(e,t){void 0===t&&(t={skipSetActive:!1});const i="string"==typeof e?e:e.id,n=this._panels.find((e=>e.id===i));if(!n)throw new Error("invalid operation");return this._removePanel(n,t)}closeAllPanels(){if(this.panels.length>0){const e=[...this.panels];for(const t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){const t=1===this.panels.length&&1===this.accessor.groups.length;this.accessor.removePanel(e,t&&"emptyGroup"===this.accessor.options.noPanelsOverlay?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t){void 0===t&&(t=!1),(t||this.isActive!==e)&&(this._isGroupActive=e,S(this.container,"dv-active-group",e),S(this.container,"dv-inactive-group",!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0&&this.doSetActivePanel(this.panels[0]),this.updateContainer())}layout(e,t){var i;this._width=e,this._height=t,this.contentContainer.layout(this._width,this._height),(null===(i=this._activePanel)||void 0===i?void 0:i.layout)&&this._activePanel.layout(this._width,this._height)}_removePanel(e,t){const i=this._activePanel===e;if(this.doRemovePanel(e),i&&this.panels.length>0){const e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t.skipSetActive,skipSetGroupActive:t.skipSetActiveGroup})}return this._activePanel&&0===this.panels.length&&this.doSetActivePanel(void 0),t.skipSetActive||this.updateContainer(),e}doRemovePanel(e){const t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){const t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}const i=this._panelDisposables.get(e.id);i&&(i.dispose(),this._panelDisposables.delete(e.id)),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t,i){void 0===t&&(t=this.panels.length),void 0===i&&(i={skipSetActive:!1});const n=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),i.skipSetActive||this.contentContainer.openPanel(e),n||(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new w(e.api.onDidTitleChange((e=>this._onDidPanelTitleChange.fire(e))),e.api.onDidParametersChange((e=>this._onDidPanelParametersChange.fire(e))))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){this._activePanel!==e&&(this._activePanel=e,e&&(this.tabsContainer.setActivePanel(e),e.layout(this._width,this._height),this.updateMru(e),this._onDidActivePanelChange.fire({panel:e})))}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){var e,t;if(this.panels.forEach((e=>e.runEvents())),this.isEmpty&&!this.watermark){const e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,g(this.watermark.element,"pointerdown",(()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.element.appendChild(this.watermark.element)}!this.isEmpty&&this.watermark&&(this.watermark.element.remove(),null===(t=(e=this.watermark).dispose)||void 0===t||t.call(e),this.watermark=void 0)}canDisplayOverlay(e,t,i){const n=new Be(e,i,t,a,this.accessor.getPanel(this.id));return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}handleDropEvent(e,t,i,n){if("no-drop-target"===this.locked)return;const s="number"==typeof n?this.panels[n]:void 0,o=new $e({nativeEvent:t,position:i,panel:s,getData:()=>a(),kind:function(){switch(e){case"header":return"number"==typeof n?"tab":"header_space";case"content":return"content"}}(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(o),o.defaultPrevented)return;const r=a();if(r&&r.viewId===this.accessor.id){if("content"===e&&r.groupId===this.id){if("center"===i)return;if(null===r.panelId)return}if("header"===e&&r.groupId===this.id&&null===r.panelId)return;if(null===r.panelId){const{groupId:e}=r;return void this._onMove.fire({target:i,groupId:e,index:n})}if(-1!==this.tabsContainer.indexOf(r.panelId)&&1===this.tabsContainer.size)return;const{groupId:t,panelId:s}=r;if(this.id===t&&!i){if(this.tabsContainer.indexOf(s)===n)return}this._onMove.fire({target:i,groupId:r.groupId,itemId:r.panelId,index:n})}else this._onDidDrop.fire(new Je({nativeEvent:t,position:i,panel:s,getData:()=>a(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,i;super.dispose(),null===(e=this.watermark)||void 0===e||e.element.remove(),null===(i=null===(t=this.watermark)||void 0===t?void 0:t.dispose)||void 0===i||i.call(t),this.watermark=void 0;for(const n of this.panels)n.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}}class Ze extends xe{constructor(e,t,i){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),i&&this.initialize(i)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Xe extends Ee{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){const e="function"==typeof this._minimumWidth?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){const e="function"==typeof this._maximumWidth?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){const e="function"==typeof this._minimumHeight?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){const e="function"==typeof this._maximumHeight?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,i,n){super(e,t,null!=n?n:new Ze(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=Number.MAX_SAFE_INTEGER,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=Number.MAX_SAFE_INTEGER,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=Number.MAX_SAFE_INTEGER,this._maximumHeight=Number.MAX_SAFE_INTEGER,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,"number"==typeof(null==i?void 0:i.minimumWidth)&&(this._minimumWidth=i.minimumWidth),"number"==typeof(null==i?void 0:i.maximumWidth)&&(this._maximumWidth=i.maximumWidth),"number"==typeof(null==i?void 0:i.minimumHeight)&&(this._minimumHeight=i.minimumHeight),"number"==typeof(null==i?void 0:i.maximumHeight)&&(this._maximumHeight=i.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.doSetGroupActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumWidth&&"function"!=typeof e.minimumWidth||(this._minimumWidth=e.minimumWidth),"number"!=typeof e.minimumHeight&&"function"!=typeof e.minimumHeight||(this._minimumHeight=e.minimumHeight),"number"!=typeof e.maximumWidth&&"function"!=typeof e.maximumWidth||(this._maximumWidth=e.maximumWidth),"number"!=typeof e.maximumHeight&&"function"!=typeof e.maximumHeight||(this._maximumHeight=e.maximumHeight)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({height:e.height,width:e.width})})),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),"boolean"==typeof e.isVisible&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){const e=super.toJSON(),t=e=>e===Number.MAX_SAFE_INTEGER?void 0:e,i=e=>e<=0?void 0:e;return Object.assign(Object.assign({},e),{minimumHeight:i(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:i(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}}const Ye="dockview: DockviewGroupPanelApiImpl not initialized";class qe extends Ze{get location(){if(!this._group)throw new Error(Ye);return this._group.model.location}constructor(e,t){super(e,"__dockviewgroup__"),this.accessor=t,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return"popout"===this.location.type?this.location.getWindow():window}moveTo(e){var t,i,n,s;if(!this._group)throw new Error(Ye);const o=null!==(t=e.group)&&void 0!==t?t:this.accessor.addGroup({direction:we(null!==(i=e.position)&&void 0!==i?i:"right"),skipSetActive:null!==(n=e.skipSetActive)&&void 0!==n&&n});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:o,position:e.group&&null!==(s=e.position)&&void 0!==s?s:"center",index:e.index},skipSetActive:e.skipSetActive})}maximize(){if(!this._group)throw new Error(Ye);"grid"===this.location.type&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw new Error(Ye);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw new Error(Ye);this.isMaximized()&&this.accessor.exitMaximizedGroup()}initialize(e){this._group=e}}class Ke extends Xe{get minimumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumWidth;return"number"==typeof t?t:super.__minimumWidth()}get minimumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumHeight;return"number"==typeof t?t:super.__minimumHeight()}get maximumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumWidth;return"number"==typeof t?t:super.__maximumWidth()}get maximumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumHeight;return"number"==typeof t?t:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,i){var n,s,o,r,a,h;super(t,"groupview_default",{minimumHeight:null!==(s=null===(n=i.constraints)||void 0===n?void 0:n.minimumHeight)&&void 0!==s?s:100,minimumWidth:null!==(r=null===(o=i.constraints)||void 0===o?void 0:o.maximumHeight)&&void 0!==r?r:100,maximumHeight:null===(a=i.constraints)||void 0===a?void 0:a.maximumHeight,maximumWidth:null===(h=i.constraints)||void 0===h?void 0:h.maximumWidth},new qe(t,e)),this.api.initialize(this),this._model=new je(this.element,e,t,i,this),this.addDisposables(this.model.onDidActivePanelChange((e=>{this.api._onDidActivePanelChange.fire(e)})))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}getComponent(){return this._model}toJSON(){return this.model.toJSON()}}const Qe={name:"dark",className:"dockview-theme-dark"},et={name:"light",className:"dockview-theme-light"},tt={name:"visualStudio",className:"dockview-theme-vs"},it={name:"abyss",className:"dockview-theme-abyss"},nt={name:"dracula",className:"dockview-theme-dracula"},st={name:"replit",className:"dockview-theme-replit",gap:10},ot={name:"abyssSpaced",className:"dockview-theme-abyss-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"},rt={name:"lightSpaced",className:"dockview-theme-light-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"};class at extends Ze{get location(){return this.group.api.location}get title(){return this.panel.title}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){const t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this._onDidLocationChange.fire({location:this.group.api.location}))}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,i,n,s){super(e.id,n),this.panel=e,this.accessor=i,this._onDidTitleChange=new v,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new v,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new v,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new f,this._tabComponent=s,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}moveTo(e){var t,i;this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:null!==(t=e.group)&&void 0!==t?t:this._group,position:e.group&&null!==(i=e.position)&&void 0!==i?i:"center",index:e.index},skipSetActive:e.skipSetActive})}setTitle(e){this.panel.setTitle(e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}setupGroupEventListeners(e){var t;let i=null!==(t=null==e?void 0:e.isActive)&&void 0!==t&&t;this.groupEventsDisposable.value=new w(this.group.api.onDidVisibilityChange((e=>{const t=!e.isVisible&&this.isVisible,i=e.isVisible&&!this.isVisible,n=this.group.model.isPanelActive(this.panel);(t||i&&n)&&this._onDidVisibilityChange.fire(e)})),this.group.api.onDidLocationChange((e=>{this.group===this.panel.group&&this._onDidLocationChange.fire(e)})),this.group.api.onDidActiveChange((()=>{this.group===this.panel.group&&i!==this.isGroupActive&&(i=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))})))}}class ht extends w{get params(){return this._params}get title(){return this._title}get group(){return this._group}get renderer(){var e;return null!==(e=this._renderer)&&void 0!==e?e:this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,i,n,s,o,r,a){super(),this.id=e,this.accessor=n,this.containerApi=s,this.view=r,this._renderer=a.renderer,this._group=o,this._minimumWidth=a.minimumWidth,this._minimumHeight=a.minimumHeight,this._maximumWidth=a.maximumWidth,this._maximumHeight=a.maximumHeight,this.api=new at(this,this._group,n,t,i),this.addDisposables(this.api.onActiveChange((()=>{n.setActivePanel(this)})),this.api.onDidSizeChange((e=>{this.group.api.setSize(e)})),this.api.onDidRendererChange((()=>{this.group.model.rerender(this)})))}init(e){this._params=e.params,this.view.init(Object.assign(Object.assign({},e),{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){const e=new Se;this.api._onWillFocus.fire(e),e.defaultPrevented||this.api.isActive||this.api.setActive()}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth}}setTitle(e){e!==this.title&&(this._title=e,this.api._onDidTitleChange.fire({title:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){var t;this._params=Object.assign(Object.assign({},null!==(t=this._params)&&void 0!==t?t:{}),e.params);for(const i of Object.keys(e.params))void 0===e.params[i]&&delete this._params[i];this.view.update({params:this._params})}updateParentGroup(e,t){this._group=e,this.api.group=this._group;const i=this._group.model.isPanelActive(this),n=this.group.api.isActive&&i;(null==t?void 0:t.skipSetActive)||this.api.isActive!==n&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&i}),this.api.isVisible!==i&&this.api._onDidVisibilityChange.fire({isVisible:i})}runEvents(){const e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}}class dt extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-default-tab",this._content=document.createElement("div"),this._content.className="dv-default-tab-content",this.action=document.createElement("div"),this.action.className="dv-default-tab-action",this.action.appendChild(We({width:"11",height:"11",viewbox:"0 0 28 28",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"})),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this.addDisposables(e.api.onDidTitleChange((e=>{this._title=e.title,this.render()})),g(this.action,"pointerdown",(e=>{e.preventDefault()})),g(this.action,"click",(t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())}))),this.render()}render(){var e;this._content.textContent!==this._title&&(this._content.textContent=null!==(e=this._title)&&void 0!==e?e:"")}}class lt{get content(){return this._content}get tab(){return this._tab}constructor(e,t,i,n){this.accessor=e,this.id=t,this.contentComponent=i,this.tabComponent=n,this._content=this.createContentComponent(this.id,i),this._tab=this.createTabComponent(this.id,n)}createTabRenderer(e){var t;const i=this.createTabComponent(this.id,this.tabComponent);return this._params&&i.init(Object.assign(Object.assign({},this._params),{tabLocation:e})),this._updateEvent&&(null===(t=i.update)||void 0===t||t.call(i,this._updateEvent)),i}init(e){this._params=e,this.content.init(e),this.tab.init(Object.assign(Object.assign({},e),{tabLocation:"header"}))}layout(e,t){var i,n;null===(n=(i=this.content).layout)||void 0===n||n.call(i,e,t)}update(e){var t,i,n,s;this._updateEvent=e,null===(i=(t=this.content).update)||void 0===i||i.call(t,e),null===(s=(n=this.tab).update)||void 0===s||s.call(n,e)}dispose(){var e,t,i,n;null===(t=(e=this.content).dispose)||void 0===t||t.call(e),null===(n=(i=this.tab).dispose)||void 0===n||n.call(i)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){const i=null!=t?t:this.accessor.options.defaultTabComponent;if(i){if(this.accessor.options.createTabComponent){const t=this.accessor.options.createTabComponent({id:e,name:i});return t||new dt}console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new dt}}class pt{constructor(e){this.accessor=e}fromJSON(e,t){var i,n;const s=e.id,o=e.params,r=e.title,a=e.view,h=a?a.content.id:null!==(i=e.contentComponent)&&void 0!==i?i:"unknown",d=a?null===(n=a.tab)||void 0===n?void 0:n.id:e.tabComponent,l=new lt(this.accessor,s,h,d),p=new ht(s,h,d,this.accessor,new me(this.accessor),t,l,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return p.init({title:null!=r?r:s,params:null!=o?o:{}}),p}}class ut extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-watermark"}init(e){}}const mt=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter((t=>t!==e)),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter((t=>t!==e)),this.update()}update(){for(let e=0;e{let e=null;const t=O();i.value=new w({dispose:()=>{t.release()}},g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),n=t.clientX-i.left,s=t.clientY-i.top;S(this._element,"dv-resize-container-dragging",!0);const o=this._element.getBoundingClientRect();null===e&&(e={x:t.clientX-o.left,y:t.clientY-o.top});const r=Math.max(0,this.getMinimumWidth(o.width)),a=Math.max(0,this.getMinimumHeight(o.height)),h=M(s-e.y,-a,Math.max(0,i.height-o.height+a)),d=M(e.y-s+i.height-o.height,-a,Math.max(0,i.height-o.height+a)),l=M(n-e.x,-r,Math.max(0,i.width-o.width+r)),p=M(e.x-n+i.width-o.width,-r,Math.max(0,i.width-o.width+r)),u={};h<=d?u.top=h:u.bottom=d,l<=p?u.left=l:u.right=p,this.setBounds(u)})),g(window,"pointerup",(()=>{S(this._element,"dv-resize-container-dragging",!1),i.dispose(),this._onDidChangeEnd.fire()})))};this.addDisposables(i,g(e,"pointerdown",(e=>{e.defaultPrevented?e.preventDefault():P(e)||n()})),g(this.options.content,"pointerdown",(e=>{e.defaultPrevented||P(e)||e.shiftKey&&n()})),g(this.options.content,"pointerdown",(()=>{mt.push(this._element)}),!0)),t.inDragMode&&n()}setupResize(e){const t=document.createElement("div");t.className=`dv-resize-handle-${e}`,this._element.appendChild(t);const i=new f;this.addDisposables(i,g(t,"pointerdown",(t=>{t.preventDefault();let n=null;const s=O();i.value=new w(g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),s=this._element.getBoundingClientRect(),o=t.clientY-i.top,r=t.clientX-i.left;let a,h,d,l,p,u;null===n&&(n={originalY:o,originalHeight:s.height,originalX:r,originalWidth:s.width});const m=()=>{a=M(o,-Number.MAX_VALUE,n.originalY+n.originalHeight>i.height?this.getMinimumHeight(i.height):Math.max(0,n.originalY+n.originalHeight-ct.MINIMUM_HEIGHT)),d=n.originalY+n.originalHeight-a,h=i.height-a-d},c=()=>{a=n.originalY-n.originalHeight,d=M(o-a,a<0&&"number"==typeof this.options.minimumInViewportHeight?-a+this.options.minimumInViewportHeight:ct.MINIMUM_HEIGHT,Number.MAX_VALUE),h=i.height-a-d},v=()=>{l=M(r,-Number.MAX_VALUE,n.originalX+n.originalWidth>i.width?this.getMinimumWidth(i.width):Math.max(0,n.originalX+n.originalWidth-ct.MINIMUM_WIDTH)),u=n.originalX+n.originalWidth-l,p=i.width-l-u},g=()=>{l=n.originalX-n.originalWidth,u=M(r-l,l<0&&"number"==typeof this.options.minimumInViewportWidth?-l+this.options.minimumInViewportWidth:ct.MINIMUM_WIDTH,Number.MAX_VALUE),p=i.width-l-u};switch(e){case"top":m();break;case"bottom":c();break;case"left":v();break;case"right":g();break;case"topleft":m(),v();break;case"topright":m(),g();break;case"bottomleft":c(),v();break;case"bottomright":c(),g()}const _={};a<=h?_.top=a:_.bottom=h,l<=p?_.left=l:_.right=p,_.height=d,_.width=u,this.setBounds(_)})),{dispose:()=>{s.release()}},g(window,"pointerup",(()=>{i.dispose(),this._onDidChangeEnd.fire()})))})))}getMinimumWidth(e){return"number"==typeof this.options.minimumInViewportWidth?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return"number"==typeof this.options.minimumInViewportHeight?e-this.options.minimumInViewportHeight:0}dispose(){mt.destroy(this._element),this._element.remove(),super.dispose()}}ct.MINIMUM_HEIGHT=20,ct.MINIMUM_WIDTH=20;class vt extends w{constructor(e,t){super(),this.group=e,this.overlay=t,this.addDisposables(t)}position(e){this.overlay.setBounds(e)}}const gt=100,_t=100,wt=100,ft=300,Dt=300;class bt{constructor(){this.cache=new Map,this.currentFrameId=0,this.rafId=null}getPosition(e){const t=this.cache.get(e);if(t&&t.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();const i=G(e);return this.cache.set(e,{rect:i,frameId:this.currentFrameId}),i}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||(this.rafId=requestAnimationFrame((()=>{this.currentFrameId++,this.rafId=null})))}}class Ct extends w{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this.positionCache=new bt,this.pendingUpdates=new Set,this.addDisposables(l.from((()=>{for(const e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose();this._disposed=!0})))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(const e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}detatch(e){if(this.map[e.api.id]){const{disposable:t,destroy:i}=this.map[e.api.id];return t.dispose(),i.dispose(),delete this.map[e.api.id],!0}return!1}attach(e){const{panel:t,referenceContainer:i}=e;if(!this.map[t.api.id]){const e=function(){const e=document.createElement("div");return e.tabIndex=-1,e}();e.className="dv-render-overlay",this.map[t.api.id]={panel:t,disposable:l.NONE,destroy:l.NONE,element:e}}const n=this.map[t.api.id].element;t.view.content.element.parentElement!==n&&n.appendChild(t.view.content.element),n.parentElement!==this.element&&this.element.appendChild(n);const s=()=>{const e=t.api.id;this.pendingUpdates.has(e)||(this.pendingUpdates.add(e),requestAnimationFrame((()=>{if(this.pendingUpdates.delete(e),this.isDisposed||!this.map[e])return;const s=this.positionCache.getPosition(i.element),o=this.positionCache.getPosition(this.element),r=s.left-o.left,a=s.top-o.top,h=s.width,d=s.height;n.style.left=`${r}px`,n.style.top=`${a}px`,n.style.width=`${h}px`,n.style.height=`${d}px`,S(n,"dv-render-overlay-float","floating"===t.group.api.location.type)})))},o=()=>{t.api.isVisible&&(this.positionCache.invalidate(),s()),n.style.display=t.api.isVisible?"":"none"},r=new f,a=()=>{"floating"===t.api.location.type?queueMicrotask((()=>{const e=this.accessor.floatingGroups.find((e=>e.group===t.api.group));if(!e)return;const i=e.overlay.element,s=()=>{const e=Number(i.getAttribute("aria-level"));n.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${2*e+1})`},o=new MutationObserver((()=>{s()}));r.value=l.from((()=>o.disconnect())),o.observe(i,{attributeFilter:["aria-level"],attributes:!0}),s()})):n.style.zIndex=""},h=new w(r,new ve(n,{onDragEnd:e=>{i.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{i.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{i.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{i.dropTarget.dnd.onDrop(e)},onDragOver:e=>{i.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange((()=>{o()})),t.api.onDidDimensionsChange((()=>{t.api.isVisible&&s()})),t.api.onDidLocationChange((()=>{a()})));return this.map[t.api.id].destroy=l.from((()=>{var e;t.view.content.element.parentElement===n&&n.removeChild(t.view.content.element),null===(e=n.parentElement)||void 0===e||e.removeChild(n)})),a(),queueMicrotask((()=>{this.isDisposed||o()})),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=h,this.map[t.api.id].resize=s,n}}var yt=function(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{h(n.next(e))}catch(t){o(t)}}function a(e){try{h(n.throw(e))}catch(t){o(t)}}function h(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}h((n=n.apply(e,t||[])).next())}))};class St extends w{get window(){var e,t;return null!==(t=null===(e=this._window)||void 0===e?void 0:e.value)&&void 0!==t?t:null}constructor(e,t,i){super(),this.target=e,this.className=t,this.options=i,this._onWillClose=new v,this.onWillClose=this._onWillClose.event,this._onDidClose=new v,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;const e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){var e,t;this._window&&(this._onWillClose.fire(),null===(t=(e=this.options).onWillClose)||void 0===t||t.call(e,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire())}open(){var e,t;return yt(this,void 0,void 0,(function*(){if(this._window)throw new Error("instance of popout window is already open");const i=`${this.options.url}`,n=Object.entries({top:this.options.top,left:this.options.left,width:this.options.width,height:this.options.height}).map((e=>{let[t,i]=e;return`${t}=${i}`})).join(","),s=window.open(i,this.target,n);if(!s)return null;const o=new w;this._window={value:s,disposable:o},o.addDisposables(l.from((()=>{s.close()})),g(window,"beforeunload",(()=>{this.close()})));const r=this.createPopoutWindowContainer();return this.className&&r.classList.add(this.className),null===(t=(e=this.options).onDidOpen)||void 0===t||t.call(e,{id:this.target,window:s}),new Promise(((e,t)=>{s.addEventListener("unload",(e=>{})),s.addEventListener("load",(()=>{try{const t=s.document;t.title=document.title,t.body.appendChild(r),function(e,t){const i=Array.from(t);for(const s of i){if(s.href){const t=e.createElement("link");t.href=s.href,t.type=s.type,t.rel="stylesheet",e.head.appendChild(t)}let t=[];try{s.cssRules&&(t=Array.from(s.cssRules).map((e=>e.cssText)))}catch(n){}for(const i of t){const t=e.createElement("style");t.appendChild(e.createTextNode(i)),e.head.appendChild(t)}}}(t,window.document.styleSheets),g(s,"beforeunload",(()=>{this.close()})),e(r)}catch(i){t(i)}}))}))}))}createPopoutWindowContainer(){const e=document.createElement("div");return e.classList.add("dv-popout-window"),e.id="dv-popout-window",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e}}class xt extends w{constructor(e){super(),this.accessor=e,this.init()}init(){const e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel((t=>{if(e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)})),this.accessor.onDidRemovePanel((t=>{if(!e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`);e.delete(t.api.id)})),this.accessor.onDidAddGroup((e=>{if(t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)})),this.accessor.onDidRemoveGroup((e=>{if(!t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`);t.delete(e.api.id)})))}}class zt extends w{constructor(e){super(),this.root=e,this._active=null,this._activeDisposable=new f,this._element=document.createElement("div"),this._element.className="dv-popover-anchor",this._element.style.position="relative",this.root.prepend(this._element),this.addDisposables(l.from((()=>{this.close()})),this._activeDisposable)}openPopover(e,t){var i;this.close();const n=document.createElement("div");n.style.position="absolute",n.style.zIndex=null!==(i=t.zIndex)&&void 0!==i?i:"var(--dv-overlay-z-index)",n.appendChild(e);const s=this._element.getBoundingClientRect(),o=s.left,r=s.top;n.style.top=t.y-r+"px",n.style.left=t.x-o+"px",this._element.appendChild(n),this._active=n,this._activeDisposable.value=new w(g(window,"pointerdown",(e=>{var t;const i=e.target;if(!(i instanceof HTMLElement))return;let s=i;for(;s&&s!==n;)s=null!==(t=null==s?void 0:s.parentElement)&&void 0!==t?t:null;s||this.close()}))),requestAnimationFrame((()=>{!function(e,t,i){void 0===i&&(i={buffer:10});const n=i.buffer,s=e.getBoundingClientRect(),o=t.getBoundingClientRect();let r=0,a=0;const h=s.left-o.left,d=s.top-o.top,l=s.bottom-o.bottom,p=s.right-o.right;hn&&(r=-n-p),dn&&(a=-l-n),0===r&&0===a||(e.style.transform=`translate(${r}px, ${a}px)`)}(n,this.root)}))}close(){this._active&&(this._active.remove(),this._activeDisposable.dispose(),this._active=null)}}class At extends w{get disabled(){return this._disabled}set disabled(e){var t;this.disabled!==e&&(this._disabled=e,e&&(null===(t=this.model)||void 0===t||t.clear()))}get model(){if(!this.disabled)return{clear:()=>{var e;this._model&&(null===(e=this._model.root.parentElement)||void 0===e||e.removeChild(this._model.root)),this._model=void 0},exists:()=>!!this._model,getElements:(e,t)=>{const i=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=i,this._model;const n=this.createContainer(),s=this.createAnchor();if(this._model={root:n,overlay:s,changed:i},n.appendChild(s),this.element.appendChild(n),(null==e?void 0:e.target)instanceof HTMLElement){const t=e.target.getBoundingClientRect(),i=this.element.getBoundingClientRect();s.style.left=t.left-i.left+"px",s.style.top=t.top-i.top+"px"}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(l.from((()=>{var e;null===(e=this.model)||void 0===e||e.clear()})))}createContainer(){const e=document.createElement("div");return e.className="dv-drop-target-container",e}createAnchor(){const e=document.createElement("div");return e.className="dv-drop-target-anchor",e.style.visibility="hidden",e}}const Et={activationSize:{type:"pixels",value:10},size:{type:"pixels",value:20}};function Pt(e){const t=e.from.activePanel;[...e.from.panels].map((t=>{const i=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),i})).forEach((i=>{e.to.model.openPanel(i,{skipSetActive:t!==i,skipSetGroupActive:!0})}))}class Gt extends de{get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap((e=>e.panels))}get options(){return this._options}get activePanel(){const e=this.activeGroup;if(e)return e.activePanel}get renderer(){var e;return null!==(e=this.options.defaultRenderer)&&void 0!==e?e:"onlyWhenVisible"}get api(){return this._api}get floatingGroups(){return this._floatingGroups}get popoutRestorationPromise(){return this._popoutRestorationPromise}constructor(e,t){var i,n,s;super(e,{proportionalLayout:!0,orientation:F.HORIZONTAL,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:null!==(n=null===(i=t.theme)||void 0===i?void 0:i.gap)&&void 0!==n?n:0,className:t.className}),this.nextGroupId=R(),this._deserializer=new pt(this),this._watermark=null,this._onWillDragPanel=new v,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new v,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new v,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new v,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidOpenPopoutWindowFail=new v,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidLayoutFromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new v({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidMovePanel=new v,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidMaximizedGroupChange=new v,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._floatingGroups=[],this._popoutGroups=[],this._popoutRestorationPromise=Promise.resolve(),this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new v,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._moving=!1,this._options=t,this.popupService=new zt(this.element),this._themeClassnames=new I(this.element),this._api=new me(this),this.rootDropTargetContainer=new At(this.element,{disabled:!0}),this.overlayRenderContainer=new Ct(this.gridview.element,this),this._rootDropTarget=new be(this.element,{className:"dv-drop-target-edge",canDisplayOverlay:(e,t)=>{const i=a();if(i)return i.viewId===this.id&&("center"!==t||0===this.gridview.length);if("center"===t&&0!==this.gridview.length)return!1;const n=new Be(e,"edge",t,a);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted},acceptedTargetZones:["top","bottom","left","right","center"],overlayModel:null!==(s=t.rootOverlayModel)&&void 0!==s?s:Et,getOverrideTarget:()=>{var e;return null===(e=this.rootDropTargetContainer)||void 0===e?void 0:e.model}}),this.updateDropTargetModel(t),S(this.gridview.element,"dv-dockview",!0),S(this.element,"dv-debug",!!t.debug),this.updateTheme(),this.updateWatermark(),t.debug&&this.addDisposables(new xt(this)),this.addDisposables(this.rootDropTargetContainer,this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onDidMovePanel,this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this._onUnhandledDragOverEvent,this._onDidMaximizedGroupChange,this._onDidOptionsChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidOpenPopoutWindowFail,this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.updateWatermark()})),this.onDidAdd((e=>{this._moving||this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._moving||this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._moving||this._onDidActiveGroupChange.fire(e)})),this.onDidMaximizedChange((e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})})),d.any(this.onDidAdd,this.onDidRemove)((()=>{this.updateWatermark()})),d.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidMovePanel,this.onDidActivePanelChange,this.onDidPopoutGroupPositionChange,this.onDidPopoutGroupSizeChange)((()=>{this._bufferOnDidLayoutChange.fire()})),l.from((()=>{for(const e of[...this._floatingGroups])e.dispose();for(const e of[...this._popoutGroups])e.disposable.dispose()})),this._rootDropTarget,this._rootDropTarget.onWillShowOverlay((e=>{this.gridview.length>0&&"center"===e.position||this._onWillShowOverlay.fire(new Te(e,{kind:"edge",panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget.onDrop((e=>{var t;const i=new $e({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a,kind:"edge"});if(this._onWillDrop.fire(i),i.defaultPrevented)return;const n=a();n?this.moveGroupOrPanel({from:{groupId:n.groupId,panelId:null!==(t=n.panelId)&&void 0!==t?t:void 0},to:{group:this.orthogonalize(e.position),position:"center"}}):this._onDidDrop.fire(new Je({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget)}setVisible(e,t){switch(e.api.location.type){case"grid":super.setVisible(e,t);break;case"floating":{const i=this.floatingGroups.find((t=>t.group===e));i&&(i.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case"popout":console.warn("dockview: You cannot hide a group that is in a popout window")}}addPopoutGroup(e,t){var i,n,s,o,r;if(e instanceof ht&&1===e.group.size)return this.addPopoutGroup(e.group,t);const a=function(e){function t(e){const t=[];for(let i=0;ie.startsWith("dockview-theme-"))),"string"!=typeof i);)n=n.parentElement;return i}(this.gridview.element),h=this.element;const d=(null==t?void 0:t.position)?t.position:e instanceof Ke?e.element.getBoundingClientRect():e.group?e.group.element.getBoundingClientRect():h.getBoundingClientRect(),p=null!==(n=null===(i=null==t?void 0:t.overridePopoutGroup)||void 0===i?void 0:i.id)&&void 0!==n?n:this.getNextGroupId(),u=new St(`${this.id}-${p}`,null!=a?a:"",{url:null!==(r=null!==(s=null==t?void 0:t.popoutUrl)&&void 0!==s?s:null===(o=this.options)||void 0===o?void 0:o.popoutUrl)&&void 0!==r?r:"/popout.html",left:window.screenX+d.left,top:window.screenY+d.top,width:d.width,height:d.height,onDidOpen:null==t?void 0:t.onDidOpen,onWillClose:null==t?void 0:t.onWillClose}),m=new w(u,u.onDidClose((()=>{m.dispose()})));return u.open().then((i=>{var n;if(u.isDisposed)return!1;const s=(null==t?void 0:t.referenceGroup)?t.referenceGroup:e instanceof ht?e.group:e,o=e.api.location.type,r=null!==s.element.parentElement;let a;if(r?(null==t?void 0:t.overridePopoutGroup)?a=t.overridePopoutGroup:(a=this.createGroup({id:p}),i&&this._onDidAddGroup.fire(a)):a=s,null===i)return console.error("dockview: failed to create popout. perhaps you need to allow pop-ups for this website"),m.dispose(),this._onDidOpenPopoutWindowFail.fire(),this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),!1;const h=document.createElement("div");h.className="dv-overlay-render-container";const d=new Ct(h,this);let c;if(a.model.renderContainer=d,a.layout(u.window.innerWidth,u.window.innerHeight),!(null==t?void 0:t.overridePopoutGroup)&&r)if(e instanceof ht)this.movingLock((()=>{const t=s.model.removePanel(e);a.model.openPanel(t)}));else switch(this.movingLock((()=>Pt({from:s,to:a}))),o){case"grid":s.api.setVisible(!1);break;case"floating":case"popout":c=null===(n=this._floatingGroups.find((t=>t.group.api.id===e.api.id)))||void 0===n?void 0:n.overlay.toJSON(),this.removeGroup(s)}i.classList.add("dv-dockview"),i.style.overflow="hidden",i.appendChild(h),i.appendChild(a.element);const _=document.createElement("div"),f=new At(_,{disabled:this.rootDropTargetContainer.disabled});let D;i.appendChild(_),a.model.dropTargetContainer=f,a.model.location={type:"popout",getWindow:()=>u.window,popoutUrl:null==t?void 0:t.popoutUrl},r&&"grid"===e.api.location.type&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(a),m.addDisposables(a.api.onDidActiveChange((e=>{var t;e.isActive&&(null===(t=u.window)||void 0===t||t.focus())})),a.api.onWillFocus((()=>{var e;null===(e=u.window)||void 0===e||e.focus()})));const b=r&&s&&this.getPanel(s.id),C={window:u,popoutGroup:a,referenceGroup:b?s.id:void 0,disposable:{dispose:()=>(m.dispose(),D)}},y=function(e){const t=new v;let i,n=e.screenX,s=e.screenY;const o=()=>{if(e.closed)return;const r=e.screenX,a=e.screenY;r===n&&a===s||(clearTimeout(i),i=setTimeout((()=>{t.fire()}),100),n=r,s=a),requestAnimationFrame(o)};return o(),t}(u.window);return m.addDisposables(y,function(e,t){let i;return new w(g(e,"resize",(()=>{clearTimeout(i),i=setTimeout((()=>{t()}),100)})))}(u.window,(()=>{this._onDidPopoutGroupSizeChange.fire({width:u.window.innerWidth,height:u.window.innerHeight,group:a})})),y.event((()=>{this._onDidPopoutGroupPositionChange.fire({screenX:u.window.screenX,screenY:u.window.screenX,group:a})})),g(u.window,"resize",(()=>{a.layout(u.window.innerWidth,u.window.innerHeight)})),d,l.from((()=>{if(!this.isDisposed)if(r&&this.getPanel(s.id))this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),this.getPanel(a.id)&&this.doRemoveGroup(a,{skipPopoutAssociated:!0});else if(this.getPanel(a.id)){a.model.renderContainer=this.overlayRenderContainer,a.model.dropTargetContainer=this.rootDropTargetContainer,D=a;if(!this._popoutGroups.find((e=>e.popoutGroup===a)))return;c?this.addFloatingGroup(a,{height:c.height,width:c.width,position:c}):(this.doRemoveGroup(a,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),a.model.location={type:"grid"},this.movingLock((()=>{this.doAddGroup(a,[0])}))),this.doSetGroupAndPanelActive(a)}}))),this._popoutGroups.push(C),this.updateWatermark(),!0})).catch((e=>(console.error("dockview: failed to create popout.",e),!1)))}addFloatingGroup(e,t){var i,n,s,o,r;let a;if(e instanceof ht)a=this.createGroup(),this._onDidAddGroup.fire(a),this.movingLock((()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0}))),this.movingLock((()=>a.model.openPanel(e,{skipSetGroupActive:!0})));else{a=e;const n=null===(i=this._popoutGroups.find((e=>e.popoutGroup===a)))||void 0===i?void 0:i.referenceGroup,s=n?this.getPanel(n):void 0;"boolean"==typeof(null==t?void 0:t.skipRemoveGroup)&&t.skipRemoveGroup||(s?(this.movingLock((()=>Pt({from:e,to:s}))),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(s,{skipDispose:!0}),a=s):this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}))}const h=function(){if(null==t?void 0:t.position){const e={};return"left"in t.position?e.left=Math.max(t.position.left,0):"right"in t.position?e.right=Math.max(t.position.right,0):e.left=_t,"top"in t.position?e.top=Math.max(t.position.top,0):"bottom"in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=wt,"number"==typeof t.width?e.width=Math.max(t.width,0):e.width=ft,"number"==typeof t.height?e.height=Math.max(t.height,0):e.height=Dt,e}return{left:"number"==typeof(null==t?void 0:t.x)?Math.max(t.x,0):_t,top:"number"==typeof(null==t?void 0:t.y)?Math.max(t.y,0):wt,width:"number"==typeof(null==t?void 0:t.width)?Math.max(t.width,0):ft,height:"number"==typeof(null==t?void 0:t.height)?Math.max(t.height,0):Dt}}(),d=new ct(Object.assign(Object.assign({container:this.gridview.element,content:a.element},h),{minimumInViewportWidth:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(s=null===(n=this.options.floatingGroupBounds)||void 0===n?void 0:n.minimumWidthWithinViewport)&&void 0!==s?s:gt,minimumInViewportHeight:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(r=null===(o=this.options.floatingGroupBounds)||void 0===o?void 0:o.minimumHeightWithinViewport)&&void 0!==r?r:gt})),l=a.element.querySelector(".dv-void-container");if(!l)throw new Error("failed to find drag handle");d.setupDrag(l,{inDragMode:"boolean"==typeof(null==t?void 0:t.inDragMode)&&t.inDragMode});const p=new vt(a,d),u=new w(a.api.onDidActiveChange((e=>{e.isActive&&d.bringToFront()})),b(a.element,(e=>{const{width:t,height:i}=e.contentRect;a.layout(t,i)})));p.addDisposables(d.onDidChange((()=>{a.layout(a.width,a.height)})),d.onDidChangeEnd((()=>{this._bufferOnDidLayoutChange.fire()})),a.onDidChange((e=>{d.setBounds({height:null==e?void 0:e.height,width:null==e?void 0:e.width})})),{dispose:()=>{u.dispose(),k(this._floatingGroups,p),a.model.location={type:"grid"},this.updateWatermark()}}),this._floatingGroups.push(p),a.model.location={type:"floating"},(null==t?void 0:t.skipActiveGroup)||this.doSetGroupAndPanelActive(a),this.updateWatermark()}orthogonalize(e,t){switch(this.gridview.normalize(),e){case"top":case"bottom":this.gridview.orientation===F.HORIZONTAL&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case"left":case"right":this.gridview.orientation===F.VERTICAL&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case"top":case"left":case"center":return this.createGroupAtLocation([0],void 0,t);case"bottom":case"right":return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw new Error(`unsupported position ${e}`)}}updateOptions(e){var t,i;if(super.updateOptions(e),"floatingGroupBounds"in e)for(const s of this._floatingGroups){switch(e.floatingGroupBounds){case"boundedWithinViewport":s.overlay.minimumInViewportHeight=void 0,s.overlay.minimumInViewportWidth=void 0;break;case void 0:s.overlay.minimumInViewportHeight=gt,s.overlay.minimumInViewportWidth=gt;break;default:s.overlay.minimumInViewportHeight=null===(t=e.floatingGroupBounds)||void 0===t?void 0:t.minimumHeightWithinViewport,s.overlay.minimumInViewportWidth=null===(i=e.floatingGroupBounds)||void 0===i?void 0:i.minimumWidthWithinViewport}s.overlay.setBounds()}this.updateDropTargetModel(e);const n=this.options.disableDnd;this._options=Object.assign(Object.assign({},this.options),e);n!==this.options.disableDnd&&this.updateDragAndDropState(),"theme"in e&&this.updateTheme(),this.layout(this.gridview.width,this.gridview.height,!0)}layout(e,t,i){if(super.layout(e,t,i),this._floatingGroups)for(const n of this._floatingGroups)n.overlay.setBounds()}updateDragAndDropState(){for(const e of this.groups)e.model.updateDragAndDropState()}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}getGroupPanel(e){return this.panels.find((t=>t.id===e))}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}moveToNext(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1])return void e.group.model.moveToNext({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupAndPanelActive(n)}moveToPrevious(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0])return void e.group.model.moveToPrevious({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){var e;const t=this.gridview.serialize(),i=this.panels.reduce(((e,t)=>(e[t.id]=t.toJSON(),e)),{}),n=this._floatingGroups.map((e=>({data:e.group.toJSON(),position:e.overlay.toJSON()}))),s=this._popoutGroups.map((e=>({data:e.popoutGroup.toJSON(),gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:"popout"===e.popoutGroup.api.location.type?e.popoutGroup.api.location.popoutUrl:void 0}))),o={grid:t,panels:i,activeGroup:null===(e=this.activeGroup)||void 0===e?void 0:e.id};return n.length>0&&(o.floatingGroups=n),s.length>0&&(o.popoutGroups=s),o}fromJSON(e){var t,i;if(this.clear(),"object"!=typeof e||null===e)throw new Error("serialized layout must be a non-null object");const{grid:n,panels:s,activeGroup:o}=e;if("branch"!==n.root.type||!Array.isArray(n.root.data))throw new Error("root must be of type branch");try{const r=this.width,a=this.height,h=e=>{const{id:t,locked:i,hideHeader:n,views:o,activeView:r}=e;if("string"!=typeof t)throw new Error("group id must be of type string");const a=this.createGroup({id:t,locked:!!i,hideHeader:!!n});this._onDidAddGroup.fire(a);const h=[];for(const d of o){const e=this._deserializer.fromJSON(s[d],a);h.push(e)}for(let s=0;s0&&a.model.openPanel(a.panels[a.panels.length-1],{skipSetGroupActive:!0}),a};this.gridview.deserialize(n,{fromJSON:e=>h(e.data)}),this.layout(r,a,!0);const d=null!==(t=e.floatingGroups)&&void 0!==t?t:[];for(const e of d){const{data:t,position:i}=e,n=h(t);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}const l=null!==(i=e.popoutGroups)&&void 0!==i?i:[],p=[];l.forEach(((e,t)=>{const{data:i,position:n,gridReferenceGroup:s,url:o}=e,r=h(i),a=new Promise((e=>{setTimeout((()=>{this.addPopoutGroup(r,{position:null!=n?n:void 0,overridePopoutGroup:s?r:void 0,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:o}),e()}),100*t)}));p.push(a)})),this._popoutRestorationPromise=Promise.all(p).then((()=>{}));for(const e of this._floatingGroups)e.overlay.setBounds();if("string"==typeof o){const e=this.getPanel(o);e&&this.doSetGroupAndPanelActive(e)}}catch(r){console.error("dockview: failed to deserialize layout. Reverting changes",r);for(const e of this.groups)for(const t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);for(const e of[...this._floatingGroups])e.dispose();throw this.clear(),r}this.updateWatermark(),requestAnimationFrame((()=>{this.overlayRenderContainer.updateAllPositions()})),this._onDidLayoutFromJSON.fire()}clear(){const e=Array.from(this._groups.values()).map((e=>e.value)),t=!!this.activeGroup;for(const i of e)this.removeGroup(i,{skipActive:!0});t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){for(const e of this._groups.entries()){const[t,i]=e;i.value.model.closeAllPanels()}}addPanel(e){var t,i;if(this.panels.find((t=>t.id===e.id)))throw new Error(`panel with id ${e.id} already exists`);let n;if(e.position&&e.floating)throw new Error("you can only provide one of: position, floating as arguments to .addPanel(...)");const s={width:e.initialWidth,height:e.initialHeight};let o;if(e.position)if(e.position.referencePanel){const t="string"==typeof e.position.referencePanel?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(o=e.position.index,!t)throw new Error(`referencePanel '${e.position.referencePanel}' does not exist`);n=this.findGroup(t)}else{if(!function(e){return!!e.referenceGroup}(e.position)){const t=this.orthogonalize(_e(e.position.direction)),i=this.createPanel(e,t);return t.model.openPanel(i,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:null==s?void 0:s.height,width:null==s?void 0:s.width}),i}if(n="string"==typeof e.position.referenceGroup?null===(t=this._groups.get(e.position.referenceGroup))||void 0===t?void 0:t.value:e.position.referenceGroup,o=e.position.index,!n)throw new Error(`referenceGroup '${e.position.referenceGroup}' does not exist`)}else n=this.activeGroup;let r;if(n){const t=he((null===(i=e.position)||void 0===i?void 0:i.direction)||"within");if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else if("floating"===n.api.location.type||"center"===t)r=this.createPanel(e,n),n.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),n.api.setSize({width:null==s?void 0:s.width,height:null==s?void 0:s.height}),e.inactive||this.doSetGroupAndPanelActive(n);else{const i=ee(n.element),a=te(this.gridview.orientation,i,t),h=this.createGroupAtLocation(a,this.orientationAtLocation(a)===F.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,h),h.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(h)}}else if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else{const t=this.createGroupAtLocation([0],this.gridview.orientation===F.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t)}return r}removePanel(e,t){void 0===t&&(t={removeEmptyGroup:!0});const i=e.group;if(!i)throw new Error(`cannot remove panel ${e.id}. it's missing a group.`);i.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),0===i.size&&t.removeEmptyGroup&&this.removeGroup(i,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ut}updateWatermark(){var e,t,i;if(0===this.groups.filter((e=>"grid"===e.api.location.type&&e.api.isVisible)).length){if(!this._watermark){this._watermark=this.createWatermarkComponent(),this._watermark.init({containerApi:new me(this)});const e=document.createElement("div");e.className="dv-watermark-container",i="watermark-component",e.setAttribute("data-testid",i),e.appendChild(this._watermark.element),this.gridview.element.appendChild(e)}}else this._watermark&&(this._watermark.element.parentElement.remove(),null===(t=(e=this._watermark).dispose)||void 0===t||t.call(e),this._watermark=null)}addGroup(e){var t;if(e){let i;if(e.referencePanel){const t="string"==typeof e.referencePanel?this.panels.find((t=>t.id===e.referencePanel)):e.referencePanel;if(!t)throw new Error(`reference panel ${e.referencePanel} does not exist`);if(i=this.findGroup(t),!i)throw new Error(`reference group for reference panel ${e.referencePanel} does not exist`)}else{if(!function(e){return!!e.referenceGroup}(e)){const t=this.orthogonalize(_e(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}if(i="string"==typeof e.referenceGroup?null===(t=this._groups.get(e.referenceGroup))||void 0===t?void 0:t.value:e.referenceGroup,!i)throw new Error(`reference group ${e.referenceGroup} does not exist`)}const n=he(e.direction||"within"),s=ee(i.element),o=te(this.gridview.orientation,s,n),r=this.createGroup(e),a=this.getLocationOrientation(o)===F.VERTICAL?e.initialHeight:e.initialWidth;return this.doAddGroup(r,o,a),e.skipSetActive||this.doSetGroupAndPanelActive(r),r}{const t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===F.HORIZONTAL?F.HORIZONTAL:F.VERTICAL}removeGroup(e,t){this.doRemoveGroup(e,t)}doRemoveGroup(e,t){var i;const n=[...e.panels];if(!(null==t?void 0:t.skipDispose))for(const r of n)this.removePanel(r,{removeEmptyGroup:!1,skipDispose:null!==(i=null==t?void 0:t.skipDispose)&&void 0!==i&&i});const s=this.activePanel;if("floating"===e.api.location.type){const i=this._floatingGroups.find((t=>t.group===e));if(i){if((null==t?void 0:t.skipDispose)||(i.group.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)),k(this._floatingGroups,i),i.dispose(),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return i.group}throw new Error("failed to find floating group")}if("popout"===e.api.location.type){const i=this._popoutGroups.find((t=>t.popoutGroup===e));if(i){if(!(null==t?void 0:t.skipDispose)){if(!(null==t?void 0:t.skipPopoutAssociated)){const e=i.referenceGroup?this.getPanel(i.referenceGroup):void 0;e&&0===e.panels.length&&this.removeGroup(e)}i.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}k(this._popoutGroups,i);const n=i.disposable.dispose();if(!(null==t?void 0:t.skipPopoutReturn)&&n&&(this.doAddGroup(n,[0]),this.doSetGroupAndPanelActive(n)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return this.updateWatermark(),i.popoutGroup}throw new Error("failed to find popout group")}const o=super.doRemoveGroup(e,t);return(null==t?void 0:t.skipActive)||this.activePanel!==s&&this._onDidActivePanelChange.fire(this.activePanel),o}movingLock(e){const t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}moveGroupOrPanel(e){var t;const i=e.to.group,n=e.from.groupId,s=e.from.panelId,o=e.to.position,r=e.to.index,a=n?null===(t=this._groups.get(n))||void 0===t?void 0:t.value:void 0;if(!a)throw new Error(`Failed to find group id ${n}`);if(void 0!==s)if(o&&"center"!==o){const e=ee(i.element),t=te(this.gridview.orientation,e,o);if(a.size<2){const[e,n]=V(t);if("grid"===a.api.location.type){const t=ee(a.element),[i,o]=V(t);if(N(i,e))return this.gridview.moveView(i,o,n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}if("popout"===a.api.location.type){const e=this._popoutGroups.find((e=>e.popoutGroup===a)),i=this.movingLock((()=>e.popoutGroup.model.removePanel(e.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0})));this.doRemoveGroup(a,{skipActive:!0});const n=this.createGroupAtLocation(t);return this.movingLock((()=>n.model.openPanel(i))),this.doSetGroupAndPanelActive(n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}const r=this.movingLock((()=>this.doRemoveGroup(a,{skipActive:!0,skipDispose:!0}))),h=ee(i.element),d=te(this.gridview.orientation,h,o);this.movingLock((()=>this.doAddGroup(r,d))),this.doSetGroupAndPanelActive(r),this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);const i=te(this.gridview.orientation,e,o),n=this.createGroupAtLocation(i);this.movingLock((()=>n.model.openPanel(t,{skipSetGroupActive:!0}))),this.doSetGroupAndPanelActive(n),this._onDidMovePanel.fire({panel:t,from:a})}}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);0===a.model.size&&this.doRemoveGroup(a,{skipActive:!0});const n=0===i.model.size;this.movingLock((()=>{var s;return i.model.openPanel(t,{index:r,skipSetActive:null!==(s=e.skipSetActive)&&void 0!==s&&s&&!n,skipSetGroupActive:!0})})),e.skipSetActive||this.doSetGroupAndPanelActive(i),this._onDidMovePanel.fire({panel:t,from:a})}else this.moveGroup({from:{group:a},to:{group:i,position:o},skipSetActive:e.skipSetActive})}moveGroup(e){const t=e.from.group,i=e.to.group,n=e.to.position;if("center"===n){const n=t.activePanel,s=this.movingLock((()=>[...t.panels].map((e=>t.model.removePanel(e.id,{skipSetActive:!0})))));0===(null==t?void 0:t.model.size)&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock((()=>{for(const e of s)i.model.openPanel(e,{skipSetActive:e!==n,skipSetGroupActive:!0})})),!0!==e.skipSetActive?this.doSetGroupAndPanelActive(i):this.activePanel||this.doSetGroupAndPanelActive(i)}else{switch(t.api.location.type){case"grid":this.gridview.removeView(ee(t.element));break;case"floating":{const e=this._floatingGroups.find((e=>e.group===t));if(!e)throw new Error("failed to find floating group");e.dispose();break}case"popout":{const e=this._popoutGroups.find((e=>e.popoutGroup===t));if(!e)throw new Error("failed to find popout group");const n=this._popoutGroups.indexOf(e);if(n>=0&&this._popoutGroups.splice(n,1),e.referenceGroup){const t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose(),"grid"===i.api.location.type?(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"grid"}):"floating"===i.api.location.type&&(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"floating"});break}}if("grid"===i.api.location.type){const e=ee(i.element),s=te(this.gridview.orientation,e,n);let o;switch(this.gridview.orientation){case F.VERTICAL:o=e.length%2==0?t.api.width:t.api.height;break;case F.HORIZONTAL:o=e.length%2==0?t.api.height:t.api.width}this.gridview.addView(t,o,s)}else if("floating"===i.api.location.type){const e=this._floatingGroups.find((e=>e.group===i));if(e){const i=e.overlay.toJSON();let n,s;n="left"in i?i.left+50:"right"in i?Math.max(0,i.right-i.width-50):50,s="top"in i?i.top+50:"bottom"in i?Math.max(0,i.bottom-i.height-50):50,this.addFloatingGroup(t,{height:i.height,width:i.width,position:{left:n,top:s}})}}}if(t.panels.forEach((e=>{this._onDidMovePanel.fire({panel:e,from:t})})),!1===e.skipSetActive){const e=null!=i?i:t;this.doSetGroupAndPanelActive(e)}}doSetGroupActive(e){super.doSetGroupActive(e);const t=this.activePanel;this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);const t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e||(e={});let t=null==e?void 0:e.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${null==e?void 0:e.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();const i=new Ke(this,t,e);if(i.init({params:{},accessor:this}),!this._groups.has(i.id)){const e=new w(i.model.onTabDragStart((e=>{this._onWillDragPanel.fire(e)})),i.model.onGroupDragStart((e=>{this._onWillDragGroup.fire(e)})),i.model.onMove((e=>{const{groupId:t,itemId:n,target:s,index:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:n},to:{group:i,position:s,index:o}})})),i.model.onDidDrop((e=>{this._onDidDrop.fire(e)})),i.model.onWillDrop((e=>{this._onWillDrop.fire(e)})),i.model.onWillShowOverlay((e=>{this.options.disableDnd?e.preventDefault():this._onWillShowOverlay.fire(e)})),i.model.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})),i.model.onDidAddPanel((e=>{this._moving||this._onDidAddPanel.fire(e.panel)})),i.model.onDidRemovePanel((e=>{this._moving||this._onDidRemovePanel.fire(e.panel)})),i.model.onDidActivePanelChange((e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value!==e.panel&&this._onDidActivePanelChange.fire(e.panel)})),d.any(i.model.onDidPanelTitleChange,i.model.onDidPanelParametersChange)((()=>{this._bufferOnDidLayoutChange.fire()})));this._groups.set(i.id,{value:i,disposable:e})}return i.initialize(),i}createPanel(e,t){var i,n,s;const o=e.component,r=null!==(i=e.tabComponent)&&void 0!==i?i:this.options.defaultTabComponent,a=new lt(this,e.id,o,r),h=new ht(e.id,o,r,this,this._api,t,a,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return h.init({title:null!==(n=e.title)&&void 0!==n?n:e.id,params:null!==(s=null==e?void 0:e.params)&&void 0!==s?s:{}}),h}createGroupAtLocation(e,t,i){const n=this.createGroup(i);return this.doAddGroup(n,e,t),n}findGroup(e){var t;return null===(t=Array.from(this._groups.values()).find((t=>t.value.model.containsPanel(e))))||void 0===t?void 0:t.value}orientationAtLocation(e){const t=this.gridview.orientation;return e.length%2==1?t:ie(t)}updateDropTargetModel(e){"dndEdges"in e&&(this._rootDropTarget.disabled="boolean"==typeof e.dndEdges&&!1===e.dndEdges,"object"==typeof e.dndEdges&&null!==e.dndEdges?this._rootDropTarget.setOverlayModel(e.dndEdges):this._rootDropTarget.setOverlayModel(Et)),"rootOverlayModel"in e&&this.updateDropTargetModel({dndEdges:e.dndEdges})}updateTheme(){var e,t;const i=null!==(e=this._options.theme)&&void 0!==e?e:it;if(this._themeClassnames.setClassNames(i.className),this.gridview.margin=null!==(t=i.gap)&&void 0!==t?t:0,"absolute"===i.dndOverlayMounting)this.rootDropTargetContainer.disabled=!1;else this.rootDropTargetContainer.disabled=!0}}class Ot extends de{get orientation(){return this.gridview.orientation}set orientation(e){this.gridview.orientation=e}get options(){return this._options}get deserializer(){return this._deserializer}set deserializer(e){this._deserializer=e}constructor(e,t){var i;super(e,{proportionalLayout:null===(i=t.proportionalLayout)||void 0===i||i,orientation:t.orientation,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,className:t.className}),this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._options=t,this.addDisposables(this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this.onDidAdd((e=>{this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._onDidActiveGroupChange.fire(e)})))}updateOptions(e){super.updateOptions(e);const t="string"==typeof e.orientation&&this.gridview.orientation!==e.orientation;this._options=Object.assign(Object.assign({},this.options),e),t&&(this.gridview.orientation=e.orientation),this.layout(this.gridview.width,this.gridview.height,!0)}removePanel(e){this.removeGroup(e)}toJSON(){var e;return{grid:this.gridview.serialize(),activePanel:null===(e=this.activeGroup)||void 0===e?void 0:e.id}}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t)}setActive(e){this._groups.forEach(((t,i)=>{t.value.setActive(e===t.value)}))}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}fromJSON(e){this.clear();const{grid:t,activePanel:i}=e;try{const e=[],n=this.width,s=this.height;if(this.gridview.deserialize(t,{fromJSON:t=>{const{data:i}=t,n=this.options.createComponent({id:i.id,name:i.component});return e.push((()=>n.init({params:i.params,minimumWidth:i.minimumWidth,maximumWidth:i.maximumWidth,minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,priority:i.priority,snap:!!i.snap,accessor:this,isVisible:t.visible}))),this._onDidAddGroup.fire(n),this.registerPanel(n),n}}),this.layout(n,s,!0),e.forEach((e=>e())),"string"==typeof i){const e=this.getPanel(i);e&&this.doSetGroupActive(e)}}catch(n){for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw this.clear(),n}this._onDidLayoutfromJSON.fire()}clear(){const e=this.activeGroup,t=Array.from(this._groups.values());for(const i of t)i.disposable.dispose(),this.doRemoveGroup(i.value,{skipActive:!0});e&&this.doSetGroupActive(void 0),this.gridview.clear()}movePanel(e,t){var i;let n;const s=this.gridview.remove(e),o=null===(i=this._groups.get(t.reference))||void 0===i?void 0:i.value;if(!o)throw new Error(`reference group ${t.reference} does not exist`);const r=he(t.direction);if("center"===r)throw new Error(`${r} not supported as an option`);{const e=ee(o.element);n=te(this.gridview.orientation,e,r)}this.doAddGroup(s,n,t.size)}addPanel(e){var t,i,n,s;let o=null!==(t=e.location)&&void 0!==t?t:[0];if(null===(i=e.position)||void 0===i?void 0:i.referencePanel){const t=null===(n=this._groups.get(e.position.referencePanel))||void 0===n?void 0:n.value;if(!t)throw new Error(`reference group ${e.position.referencePanel} does not exist`);const i=he(e.position.direction);if("center"===i)throw new Error(`${i} not supported as an option`);{const e=ee(t.element);o=te(this.gridview.orientation,e,i)}}const r=this.options.createComponent({id:e.id,name:e.component});return r.init({params:null!==(s=e.params)&&void 0!==s?s:{},minimumWidth:e.minimumWidth,maximumWidth:e.maximumWidth,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,priority:e.priority,snap:!!e.snap,accessor:this,isVisible:!0}),this.registerPanel(r),this.doAddGroup(r,o,e.size),this.doSetGroupActive(r),r}registerPanel(e){const t=new w(e.api.onDidFocusChange((t=>{t.isFocused&&this._groups.forEach((t=>{const i=t.value;i!==e?i.setActive(!1):i.setActive(!0)}))})));this._groups.set(e.id,{value:e,disposable:t})}moveGroup(e,t,i){const n=this.getPanel(t);if(!n)throw new Error("invalid operation");const s=ee(e.element),o=te(this.gridview.orientation,s,i),[r,a]=V(o),h=ee(n.element),[d,l]=V(h);if(N(d,r))return void this.gridview.moveView(d,l,a);const p=this.doRemoveGroup(n,{skipActive:!0,skipDispose:!0}),u=ee(e.element),m=te(this.gridview.orientation,u,i);this.doAddGroup(p,m)}removeGroup(e){super.removeGroup(e)}dispose(){super.dispose(),this._onDidLayoutfromJSON.dispose()}}class It extends re{get panels(){return this.splitview.getViews()}get options(){return this._options}get length(){return this._panels.size}get orientation(){return this.splitview.orientation}get splitview(){return this._splitview}set splitview(e){this._splitview&&this._splitview.dispose(),this._splitview=e,this._splitviewChangeDisposable.value=new w(this._splitview.onDidSashEnd((()=>{this._onDidLayoutChange.fire(void 0)})),this._splitview.onDidAddView((e=>this._onDidAddView.fire(e))),this._splitview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get height(){return this.splitview.orientation===F.HORIZONTAL?this.splitview.orthogonalSize:this.splitview.size}get width(){return this.splitview.orientation===F.HORIZONTAL?this.splitview.size:this.splitview.orthogonalSize}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._splitviewChangeDisposable=new f,this._panels=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.splitview=new $(this.element,t),this.addDisposables(this._onDidAddView,this._onDidLayoutfromJSON,this._onDidRemoveView,this._onDidLayoutChange)}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),"string"==typeof e.orientation&&(this.splitview.orientation=e.orientation),this._options=Object.assign(Object.assign({},this.options),e),this.splitview.layout(this.splitview.size,this.splitview.orthogonalSize)}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}movePanel(e,t){this.splitview.moveView(e,t)}setVisible(e,t){const i=this.panels.indexOf(e);this.splitview.setViewVisible(i,t)}setActive(e,t){this._activePanel=e,this.panels.filter((t=>t!==e)).forEach((e=>{e.api._onDidActiveChange.fire({isActive:!1}),t||e.focus()})),e.api._onDidActiveChange.fire({isActive:!0}),t||e.focus()}removePanel(e,t){const i=this._panels.get(e.id);if(!i)throw new Error(`unknown splitview panel ${e.id}`);i.dispose(),this._panels.delete(e.id);const n=this.panels.findIndex((t=>t===e));this.splitview.removeView(n,t).dispose();const s=this.panels;s.length>0&&this.setActive(s[s.length-1])}getPanel(e){return this.panels.find((t=>t.id===e))}addPanel(e){var t;if(this._panels.has(e.id))throw new Error(`panel ${e.id} already exists`);const i=this.options.createComponent({id:e.id,name:e.component});i.orientation=this.splitview.orientation,i.init({params:null!==(t=e.params)&&void 0!==t?t:{},minimumSize:e.minimumSize,maximumSize:e.maximumSize,snap:e.snap,priority:e.priority,accessor:this});const n="number"==typeof e.size?e.size:J.Distribute,s="number"==typeof e.index?e.index:void 0;return this.splitview.addView(i,n,s),this.doAddView(i),this.setActive(i),i}layout(e,t){const[i,n]=this.splitview.orientation===F.HORIZONTAL?[e,t]:[t,e];this.splitview.layout(i,n)}doAddView(e){const t=e.api.onDidFocusChange((t=>{t.isFocused&&this.setActive(e,!0)}));this._panels.set(e.id,t)}toJSON(){var e;return{views:this.splitview.getViews().map(((e,t)=>({size:this.splitview.getViewSize(t),data:e.toJSON(),snap:!!e.snap,priority:e.priority}))),activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,size:this.splitview.size,orientation:this.splitview.orientation}}fromJSON(e){this.clear();const{views:t,orientation:i,size:n,activeView:s}=e,o=[],r=this.width,a=this.height;if(this.splitview=new $(this.element,{orientation:i,proportionalLayout:this.options.proportionalLayout,descriptor:{size:n,views:t.map((e=>{const t=e.data;if(this._panels.has(t.id))throw new Error(`panel ${t.id} already exists`);const n=this.options.createComponent({id:t.id,name:t.component});return o.push((()=>{var i;n.init({params:null!==(i=t.params)&&void 0!==i?i:{},minimumSize:t.minimumSize,maximumSize:t.maximumSize,snap:e.snap,priority:e.priority,accessor:this})})),n.orientation=i,this.doAddView(n),setTimeout((()=>{this._onDidAddView.fire(n)}),0),{size:e.size,view:n}}))}}),this.layout(r,a),o.forEach((e=>e())),"string"==typeof s){const e=this.getPanel(s);e&&this.setActive(e)}this._onDidLayoutfromJSON.fire()}clear(){for(const e of this._panels.values())e.dispose();for(this._panels.clear();this.splitview.length>0;){this.splitview.removeView(0,J.Distribute,!0).dispose()}}dispose(){for(const t of this._panels.values())t.dispose();this._panels.clear();const e=this.splitview.getViews();this._splitviewChangeDisposable.dispose(),this.splitview.dispose();for(const t of e)t.dispose();this.element.remove(),super.dispose()}}class Vt extends w{get element(){return this._element}constructor(){super(),this._expandedIcon=We({width:"11",height:"11",viewbox:"0 0 24 15",path:"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z"}),this._collapsedIcon=He(),this.disposable=new f,this.apiRef={api:null},this._element=document.createElement("div"),this.element.className="dv-default-header",this._content=document.createElement("span"),this._expander=document.createElement("div"),this._expander.className="dv-pane-header-icon",this.element.appendChild(this._expander),this.element.appendChild(this._content),this.addDisposables(g(this._element,"click",(()=>{var e;null===(e=this.apiRef.api)||void 0===e||e.setExpanded(!this.apiRef.api.isExpanded)})))}init(e){this.apiRef.api=e.api,this._content.textContent=e.title,this.updateIcon(),this.disposable.value=e.api.onDidExpansionChange((()=>{this.updateIcon()}))}updateIcon(){var e;const t=!!(null===(e=this.apiRef.api)||void 0===e?void 0:e.isExpanded);S(this._expander,"collapsed",!t),t?(this._expander.contains(this._collapsedIcon)&&this._collapsedIcon.remove(),this._expander.contains(this._expandedIcon)||this._expander.appendChild(this._expandedIcon)):(this._expander.contains(this._expandedIcon)&&this._expandedIcon.remove(),this._expander.contains(this._collapsedIcon)||this._expander.appendChild(this._collapsedIcon))}update(e){}dispose(){this.disposable.dispose(),super.dispose()}}const Nt=R(),Tt=Number.MAX_SAFE_INTEGER;class Lt extends Ge{constructor(e){super({accessor:e.accessor,id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,disableDnd:e.disableDnd,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this.options=e}getBodyComponent(){return this.options.body}getHeaderComponent(){return this.options.header}}class kt extends re{get id(){return this._id}get panels(){return this.paneview.getPanes()}set paneview(e){this._paneview=e,this._disposable.value=new w(this._paneview.onDidChange((()=>{this._onDidLayoutChange.fire(void 0)})),this._paneview.onDidAddView((e=>this._onDidAddView.fire(e))),this._paneview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get paneview(){return this._paneview}get minimumSize(){return this.paneview.minimumSize}get maximumSize(){return this.paneview.maximumSize}get height(){return this.paneview.orientation===F.HORIZONTAL?this.paneview.orthogonalSize:this.paneview.size}get width(){return this.paneview.orientation===F.HORIZONTAL?this.paneview.size:this.paneview.orthogonalSize}get options(){return this._options}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=Nt.next(),this._disposable=new f,this._viewDisposables=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.element.style.height="100%",this.element.style.width="100%",this.addDisposables(this._onDidLayoutChange,this._onDidLayoutfromJSON,this._onDidDrop,this._onDidAddView,this._onDidRemoveView,this._onUnhandledDragOverEvent),this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.paneview=new Z(this.element,{orientation:F.VERTICAL}),this.addDisposables(this._disposable)}setVisible(e,t){const i=this.panels.indexOf(e);this.paneview.setViewVisible(i,t)}focus(){}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),this._options=Object.assign(Object.assign({},this.options),e)}addPanel(e){var t,i;const n=this.options.createComponent({id:e.id,name:e.component});let s;e.headerComponent&&this.options.createHeaderComponent&&(s=this.options.createHeaderComponent({id:e.id,name:e.headerComponent})),s||(s=new Vt);const o=new Lt({id:e.id,component:e.component,headerComponent:e.headerComponent,header:s,body:n,orientation:F.VERTICAL,isExpanded:!!e.isExpanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:0,maximumBodySize:Tt});this.doAddPanel(o);const r="number"==typeof e.size?e.size:J.Distribute,a="number"==typeof e.index?e.index:void 0;return o.init({params:null!==(i=e.params)&&void 0!==i?i:{},minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize,isExpanded:e.isExpanded,title:e.title,containerApi:new pe(this),accessor:this}),this.paneview.addPane(o,r,a),o.orientation=this.paneview.orientation,o}removePanel(e){const t=this.panels.findIndex((t=>t===e));this.paneview.removePane(t),this.doRemovePanel(e)}movePanel(e,t){this.paneview.moveView(e,t)}getPanel(e){return this.panels.find((t=>t.id===e))}layout(e,t){const[i,n]=this.paneview.orientation===F.HORIZONTAL?[e,t]:[t,e];this.paneview.layout(i,n)}toJSON(){const e=e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e;return{views:this.paneview.getPanes().map(((t,i)=>{return{size:this.paneview.getViewSize(i),data:t.toJSON(),minimumSize:(n=t.minimumBodySize,n<=0?void 0:n),maximumSize:e(t.maximumBodySize),headerSize:t.headerSize,expanded:t.isExpanded()};var n})),size:this.paneview.size}}fromJSON(e){this.clear();const{views:t,size:i}=e,n=[],s=this.width,o=this.height;this.paneview=new Z(this.element,{orientation:F.VERTICAL,descriptor:{size:i,views:t.map((e=>{var t,i,s;const o=e.data,r=this.options.createComponent({id:o.id,name:o.component});let a;o.headerComponent&&this.options.createHeaderComponent&&(a=this.options.createHeaderComponent({id:o.id,name:o.headerComponent})),a||(a=new Vt);const h=new Lt({id:o.id,component:o.component,headerComponent:o.headerComponent,header:a,body:r,orientation:F.VERTICAL,isExpanded:!!e.expanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:null!==(i=e.minimumSize)&&void 0!==i?i:0,maximumBodySize:null!==(s=e.maximumSize)&&void 0!==s?s:Tt});return this.doAddPanel(h),n.push((()=>{var t;h.init({params:null!==(t=o.params)&&void 0!==t?t:{},minimumBodySize:e.minimumSize,maximumBodySize:e.maximumSize,title:o.title,isExpanded:!!e.expanded,containerApi:new pe(this),accessor:this}),h.orientation=this.paneview.orientation})),setTimeout((()=>{this._onDidAddView.fire(h)}),0),{size:e.size,view:h}}))}}),this.layout(s,o),n.forEach((e=>e())),this._onDidLayoutfromJSON.fire()}clear(){for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.paneview.dispose()}doAddPanel(e){const t=new w(e.onDidDrop((e=>{this._onDidDrop.fire(e)})),e.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})));this._viewDisposables.set(e.id,t)}doRemovePanel(e){const t=this._viewDisposables.get(e.id);t&&(t.dispose(),this._viewDisposables.delete(e.id))}dispose(){super.dispose();for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.element.remove(),this.paneview.dispose()}}class Mt extends Ee{get priority(){return this._priority}set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){const e="function"==typeof this._minimumSize?this._minimumSize():this._minimumSize;return e!==this._evaluatedMinimumSize&&(this._evaluatedMinimumSize=e,this.updateConstraints()),e}get maximumSize(){const e="function"==typeof this._maximumSize?this._maximumSize():this._maximumSize;return e!==this._evaluatedMaximumSize&&(this._evaluatedMaximumSize=e,this.updateConstraints()),e}get snap(){return this._snap}constructor(e,t){super(e,t,new ze(e,t)),this._evaluatedMinimumSize=0,this._evaluatedMaximumSize=Number.POSITIVE_INFINITY,this._minimumSize=0,this._maximumSize=Number.POSITIVE_INFINITY,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this.api.initialize(this),this.addDisposables(this._onDidChange,this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.setActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumSize&&"function"!=typeof e.minimumSize||(this._minimumSize=e.minimumSize),"number"!=typeof e.maximumSize&&"function"!=typeof e.maximumSize||(this._maximumSize=e.maximumSize),this.updateConstraints()})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})))}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}layout(e,t){const[i,n]=this.orientation===F.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){super.init(e),this._priority=e.priority,e.minimumSize&&(this._minimumSize=e.minimumSize),e.maximumSize&&(this._maximumSize=e.maximumSize),e.snap&&(this._snap=e.snap)}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{minimumSize:(e=this.minimumSize,e<=0?void 0:e),maximumSize:(e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e)(this.maximumSize)});var e}updateConstraints(){this.api._onDidConstraintsChange.fire({maximumSize:this._evaluatedMaximumSize,minimumSize:this._evaluatedMinimumSize})}}function Rt(e,t){return new Gt(e,t).api}function Wt(e,t){const i=new It(e,t);return new le(i)}function Ht(e,t){const i=new Ot(e,t);return new ue(i)}function Ft(e,t){const i=new kt(e,t);return new pe(i)}},1800:(e,t,i)=>{i.r(t),i.d(t,{attach:()=>r});var n=i(5399);class s{get element(){return this._element}constructor(){this._element=document.createElement("div"),this._element.style.display="flex",this._element.style.justifyContent="center",this._element.style.alignItems="center",this._element.style.color="white",this._element.style.height="100%",this._titleElement=document.createElement("span"),this._paramsElement=document.createElement("span"),this._element.appendChild(this._titleElement)}init(e){this.render(e.params)}update(e){this.render(e.params)}render(e){this._titleElement.textContent=e.title,e.x?(this._paramsElement.parentElement||this._element.appendChild(this._paramsElement),this._paramsElement.textContent=e.x):this._paramsElement.parentElement?.removeChild(this._paramsElement)}}class o{get element(){return this._element}constructor(){this._element=document.createElement("div"),this._element.className="my-custom-tab",this._title=document.createElement("span");const e=document.createElement("span");e.style.flexGrow="1";const t=document.createElement("span");t.className="my-custom-tab-icon material-symbols-outlined",t.textContent="minimize";const i=document.createElement("span");i.className="my-custom-tab-icon material-symbols-outlined",i.textContent="maximize";const n=document.createElement("span");n.className="my-custom-tab-icon material-symbols-outlined",n.textContent="close",this._element.appendChild(this._title),this._element.appendChild(e),this._element.appendChild(t),this._element.appendChild(i),this._element.appendChild(n)}init(e){this.render(e.params)}update(e){this.render(e.params)}render(e){this._title=e.title}}function r(e){const t=document.createElement("div");t.className="dockview-theme-abyss",t.style.height="100%",t.style.width="100%";const i=new n.CJ({components:{default:s},tabComponents:{default:o},singleTabMode:"fullwidth",parentElement:t});e.appendChild(t);const{clientWidth:r,clientHeight:a}=e;i.layout(r,a);i.addPanel({id:"panel_1",component:"default",tabComponent:"default",params:{title:"Window 1"}}).group.locked=!0;i.addPanel({id:"panel_2",component:"default",tabComponent:"default",params:{title:"Window 2"},position:{direction:"right"}}).group.locked=!0;return i.addPanel({id:"panel_3",component:"default",tabComponent:"default",params:{title:"Window 3"},position:{direction:"below"}}).group.locked=!0,{dispose:()=>{i.dispose(),t.remove()}}}}}]); -//# sourceMappingURL=1800.80e2cff8.js.map \ No newline at end of file +"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[1800],{5399:(e,t,i)=>{i.d(t,{CJ:()=>Gt,KU:()=>w,GW:()=>l,O4:()=>v,Gi:()=>f,Tn:()=>ue,Tg:()=>Xe,g1:()=>U,i5:()=>F,gq:()=>Ue,kQ:()=>oe,jl:()=>Ce,mH:()=>j,fX:()=>le,hJ:()=>Mt,lT:()=>Rt,rc:()=>Ht,iz:()=>Ft,cO:()=>Wt,M:()=>we,UM:()=>it,Zc:()=>ot,Hx:()=>Qe,MV:()=>nt,Qp:()=>et,Lt:()=>rt,TR:()=>st,ZS:()=>tt});class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var d,l;r.INSTANCE=new r,function(e){e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=t.map((t=>t(e)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}}}}(d||(d={}));class p{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class u{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class m{static create(){var e;return new m(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class c{constructor(e,t){this.callback=e,this.stacktrace=t}}class v{static setLeakageMonitorEnabled(e){e!==v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.clear(),v.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new c(e,v.ENABLE_TRACKING?m.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):v.ENABLE_TRACKING}}},v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.add(this._event,m.create())),this._event}fire(e){var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const i of this._listeners)i.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(v.ENABLE_TRACKING&&queueMicrotask((()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())})),this._listeners=[]),v.ENABLE_TRACKING&&this._event&&v.MEMORY_LEAK_WATCHER.delete(this._event))}}function g(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}v.ENABLE_TRACKING=!1,v.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class _{constructor(){this._onFired=new v,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event((()=>{this._currentFireCount>t&&e()}))}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask((()=>{this._queued=!1,this._onFired.fire()})))}dispose(){this._onFired.dispose()}}!function(e){e.NONE={dispose:()=>{}},e.from=function(e){return{dispose:()=>{e()}}}}(l||(l={}));class w{get isDisposed(){return this._isDisposed}constructor(){this._isDisposed=!1;for(var e=arguments.length,t=new Array(e),i=0;ithis._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class f{constructor(){this._disposable=l.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=l.NONE)}}class D extends w{constructor(e){super(),this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,b(e,(e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)})))}}function b(e,t){const i=new ResizeObserver((e=>{requestAnimationFrame((()=>{const i=e[0];t(i)}))}));return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const C=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function x(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function z(e){return new A(e)}class A extends w{constructor(e){super(),this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=x(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{x(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(g(e,"focus",n,!0)),this.addDisposables(g(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const E="dv-quasiPreventDefault";function P(e){return e[E]}function G(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function O(e){void 0===e&&(e=document);const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const n of t)i.set(n,n.style.pointerEvents),n.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class I{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const t of this._classNames)S(this.element,t,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const t of this._classNames)S(this.element,t,!0)}}function V(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function N(e,t){if(e.length!==t.length)return!1;for(let i=0;i-1&&(e.splice(i,1),e.unshift(t))}function L(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function k(e,t){const i=e.findIndex((e=>e===t));return i>-1&&(e.splice(i,1),!0)}const M=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),R=()=>{let e=1;return{next:()=>(e++).toString()}},W=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;nt;n--)i.push(n);return i};class H{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=M(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var F,B,U,J;!function(e){e.HORIZONTAL="HORIZONTAL",e.VERTICAL="VERTICAL"}(F||(F={})),function(e){e[e.MAXIMUM=0]="MAXIMUM",e[e.MINIMUM=1]="MINIMUM",e[e.DISABLED=2]="DISABLED",e[e.ENABLED=3]="ENABLED"}(B||(B={})),function(e){e.Low="low",e.High="high",e.Normal="normal"}(U||(U={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(J||(J={}));class ${get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,C(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==F.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce(((e,t)=>e+t.minimumSize),0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce(((e,t)=>e+t.maximumSize),0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,S(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,S(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,n,s=this;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new v,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=function(e,t,i,n,o,r,a,h,d){if(void 0===i&&(i=s.viewItems.map((e=>e.size))),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===a&&(a=Number.POSITIVE_INFINITY),e<0||e>s.viewItems.length)return 0;const l=W(e,-1),p=W(e+1,s.viewItems.length);if(o)for(const s of o)T(l,s),T(p,s);if(n)for(const s of n)L(l,s),L(p,s);const u=l.map((e=>s.viewItems[e])),m=l.map((e=>i[e])),c=p.map((e=>s.viewItems[e])),v=p.map((e=>i[e])),g=l.reduce(((e,t)=>e+s.viewItems[t].minimumSize-i[t]),0),_=l.reduce(((e,t)=>e+s.viewItems[t].maximumSize-i[t]),0),w=0===p.length?Number.POSITIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].minimumSize),0),f=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].maximumSize),0),D=Math.max(g,f),b=Math.min(w,_);let C=!1;if(h){const e=s.viewItems[h.index],i=t>=h.limitDelta;C=i!==e.visible,e.setVisible(i,h.size)}if(!C&&d){const e=s.viewItems[d.index],i=t{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(C(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(y(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=W(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>this.viewItems[e].priority===U.Low)),e],s=i.filter((e=>this.viewItems[e].priority===U.High)),o=this.viewItems[e];t=Math.round(t),t=M(t,o.minimumSize,Math.min(o.maximumSize,this._size)),o.size=t,this.relayout(n,s)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=M(t,e.minimumSize,e.maximumSize),e.size=t;const n=W(this.viewItems.length).filter((e=>e!==i)),s=[...n.filter((e=>this.viewItems[e].priority===U.Low)),i],o=n.filter((e=>this.viewItems[e].priority===U.High));this.relayout([...s,i],o)}addView(e,t,i,n){void 0===t&&(t={type:"distribute"}),void 0===i&&(i=this.viewItems.length);const s=document.createElement("div");let o;s.className="dv-view",s.appendChild(e.element),o="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange((e=>this.onDidChange(a,e.size))),a=new H(s,e,o,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(s)}});if(i===this.viewItems.length?this.viewContainer.appendChild(s):this.viewContainer.insertBefore(s,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=O(),n=this._orientation===F.HORIZONTAL?t.clientX:t.clientY,s=function(e,t){for(let i=0;it.container===e)),o=this.viewItems.map((e=>e.size));let r,a;const h=W(s,-1),d=W(s+1,this.viewItems.length),l=h.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-o[t])),0),p=h.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t])),0),u=0===d.length?Number.POSITIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].minimumSize)),0),m=0===d.length?Number.NEGATIVE_INFINITY:d.reduce(((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize)),0),c=Math.max(l,m),v=Math.min(u,p),g=this.findFirstSnapIndex(h),_=this.findFirstSnapIndex(d);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?c-t:c+t,size:e.size}}if("number"==typeof _){const e=this.viewItems[_],t=Math.floor(e.viewMinimumSize/2);a={index:_,limitDelta:e.visible?v+t:v-t,size:e.size}}const w=e=>{const t=(this._orientation===F.HORIZONTAL?e.clientX:e.clientY)-n;this.resize(s,t,o,void 0,void 0,c,v,r,a),this.distributeEmptySpace(),this.layoutViews()},f=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",f),document.removeEventListener("pointercancel",f),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",w),document.addEventListener("pointerup",f),document.addEventListener("pointercancel",f)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}n||this.relayout([i]),n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=M(i,r.minimumSize,r.maximumSize);const n=W(this.viewItems.length),s=n.filter((e=>this.viewItems[e].priority===U.Low)),o=n.filter((e=>this.viewItems[e].priority===U.High));this.relayout(s,o)}removeView(e,t,i){void 0===i&&(i=!1);const n=this.viewItems.splice(e,1)[0];if(n.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),n=void 0===i?this.getViewSize(e):J.Invisible(i),s=this.removeView(e,void 0,!0);this.addView(s,n,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=M(Math.round(s*e/t),n.minimumSize,n.maximumSize))}}else{const t=W(this.viewItems.length),n=t.filter((e=>this.viewItems[e].priority===U.Low)),s=t.filter((e=>this.viewItems[e].priority===U.High));this.resize(this.viewItems.length-1,e-i,void 0,n,s)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=W(this.viewItems.length-1,-1),s=n.filter((e=>this.viewItems[e].priority===U.Low)),o=n.filter((e=>this.viewItems[e].priority===U.High));for(const r of o)T(n,r);for(const r of s)L(n,r);"number"==typeof e&&L(n,e);for(let r=0;0!==i&&r0&&(this._proportions=this.viewItems.map((e=>e.visible?e.size/this._contentSize:void 0)))}layoutViews(){if(this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter((e=>e.visible)),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let n=0;const s=[],o=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((e,r)=>{n+=this.viewItems[r].size,s.push(n);const a=e.visible?e.size-i:0,h=Math.max(0,o[r]-1),d=0===r||0===h?0:s[r-1]+h/t*i;if(r0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const s=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const o=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let a=0;a0||this.startSnappingEnabled)?this.updateSash(e,B.MINIMUM):l&&t[a]&&(r{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class Z extends w{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:F.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new $(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach((e=>{const t=new w(e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}))),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize})),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire(void 0)})),this.splitview.onDidAddView((()=>{this._onDidChange.fire()})),this.splitview.onDidRemoveView((()=>{this._onDidChange.fire()})))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i,n){void 0===i&&(i=this.splitview.length),void 0===n&&(n=!1);const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t){void 0===t&&(t={skipDispose:!1});const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),y(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,C(this.element,"dv-animated")}),200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach((e=>{e.disposable.dispose(),e.pane.dispose()})),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===F.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===F.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===F.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===F.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===F.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===F.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,n){void 0===n&&(n=0),this.view=e,this.orientation=t,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=n,this._disposable=this.view.onDidChange((e=>{e?this._onDidChange.fire({size:this.orientation===F.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===F.VERTICAL?e.height:e.width}):this._onDidChange.fire({})}))}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class Y extends w{get width(){return this.orientation===F.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===F.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0)))}get maximumSize(){return Math.min(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY)))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===F.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===F.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===F.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===F.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return U.Normal;const e=this.children.map((e=>void 0===e.priority?U.Normal:e.priority));return e.some((e=>e===U.High))?U.High:e.some((e=>e===U.Low))?U.Low:U.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach((t=>{t instanceof Y&&(t.margin=e)}))}constructor(e,t,i,n,s,o,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=l.NONE,this.children=[],this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=s,this._size=n,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=a.map((e=>e.node)),this.splitview=new $(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new $(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=o,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire({})}))),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const n=0===this.splitview.contentSize;(t&&i||!t&&n)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new w(d.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((e,t)=>e instanceof Y?e.onDidVisibilityChange((e=>{let{visible:i}=e;this.setChildVisible(t,i)})):l.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function q(e,t){if(e instanceof X)return e;if(e instanceof Y)return q(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];n.addChild(K(i,i.size,i.orthogonalSize),i.size,0,!0)}return n}return new X(e.view,e.orientation,i)}function Q(e,t,i){if(e instanceof Y){const n=new Y(ie(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(Q(r,i,h),h,0,!0)}return n}return new X(e.view,ie(e.orientation),i)}function ee(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=function(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}(t);return[...ee(t.parentElement.parentElement.parentElement),i]}function te(e,t,i){const n=function(e,t){return t.length%2==0?ie(e):e}(e,t),s=function(e){return"top"===e||"bottom"===e?F.VERTICAL:F.HORIZONTAL}(i);if(n===s){const[e,n]=V(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}const ie=e=>e===F.HORIZONTAL?F.VERTICAL:F.HORIZONTAL;const ne=(e,t)=>{const i=t===F.VERTICAL?e.box.width:e.box.height;return function(e){return!!e.children}(e)?{type:"branch",data:e.children.map((e=>ne(e,ie(t)))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class se{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=Q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof Y&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=ee(e.element),[n,s]=this.getNode(i);if(!(s instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n=0;n--){const s=i.children[n];s instanceof X?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=ee(e.element)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,n=i===F.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,n),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,n]=this.getNode(t);if(!(n instanceof X))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ie(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new X(r,t,n,e.size)}return o}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=K(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new Y(ie(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Q(t,t.orthogonalSize,t.size),J.Distribute,0)}else this._root.addChild(e,J.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const n={height:e.height,width:e.width};if(e instanceof X)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let o=0;o-1;s--){const n=i[s],o=e[s]||0;if(t?o-1>-1:o+1h.getChildSize(t)));if(h.removeChild(l,t).dispose(),a instanceof Y){m.splice(l,1,...a.children.map((e=>e.size)));for(let e=0;e0;)a.removeChild(0)}else{const e=new X(a.view,ie(a.orientation),a.size),t=u?a.orthogonalSize:J.Invisible(a.orthogonalSize);h.addChild(e,t,l)}a.dispose();for(let c=0;c=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,i)}}const oe=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class re extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t){void 0===t&&(t=!1),super(),this._disableResizing=t,this._element=e,this.addDisposables(b(this._element,(e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const ae=R();function he(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class de extends re{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map((e=>e.value))}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=ae.next(),this._groups=new Map,this._onDidRemove=new v,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new v,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new v,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new _,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new _,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new se(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange((e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})})),this.gridview.onDidViewVisibilityChange((()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire())),this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.layout(this.width,this.height,!0)})),l.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),d.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)((()=>{this._bufferOnDidLayoutChange.fire()})),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(ee(e.element))}updateOptions(e){var t,i,n,s;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t,i){void 0===t&&(t=[0]),this.gridview.addView(e,null!=i?i:J.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),n=this.gridview.remove(e,J.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return n}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class le{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class pe{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ue{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPanel(){return this.component.onDidAddGroup}get onDidRemovePanel(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActiveGroupChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get panels(){return this.component.groups}get orientation(){return this.component.orientation}set orientation(e){this.component.updateOptions({orientation:e})}constructor(e){this.component=e}focus(){this.component.focus()}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e,t){this.component.removePanel(e,t)}movePanel(e,t){this.component.movePanel(e,t)}getPanel(e){return this.component.getPanel(e)}fromJSON(e){return this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}get panels(){return this.component.panels}get groups(){return this.component.groups}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e){this.component.removePanel(e)}addGroup(e){return this.component.addGroup(e)}closeAllGroups(){return this.component.closeAllGroups()}removeGroup(e){this.component.removeGroup(e)}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.addFloatingGroup(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}moveToNext(e){this.component.moveToNext(e)}moveToPrevious(e){this.component.moveToPrevious(e)}maximizeGroup(e){this.component.maximizeGroup(e.group)}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.exitMaximizedGroup()}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.addPopoutGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ce extends w{constructor(e,t){super(),this.el=e,this.disabled=t,this.dataDisposable=new f,this.pointerEventsDisposable=new f,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this.addDisposables(this._onDragStart,this.dataDisposable,this.pointerEventsDisposable),this.configure()}setDisabled(e){this.disabled=e}isCancelled(e){return!1}configure(){this.addDisposables(this._onDragStart,g(this.el,"dragstart",(e=>{if(e.defaultPrevented||this.isCancelled(e)||this.disabled)return void e.preventDefault();const t=O();if(this.pointerEventsDisposable.value={dispose:()=>{t.release()}},this.el.classList.add("dv-dragged"),setTimeout((()=>this.el.classList.remove("dv-dragged")),0),this.dataDisposable.value=this.getData(e),this._onDragStart.fire(e),e.dataTransfer){e.dataTransfer.effectAllowed="move";e.dataTransfer.items.length>0||e.dataTransfer.setData("text/plain","")}})),g(this.el,"dragend",(()=>{this.pointerEventsDisposable.dispose(),setTimeout((()=>{this.dataDisposable.dispose()}),0)})))}}class ve extends w{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(g(this.element,"dragenter",(e=>{this.onDragEnter(e)}),!0)),this.addDisposables(g(this.element,"dragover",(e=>{this.onDragOver(e)}),!0)),this.addDisposables(g(this.element,"dragleave",(e=>{this.onDragLeave(e)}))),this.addDisposables(g(this.element,"dragend",(e=>{this.onDragEnd(e)}))),this.addDisposables(g(this.element,"drop",(e=>{this.onDrop(e)})))}}class ge extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}constructor(e){super(),this.options=e}}function _e(e){switch(e){case"above":return"top";case"below":return"bottom";case"left":return"left";case"right":return"right";case"within":return"center";default:throw new Error(`invalid direction '${e}'`)}}function we(e){switch(e){case"top":return"above";case"bottom":return"below";case"left":return"left";case"right":return"right";case"center":return"within";default:throw new Error(`invalid position '${e}'`)}}const fe={value:20,type:"percentage"},De={value:50,type:"percentage"};class be extends w{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new ve(this.element,{onDragEnter:()=>{var e,t,i;null===(i=null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||void 0===i||i.getElements()},onDragOver:e=>{var t,i,n,s,o,r,a;be.ACTUAL_TARGET=this;const h=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);if(0===this._acceptedTargetZonesSet.size){if(h)return;return void this.removeDropTarget()}const d=null!==(o=null===(s=(n=this.options).getOverlayOutline)||void 0===s?void 0:s.call(n))&&void 0!==o?o:this.element,l=d.offsetWidth,p=d.offsetHeight;if(0===l||0===p)return;const u=e.currentTarget.getBoundingClientRect(),m=(null!==(r=e.clientX)&&void 0!==r?r:0)-u.left,c=(null!==(a=e.clientY)&&void 0!==a?a:0)-u.top,v=this.calculateQuadrant(this._acceptedTargetZonesSet,m,c,l,p);if(this.isAlreadyUsed(e)||null===v)return void this.removeDropTarget();if(!this.options.canDisplayOverlay(e,v)){if(h)return;return void this.removeDropTarget()}const g=new ge({nativeEvent:e,position:v});this._onWillShowOverlay.fire(g),g.defaultPrevented?this.removeDropTarget():(this.markAsUsed(e),h||this.targetElement||(this.targetElement=document.createElement("div"),this.targetElement.className="dv-drop-target-dropzone",this.overlayElement=document.createElement("div"),this.overlayElement.className="dv-drop-target-selection",this._state="center",this.targetElement.appendChild(this.overlayElement),d.classList.add("dv-drop-target"),d.append(this.targetElement)),this.toggleClasses(v,l,p),this._state=v)},onDragLeave:()=>{var e,t;(null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||this.removeDropTarget()},onDragEnd:e=>{var t,i;const n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);n&&be.ACTUAL_TARGET===this&&this._state&&(e.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:e})),this.removeDropTarget(),null==n||n.clear()},onDrop:e=>{var t,i,n;e.preventDefault();const s=this._state;this.removeDropTarget(),null===(n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t))||void 0===n||n.clear(),s&&(e.stopPropagation(),this._onDrop.fire({position:s,nativeEvent:e}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(e){e[be.USED_EVENT_ID]=!0}isAlreadyUsed(e){const t=e[be.USED_EVENT_ID];return"boolean"==typeof t&&t}toggleClasses(e,t,i){var n,s,o,r,a,h,d;const l=null===(s=(n=this.options).getOverrideTarget)||void 0===s?void 0:s.call(n);if(!l&&!this.overlayElement)return;const p=t<100,u=i<100,m="left"===e,c="right"===e,v="top"===e,g="bottom"===e,_=!p&&c,w=!p&&m,f=!u&&v,D=!u&&g;let b=1;const C=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.size)&&void 0!==r?r:De;if("percentage"===C.type?b=M(C.value,0,100)/100:((_||w)&&(b=M(0,C.value,t)/t),(f||D)&&(b=M(0,C.value,i)/i)),l){const n=null!==(d=null===(h=(a=this.options).getOverlayOutline)||void 0===h?void 0:h.call(a))&&void 0!==d?d:this.element,s=n.getBoundingClientRect(),o=l.getElements(void 0,n),r=o.root,u=o.overlay,C=r.getBoundingClientRect(),y=s.top-C.top,x=s.left-C.left,z={top:y,left:x,width:t,height:i};if(_?(z.left=x+t*(1-b),z.width=t*b):w?z.width=t*b:f?z.height=i*b:D&&(z.top=y+i*(1-b),z.height=i*b),p&&m&&(z.width=4),p&&c&&(z.left=x+t-4,z.width=4),!function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;return e.style.top!==r||e.style.left!==a||e.style.width!==h||e.style.height!==d}(u,z))return;return function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,d=`${Math.round(o)}px`;e.style.top=r,e.style.left=a,e.style.width=h,e.style.height=d,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(u,z),u.className="dv-drop-target-anchor"+(this.options.className?` ${this.options.className}`:""),S(u,"dv-drop-target-left",m),S(u,"dv-drop-target-right",c),S(u,"dv-drop-target-top",v),S(u,"dv-drop-target-bottom",g),S(u,"dv-drop-target-center","center"===e),void(o.changed&&(S(u,"dv-drop-target-anchor-container-changed",!0),setTimeout((()=>{S(u,"dv-drop-target-anchor-container-changed",!1)}),10)))}if(!this.overlayElement)return;const y={top:"0px",left:"0px",width:"100%",height:"100%"};_?(y.left=100*(1-b)+"%",y.width=100*b+"%"):w?y.width=100*b+"%":f?y.height=100*b+"%":D&&(y.top=100*(1-b)+"%",y.height=100*b+"%"),function(e,t){const{top:i,left:n,width:s,height:o}=t;e.style.top=i,e.style.left=n,e.style.width=s,e.style.height=o,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(this.overlayElement,y),S(this.overlayElement,"dv-drop-target-small-vertical",u),S(this.overlayElement,"dv-drop-target-small-horizontal",p),S(this.overlayElement,"dv-drop-target-left",m),S(this.overlayElement,"dv-drop-target-right",c),S(this.overlayElement,"dv-drop-target-top",v),S(this.overlayElement,"dv-drop-target-bottom",g),S(this.overlayElement,"dv-drop-target-center","center"===e)}calculateQuadrant(e,t,i,n,s){var o,r;const a=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.activationSize)&&void 0!==r?r:fe;return"percentage"===a.type?function(e,t,i,n,s,o){const r=100*t/n,a=100*i/s;if(e.has("left")&&r100-o)return"right";if(e.has("top")&&a100-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value):function(e,t,i,n,s,o){if(e.has("left")&&tn-o)return"right";if(e.has("top")&&is-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value)}removeDropTarget(){var e;this.targetElement&&(this._state=void 0,null===(e=this.targetElement.parentElement)||void 0===e||e.classList.remove("dv-drop-target"),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0)}}be.USED_EVENT_ID="__dockview_droptarget_event_is_used__";const Ce=(()=>{const e={disableAutoResizing:void 0,disableDnd:void 0,className:void 0};return Object.keys(e)})();class ye extends u{constructor(e,t,i,n){super(),this.nativeEvent=e,this.position=t,this.getData=i,this.panel=n}}class Se extends p{constructor(){super()}}class xe extends w{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new f,this._onDidDimensionChange=new v,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new v,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new v,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new v,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new v,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new v,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange((e=>{this._isFocused=e.isFocused})),this.onDidActiveChange((e=>{this._isActive=e.isActive})),this.onDidVisibilityChange((e=>{this._isVisible=e.isVisible})),this.onDidDimensionsChange((e=>{this._width=e.width,this._height=e.height})),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event((t=>{this._parameters=t,e.update({params:t})}))}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}}class ze extends xe{constructor(e,t){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v({replay:!0}),this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Ae extends ze{set pane(e){this._pane=e}constructor(e,t){super(e,t),this._onDidExpansionChange=new v({replay:!0}),this.onDidExpansionChange=this._onDidExpansionChange.event,this._onMouseEnter=new v({}),this.onMouseEnter=this._onMouseEnter.event,this._onMouseLeave=new v({}),this.onMouseLeave=this._onMouseLeave.event,this.addDisposables(this._onDidExpansionChange,this._onMouseEnter,this._onMouseLeave)}setExpanded(e){var t;null===(t=this._pane)||void 0===t||t.setExpanded(e)}get isExpanded(){var e;return!!(null===(e=this._pane)||void 0===e?void 0:e.isExpanded())}}class Ee extends w{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){var e;return null===(e=this._params)||void 0===e?void 0:e.params}constructor(e,t,i){super(),this.id=e,this.component=t,this.api=i,this._height=0,this._width=0,this._element=document.createElement("div"),this._element.tabIndex=-1,this._element.style.outline="none",this._element.style.height="100%",this._element.style.width="100%",this._element.style.overflow="hidden";const n=z(this._element);this.addDisposables(this.api,n.onDidFocus((()=>{this.api._onDidChangeFocus.fire({isFocused:!0})})),n.onDidBlur((()=>{this.api._onDidChangeFocus.fire({isFocused:!1})})),n)}focus(){const e=new Se;this.api._onWillFocus.fire(e),e.defaultPrevented||this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t,i;this._params=Object.assign(Object.assign({},this._params),{params:Object.assign(Object.assign({},null===(t=this._params)||void 0===t?void 0:t.params),e.params)});for(const n of Object.keys(e.params))void 0===e.params[n]&&delete this._params.params[n];null===(i=this.part)||void 0===i||i.update({params:this._params.params})}toJSON(){var e,t;const i=null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{};return{id:this.id,component:this.component,params:Object.keys(i).length>0?i:void 0}}dispose(){var e;this.api.dispose(),null===(e=this.part)||void 0===e||e.dispose(),super.dispose()}}class Pe extends Ee{set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){return this.headerSize+(this.isExpanded()?this._minimumBodySize:0)}get maximumSize(){return this.headerSize+(this.isExpanded()?this._maximumBodySize:0)}get size(){return this._size}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get minimumBodySize(){return this._minimumBodySize}set minimumBodySize(e){this._minimumBodySize="number"==typeof e?e:0}get maximumBodySize(){return this._maximumBodySize}set maximumBodySize(e){this._maximumBodySize="number"==typeof e?e:Number.POSITIVE_INFINITY}get headerVisible(){return this._headerVisible}set headerVisible(e){this._headerVisible=e,this.header.style.display=e?"":"none"}constructor(e){super(e.id,e.component,new Ae(e.id,e.component)),this._onDidChangeExpansionState=new v({replay:!0}),this.onDidChangeExpansionState=this._onDidChangeExpansionState.event,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=0,this._size=0,this._isExpanded=!1,this.api.pane=this,this.api.initialize(this),this.headerSize=e.headerSize,this.headerComponent=e.headerComponent,this._minimumBodySize=e.minimumBodySize,this._maximumBodySize=e.maximumBodySize,this._isExpanded=e.isExpanded,this._headerVisible=e.isHeaderVisible,this._onDidChangeExpansionState.fire(this.isExpanded()),this._orientation=e.orientation,this.element.classList.add("dv-pane"),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})),g(this.element,"mouseenter",(e=>{this.api._onMouseEnter.fire(e)})),g(this.element,"mouseleave",(e=>{this.api._onMouseLeave.fire(e)}))),this.addDisposables(this._onDidChangeExpansionState,this.onDidChangeExpansionState((e=>{this.api._onDidExpansionChange.fire({isExpanded:e})})),this.api.onDidFocusChange((e=>{this.header&&(e.isFocused?y(this.header,"focused"):C(this.header,"focused"))}))),this.renderOnce()}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}isExpanded(){return this._isExpanded}setExpanded(e){this._isExpanded!==e&&(this._isExpanded=e,e?(this.animationTimer&&clearTimeout(this.animationTimer),this.body&&this.element.appendChild(this.body)):this.animationTimer=setTimeout((()=>{var e;null===(e=this.body)||void 0===e||e.remove()}),200),this._onDidChange.fire(e?{size:this.width}:{}),this._onDidChangeExpansionState.fire(e))}layout(e,t){this._size=e,this._orthogonalSize=t;const[i,n]=this.orientation===F.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){var t,i;super.init(e),"number"==typeof e.minimumBodySize&&(this.minimumBodySize=e.minimumBodySize),"number"==typeof e.maximumBodySize&&(this.maximumBodySize=e.maximumBodySize),this.bodyPart=this.getBodyComponent(),this.headerPart=this.getHeaderComponent(),this.bodyPart.init(Object.assign(Object.assign({},e),{api:this.api})),this.headerPart.init(Object.assign(Object.assign({},e),{api:this.api})),null===(t=this.body)||void 0===t||t.append(this.bodyPart.element),null===(i=this.header)||void 0===i||i.append(this.headerPart.element),"boolean"==typeof e.isExpanded&&this.setExpanded(e.isExpanded)}toJSON(){const e=this._params;return Object.assign(Object.assign({},super.toJSON()),{headerComponent:this.headerComponent,title:e.title})}renderOnce(){this.header=document.createElement("div"),this.header.tabIndex=0,this.header.className="dv-pane-header",this.header.style.height=`${this.headerSize}px`,this.header.style.lineHeight=`${this.headerSize}px`,this.header.style.minHeight=`${this.headerSize}px`,this.header.style.maxHeight=`${this.headerSize}px`,this.element.appendChild(this.header),this.body=document.createElement("div"),this.body.className="dv-pane-body",this.element.appendChild(this.body)}getComponent(){return{update:e=>{var t,i;null===(t=this.bodyPart)||void 0===t||t.update({params:e}),null===(i=this.headerPart)||void 0===i||i.update({params:e})},dispose:()=>{var e,t;null===(e=this.bodyPart)||void 0===e||e.dispose(),null===(t=this.headerPart)||void 0===t||t.dispose()}}}}class Ge extends Pe{constructor(e){super({id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,isHeaderVisible:!0,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.accessor=e.accessor,this.addDisposables(this._onDidDrop,this._onUnhandledDragOverEvent),e.disableDnd||this.initDragFeatures()}initDragFeatures(){if(!this.header)return;const e=this.id,t=this.accessor.id;this.header.draggable=!0,this.handler=new class extends ce{getData(){return r.getInstance().setData([new o(t,e)],o.prototype),{dispose:()=>{r.getInstance().clearData(o.prototype)}}}}(this.header),this.target=new be(this.element,{acceptedTargetZones:["top","bottom"],overlayModel:{activationSize:{type:"percentage",value:50}},canDisplayOverlay:(e,t)=>{const i=h();if(i&&i.paneId!==this.id&&i.viewId===this.accessor.id)return!0;const n=new ye(e,t,h,this);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}}),this.addDisposables(this._onDidDrop,this.handler,this.target,this.target.onDrop((e=>{this.onDrop(e)})))}onDrop(e){const t=h();if(!t||t.viewId!==this.accessor.id)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,api:new pe(this.accessor),getData:h}));const i=this._params.containerApi,n=t.paneId,s=i.getPanel(n);if(!s)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,getData:h,api:new pe(this.accessor)}));const o=i.panels,r=o.indexOf(s);let a=i.panels.indexOf(this);"left"!==e.position&&"top"!==e.position||(a=Math.max(0,a-1)),"right"!==e.position&&"bottom"!==e.position||(r>a&&a++,a=Math.min(o.length-1,a)),i.movePanel(r,a)}}class Oe extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this.disposable=new f,this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-content-container",this._element.tabIndex=-1,this.addDisposables(this._onDidFocus,this._onDidBlur);const i=t.dropTargetContainer;this.dropTarget=new be(this.element,{getOverlayOutline:()=>{var t;return"group"===(null===(t=e.options.theme)||void 0===t?void 0:t.dndPanelOverlay)?this.element.parentElement:null},className:"dv-drop-target-content",acceptedTargetZones:["top","bottom","left","right","center"],canDisplayOverlay:(e,t)=>{if("no-drop-target"===this.group.locked||this.group.locked&&"center"===t)return!1;const i=a();return!(!i&&e.shiftKey&&"floating"!==this.group.location.type)&&(!(!i||i.viewId!==this.accessor.id)||this.group.canDisplayOverlay(e,t,"content"))},getOverrideTarget:i?()=>i.model:void 0}),this.addDisposables(this.dropTarget)}show(){this.element.style.display=""}hide(){this.element.style.display="none"}renderPanel(e,t){void 0===t&&(t={asActive:!0});const i=t.asActive||this.panel&&this.group.isPanelActive(this.panel);let n;switch(this.panel&&this.panel.view.content.element.parentElement===this._element&&this._element.removeChild(this.panel.view.content.element),this.panel=e,e.api.renderer){case"onlyWhenVisible":this.group.renderContainer.detatch(e),this.panel&&i&&this._element.appendChild(this.panel.view.content.element),n=this._element;break;case"always":e.view.content.element.parentElement===this._element&&this._element.removeChild(e.view.content.element),n=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw new Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(i){const e=z(n),t=new w;t.addDisposables(e,e.onDidFocus((()=>this._onDidFocus.fire())),e.onDidBlur((()=>this._onDidBlur.fire()))),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){var e;this.panel&&"onlyWhenVisible"===this.panel.api.renderer&&(null===(e=this.panel.view.content.element.parentElement)||void 0===e||e.removeChild(this.panel.view.content.element)),this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}}function Ie(e,t,i){var n,s;y(t,"dv-dragged"),t.style.top="-9999px",document.body.appendChild(t),e.setDragImage(t,null!==(n=null==i?void 0:i.x)&&void 0!==n?n:0,null!==(s=null==i?void 0:i.y)&&void 0!==s?s:0),setTimeout((()=>{C(t,"dv-dragged"),t.remove()}),0)}class Ve extends ce{constructor(e,t,i,n,s){super(e,s),this.accessor=t,this.group=i,this.panel=n,this.panelTransfer=r.getInstance()}getData(e){return this.panelTransfer.setData([new s(this.accessor.id,this.group.id,this.panel.id)],s.prototype),{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Ne extends w{get element(){return this._element}constructor(e,t,i){super(),this.panel=e,this.accessor=t,this.group=i,this.content=void 0,this._onPointDown=new v,this.onPointerDown=this._onPointDown.event,this._onDropped=new v,this.onDrop=this._onDropped.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-tab",this._element.tabIndex=0,this._element.draggable=!this.accessor.options.disableDnd,S(this.element,"dv-inactive-tab",!0),this.dragHandler=new Ve(this._element,this.accessor,this.group,this.panel,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["left","right"],overlayModel:{activationSize:{value:50,type:"percentage"}},canDisplayOverlay:(e,t)=>{if(this.group.locked)return!1;const i=a();return!(!i||this.accessor.id!==i.viewId)||this.group.model.canDisplayOverlay(e,t,"tab")},getOverrideTarget:()=>{var e;return null===(e=i.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this._onPointDown,this._onDropped,this._onDragStart,this.dragHandler.onDragStart((e=>{if(e.dataTransfer){const t=getComputedStyle(this.element),i=this.element.cloneNode(!0);Array.from(t).forEach((e=>i.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e)))),i.style.position="absolute",Ie(e.dataTransfer,i,{y:-10,x:30})}this._onDragStart.fire(e)})),this.dragHandler,g(this._element,"pointerdown",(e=>{this._onPointDown.fire(e)})),this.dropTarget.onDrop((e=>{this._onDropped.fire(e)})),this.dropTarget)}setActive(e){S(this.element,"dv-active-tab",e),S(this.element,"dv-inactive-tab",!e)}setContent(e){this.content&&this._element.removeChild(this.content.element),this.content=e,this._element.appendChild(this.content.element)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,this.dragHandler.setDisabled(!!this.accessor.options.disableDnd)}dispose(){super.dispose()}}class Te{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}}class Le extends ce{constructor(e,t,i,n){super(e,n),this.accessor=t,this.group=i,this.panelTransfer=r.getInstance(),this.addDisposables(g(e,"pointerdown",(e=>{e.shiftKey&&(e[E]=!0)}),!0))}isCancelled(e){return"floating"===this.group.api.location.type&&!e.shiftKey}getData(e){const t=e.dataTransfer;this.panelTransfer.setData([new s(this.accessor.id,this.group.id,null)],s.prototype);const i=window.getComputedStyle(this.el),n=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-background-color"),o=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-color");if(t){const e=document.createElement("div");e.style.backgroundColor=n,e.style.color=o,e.style.padding="2px 8px",e.style.height="24px",e.style.fontSize="11px",e.style.lineHeight="20px",e.style.borderRadius="12px",e.style.position="absolute",e.style.pointerEvents="none",e.style.top="-9999px",e.textContent=`Multiple Panels (${this.group.size})`,Ie(t,e,{y:-10,x:30})}return{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class ke extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-void-container",this._element.draggable=!this.accessor.options.disableDnd,S(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.addDisposables(this._onDrop,this._onDragStart,g(this._element,"pointerdown",(()=>{this.accessor.doSetGroupActive(this.group)}))),this.handler=new Le(this._element,e,t,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["center"],canDisplayOverlay:(e,i)=>{const n=a();return!(!n||this.accessor.id!==n.viewId)||t.model.canDisplayOverlay(e,i,"header_space")},getOverrideTarget:()=>{var e;return null===(e=t.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this.handler,this.handler.onDragStart((e=>{this._onDragStart.fire(e)})),this.dropTarget.onDrop((e=>{this._onDrop.fire(e)})),this.dropTarget)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,S(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.handler.setDisabled(!!this.accessor.options.disableDnd)}}class Me extends w{get element(){return this._element}constructor(e){super(),this.scrollableElement=e,this._scrollLeft=0,this._element=document.createElement("div"),this._element.className="dv-scrollable",this._horizontalScrollbar=document.createElement("div"),this._horizontalScrollbar.className="dv-scrollbar-horizontal",this.element.appendChild(e),this.element.appendChild(this._horizontalScrollbar),this.addDisposables(g(this.element,"wheel",(e=>{this._scrollLeft+=e.deltaY*Me.MouseWheelSpeed,this.calculateScrollbarStyles()})),g(this._horizontalScrollbar,"pointerdown",(e=>{e.preventDefault(),S(this.element,"dv-scrollable-scrolling",!0);const t=e.clientX,i=this._scrollLeft,n=e=>{const n=e.clientX-t,{clientWidth:s}=this.element,{scrollWidth:o}=this.scrollableElement,r=s/o;this._scrollLeft=i+n/r,this.calculateScrollbarStyles()},s=()=>{S(this.element,"dv-scrollable-scrolling",!1),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",s),document.removeEventListener("pointercancel",s)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",s),document.addEventListener("pointercancel",s)})),g(this.element,"scroll",(()=>{this.calculateScrollbarStyles()})),g(this.scrollableElement,"scroll",(()=>{this._scrollLeft=this.scrollableElement.scrollLeft,this.calculateScrollbarStyles()})),b(this.element,(()=>{S(this.element,"dv-scrollable-resizing",!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout((()=>{clearTimeout(this._animationTimer),S(this.element,"dv-scrollable-resizing",!1)}),500),this.calculateScrollbarStyles()})))}calculateScrollbarStyles(){const{clientWidth:e}=this.element,{scrollWidth:t}=this.scrollableElement;if(t>e){const i=e*(e/t);this._horizontalScrollbar.style.width=`${i}px`,this._scrollLeft=M(this._scrollLeft,0,this.scrollableElement.scrollWidth-e),this.scrollableElement.scrollLeft=this._scrollLeft;const n=this._scrollLeft/(t-e);this._horizontalScrollbar.style.left=(e-i)*n+"px"}else this._horizontalScrollbar.style.width="0px",this._horizontalScrollbar.style.left="0px",this._scrollLeft=0}}Me.MouseWheelSpeed=1;class Re extends w{get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e&&(this._showTabsOverflowControl=e,e)){const e=new D(this._tabsList);this._observerDisposable.value=new w(e,e.onDidChange((e=>{const t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t})})),g(this._tabsList,"scroll",(()=>{this.toggleDropdown({reset:!1})})))}}get element(){return this._element}get panels(){return this._tabs.map((e=>e.value.panel.id))}get size(){return this._tabs.length}get tabs(){return this._tabs.map((e=>e.value))}constructor(e,t,i){if(super(),this.group=e,this.accessor=t,this._observerDisposable=new f,this._tabs=[],this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new v,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement("div"),this._tabsList.className="dv-tabs-container dv-horizontal",this.showTabsOverflowControl=i.showTabsOverflowControl,"native"===t.options.scrollbars)this._element=this._tabsList;else{const e=new Me(this._tabsList);this._element=e.element,this.addDisposables(e)}this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,g(this.element,"pointerdown",(e=>{if(e.defaultPrevented)return;0===e.button&&this.accessor.doSetGroupActive(this.group)})),l.from((()=>{for(const{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[]})))}indexOf(e){return this._tabs.findIndex((t=>t.value.panel.id===e))}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}setActivePanel(e){let t=0;for(const i of this._tabs){const n=e.id===i.value.panel.id;if(i.value.setActive(n),n){const e=i.value.element,n=e.parentElement;(tn.scrollLeft+n.clientWidth)&&(n.scrollLeft=t)}t+=i.value.element.clientWidth}}openPanel(e,t){if(void 0===t&&(t=this._tabs.length),this._tabs.find((t=>t.value.panel.id===e.id)))return;const i=new Ne(e,this.accessor,this.group);i.setContent(e.view.tab);const n=new w(i.onDragStart((t=>{this._onTabDragStart.fire({nativeEvent:t,panel:e})})),i.onPointerDown((t=>{if(t.defaultPrevented)return;const n=!this.accessor.options.disableFloatingGroups,s="floating"===this.group.api.location.type&&1===this.size;if(n&&!s&&t.shiftKey){t.preventDefault();const e=this.accessor.getGroupPanel(i.panel.id),{top:n,left:s}=i.element.getBoundingClientRect(),{top:o,left:r}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:s-r,y:n-o,inDragMode:!0})}else if(0===t.button)this.group.activePanel!==e&&this.group.model.openPanel(e)})),i.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this._tabs.findIndex((e=>e.value===i))})})),i.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"tab",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))}))),s={value:i,disposable:n};this.addTab(s,t)}delete(e){const t=this.indexOf(e),i=this._tabs.splice(t,1)[0],{value:n,disposable:s}=i;s.dispose(),n.dispose(),n.element.remove()}addTab(e,t){if(void 0===t&&(t=this._tabs.length),t<0||t>this._tabs.length)throw new Error("invalid location");this._tabsList.insertBefore(e.value.element,this._tabsList.children[t]),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){const t=e.reset?[]:this._tabs.filter((e=>!function(e,t){const i=G(e),n=G(t);return!(i.leftn.left+n.width)}(e.value.element,this._tabsList))).map((e=>e.value.panel.id));this._onOverflowTabsChange.fire({tabs:t,reset:e.reset})}updateDragAndDropState(){for(const e of this._tabs)e.value.updateDragAndDropState()}}const We=e=>{const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"height",e.height),t.setAttributeNS(null,"width",e.width),t.setAttributeNS(null,"viewBox",e.viewbox),t.setAttributeNS(null,"aria-hidden","false"),t.setAttributeNS(null,"focusable","false"),t.classList.add("dv-svg");const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d",e.path),t.appendChild(i),t},He=()=>We({width:"11",height:"11",viewbox:"0 0 15 25",path:"M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z"});class Fe extends w{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?"none":""}get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this.dropdownPart=null,this._overflowTabs=[],this._dropdownDisposable=new f,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement("div"),this._element.className="dv-tabs-and-actions-container",S(this._element,"dv-full-width-single-tab","fullwidth"===this.accessor.options.singleTabMode),this.rightActionsContainer=document.createElement("div"),this.rightActionsContainer.className="dv-right-actions-container",this.leftActionsContainer=document.createElement("div"),this.leftActionsContainer.className="dv-left-actions-container",this.preActionsContainer=document.createElement("div"),this.preActionsContainer.className="dv-pre-actions-container",this.tabs=new Re(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new ke(this.accessor,this.group),this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.addDisposables(this.tabs.onDrop((e=>this._onDrop.fire(e))),this.tabs.onWillShowOverlay((e=>this._onWillShowOverlay.fire(e))),e.onDidOptionsChange((()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList})),this.tabs.onOverflowTabsChange((e=>{this.toggleDropdown(e)})),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart((e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})})),this.voidContainer.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})})),this.voidContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"header_space",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))})),g(this.voidContainer.element,"pointerdown",(e=>{if(e.defaultPrevented)return;if(!this.accessor.options.disableFloatingGroups&&e.shiftKey&&"floating"!==this.group.api.location.type){e.preventDefault();const{top:t,left:i}=this.element.getBoundingClientRect(),{top:n,left:s}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:i-s+20,y:t-n+20,inDragMode:!0})}})))}show(){this.hidden||(this.element.style.display="")}hide(){this._element.style.display="none"}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&(this.rightActions.remove(),this.rightActions=void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&(this.leftActions.remove(),this.leftActions=void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&(this.preActions.remove(),this.preActions=void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}openPanel(e,t){void 0===t&&(t=this.tabs.size),this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}updateClassnames(){S(this._element,"dv-single-tab",1===this.size)}toggleDropdown(e){const t=e.reset?[]:e.tabs;if(this._overflowTabs=t,this._overflowTabs.length>0&&this.dropdownPart)return void this.dropdownPart.update({tabs:t.length});if(0===this._overflowTabs.length)return void this._dropdownDisposable.dispose();const i=document.createElement("div");i.className="dv-tabs-overflow-dropdown-root";const n=function(){const e=document.createElement("div");e.className="dv-tabs-overflow-dropdown-default";const t=document.createElement("span");t.textContent="";const i=He();return e.appendChild(i),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}();n.update({tabs:t.length}),this.dropdownPart=n,i.appendChild(n.element),this.rightActionsContainer.prepend(i),this._dropdownDisposable.value=new w(l.from((()=>{var e,t;i.remove(),null===(t=null===(e=this.dropdownPart)||void 0===e?void 0:e.dispose)||void 0===t||t.call(e),this.dropdownPart=null})),g(i,"pointerdown",(e=>{e.preventDefault()}),{capture:!0}),g(i,"click",(e=>{const t=document.createElement("div");t.style.overflow="auto",t.className="dv-tabs-overflow-container";for(const i of this.tabs.tabs.filter((e=>this._overflowTabs.includes(e.panel.id)))){const e=this.group.panels.find((e=>e===i.panel)),n=e.view.createTabRenderer("headerOverflow").element,s=document.createElement("div");S(s,"dv-tab",!0),S(s,"dv-active-tab",e.api.isActive),S(s,"dv-inactive-tab",!e.api.isActive),s.addEventListener("click",(e=>{this.accessor.popupService.close(),e.defaultPrevented||(i.element.scrollIntoView(),i.panel.api.setActive())})),s.appendChild(n),t.appendChild(s)}const n=function(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}(i);this.accessor.popupService.openPopover(t,{x:e.clientX,y:e.clientY,zIndex:(null==n?void 0:n.style.zIndex)?`calc(${n.style.zIndex} * 2)`:void 0})})))}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}}class Be extends u{constructor(e,t,i,n,s){super(),this.nativeEvent=e,this.target=t,this.position=i,this.getData=n,this.group=s}}const Ue=(()=>{const e={disableAutoResizing:void 0,hideBorders:void 0,singleTabMode:void 0,disableFloatingGroups:void 0,floatingGroupBounds:void 0,popoutUrl:void 0,defaultRenderer:void 0,debug:void 0,rootOverlayModel:void 0,locked:void 0,disableDnd:void 0,className:void 0,noPanelsOverlay:void 0,dndEdges:void 0,theme:void 0,disableTabsOverflowList:void 0,scrollbars:void 0};return Object.keys(e)})();class Je extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}}class $e extends Je{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}}class je extends w{get element(){throw new Error("dockview: not supported")}get activePanel(){return this._activePanel}get locked(){return this._locked}set locked(e){this._locked=e,S(this.container,"dv-locked-groupview","no-drop-target"===e||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return 0===this._panels.length}get hasWatermark(){return!(!this.watermark||!this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get isContentFocused(){return!!document.activeElement&&x(document.activeElement,this.contentContainer.element)}get location(){return this._location}set location(e){switch(this._location=e,S(this.container,"dv-groupview-floating",!1),S(this.container,"dv-groupview-popout",!1),e.type){case"grid":this.contentContainer.dropTarget.setTargetZones(["top","bottom","left","right","center"]);break;case"floating":this.contentContainer.dropTarget.setTargetZones(["center"]),this.contentContainer.dropTarget.setTargetZones(e?["center"]:["top","bottom","left","right","center"]),S(this.container,"dv-groupview-floating",!0);break;case"popout":this.contentContainer.dropTarget.setTargetZones(["center"]),S(this.container,"dv-groupview-popout",!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,i,n,s){var o;super(),this.container=e,this.accessor=t,this.id=i,this.options=n,this.groupPanel=s,this._isGroupActive=!1,this._locked=!1,this._location={type:"grid"},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._onMove=new v,this.onMove=this._onMove.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new v,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new v,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,S(this.container,"dv-groupview",!0),this._api=new me(this.accessor),this.tabsContainer=new Fe(this.accessor,this.groupPanel),this.contentContainer=new Oe(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!n.hideHeader,this.locked=null!==(o=n.locked)&&void 0!==o&&o,this.addDisposables(this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart((e=>{this._onTabDragStart.fire(e)})),this.tabsContainer.onGroupDragStart((e=>{this._onGroupDragStart.fire(e)})),this.tabsContainer.onDrop((e=>{this.handleDropEvent("header",e.event,"center",e.index)})),this.contentContainer.onDidFocus((()=>{this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.onDidBlur((()=>{})),this.contentContainer.dropTarget.onDrop((e=>{this.handleDropEvent("content",e.nativeEvent,e.position)})),this.tabsContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(e)})),this.contentContainer.dropTarget.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Te(e,{kind:"content",panel:this.activePanel,api:this._api,group:this.groupPanel,getData:a}))})),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOverEvent,this._onDidPanelTitleChange,this._onDidPanelParametersChange)}focusContent(){this.contentContainer.element.focus()}set renderContainer(e){this.panels.forEach((e=>{this.renderContainer.detatch(e)})),this._overwriteRenderContainer=e,this.panels.forEach((e=>{this.rerender(e)}))}get renderContainer(){var e;return null!==(e=this._overwriteRenderContainer)&&void 0!==e?e:this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){var e;return null!==(e=this._overwriteDropTargetContainer)&&void 0!==e?e:this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach((e=>{this.doAddPanel(e)})),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.accessor.options.createRightHeaderActionComponent&&(this._rightHeaderActions=this.accessor.options.createRightHeaderActionComponent(this.groupPanel),this.addDisposables(this._rightHeaderActions),this._rightHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element)),this.accessor.options.createLeftHeaderActionComponent&&(this._leftHeaderActions=this.accessor.options.createLeftHeaderActionComponent(this.groupPanel),this.addDisposables(this._leftHeaderActions),this._leftHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element)),this.accessor.options.createPrefixHeaderActionComponent&&(this._prefixHeaderActions=this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel),this.addDisposables(this._prefixHeaderActions),this._prefixHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element))}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){var e;const t={views:this.tabsContainer.panels,activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,id:this.id};return!1!==this.locked&&(t.locked=this.locked),this.header.hidden&&(t.hideHeader=!0),t}moveToNext(e){e||(e={}),e.panel||(e.panel=this.activePanel);const t=e.panel?this.panels.indexOf(e.panel):-1;let i;if(t0)i=t-1;else{if(e.suppressRoll)return;i=this.panels.length-1}this.openPanel(this.panels[i])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}openPanel(e,t){void 0===t&&(t={}),("number"!=typeof t.index||t.index>this.panels.length)&&(t.index=this.panels.length);const i=!!t.skipSetActive;e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:i}),this._activePanel!==e?(i||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()):this.contentContainer.renderPanel(e,{asActive:!0})}removePanel(e,t){void 0===t&&(t={skipSetActive:!1});const i="string"==typeof e?e:e.id,n=this._panels.find((e=>e.id===i));if(!n)throw new Error("invalid operation");return this._removePanel(n,t)}closeAllPanels(){if(this.panels.length>0){const e=[...this.panels];for(const t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){const t=1===this.panels.length&&1===this.accessor.groups.length;this.accessor.removePanel(e,t&&"emptyGroup"===this.accessor.options.noPanelsOverlay?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t){void 0===t&&(t=!1),(t||this.isActive!==e)&&(this._isGroupActive=e,S(this.container,"dv-active-group",e),S(this.container,"dv-inactive-group",!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0&&this.doSetActivePanel(this.panels[0]),this.updateContainer())}layout(e,t){var i;this._width=e,this._height=t,this.contentContainer.layout(this._width,this._height),(null===(i=this._activePanel)||void 0===i?void 0:i.layout)&&this._activePanel.layout(this._width,this._height)}_removePanel(e,t){const i=this._activePanel===e;if(this.doRemovePanel(e),i&&this.panels.length>0){const e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t.skipSetActive,skipSetGroupActive:t.skipSetActiveGroup})}return this._activePanel&&0===this.panels.length&&this.doSetActivePanel(void 0),t.skipSetActive||this.updateContainer(),e}doRemovePanel(e){const t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){const t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}const i=this._panelDisposables.get(e.id);i&&(i.dispose(),this._panelDisposables.delete(e.id)),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t,i){void 0===t&&(t=this.panels.length),void 0===i&&(i={skipSetActive:!1});const n=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),i.skipSetActive||this.contentContainer.openPanel(e),n||(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new w(e.api.onDidTitleChange((e=>this._onDidPanelTitleChange.fire(e))),e.api.onDidParametersChange((e=>this._onDidPanelParametersChange.fire(e))))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){this._activePanel!==e&&(this._activePanel=e,e&&(this.tabsContainer.setActivePanel(e),e.layout(this._width,this._height),this.updateMru(e),this._onDidActivePanelChange.fire({panel:e})))}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){var e,t;if(this.panels.forEach((e=>e.runEvents())),this.isEmpty&&!this.watermark){const e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,g(this.watermark.element,"pointerdown",(()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.element.appendChild(this.watermark.element)}!this.isEmpty&&this.watermark&&(this.watermark.element.remove(),null===(t=(e=this.watermark).dispose)||void 0===t||t.call(e),this.watermark=void 0)}canDisplayOverlay(e,t,i){const n=new Be(e,i,t,a,this.accessor.getPanel(this.id));return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}handleDropEvent(e,t,i,n){if("no-drop-target"===this.locked)return;const s="number"==typeof n?this.panels[n]:void 0,o=new $e({nativeEvent:t,position:i,panel:s,getData:()=>a(),kind:function(){switch(e){case"header":return"number"==typeof n?"tab":"header_space";case"content":return"content"}}(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(o),o.defaultPrevented)return;const r=a();if(r&&r.viewId===this.accessor.id){if("content"===e&&r.groupId===this.id){if("center"===i)return;if(null===r.panelId)return}if("header"===e&&r.groupId===this.id&&null===r.panelId)return;if(null===r.panelId){const{groupId:e}=r;return void this._onMove.fire({target:i,groupId:e,index:n})}if(-1!==this.tabsContainer.indexOf(r.panelId)&&1===this.tabsContainer.size)return;const{groupId:t,panelId:s}=r;if(this.id===t&&!i){if(this.tabsContainer.indexOf(s)===n)return}this._onMove.fire({target:i,groupId:r.groupId,itemId:r.panelId,index:n})}else this._onDidDrop.fire(new Je({nativeEvent:t,position:i,panel:s,getData:()=>a(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,i;super.dispose(),null===(e=this.watermark)||void 0===e||e.element.remove(),null===(i=null===(t=this.watermark)||void 0===t?void 0:t.dispose)||void 0===i||i.call(t),this.watermark=void 0;for(const n of this.panels)n.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}}class Ze extends xe{constructor(e,t,i){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),i&&this.initialize(i)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Xe extends Ee{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){const e="function"==typeof this._minimumWidth?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){const e="function"==typeof this._maximumWidth?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){const e="function"==typeof this._minimumHeight?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){const e="function"==typeof this._maximumHeight?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,i,n){super(e,t,null!=n?n:new Ze(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=Number.MAX_SAFE_INTEGER,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=Number.MAX_SAFE_INTEGER,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=Number.MAX_SAFE_INTEGER,this._maximumHeight=Number.MAX_SAFE_INTEGER,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,"number"==typeof(null==i?void 0:i.minimumWidth)&&(this._minimumWidth=i.minimumWidth),"number"==typeof(null==i?void 0:i.maximumWidth)&&(this._maximumWidth=i.maximumWidth),"number"==typeof(null==i?void 0:i.minimumHeight)&&(this._minimumHeight=i.minimumHeight),"number"==typeof(null==i?void 0:i.maximumHeight)&&(this._maximumHeight=i.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.doSetGroupActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumWidth&&"function"!=typeof e.minimumWidth||(this._minimumWidth=e.minimumWidth),"number"!=typeof e.minimumHeight&&"function"!=typeof e.minimumHeight||(this._minimumHeight=e.minimumHeight),"number"!=typeof e.maximumWidth&&"function"!=typeof e.maximumWidth||(this._maximumWidth=e.maximumWidth),"number"!=typeof e.maximumHeight&&"function"!=typeof e.maximumHeight||(this._maximumHeight=e.maximumHeight)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({height:e.height,width:e.width})})),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),"boolean"==typeof e.isVisible&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){const e=super.toJSON(),t=e=>e===Number.MAX_SAFE_INTEGER?void 0:e,i=e=>e<=0?void 0:e;return Object.assign(Object.assign({},e),{minimumHeight:i(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:i(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}}const Ye="dockview: DockviewGroupPanelApiImpl not initialized";class qe extends Ze{get location(){if(!this._group)throw new Error(Ye);return this._group.model.location}constructor(e,t){super(e,"__dockviewgroup__"),this.accessor=t,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return"popout"===this.location.type?this.location.getWindow():window}moveTo(e){var t,i,n,s;if(!this._group)throw new Error(Ye);const o=null!==(t=e.group)&&void 0!==t?t:this.accessor.addGroup({direction:we(null!==(i=e.position)&&void 0!==i?i:"right"),skipSetActive:null!==(n=e.skipSetActive)&&void 0!==n&&n});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:o,position:e.group&&null!==(s=e.position)&&void 0!==s?s:"center",index:e.index},skipSetActive:e.skipSetActive})}maximize(){if(!this._group)throw new Error(Ye);"grid"===this.location.type&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw new Error(Ye);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw new Error(Ye);this.isMaximized()&&this.accessor.exitMaximizedGroup()}initialize(e){this._group=e}}class Ke extends Xe{get minimumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumWidth;return"number"==typeof t?t:super.__minimumWidth()}get minimumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumHeight;return"number"==typeof t?t:super.__minimumHeight()}get maximumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumWidth;return"number"==typeof t?t:super.__maximumWidth()}get maximumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumHeight;return"number"==typeof t?t:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,i){var n,s,o,r,a,h;super(t,"groupview_default",{minimumHeight:null!==(s=null===(n=i.constraints)||void 0===n?void 0:n.minimumHeight)&&void 0!==s?s:100,minimumWidth:null!==(r=null===(o=i.constraints)||void 0===o?void 0:o.maximumHeight)&&void 0!==r?r:100,maximumHeight:null===(a=i.constraints)||void 0===a?void 0:a.maximumHeight,maximumWidth:null===(h=i.constraints)||void 0===h?void 0:h.maximumWidth},new qe(t,e)),this.api.initialize(this),this._model=new je(this.element,e,t,i,this),this.addDisposables(this.model.onDidActivePanelChange((e=>{this.api._onDidActivePanelChange.fire(e)})))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}getComponent(){return this._model}toJSON(){return this.model.toJSON()}}const Qe={name:"dark",className:"dockview-theme-dark"},et={name:"light",className:"dockview-theme-light"},tt={name:"visualStudio",className:"dockview-theme-vs"},it={name:"abyss",className:"dockview-theme-abyss"},nt={name:"dracula",className:"dockview-theme-dracula"},st={name:"replit",className:"dockview-theme-replit",gap:10},ot={name:"abyssSpaced",className:"dockview-theme-abyss-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"},rt={name:"lightSpaced",className:"dockview-theme-light-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"};class at extends Ze{get location(){return this.group.api.location}get title(){return this.panel.title}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){const t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this._onDidLocationChange.fire({location:this.group.api.location}))}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,i,n,s){super(e.id,n),this.panel=e,this.accessor=i,this._onDidTitleChange=new v,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new v,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new v,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new f,this._tabComponent=s,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}moveTo(e){var t,i;this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:null!==(t=e.group)&&void 0!==t?t:this._group,position:e.group&&null!==(i=e.position)&&void 0!==i?i:"center",index:e.index},skipSetActive:e.skipSetActive})}setTitle(e){this.panel.setTitle(e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}setupGroupEventListeners(e){var t;let i=null!==(t=null==e?void 0:e.isActive)&&void 0!==t&&t;this.groupEventsDisposable.value=new w(this.group.api.onDidVisibilityChange((e=>{const t=!e.isVisible&&this.isVisible,i=e.isVisible&&!this.isVisible,n=this.group.model.isPanelActive(this.panel);(t||i&&n)&&this._onDidVisibilityChange.fire(e)})),this.group.api.onDidLocationChange((e=>{this.group===this.panel.group&&this._onDidLocationChange.fire(e)})),this.group.api.onDidActiveChange((()=>{this.group===this.panel.group&&i!==this.isGroupActive&&(i=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))})))}}class ht extends w{get params(){return this._params}get title(){return this._title}get group(){return this._group}get renderer(){var e;return null!==(e=this._renderer)&&void 0!==e?e:this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,i,n,s,o,r,a){super(),this.id=e,this.accessor=n,this.containerApi=s,this.view=r,this._renderer=a.renderer,this._group=o,this._minimumWidth=a.minimumWidth,this._minimumHeight=a.minimumHeight,this._maximumWidth=a.maximumWidth,this._maximumHeight=a.maximumHeight,this.api=new at(this,this._group,n,t,i),this.addDisposables(this.api.onActiveChange((()=>{n.setActivePanel(this)})),this.api.onDidSizeChange((e=>{this.group.api.setSize(e)})),this.api.onDidRendererChange((()=>{this.group.model.rerender(this)})))}init(e){this._params=e.params,this.view.init(Object.assign(Object.assign({},e),{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){const e=new Se;this.api._onWillFocus.fire(e),e.defaultPrevented||this.api.isActive||this.api.setActive()}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth}}setTitle(e){e!==this.title&&(this._title=e,this.api._onDidTitleChange.fire({title:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){var t;this._params=Object.assign(Object.assign({},null!==(t=this._params)&&void 0!==t?t:{}),e.params);for(const i of Object.keys(e.params))void 0===e.params[i]&&delete this._params[i];this.view.update({params:this._params})}updateParentGroup(e,t){this._group=e,this.api.group=this._group;const i=this._group.model.isPanelActive(this),n=this.group.api.isActive&&i;(null==t?void 0:t.skipSetActive)||this.api.isActive!==n&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&i}),this.api.isVisible!==i&&this.api._onDidVisibilityChange.fire({isVisible:i})}runEvents(){const e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}}class dt extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-default-tab",this._content=document.createElement("div"),this._content.className="dv-default-tab-content",this.action=document.createElement("div"),this.action.className="dv-default-tab-action",this.action.appendChild(We({width:"11",height:"11",viewbox:"0 0 28 28",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"})),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this.addDisposables(e.api.onDidTitleChange((e=>{this._title=e.title,this.render()})),g(this.action,"pointerdown",(e=>{e.preventDefault()})),g(this.action,"click",(t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())}))),this.render()}render(){var e;this._content.textContent!==this._title&&(this._content.textContent=null!==(e=this._title)&&void 0!==e?e:"")}}class lt{get content(){return this._content}get tab(){return this._tab}constructor(e,t,i,n){this.accessor=e,this.id=t,this.contentComponent=i,this.tabComponent=n,this._content=this.createContentComponent(this.id,i),this._tab=this.createTabComponent(this.id,n)}createTabRenderer(e){var t;const i=this.createTabComponent(this.id,this.tabComponent);return this._params&&i.init(Object.assign(Object.assign({},this._params),{tabLocation:e})),this._updateEvent&&(null===(t=i.update)||void 0===t||t.call(i,this._updateEvent)),i}init(e){this._params=e,this.content.init(e),this.tab.init(Object.assign(Object.assign({},e),{tabLocation:"header"}))}layout(e,t){var i,n;null===(n=(i=this.content).layout)||void 0===n||n.call(i,e,t)}update(e){var t,i,n,s;this._updateEvent=e,null===(i=(t=this.content).update)||void 0===i||i.call(t,e),null===(s=(n=this.tab).update)||void 0===s||s.call(n,e)}dispose(){var e,t,i,n;null===(t=(e=this.content).dispose)||void 0===t||t.call(e),null===(n=(i=this.tab).dispose)||void 0===n||n.call(i)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){const i=null!=t?t:this.accessor.options.defaultTabComponent;if(i){if(this.accessor.options.createTabComponent){const t=this.accessor.options.createTabComponent({id:e,name:i});return t||new dt}console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new dt}}class pt{constructor(e){this.accessor=e}fromJSON(e,t){var i,n;const s=e.id,o=e.params,r=e.title,a=e.view,h=a?a.content.id:null!==(i=e.contentComponent)&&void 0!==i?i:"unknown",d=a?null===(n=a.tab)||void 0===n?void 0:n.id:e.tabComponent,l=new lt(this.accessor,s,h,d),p=new ht(s,h,d,this.accessor,new me(this.accessor),t,l,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return p.init({title:null!=r?r:s,params:null!=o?o:{}}),p}}class ut extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-watermark"}init(e){}}const mt=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter((t=>t!==e)),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter((t=>t!==e)),this.update()}update(){for(let e=0;e{let e=null;const t=O();i.value=new w({dispose:()=>{t.release()}},g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),n=t.clientX-i.left,s=t.clientY-i.top;S(this._element,"dv-resize-container-dragging",!0);const o=this._element.getBoundingClientRect();null===e&&(e={x:t.clientX-o.left,y:t.clientY-o.top});const r=Math.max(0,this.getMinimumWidth(o.width)),a=Math.max(0,this.getMinimumHeight(o.height)),h=M(s-e.y,-a,Math.max(0,i.height-o.height+a)),d=M(e.y-s+i.height-o.height,-a,Math.max(0,i.height-o.height+a)),l=M(n-e.x,-r,Math.max(0,i.width-o.width+r)),p=M(e.x-n+i.width-o.width,-r,Math.max(0,i.width-o.width+r)),u={};h<=d?u.top=h:u.bottom=d,l<=p?u.left=l:u.right=p,this.setBounds(u)})),g(window,"pointerup",(()=>{S(this._element,"dv-resize-container-dragging",!1),i.dispose(),this._onDidChangeEnd.fire()})))};this.addDisposables(i,g(e,"pointerdown",(e=>{e.defaultPrevented?e.preventDefault():P(e)||n()})),g(this.options.content,"pointerdown",(e=>{e.defaultPrevented||P(e)||e.shiftKey&&n()})),g(this.options.content,"pointerdown",(()=>{mt.push(this._element)}),!0)),t.inDragMode&&n()}setupResize(e){const t=document.createElement("div");t.className=`dv-resize-handle-${e}`,this._element.appendChild(t);const i=new f;this.addDisposables(i,g(t,"pointerdown",(t=>{t.preventDefault();let n=null;const s=O();i.value=new w(g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),s=this._element.getBoundingClientRect(),o=t.clientY-i.top,r=t.clientX-i.left;let a,h,d,l,p,u;null===n&&(n={originalY:o,originalHeight:s.height,originalX:r,originalWidth:s.width});const m=()=>{a=M(o,-Number.MAX_VALUE,n.originalY+n.originalHeight>i.height?this.getMinimumHeight(i.height):Math.max(0,n.originalY+n.originalHeight-ct.MINIMUM_HEIGHT)),d=n.originalY+n.originalHeight-a,h=i.height-a-d},c=()=>{a=n.originalY-n.originalHeight,d=M(o-a,a<0&&"number"==typeof this.options.minimumInViewportHeight?-a+this.options.minimumInViewportHeight:ct.MINIMUM_HEIGHT,Number.MAX_VALUE),h=i.height-a-d},v=()=>{l=M(r,-Number.MAX_VALUE,n.originalX+n.originalWidth>i.width?this.getMinimumWidth(i.width):Math.max(0,n.originalX+n.originalWidth-ct.MINIMUM_WIDTH)),u=n.originalX+n.originalWidth-l,p=i.width-l-u},g=()=>{l=n.originalX-n.originalWidth,u=M(r-l,l<0&&"number"==typeof this.options.minimumInViewportWidth?-l+this.options.minimumInViewportWidth:ct.MINIMUM_WIDTH,Number.MAX_VALUE),p=i.width-l-u};switch(e){case"top":m();break;case"bottom":c();break;case"left":v();break;case"right":g();break;case"topleft":m(),v();break;case"topright":m(),g();break;case"bottomleft":c(),v();break;case"bottomright":c(),g()}const _={};a<=h?_.top=a:_.bottom=h,l<=p?_.left=l:_.right=p,_.height=d,_.width=u,this.setBounds(_)})),{dispose:()=>{s.release()}},g(window,"pointerup",(()=>{i.dispose(),this._onDidChangeEnd.fire()})))})))}getMinimumWidth(e){return"number"==typeof this.options.minimumInViewportWidth?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return"number"==typeof this.options.minimumInViewportHeight?e-this.options.minimumInViewportHeight:0}dispose(){mt.destroy(this._element),this._element.remove(),super.dispose()}}ct.MINIMUM_HEIGHT=20,ct.MINIMUM_WIDTH=20;class vt extends w{constructor(e,t){super(),this.group=e,this.overlay=t,this.addDisposables(t)}position(e){this.overlay.setBounds(e)}}const gt=100,_t=100,wt=100,ft=300,Dt=300;class bt{constructor(){this.cache=new Map,this.currentFrameId=0,this.rafId=null}getPosition(e){const t=this.cache.get(e);if(t&&t.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();const i=G(e);return this.cache.set(e,{rect:i,frameId:this.currentFrameId}),i}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||(this.rafId=requestAnimationFrame((()=>{this.currentFrameId++,this.rafId=null})))}}class Ct extends w{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this.positionCache=new bt,this.pendingUpdates=new Set,this.addDisposables(l.from((()=>{for(const e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose();this._disposed=!0})))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(const e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}detatch(e){if(this.map[e.api.id]){const{disposable:t,destroy:i}=this.map[e.api.id];return t.dispose(),i.dispose(),delete this.map[e.api.id],!0}return!1}attach(e){const{panel:t,referenceContainer:i}=e;if(!this.map[t.api.id]){const e=function(){const e=document.createElement("div");return e.tabIndex=-1,e}();e.className="dv-render-overlay",this.map[t.api.id]={panel:t,disposable:l.NONE,destroy:l.NONE,element:e}}const n=this.map[t.api.id].element;t.view.content.element.parentElement!==n&&n.appendChild(t.view.content.element),n.parentElement!==this.element&&this.element.appendChild(n);const s=()=>{const e=t.api.id;this.pendingUpdates.has(e)||(this.pendingUpdates.add(e),requestAnimationFrame((()=>{if(this.pendingUpdates.delete(e),this.isDisposed||!this.map[e])return;const s=this.positionCache.getPosition(i.element),o=this.positionCache.getPosition(this.element),r=s.left-o.left,a=s.top-o.top,h=s.width,d=s.height;n.style.left=`${r}px`,n.style.top=`${a}px`,n.style.width=`${h}px`,n.style.height=`${d}px`,S(n,"dv-render-overlay-float","floating"===t.group.api.location.type)})))},o=()=>{t.api.isVisible&&(this.positionCache.invalidate(),s()),n.style.display=t.api.isVisible?"":"none"},r=new f,a=()=>{"floating"===t.api.location.type?queueMicrotask((()=>{const e=this.accessor.floatingGroups.find((e=>e.group===t.api.group));if(!e)return;const i=e.overlay.element,s=()=>{const e=Number(i.getAttribute("aria-level"));n.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${2*e+1})`},o=new MutationObserver((()=>{s()}));r.value=l.from((()=>o.disconnect())),o.observe(i,{attributeFilter:["aria-level"],attributes:!0}),s()})):n.style.zIndex=""},h=new w(r,new ve(n,{onDragEnd:e=>{i.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{i.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{i.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{i.dropTarget.dnd.onDrop(e)},onDragOver:e=>{i.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange((()=>{o()})),t.api.onDidDimensionsChange((()=>{t.api.isVisible&&s()})),t.api.onDidLocationChange((()=>{a()})));return this.map[t.api.id].destroy=l.from((()=>{var e;t.view.content.element.parentElement===n&&n.removeChild(t.view.content.element),null===(e=n.parentElement)||void 0===e||e.removeChild(n)})),a(),queueMicrotask((()=>{this.isDisposed||o()})),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=h,this.map[t.api.id].resize=s,n}}var yt=function(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{h(n.next(e))}catch(t){o(t)}}function a(e){try{h(n.throw(e))}catch(t){o(t)}}function h(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}h((n=n.apply(e,t||[])).next())}))};class St extends w{get window(){var e,t;return null!==(t=null===(e=this._window)||void 0===e?void 0:e.value)&&void 0!==t?t:null}constructor(e,t,i){super(),this.target=e,this.className=t,this.options=i,this._onWillClose=new v,this.onWillClose=this._onWillClose.event,this._onDidClose=new v,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;const e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){var e,t;this._window&&(this._onWillClose.fire(),null===(t=(e=this.options).onWillClose)||void 0===t||t.call(e,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire())}open(){var e,t;return yt(this,void 0,void 0,(function*(){if(this._window)throw new Error("instance of popout window is already open");const i=`${this.options.url}`,n=Object.entries({top:this.options.top,left:this.options.left,width:this.options.width,height:this.options.height}).map((e=>{let[t,i]=e;return`${t}=${i}`})).join(","),s=window.open(i,this.target,n);if(!s)return null;const o=new w;this._window={value:s,disposable:o},o.addDisposables(l.from((()=>{s.close()})),g(window,"beforeunload",(()=>{this.close()})));const r=this.createPopoutWindowContainer();return this.className&&r.classList.add(this.className),null===(t=(e=this.options).onDidOpen)||void 0===t||t.call(e,{id:this.target,window:s}),new Promise(((e,t)=>{s.addEventListener("unload",(e=>{})),s.addEventListener("load",(()=>{try{const t=s.document;t.title=document.title,t.body.appendChild(r),function(e,t){const i=Array.from(t);for(const s of i){if(s.href){const t=e.createElement("link");t.href=s.href,t.type=s.type,t.rel="stylesheet",e.head.appendChild(t)}let t=[];try{s.cssRules&&(t=Array.from(s.cssRules).map((e=>e.cssText)))}catch(n){}for(const i of t){const t=e.createElement("style");t.appendChild(e.createTextNode(i)),e.head.appendChild(t)}}}(t,window.document.styleSheets),g(s,"beforeunload",(()=>{this.close()})),e(r)}catch(i){t(i)}}))}))}))}createPopoutWindowContainer(){const e=document.createElement("div");return e.classList.add("dv-popout-window"),e.id="dv-popout-window",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e}}class xt extends w{constructor(e){super(),this.accessor=e,this.init()}init(){const e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel((t=>{if(e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)})),this.accessor.onDidRemovePanel((t=>{if(!e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`);e.delete(t.api.id)})),this.accessor.onDidAddGroup((e=>{if(t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)})),this.accessor.onDidRemoveGroup((e=>{if(!t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`);t.delete(e.api.id)})))}}class zt extends w{constructor(e){super(),this.root=e,this._active=null,this._activeDisposable=new f,this._element=document.createElement("div"),this._element.className="dv-popover-anchor",this._element.style.position="relative",this.root.prepend(this._element),this.addDisposables(l.from((()=>{this.close()})),this._activeDisposable)}openPopover(e,t){var i;this.close();const n=document.createElement("div");n.style.position="absolute",n.style.zIndex=null!==(i=t.zIndex)&&void 0!==i?i:"var(--dv-overlay-z-index)",n.appendChild(e);const s=this._element.getBoundingClientRect(),o=s.left,r=s.top;n.style.top=t.y-r+"px",n.style.left=t.x-o+"px",this._element.appendChild(n),this._active=n,this._activeDisposable.value=new w(g(window,"pointerdown",(e=>{var t;const i=e.target;if(!(i instanceof HTMLElement))return;let s=i;for(;s&&s!==n;)s=null!==(t=null==s?void 0:s.parentElement)&&void 0!==t?t:null;s||this.close()}))),requestAnimationFrame((()=>{!function(e,t,i){void 0===i&&(i={buffer:10});const n=i.buffer,s=e.getBoundingClientRect(),o=t.getBoundingClientRect();let r=0,a=0;const h=s.left-o.left,d=s.top-o.top,l=s.bottom-o.bottom,p=s.right-o.right;hn&&(r=-n-p),dn&&(a=-l-n),0===r&&0===a||(e.style.transform=`translate(${r}px, ${a}px)`)}(n,this.root)}))}close(){this._active&&(this._active.remove(),this._activeDisposable.dispose(),this._active=null)}}class At extends w{get disabled(){return this._disabled}set disabled(e){var t;this.disabled!==e&&(this._disabled=e,e&&(null===(t=this.model)||void 0===t||t.clear()))}get model(){if(!this.disabled)return{clear:()=>{var e;this._model&&(null===(e=this._model.root.parentElement)||void 0===e||e.removeChild(this._model.root)),this._model=void 0},exists:()=>!!this._model,getElements:(e,t)=>{const i=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=i,this._model;const n=this.createContainer(),s=this.createAnchor();if(this._model={root:n,overlay:s,changed:i},n.appendChild(s),this.element.appendChild(n),(null==e?void 0:e.target)instanceof HTMLElement){const t=e.target.getBoundingClientRect(),i=this.element.getBoundingClientRect();s.style.left=t.left-i.left+"px",s.style.top=t.top-i.top+"px"}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(l.from((()=>{var e;null===(e=this.model)||void 0===e||e.clear()})))}createContainer(){const e=document.createElement("div");return e.className="dv-drop-target-container",e}createAnchor(){const e=document.createElement("div");return e.className="dv-drop-target-anchor",e.style.visibility="hidden",e}}const Et={activationSize:{type:"pixels",value:10},size:{type:"pixels",value:20}};function Pt(e){const t=e.from.activePanel;[...e.from.panels].map((t=>{const i=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),i})).forEach((i=>{e.to.model.openPanel(i,{skipSetActive:t!==i,skipSetGroupActive:!0})}))}class Gt extends de{get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap((e=>e.panels))}get options(){return this._options}get activePanel(){const e=this.activeGroup;if(e)return e.activePanel}get renderer(){var e;return null!==(e=this.options.defaultRenderer)&&void 0!==e?e:"onlyWhenVisible"}get api(){return this._api}get floatingGroups(){return this._floatingGroups}get popoutRestorationPromise(){return this._popoutRestorationPromise}constructor(e,t){var i,n,s;super(e,{proportionalLayout:!0,orientation:F.HORIZONTAL,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:null!==(n=null===(i=t.theme)||void 0===i?void 0:i.gap)&&void 0!==n?n:0,className:t.className}),this.nextGroupId=R(),this._deserializer=new pt(this),this._watermark=null,this._onWillDragPanel=new v,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new v,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new v,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new v,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidOpenPopoutWindowFail=new v,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidLayoutFromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new v({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidMovePanel=new v,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidMaximizedGroupChange=new v,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._floatingGroups=[],this._popoutGroups=[],this._popoutRestorationPromise=Promise.resolve(),this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new v,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._moving=!1,this._options=t,this.popupService=new zt(this.element),this._themeClassnames=new I(this.element),this._api=new me(this),this.rootDropTargetContainer=new At(this.element,{disabled:!0}),this.overlayRenderContainer=new Ct(this.gridview.element,this),this._rootDropTarget=new be(this.element,{className:"dv-drop-target-edge",canDisplayOverlay:(e,t)=>{const i=a();if(i)return i.viewId===this.id&&("center"!==t||0===this.gridview.length);if("center"===t&&0!==this.gridview.length)return!1;const n=new Be(e,"edge",t,a);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted},acceptedTargetZones:["top","bottom","left","right","center"],overlayModel:null!==(s=t.rootOverlayModel)&&void 0!==s?s:Et,getOverrideTarget:()=>{var e;return null===(e=this.rootDropTargetContainer)||void 0===e?void 0:e.model}}),this.updateDropTargetModel(t),S(this.gridview.element,"dv-dockview",!0),S(this.element,"dv-debug",!!t.debug),this.updateTheme(),this.updateWatermark(),t.debug&&this.addDisposables(new xt(this)),this.addDisposables(this.rootDropTargetContainer,this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onDidMovePanel,this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this._onUnhandledDragOverEvent,this._onDidMaximizedGroupChange,this._onDidOptionsChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidOpenPopoutWindowFail,this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.updateWatermark()})),this.onDidAdd((e=>{this._moving||this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._moving||this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._moving||this._onDidActiveGroupChange.fire(e)})),this.onDidMaximizedChange((e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})})),d.any(this.onDidAdd,this.onDidRemove)((()=>{this.updateWatermark()})),d.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidMovePanel,this.onDidActivePanelChange,this.onDidPopoutGroupPositionChange,this.onDidPopoutGroupSizeChange)((()=>{this._bufferOnDidLayoutChange.fire()})),l.from((()=>{for(const e of[...this._floatingGroups])e.dispose();for(const e of[...this._popoutGroups])e.disposable.dispose()})),this._rootDropTarget,this._rootDropTarget.onWillShowOverlay((e=>{this.gridview.length>0&&"center"===e.position||this._onWillShowOverlay.fire(new Te(e,{kind:"edge",panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget.onDrop((e=>{var t;const i=new $e({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a,kind:"edge"});if(this._onWillDrop.fire(i),i.defaultPrevented)return;const n=a();n?this.moveGroupOrPanel({from:{groupId:n.groupId,panelId:null!==(t=n.panelId)&&void 0!==t?t:void 0},to:{group:this.orthogonalize(e.position),position:"center"}}):this._onDidDrop.fire(new Je({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget)}setVisible(e,t){switch(e.api.location.type){case"grid":super.setVisible(e,t);break;case"floating":{const i=this.floatingGroups.find((t=>t.group===e));i&&(i.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case"popout":console.warn("dockview: You cannot hide a group that is in a popout window")}}addPopoutGroup(e,t){var i,n,s,o,r;if(e instanceof ht&&1===e.group.size)return this.addPopoutGroup(e.group,t);const a=function(e){function t(e){const t=[];for(let i=0;ie.startsWith("dockview-theme-"))),"string"!=typeof i);)n=n.parentElement;return i}(this.gridview.element),h=this.element;const d=(null==t?void 0:t.position)?t.position:e instanceof Ke?e.element.getBoundingClientRect():e.group?e.group.element.getBoundingClientRect():h.getBoundingClientRect(),p=null!==(n=null===(i=null==t?void 0:t.overridePopoutGroup)||void 0===i?void 0:i.id)&&void 0!==n?n:this.getNextGroupId(),u=new St(`${this.id}-${p}`,null!=a?a:"",{url:null!==(r=null!==(s=null==t?void 0:t.popoutUrl)&&void 0!==s?s:null===(o=this.options)||void 0===o?void 0:o.popoutUrl)&&void 0!==r?r:"/popout.html",left:window.screenX+d.left,top:window.screenY+d.top,width:d.width,height:d.height,onDidOpen:null==t?void 0:t.onDidOpen,onWillClose:null==t?void 0:t.onWillClose}),m=new w(u,u.onDidClose((()=>{m.dispose()})));return u.open().then((i=>{var n;if(u.isDisposed)return!1;const s=(null==t?void 0:t.referenceGroup)?t.referenceGroup:e instanceof ht?e.group:e,o=e.api.location.type,r=null!==s.element.parentElement;let a;if(r?(null==t?void 0:t.overridePopoutGroup)?a=t.overridePopoutGroup:(a=this.createGroup({id:p}),i&&this._onDidAddGroup.fire(a)):a=s,null===i)return console.error("dockview: failed to create popout. perhaps you need to allow pop-ups for this website"),m.dispose(),this._onDidOpenPopoutWindowFail.fire(),this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),!1;const h=document.createElement("div");h.className="dv-overlay-render-container";const d=new Ct(h,this);let c;if(a.model.renderContainer=d,a.layout(u.window.innerWidth,u.window.innerHeight),!(null==t?void 0:t.overridePopoutGroup)&&r)if(e instanceof ht)this.movingLock((()=>{const t=s.model.removePanel(e);a.model.openPanel(t)}));else switch(this.movingLock((()=>Pt({from:s,to:a}))),o){case"grid":s.api.setVisible(!1);break;case"floating":case"popout":c=null===(n=this._floatingGroups.find((t=>t.group.api.id===e.api.id)))||void 0===n?void 0:n.overlay.toJSON(),this.removeGroup(s)}i.classList.add("dv-dockview"),i.style.overflow="hidden",i.appendChild(h),i.appendChild(a.element);const _=document.createElement("div"),f=new At(_,{disabled:this.rootDropTargetContainer.disabled});let D;i.appendChild(_),a.model.dropTargetContainer=f,a.model.location={type:"popout",getWindow:()=>u.window,popoutUrl:null==t?void 0:t.popoutUrl},r&&"grid"===e.api.location.type&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(a),m.addDisposables(a.api.onDidActiveChange((e=>{var t;e.isActive&&(null===(t=u.window)||void 0===t||t.focus())})),a.api.onWillFocus((()=>{var e;null===(e=u.window)||void 0===e||e.focus()})));const b=r&&s&&this.getPanel(s.id),C={window:u,popoutGroup:a,referenceGroup:b?s.id:void 0,disposable:{dispose:()=>(m.dispose(),D)}},y=function(e){const t=new v;let i,n=e.screenX,s=e.screenY;const o=()=>{if(e.closed)return;const r=e.screenX,a=e.screenY;r===n&&a===s||(clearTimeout(i),i=setTimeout((()=>{t.fire()}),100),n=r,s=a),requestAnimationFrame(o)};return o(),t}(u.window);return m.addDisposables(y,function(e,t){let i;return new w(g(e,"resize",(()=>{clearTimeout(i),i=setTimeout((()=>{t()}),100)})))}(u.window,(()=>{this._onDidPopoutGroupSizeChange.fire({width:u.window.innerWidth,height:u.window.innerHeight,group:a})})),y.event((()=>{this._onDidPopoutGroupPositionChange.fire({screenX:u.window.screenX,screenY:u.window.screenX,group:a})})),g(u.window,"resize",(()=>{a.layout(u.window.innerWidth,u.window.innerHeight)})),d,l.from((()=>{if(!this.isDisposed)if(r&&this.getPanel(s.id))this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),this.getPanel(a.id)&&this.doRemoveGroup(a,{skipPopoutAssociated:!0});else if(this.getPanel(a.id)){a.model.renderContainer=this.overlayRenderContainer,a.model.dropTargetContainer=this.rootDropTargetContainer,D=a;if(!this._popoutGroups.find((e=>e.popoutGroup===a)))return;c?this.addFloatingGroup(a,{height:c.height,width:c.width,position:c}):(this.doRemoveGroup(a,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),a.model.location={type:"grid"},this.movingLock((()=>{this.doAddGroup(a,[0])}))),this.doSetGroupAndPanelActive(a)}}))),this._popoutGroups.push(C),this.updateWatermark(),!0})).catch((e=>(console.error("dockview: failed to create popout.",e),!1)))}addFloatingGroup(e,t){var i,n,s,o,r;let a;if(e instanceof ht)a=this.createGroup(),this._onDidAddGroup.fire(a),this.movingLock((()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0}))),this.movingLock((()=>a.model.openPanel(e,{skipSetGroupActive:!0})));else{a=e;const n=null===(i=this._popoutGroups.find((e=>e.popoutGroup===a)))||void 0===i?void 0:i.referenceGroup,s=n?this.getPanel(n):void 0;"boolean"==typeof(null==t?void 0:t.skipRemoveGroup)&&t.skipRemoveGroup||(s?(this.movingLock((()=>Pt({from:e,to:s}))),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(s,{skipDispose:!0}),a=s):this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}))}const h=function(){if(null==t?void 0:t.position){const e={};return"left"in t.position?e.left=Math.max(t.position.left,0):"right"in t.position?e.right=Math.max(t.position.right,0):e.left=_t,"top"in t.position?e.top=Math.max(t.position.top,0):"bottom"in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=wt,"number"==typeof t.width?e.width=Math.max(t.width,0):e.width=ft,"number"==typeof t.height?e.height=Math.max(t.height,0):e.height=Dt,e}return{left:"number"==typeof(null==t?void 0:t.x)?Math.max(t.x,0):_t,top:"number"==typeof(null==t?void 0:t.y)?Math.max(t.y,0):wt,width:"number"==typeof(null==t?void 0:t.width)?Math.max(t.width,0):ft,height:"number"==typeof(null==t?void 0:t.height)?Math.max(t.height,0):Dt}}(),d=new ct(Object.assign(Object.assign({container:this.gridview.element,content:a.element},h),{minimumInViewportWidth:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(s=null===(n=this.options.floatingGroupBounds)||void 0===n?void 0:n.minimumWidthWithinViewport)&&void 0!==s?s:gt,minimumInViewportHeight:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(r=null===(o=this.options.floatingGroupBounds)||void 0===o?void 0:o.minimumHeightWithinViewport)&&void 0!==r?r:gt})),l=a.element.querySelector(".dv-void-container");if(!l)throw new Error("failed to find drag handle");d.setupDrag(l,{inDragMode:"boolean"==typeof(null==t?void 0:t.inDragMode)&&t.inDragMode});const p=new vt(a,d),u=new w(a.api.onDidActiveChange((e=>{e.isActive&&d.bringToFront()})),b(a.element,(e=>{const{width:t,height:i}=e.contentRect;a.layout(t,i)})));p.addDisposables(d.onDidChange((()=>{a.layout(a.width,a.height)})),d.onDidChangeEnd((()=>{this._bufferOnDidLayoutChange.fire()})),a.onDidChange((e=>{d.setBounds({height:null==e?void 0:e.height,width:null==e?void 0:e.width})})),{dispose:()=>{u.dispose(),k(this._floatingGroups,p),a.model.location={type:"grid"},this.updateWatermark()}}),this._floatingGroups.push(p),a.model.location={type:"floating"},(null==t?void 0:t.skipActiveGroup)||this.doSetGroupAndPanelActive(a),this.updateWatermark()}orthogonalize(e,t){switch(this.gridview.normalize(),e){case"top":case"bottom":this.gridview.orientation===F.HORIZONTAL&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case"left":case"right":this.gridview.orientation===F.VERTICAL&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case"top":case"left":case"center":return this.createGroupAtLocation([0],void 0,t);case"bottom":case"right":return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw new Error(`unsupported position ${e}`)}}updateOptions(e){var t,i;if(super.updateOptions(e),"floatingGroupBounds"in e)for(const s of this._floatingGroups){switch(e.floatingGroupBounds){case"boundedWithinViewport":s.overlay.minimumInViewportHeight=void 0,s.overlay.minimumInViewportWidth=void 0;break;case void 0:s.overlay.minimumInViewportHeight=gt,s.overlay.minimumInViewportWidth=gt;break;default:s.overlay.minimumInViewportHeight=null===(t=e.floatingGroupBounds)||void 0===t?void 0:t.minimumHeightWithinViewport,s.overlay.minimumInViewportWidth=null===(i=e.floatingGroupBounds)||void 0===i?void 0:i.minimumWidthWithinViewport}s.overlay.setBounds()}this.updateDropTargetModel(e);const n=this.options.disableDnd;this._options=Object.assign(Object.assign({},this.options),e);n!==this.options.disableDnd&&this.updateDragAndDropState(),"theme"in e&&this.updateTheme(),this.layout(this.gridview.width,this.gridview.height,!0)}layout(e,t,i){if(super.layout(e,t,i),this._floatingGroups)for(const n of this._floatingGroups)n.overlay.setBounds()}updateDragAndDropState(){for(const e of this.groups)e.model.updateDragAndDropState()}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}getGroupPanel(e){return this.panels.find((t=>t.id===e))}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}moveToNext(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1])return void e.group.model.moveToNext({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupAndPanelActive(n)}moveToPrevious(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0])return void e.group.model.moveToPrevious({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){var e;const t=this.gridview.serialize(),i=this.panels.reduce(((e,t)=>(e[t.id]=t.toJSON(),e)),{}),n=this._floatingGroups.map((e=>({data:e.group.toJSON(),position:e.overlay.toJSON()}))),s=this._popoutGroups.map((e=>({data:e.popoutGroup.toJSON(),gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:"popout"===e.popoutGroup.api.location.type?e.popoutGroup.api.location.popoutUrl:void 0}))),o={grid:t,panels:i,activeGroup:null===(e=this.activeGroup)||void 0===e?void 0:e.id};return n.length>0&&(o.floatingGroups=n),s.length>0&&(o.popoutGroups=s),o}fromJSON(e){var t,i;if(this.clear(),"object"!=typeof e||null===e)throw new Error("serialized layout must be a non-null object");const{grid:n,panels:s,activeGroup:o}=e;if("branch"!==n.root.type||!Array.isArray(n.root.data))throw new Error("root must be of type branch");try{const r=this.width,a=this.height,h=e=>{const{id:t,locked:i,hideHeader:n,views:o,activeView:r}=e;if("string"!=typeof t)throw new Error("group id must be of type string");const a=this.createGroup({id:t,locked:!!i,hideHeader:!!n});this._onDidAddGroup.fire(a);const h=[];for(const d of o){const e=this._deserializer.fromJSON(s[d],a);h.push(e)}for(let s=0;s0&&a.model.openPanel(a.panels[a.panels.length-1],{skipSetGroupActive:!0}),a};this.gridview.deserialize(n,{fromJSON:e=>h(e.data)}),this.layout(r,a,!0);const d=null!==(t=e.floatingGroups)&&void 0!==t?t:[];for(const e of d){const{data:t,position:i}=e,n=h(t);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}const l=null!==(i=e.popoutGroups)&&void 0!==i?i:[],p=[];l.forEach(((e,t)=>{const{data:i,position:n,gridReferenceGroup:s,url:o}=e,r=h(i),a=new Promise((e=>{setTimeout((()=>{this.addPopoutGroup(r,{position:null!=n?n:void 0,overridePopoutGroup:s?r:void 0,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:o}),e()}),100*t)}));p.push(a)})),this._popoutRestorationPromise=Promise.all(p).then((()=>{}));for(const e of this._floatingGroups)e.overlay.setBounds();if("string"==typeof o){const e=this.getPanel(o);e&&this.doSetGroupAndPanelActive(e)}}catch(r){console.error("dockview: failed to deserialize layout. Reverting changes",r);for(const e of this.groups)for(const t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);for(const e of[...this._floatingGroups])e.dispose();throw this.clear(),r}this.updateWatermark(),requestAnimationFrame((()=>{this.overlayRenderContainer.updateAllPositions()})),this._onDidLayoutFromJSON.fire()}clear(){const e=Array.from(this._groups.values()).map((e=>e.value)),t=!!this.activeGroup;for(const i of e)this.removeGroup(i,{skipActive:!0});t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){for(const e of this._groups.entries()){const[t,i]=e;i.value.model.closeAllPanels()}}addPanel(e){var t,i;if(this.panels.find((t=>t.id===e.id)))throw new Error(`panel with id ${e.id} already exists`);let n;if(e.position&&e.floating)throw new Error("you can only provide one of: position, floating as arguments to .addPanel(...)");const s={width:e.initialWidth,height:e.initialHeight};let o;if(e.position)if(e.position.referencePanel){const t="string"==typeof e.position.referencePanel?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(o=e.position.index,!t)throw new Error(`referencePanel '${e.position.referencePanel}' does not exist`);n=this.findGroup(t)}else{if(!function(e){return!!e.referenceGroup}(e.position)){const t=this.orthogonalize(_e(e.position.direction)),i=this.createPanel(e,t);return t.model.openPanel(i,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:null==s?void 0:s.height,width:null==s?void 0:s.width}),i}if(n="string"==typeof e.position.referenceGroup?null===(t=this._groups.get(e.position.referenceGroup))||void 0===t?void 0:t.value:e.position.referenceGroup,o=e.position.index,!n)throw new Error(`referenceGroup '${e.position.referenceGroup}' does not exist`)}else n=this.activeGroup;let r;if(n){const t=he((null===(i=e.position)||void 0===i?void 0:i.direction)||"within");if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else if("floating"===n.api.location.type||"center"===t)r=this.createPanel(e,n),n.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),n.api.setSize({width:null==s?void 0:s.width,height:null==s?void 0:s.height}),e.inactive||this.doSetGroupAndPanelActive(n);else{const i=ee(n.element),a=te(this.gridview.orientation,i,t),h=this.createGroupAtLocation(a,this.orientationAtLocation(a)===F.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,h),h.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(h)}}else if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else{const t=this.createGroupAtLocation([0],this.gridview.orientation===F.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t)}return r}removePanel(e,t){void 0===t&&(t={removeEmptyGroup:!0});const i=e.group;if(!i)throw new Error(`cannot remove panel ${e.id}. it's missing a group.`);i.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),0===i.size&&t.removeEmptyGroup&&this.removeGroup(i,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ut}updateWatermark(){var e,t,i;if(0===this.groups.filter((e=>"grid"===e.api.location.type&&e.api.isVisible)).length){if(!this._watermark){this._watermark=this.createWatermarkComponent(),this._watermark.init({containerApi:new me(this)});const e=document.createElement("div");e.className="dv-watermark-container",i="watermark-component",e.setAttribute("data-testid",i),e.appendChild(this._watermark.element),this.gridview.element.appendChild(e)}}else this._watermark&&(this._watermark.element.parentElement.remove(),null===(t=(e=this._watermark).dispose)||void 0===t||t.call(e),this._watermark=null)}addGroup(e){var t;if(e){let i;if(e.referencePanel){const t="string"==typeof e.referencePanel?this.panels.find((t=>t.id===e.referencePanel)):e.referencePanel;if(!t)throw new Error(`reference panel ${e.referencePanel} does not exist`);if(i=this.findGroup(t),!i)throw new Error(`reference group for reference panel ${e.referencePanel} does not exist`)}else{if(!function(e){return!!e.referenceGroup}(e)){const t=this.orthogonalize(_e(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}if(i="string"==typeof e.referenceGroup?null===(t=this._groups.get(e.referenceGroup))||void 0===t?void 0:t.value:e.referenceGroup,!i)throw new Error(`reference group ${e.referenceGroup} does not exist`)}const n=he(e.direction||"within"),s=ee(i.element),o=te(this.gridview.orientation,s,n),r=this.createGroup(e),a=this.getLocationOrientation(o)===F.VERTICAL?e.initialHeight:e.initialWidth;return this.doAddGroup(r,o,a),e.skipSetActive||this.doSetGroupAndPanelActive(r),r}{const t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===F.HORIZONTAL?F.HORIZONTAL:F.VERTICAL}removeGroup(e,t){this.doRemoveGroup(e,t)}doRemoveGroup(e,t){var i;const n=[...e.panels];if(!(null==t?void 0:t.skipDispose))for(const r of n)this.removePanel(r,{removeEmptyGroup:!1,skipDispose:null!==(i=null==t?void 0:t.skipDispose)&&void 0!==i&&i});const s=this.activePanel;if("floating"===e.api.location.type){const i=this._floatingGroups.find((t=>t.group===e));if(i){if((null==t?void 0:t.skipDispose)||(i.group.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)),k(this._floatingGroups,i),i.dispose(),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return i.group}throw new Error("failed to find floating group")}if("popout"===e.api.location.type){const i=this._popoutGroups.find((t=>t.popoutGroup===e));if(i){if(!(null==t?void 0:t.skipDispose)){if(!(null==t?void 0:t.skipPopoutAssociated)){const e=i.referenceGroup?this.getPanel(i.referenceGroup):void 0;e&&0===e.panels.length&&this.removeGroup(e)}i.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}k(this._popoutGroups,i);const n=i.disposable.dispose();if(!(null==t?void 0:t.skipPopoutReturn)&&n&&(this.doAddGroup(n,[0]),this.doSetGroupAndPanelActive(n)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return this.updateWatermark(),i.popoutGroup}throw new Error("failed to find popout group")}const o=super.doRemoveGroup(e,t);return(null==t?void 0:t.skipActive)||this.activePanel!==s&&this._onDidActivePanelChange.fire(this.activePanel),o}movingLock(e){const t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}moveGroupOrPanel(e){var t;const i=e.to.group,n=e.from.groupId,s=e.from.panelId,o=e.to.position,r=e.to.index,a=n?null===(t=this._groups.get(n))||void 0===t?void 0:t.value:void 0;if(!a)throw new Error(`Failed to find group id ${n}`);if(void 0!==s)if(o&&"center"!==o){const e=ee(i.element),t=te(this.gridview.orientation,e,o);if(a.size<2){const[e,n]=V(t);if("grid"===a.api.location.type){const t=ee(a.element),[i,o]=V(t);if(N(i,e))return this.gridview.moveView(i,o,n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}if("popout"===a.api.location.type){const e=this._popoutGroups.find((e=>e.popoutGroup===a)),i=this.movingLock((()=>e.popoutGroup.model.removePanel(e.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0})));this.doRemoveGroup(a,{skipActive:!0});const n=this.createGroupAtLocation(t);return this.movingLock((()=>n.model.openPanel(i))),this.doSetGroupAndPanelActive(n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}const r=this.movingLock((()=>this.doRemoveGroup(a,{skipActive:!0,skipDispose:!0}))),h=ee(i.element),d=te(this.gridview.orientation,h,o);this.movingLock((()=>this.doAddGroup(r,d))),this.doSetGroupAndPanelActive(r),this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);const i=te(this.gridview.orientation,e,o),n=this.createGroupAtLocation(i);this.movingLock((()=>n.model.openPanel(t,{skipSetGroupActive:!0}))),this.doSetGroupAndPanelActive(n),this._onDidMovePanel.fire({panel:t,from:a})}}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);0===a.model.size&&this.doRemoveGroup(a,{skipActive:!0});const n=0===i.model.size;this.movingLock((()=>{var s;return i.model.openPanel(t,{index:r,skipSetActive:null!==(s=e.skipSetActive)&&void 0!==s&&s&&!n,skipSetGroupActive:!0})})),e.skipSetActive||this.doSetGroupAndPanelActive(i),this._onDidMovePanel.fire({panel:t,from:a})}else this.moveGroup({from:{group:a},to:{group:i,position:o},skipSetActive:e.skipSetActive})}moveGroup(e){const t=e.from.group,i=e.to.group,n=e.to.position;if("center"===n){const n=t.activePanel,s=this.movingLock((()=>[...t.panels].map((e=>t.model.removePanel(e.id,{skipSetActive:!0})))));0===(null==t?void 0:t.model.size)&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock((()=>{for(const e of s)i.model.openPanel(e,{skipSetActive:e!==n,skipSetGroupActive:!0})})),!0!==e.skipSetActive?this.doSetGroupAndPanelActive(i):this.activePanel||this.doSetGroupAndPanelActive(i)}else{switch(t.api.location.type){case"grid":this.gridview.removeView(ee(t.element));break;case"floating":{const e=this._floatingGroups.find((e=>e.group===t));if(!e)throw new Error("failed to find floating group");e.dispose();break}case"popout":{const e=this._popoutGroups.find((e=>e.popoutGroup===t));if(!e)throw new Error("failed to find popout group");const n=this._popoutGroups.indexOf(e);if(n>=0&&this._popoutGroups.splice(n,1),e.referenceGroup){const t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose(),"grid"===i.api.location.type?(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"grid"}):"floating"===i.api.location.type&&(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"floating"});break}}if("grid"===i.api.location.type){const e=ee(i.element),s=te(this.gridview.orientation,e,n);let o;switch(this.gridview.orientation){case F.VERTICAL:o=e.length%2==0?t.api.width:t.api.height;break;case F.HORIZONTAL:o=e.length%2==0?t.api.height:t.api.width}this.gridview.addView(t,o,s)}else if("floating"===i.api.location.type){const e=this._floatingGroups.find((e=>e.group===i));if(e){const i=e.overlay.toJSON();let n,s;n="left"in i?i.left+50:"right"in i?Math.max(0,i.right-i.width-50):50,s="top"in i?i.top+50:"bottom"in i?Math.max(0,i.bottom-i.height-50):50,this.addFloatingGroup(t,{height:i.height,width:i.width,position:{left:n,top:s}})}}}if(t.panels.forEach((e=>{this._onDidMovePanel.fire({panel:e,from:t})})),!1===e.skipSetActive){const e=null!=i?i:t;this.doSetGroupAndPanelActive(e)}}doSetGroupActive(e){super.doSetGroupActive(e);const t=this.activePanel;this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);const t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e||(e={});let t=null==e?void 0:e.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${null==e?void 0:e.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();const i=new Ke(this,t,e);if(i.init({params:{},accessor:this}),!this._groups.has(i.id)){const e=new w(i.model.onTabDragStart((e=>{this._onWillDragPanel.fire(e)})),i.model.onGroupDragStart((e=>{this._onWillDragGroup.fire(e)})),i.model.onMove((e=>{const{groupId:t,itemId:n,target:s,index:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:n},to:{group:i,position:s,index:o}})})),i.model.onDidDrop((e=>{this._onDidDrop.fire(e)})),i.model.onWillDrop((e=>{this._onWillDrop.fire(e)})),i.model.onWillShowOverlay((e=>{this.options.disableDnd?e.preventDefault():this._onWillShowOverlay.fire(e)})),i.model.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})),i.model.onDidAddPanel((e=>{this._moving||this._onDidAddPanel.fire(e.panel)})),i.model.onDidRemovePanel((e=>{this._moving||this._onDidRemovePanel.fire(e.panel)})),i.model.onDidActivePanelChange((e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value!==e.panel&&this._onDidActivePanelChange.fire(e.panel)})),d.any(i.model.onDidPanelTitleChange,i.model.onDidPanelParametersChange)((()=>{this._bufferOnDidLayoutChange.fire()})));this._groups.set(i.id,{value:i,disposable:e})}return i.initialize(),i}createPanel(e,t){var i,n,s;const o=e.component,r=null!==(i=e.tabComponent)&&void 0!==i?i:this.options.defaultTabComponent,a=new lt(this,e.id,o,r),h=new ht(e.id,o,r,this,this._api,t,a,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return h.init({title:null!==(n=e.title)&&void 0!==n?n:e.id,params:null!==(s=null==e?void 0:e.params)&&void 0!==s?s:{}}),h}createGroupAtLocation(e,t,i){const n=this.createGroup(i);return this.doAddGroup(n,e,t),n}findGroup(e){var t;return null===(t=Array.from(this._groups.values()).find((t=>t.value.model.containsPanel(e))))||void 0===t?void 0:t.value}orientationAtLocation(e){const t=this.gridview.orientation;return e.length%2==1?t:ie(t)}updateDropTargetModel(e){"dndEdges"in e&&(this._rootDropTarget.disabled="boolean"==typeof e.dndEdges&&!1===e.dndEdges,"object"==typeof e.dndEdges&&null!==e.dndEdges?this._rootDropTarget.setOverlayModel(e.dndEdges):this._rootDropTarget.setOverlayModel(Et)),"rootOverlayModel"in e&&this.updateDropTargetModel({dndEdges:e.dndEdges})}updateTheme(){var e,t;const i=null!==(e=this._options.theme)&&void 0!==e?e:it;if(this._themeClassnames.setClassNames(i.className),this.gridview.margin=null!==(t=i.gap)&&void 0!==t?t:0,"absolute"===i.dndOverlayMounting)this.rootDropTargetContainer.disabled=!1;else this.rootDropTargetContainer.disabled=!0}}class Ot extends de{get orientation(){return this.gridview.orientation}set orientation(e){this.gridview.orientation=e}get options(){return this._options}get deserializer(){return this._deserializer}set deserializer(e){this._deserializer=e}constructor(e,t){var i;super(e,{proportionalLayout:null===(i=t.proportionalLayout)||void 0===i||i,orientation:t.orientation,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,className:t.className}),this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._options=t,this.addDisposables(this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this.onDidAdd((e=>{this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._onDidActiveGroupChange.fire(e)})))}updateOptions(e){super.updateOptions(e);const t="string"==typeof e.orientation&&this.gridview.orientation!==e.orientation;this._options=Object.assign(Object.assign({},this.options),e),t&&(this.gridview.orientation=e.orientation),this.layout(this.gridview.width,this.gridview.height,!0)}removePanel(e){this.removeGroup(e)}toJSON(){var e;return{grid:this.gridview.serialize(),activePanel:null===(e=this.activeGroup)||void 0===e?void 0:e.id}}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t)}setActive(e){this._groups.forEach(((t,i)=>{t.value.setActive(e===t.value)}))}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}fromJSON(e){this.clear();const{grid:t,activePanel:i}=e;try{const e=[],n=this.width,s=this.height;if(this.gridview.deserialize(t,{fromJSON:t=>{const{data:i}=t,n=this.options.createComponent({id:i.id,name:i.component});return e.push((()=>n.init({params:i.params,minimumWidth:i.minimumWidth,maximumWidth:i.maximumWidth,minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,priority:i.priority,snap:!!i.snap,accessor:this,isVisible:t.visible}))),this._onDidAddGroup.fire(n),this.registerPanel(n),n}}),this.layout(n,s,!0),e.forEach((e=>e())),"string"==typeof i){const e=this.getPanel(i);e&&this.doSetGroupActive(e)}}catch(n){for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw this.clear(),n}this._onDidLayoutfromJSON.fire()}clear(){const e=this.activeGroup,t=Array.from(this._groups.values());for(const i of t)i.disposable.dispose(),this.doRemoveGroup(i.value,{skipActive:!0});e&&this.doSetGroupActive(void 0),this.gridview.clear()}movePanel(e,t){var i;let n;const s=this.gridview.remove(e),o=null===(i=this._groups.get(t.reference))||void 0===i?void 0:i.value;if(!o)throw new Error(`reference group ${t.reference} does not exist`);const r=he(t.direction);if("center"===r)throw new Error(`${r} not supported as an option`);{const e=ee(o.element);n=te(this.gridview.orientation,e,r)}this.doAddGroup(s,n,t.size)}addPanel(e){var t,i,n,s;let o=null!==(t=e.location)&&void 0!==t?t:[0];if(null===(i=e.position)||void 0===i?void 0:i.referencePanel){const t=null===(n=this._groups.get(e.position.referencePanel))||void 0===n?void 0:n.value;if(!t)throw new Error(`reference group ${e.position.referencePanel} does not exist`);const i=he(e.position.direction);if("center"===i)throw new Error(`${i} not supported as an option`);{const e=ee(t.element);o=te(this.gridview.orientation,e,i)}}const r=this.options.createComponent({id:e.id,name:e.component});return r.init({params:null!==(s=e.params)&&void 0!==s?s:{},minimumWidth:e.minimumWidth,maximumWidth:e.maximumWidth,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,priority:e.priority,snap:!!e.snap,accessor:this,isVisible:!0}),this.doAddGroup(r,o,e.size),this.registerPanel(r),this.doSetGroupActive(r),r}registerPanel(e){const t=new w(e.api.onDidFocusChange((t=>{t.isFocused&&this._groups.forEach((t=>{const i=t.value;i!==e?i.setActive(!1):i.setActive(!0)}))})));this._groups.set(e.id,{value:e,disposable:t})}moveGroup(e,t,i){const n=this.getPanel(t);if(!n)throw new Error("invalid operation");const s=ee(e.element),o=te(this.gridview.orientation,s,i),[r,a]=V(o),h=ee(n.element),[d,l]=V(h);if(N(d,r))return void this.gridview.moveView(d,l,a);const p=this.doRemoveGroup(n,{skipActive:!0,skipDispose:!0}),u=ee(e.element),m=te(this.gridview.orientation,u,i);this.doAddGroup(p,m)}removeGroup(e){super.removeGroup(e)}dispose(){super.dispose(),this._onDidLayoutfromJSON.dispose()}}class It extends re{get panels(){return this.splitview.getViews()}get options(){return this._options}get length(){return this._panels.size}get orientation(){return this.splitview.orientation}get splitview(){return this._splitview}set splitview(e){this._splitview&&this._splitview.dispose(),this._splitview=e,this._splitviewChangeDisposable.value=new w(this._splitview.onDidSashEnd((()=>{this._onDidLayoutChange.fire(void 0)})),this._splitview.onDidAddView((e=>this._onDidAddView.fire(e))),this._splitview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get height(){return this.splitview.orientation===F.HORIZONTAL?this.splitview.orthogonalSize:this.splitview.size}get width(){return this.splitview.orientation===F.HORIZONTAL?this.splitview.size:this.splitview.orthogonalSize}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._splitviewChangeDisposable=new f,this._panels=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.splitview=new $(this.element,t),this.addDisposables(this._onDidAddView,this._onDidLayoutfromJSON,this._onDidRemoveView,this._onDidLayoutChange)}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),"string"==typeof e.orientation&&(this.splitview.orientation=e.orientation),this._options=Object.assign(Object.assign({},this.options),e),this.splitview.layout(this.splitview.size,this.splitview.orthogonalSize)}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}movePanel(e,t){this.splitview.moveView(e,t)}setVisible(e,t){const i=this.panels.indexOf(e);this.splitview.setViewVisible(i,t)}setActive(e,t){this._activePanel=e,this.panels.filter((t=>t!==e)).forEach((e=>{e.api._onDidActiveChange.fire({isActive:!1}),t||e.focus()})),e.api._onDidActiveChange.fire({isActive:!0}),t||e.focus()}removePanel(e,t){const i=this._panels.get(e.id);if(!i)throw new Error(`unknown splitview panel ${e.id}`);i.dispose(),this._panels.delete(e.id);const n=this.panels.findIndex((t=>t===e));this.splitview.removeView(n,t).dispose();const s=this.panels;s.length>0&&this.setActive(s[s.length-1])}getPanel(e){return this.panels.find((t=>t.id===e))}addPanel(e){var t;if(this._panels.has(e.id))throw new Error(`panel ${e.id} already exists`);const i=this.options.createComponent({id:e.id,name:e.component});i.orientation=this.splitview.orientation,i.init({params:null!==(t=e.params)&&void 0!==t?t:{},minimumSize:e.minimumSize,maximumSize:e.maximumSize,snap:e.snap,priority:e.priority,accessor:this});const n="number"==typeof e.size?e.size:J.Distribute,s="number"==typeof e.index?e.index:void 0;return this.splitview.addView(i,n,s),this.doAddView(i),this.setActive(i),i}layout(e,t){const[i,n]=this.splitview.orientation===F.HORIZONTAL?[e,t]:[t,e];this.splitview.layout(i,n)}doAddView(e){const t=e.api.onDidFocusChange((t=>{t.isFocused&&this.setActive(e,!0)}));this._panels.set(e.id,t)}toJSON(){var e;return{views:this.splitview.getViews().map(((e,t)=>({size:this.splitview.getViewSize(t),data:e.toJSON(),snap:!!e.snap,priority:e.priority}))),activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,size:this.splitview.size,orientation:this.splitview.orientation}}fromJSON(e){this.clear();const{views:t,orientation:i,size:n,activeView:s}=e,o=[],r=this.width,a=this.height;if(this.splitview=new $(this.element,{orientation:i,proportionalLayout:this.options.proportionalLayout,descriptor:{size:n,views:t.map((e=>{const t=e.data;if(this._panels.has(t.id))throw new Error(`panel ${t.id} already exists`);const n=this.options.createComponent({id:t.id,name:t.component});return o.push((()=>{var i;n.init({params:null!==(i=t.params)&&void 0!==i?i:{},minimumSize:t.minimumSize,maximumSize:t.maximumSize,snap:e.snap,priority:e.priority,accessor:this})})),n.orientation=i,this.doAddView(n),setTimeout((()=>{this._onDidAddView.fire(n)}),0),{size:e.size,view:n}}))}}),this.layout(r,a),o.forEach((e=>e())),"string"==typeof s){const e=this.getPanel(s);e&&this.setActive(e)}this._onDidLayoutfromJSON.fire()}clear(){for(const e of this._panels.values())e.dispose();for(this._panels.clear();this.splitview.length>0;){this.splitview.removeView(0,J.Distribute,!0).dispose()}}dispose(){for(const t of this._panels.values())t.dispose();this._panels.clear();const e=this.splitview.getViews();this._splitviewChangeDisposable.dispose(),this.splitview.dispose();for(const t of e)t.dispose();this.element.remove(),super.dispose()}}class Vt extends w{get element(){return this._element}constructor(){super(),this._expandedIcon=We({width:"11",height:"11",viewbox:"0 0 24 15",path:"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z"}),this._collapsedIcon=He(),this.disposable=new f,this.apiRef={api:null},this._element=document.createElement("div"),this.element.className="dv-default-header",this._content=document.createElement("span"),this._expander=document.createElement("div"),this._expander.className="dv-pane-header-icon",this.element.appendChild(this._expander),this.element.appendChild(this._content),this.addDisposables(g(this._element,"click",(()=>{var e;null===(e=this.apiRef.api)||void 0===e||e.setExpanded(!this.apiRef.api.isExpanded)})))}init(e){this.apiRef.api=e.api,this._content.textContent=e.title,this.updateIcon(),this.disposable.value=e.api.onDidExpansionChange((()=>{this.updateIcon()}))}updateIcon(){var e;const t=!!(null===(e=this.apiRef.api)||void 0===e?void 0:e.isExpanded);S(this._expander,"collapsed",!t),t?(this._expander.contains(this._collapsedIcon)&&this._collapsedIcon.remove(),this._expander.contains(this._expandedIcon)||this._expander.appendChild(this._expandedIcon)):(this._expander.contains(this._expandedIcon)&&this._expandedIcon.remove(),this._expander.contains(this._collapsedIcon)||this._expander.appendChild(this._collapsedIcon))}update(e){}dispose(){this.disposable.dispose(),super.dispose()}}const Nt=R(),Tt=Number.MAX_SAFE_INTEGER;class Lt extends Ge{constructor(e){super({accessor:e.accessor,id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,disableDnd:e.disableDnd,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this.options=e}getBodyComponent(){return this.options.body}getHeaderComponent(){return this.options.header}}class kt extends re{get id(){return this._id}get panels(){return this.paneview.getPanes()}set paneview(e){this._paneview=e,this._disposable.value=new w(this._paneview.onDidChange((()=>{this._onDidLayoutChange.fire(void 0)})),this._paneview.onDidAddView((e=>this._onDidAddView.fire(e))),this._paneview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get paneview(){return this._paneview}get minimumSize(){return this.paneview.minimumSize}get maximumSize(){return this.paneview.maximumSize}get height(){return this.paneview.orientation===F.HORIZONTAL?this.paneview.orthogonalSize:this.paneview.size}get width(){return this.paneview.orientation===F.HORIZONTAL?this.paneview.size:this.paneview.orthogonalSize}get options(){return this._options}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=Nt.next(),this._disposable=new f,this._viewDisposables=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.element.style.height="100%",this.element.style.width="100%",this.addDisposables(this._onDidLayoutChange,this._onDidLayoutfromJSON,this._onDidDrop,this._onDidAddView,this._onDidRemoveView,this._onUnhandledDragOverEvent),this._classNames=new I(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.paneview=new Z(this.element,{orientation:F.VERTICAL}),this.addDisposables(this._disposable)}setVisible(e,t){const i=this.panels.indexOf(e);this.paneview.setViewVisible(i,t)}focus(){}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),this._options=Object.assign(Object.assign({},this.options),e)}addPanel(e){var t,i;const n=this.options.createComponent({id:e.id,name:e.component});let s;e.headerComponent&&this.options.createHeaderComponent&&(s=this.options.createHeaderComponent({id:e.id,name:e.headerComponent})),s||(s=new Vt);const o=new Lt({id:e.id,component:e.component,headerComponent:e.headerComponent,header:s,body:n,orientation:F.VERTICAL,isExpanded:!!e.isExpanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:0,maximumBodySize:Tt});this.doAddPanel(o);const r="number"==typeof e.size?e.size:J.Distribute,a="number"==typeof e.index?e.index:void 0;return o.init({params:null!==(i=e.params)&&void 0!==i?i:{},minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize,isExpanded:e.isExpanded,title:e.title,containerApi:new pe(this),accessor:this}),this.paneview.addPane(o,r,a),o.orientation=this.paneview.orientation,o}removePanel(e){const t=this.panels.findIndex((t=>t===e));this.paneview.removePane(t),this.doRemovePanel(e)}movePanel(e,t){this.paneview.moveView(e,t)}getPanel(e){return this.panels.find((t=>t.id===e))}layout(e,t){const[i,n]=this.paneview.orientation===F.HORIZONTAL?[e,t]:[t,e];this.paneview.layout(i,n)}toJSON(){const e=e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e;return{views:this.paneview.getPanes().map(((t,i)=>{return{size:this.paneview.getViewSize(i),data:t.toJSON(),minimumSize:(n=t.minimumBodySize,n<=0?void 0:n),maximumSize:e(t.maximumBodySize),headerSize:t.headerSize,expanded:t.isExpanded()};var n})),size:this.paneview.size}}fromJSON(e){this.clear();const{views:t,size:i}=e,n=[],s=this.width,o=this.height;this.paneview=new Z(this.element,{orientation:F.VERTICAL,descriptor:{size:i,views:t.map((e=>{var t,i,s;const o=e.data,r=this.options.createComponent({id:o.id,name:o.component});let a;o.headerComponent&&this.options.createHeaderComponent&&(a=this.options.createHeaderComponent({id:o.id,name:o.headerComponent})),a||(a=new Vt);const h=new Lt({id:o.id,component:o.component,headerComponent:o.headerComponent,header:a,body:r,orientation:F.VERTICAL,isExpanded:!!e.expanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:null!==(i=e.minimumSize)&&void 0!==i?i:0,maximumBodySize:null!==(s=e.maximumSize)&&void 0!==s?s:Tt});return this.doAddPanel(h),n.push((()=>{var t;h.init({params:null!==(t=o.params)&&void 0!==t?t:{},minimumBodySize:e.minimumSize,maximumBodySize:e.maximumSize,title:o.title,isExpanded:!!e.expanded,containerApi:new pe(this),accessor:this}),h.orientation=this.paneview.orientation})),setTimeout((()=>{this._onDidAddView.fire(h)}),0),{size:e.size,view:h}}))}}),this.layout(s,o),n.forEach((e=>e())),this._onDidLayoutfromJSON.fire()}clear(){for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.paneview.dispose()}doAddPanel(e){const t=new w(e.onDidDrop((e=>{this._onDidDrop.fire(e)})),e.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})));this._viewDisposables.set(e.id,t)}doRemovePanel(e){const t=this._viewDisposables.get(e.id);t&&(t.dispose(),this._viewDisposables.delete(e.id))}dispose(){super.dispose();for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.element.remove(),this.paneview.dispose()}}class Mt extends Ee{get priority(){return this._priority}set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){const e="function"==typeof this._minimumSize?this._minimumSize():this._minimumSize;return e!==this._evaluatedMinimumSize&&(this._evaluatedMinimumSize=e,this.updateConstraints()),e}get maximumSize(){const e="function"==typeof this._maximumSize?this._maximumSize():this._maximumSize;return e!==this._evaluatedMaximumSize&&(this._evaluatedMaximumSize=e,this.updateConstraints()),e}get snap(){return this._snap}constructor(e,t){super(e,t,new ze(e,t)),this._evaluatedMinimumSize=0,this._evaluatedMaximumSize=Number.POSITIVE_INFINITY,this._minimumSize=0,this._maximumSize=Number.POSITIVE_INFINITY,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this.api.initialize(this),this.addDisposables(this._onDidChange,this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.setActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumSize&&"function"!=typeof e.minimumSize||(this._minimumSize=e.minimumSize),"number"!=typeof e.maximumSize&&"function"!=typeof e.maximumSize||(this._maximumSize=e.maximumSize),this.updateConstraints()})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})))}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}layout(e,t){const[i,n]=this.orientation===F.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){super.init(e),this._priority=e.priority,e.minimumSize&&(this._minimumSize=e.minimumSize),e.maximumSize&&(this._maximumSize=e.maximumSize),e.snap&&(this._snap=e.snap)}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{minimumSize:(e=this.minimumSize,e<=0?void 0:e),maximumSize:(e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e)(this.maximumSize)});var e}updateConstraints(){this.api._onDidConstraintsChange.fire({maximumSize:this._evaluatedMaximumSize,minimumSize:this._evaluatedMinimumSize})}}function Rt(e,t){return new Gt(e,t).api}function Wt(e,t){const i=new It(e,t);return new le(i)}function Ht(e,t){const i=new Ot(e,t);return new ue(i)}function Ft(e,t){const i=new kt(e,t);return new pe(i)}},1800:(e,t,i)=>{i.r(t),i.d(t,{attach:()=>r});var n=i(5399);class s{get element(){return this._element}constructor(){this._element=document.createElement("div"),this._element.style.display="flex",this._element.style.justifyContent="center",this._element.style.alignItems="center",this._element.style.color="white",this._element.style.height="100%",this._titleElement=document.createElement("span"),this._paramsElement=document.createElement("span"),this._element.appendChild(this._titleElement)}init(e){this.render(e.params)}update(e){this.render(e.params)}render(e){this._titleElement.textContent=e.title,e.x?(this._paramsElement.parentElement||this._element.appendChild(this._paramsElement),this._paramsElement.textContent=e.x):this._paramsElement.parentElement?.removeChild(this._paramsElement)}}class o{get element(){return this._element}constructor(){this._element=document.createElement("div"),this._element.className="my-custom-tab",this._title=document.createElement("span");const e=document.createElement("span");e.style.flexGrow="1";const t=document.createElement("span");t.className="my-custom-tab-icon material-symbols-outlined",t.textContent="minimize";const i=document.createElement("span");i.className="my-custom-tab-icon material-symbols-outlined",i.textContent="maximize";const n=document.createElement("span");n.className="my-custom-tab-icon material-symbols-outlined",n.textContent="close",this._element.appendChild(this._title),this._element.appendChild(e),this._element.appendChild(t),this._element.appendChild(i),this._element.appendChild(n)}init(e){this.render(e.params)}update(e){this.render(e.params)}render(e){this._title=e.title}}function r(e){const t=document.createElement("div");t.className="dockview-theme-abyss",t.style.height="100%",t.style.width="100%";const i=new n.CJ({components:{default:s},tabComponents:{default:o},singleTabMode:"fullwidth",parentElement:t});e.appendChild(t);const{clientWidth:r,clientHeight:a}=e;i.layout(r,a);i.addPanel({id:"panel_1",component:"default",tabComponent:"default",params:{title:"Window 1"}}).group.locked=!0;i.addPanel({id:"panel_2",component:"default",tabComponent:"default",params:{title:"Window 2"},position:{direction:"right"}}).group.locked=!0;return i.addPanel({id:"panel_3",component:"default",tabComponent:"default",params:{title:"Window 3"},position:{direction:"below"}}).group.locked=!0,{dispose:()=>{i.dispose(),t.remove()}}}}}]); +//# sourceMappingURL=1800.c393a774.js.map \ No newline at end of file diff --git a/assets/js/1800.80e2cff8.js.map b/assets/js/1800.c393a774.js.map similarity index 99% rename from assets/js/1800.80e2cff8.js.map rename to assets/js/1800.c393a774.js.map index 08000c16c..26a727136 100644 --- a/assets/js/1800.80e2cff8.js.map +++ b/assets/js/1800.c393a774.js.map @@ -1 +1 @@ -{"version":3,"file":"assets/js/1800.80e2cff8.js","mappings":"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","sources":["webpack://dockview-docs/../dockview-core/dist/esm/dnd/dataTransfer.js","webpack://dockview-docs/../dockview-core/dist/esm/events.js","webpack://dockview-docs/../dockview-core/dist/esm/lifecycle.js","webpack://dockview-docs/../dockview-core/dist/esm/dom.js","webpack://dockview-docs/../dockview-core/dist/esm/array.js","webpack://dockview-docs/../dockview-core/dist/esm/math.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/viewItem.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/leafNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/branchNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/resizable.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/baseComponentGridview.js","webpack://dockview-docs/../dockview-core/dist/esm/api/component.api.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/abstractDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dnd.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/droptarget.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/api/panelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/splitviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/paneviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/basePanelView.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/panel/content.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/ghost.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/tab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/events.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/groupDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/scrollbar.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabs.js","webpack://dockview-docs/../dockview-core/dist/esm/svg.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabOverflowControl.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/gridviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/theme.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/deserializer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/watermark/watermark.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlay.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/constants.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlayRenderContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/popoutWindow.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/strictEventsSequencing.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/popupService.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dropTargetAnchorContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/entryPoints.js","webpack://dockview-docs/./sandboxes/javascript/fullwidthtab-dockview/src/app.ts"],"sourcesContent":["class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nexport class AcceptableEvent {\n constructor() {\n this._isAccepted = false;\n }\n get isAccepted() {\n return this._isAccepted;\n }\n accept() {\n this._isAccepted = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn('dockview: stacktrace', this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `dockview: listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n var _a;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) {\n this._last = e;\n }\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn('dockview: stacktrace', (_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\n/**\n *\n * Event Emitter that fires events from a Microtask callback, only one event will fire per event-loop cycle.\n *\n * It's kind of like using an `asapScheduler` in RxJs with additional logic to only fire once per event-loop cycle.\n * This implementation exists to avoid external dependencies.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask\n * @see https://rxjs.dev/api/index/const/asapScheduler\n */\nexport class AsapEvent {\n constructor() {\n this._onFired = new Emitter();\n this._currentFireCount = 0;\n this._queued = false;\n this.onEvent = (e) => {\n /**\n * when the event is first subscribed to take note of the current fire count\n */\n const fireCountAtTimeOfEventSubscription = this._currentFireCount;\n return this._onFired.event(() => {\n /**\n * if the current fire count is greater than the fire count at event subscription\n * then the event has been fired since we subscribed and it's ok to \"on_next\" the event.\n *\n * if the count is not greater then what we are recieving is an event from the microtask\n * queue that was triggered before we actually subscribed and therfore we should ignore it.\n */\n if (this._currentFireCount > fireCountAtTimeOfEventSubscription) {\n e();\n }\n });\n };\n }\n fire() {\n this._currentFireCount++;\n if (this._queued) {\n return;\n }\n this._queued = true;\n queueMicrotask(() => {\n this._queued = false;\n this._onFired.fire();\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","import { Emitter, addDisposableListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class OverflowObserver extends CompositeDisposable {\n constructor(el) {\n super();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._value = null;\n this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {\n const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;\n const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;\n this._value = { hasScrollX, hasScrollY };\n this._onDidChange.fire(this._value);\n }));\n }\n}\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag, document) {\n return Array.prototype.slice.call(document.querySelectorAll(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\nexport function addTestId(element, id) {\n element.setAttribute('data-testid', id);\n}\n/**\n * Should be more efficient than element.querySelectorAll(\"*\") since there\n * is no need to store every element in-memory using this approach\n */\nfunction allTagsNamesInclusiveOfShadowDoms(tagNames) {\n const iframes = [];\n function findIframesInNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (tagNames.includes(node.tagName)) {\n iframes.push(node);\n }\n if (node.shadowRoot) {\n findIframesInNode(node.shadowRoot);\n }\n for (const child of node.children) {\n findIframesInNode(child);\n }\n }\n }\n findIframesInNode(document.documentElement);\n return iframes;\n}\nexport function disableIframePointEvents(rootNode = document) {\n const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);\n const original = new WeakMap(); // don't hold onto HTMLElement references longer than required\n for (const iframe of iframes) {\n original.set(iframe, iframe.style.pointerEvents);\n iframe.style.pointerEvents = 'none';\n }\n return {\n release: () => {\n var _a;\n for (const iframe of iframes) {\n iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';\n }\n iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required\n },\n };\n}\nexport function getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nexport class Classnames {\n constructor(element) {\n this.element = element;\n this._classNames = [];\n }\n setClassNames(classNames) {\n for (const className of this._classNames) {\n toggleClass(this.element, className, false);\n }\n this._classNames = classNames\n .split(' ')\n .filter((v) => v.trim().length > 0);\n for (const className of this._classNames) {\n toggleClass(this.element, className, true);\n }\n }\n}\nconst DEBOUCE_DELAY = 100;\nexport function isChildEntirelyVisibleWithinParent(child, parent) {\n //\n const childPosition = getDomNodePagePosition(child);\n const parentPosition = getDomNodePagePosition(parent);\n if (childPosition.left < parentPosition.left) {\n return false;\n }\n if (childPosition.left + childPosition.width >\n parentPosition.left + parentPosition.width) {\n return false;\n }\n return true;\n}\nexport function onDidWindowMoveEnd(window) {\n const emitter = new Emitter();\n let previousScreenX = window.screenX;\n let previousScreenY = window.screenY;\n let timeout;\n const checkMovement = () => {\n if (window.closed) {\n return;\n }\n const currentScreenX = window.screenX;\n const currentScreenY = window.screenY;\n if (currentScreenX !== previousScreenX ||\n currentScreenY !== previousScreenY) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n emitter.fire();\n }, DEBOUCE_DELAY);\n previousScreenX = currentScreenX;\n previousScreenY = currentScreenY;\n }\n requestAnimationFrame(checkMovement);\n };\n checkMovement();\n return emitter;\n}\nexport function onDidWindowResizeEnd(element, cb) {\n let resizeTimeout;\n const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n cb();\n }, DEBOUCE_DELAY);\n }));\n return disposable;\n}\nexport function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {\n const buffer = options.buffer;\n const rect = element.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n let translateX = 0;\n let translateY = 0;\n const left = rect.left - rootRect.left;\n const top = rect.top - rootRect.top;\n const bottom = rect.bottom - rootRect.bottom;\n const right = rect.right - rootRect.right;\n // Check horizontal overflow\n if (left < buffer) {\n translateX = buffer - left;\n }\n else if (right > buffer) {\n translateX = -buffer - right;\n }\n // Check vertical overflow\n if (top < buffer) {\n translateY = buffer - top;\n }\n else if (bottom > buffer) {\n translateY = -bottom - buffer;\n }\n // Apply the translation if needed\n if (translateX !== 0 || translateY !== 0) {\n element.style.transform = `translate(${translateX}px, ${translateY}px)`;\n }\n}\nexport function findRelativeZIndexParent(el) {\n let tmp = el;\n while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {\n tmp = tmp.parentElement;\n }\n return tmp;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n /**\n * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle\n * cases where `min` > `max` and in those cases return `min`.\n */\n return min;\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'dv-horizontal', 'dv-vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);\n }\n constructor(container, options) {\n var _a, _b;\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._margin = 0;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = this.createContainer();\n this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'dv-separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'dv-separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'dv-view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'dv-sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = disableIframePointEvents();\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n iframes.release();\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n /**\n * Margin explain:\n *\n * For `n` views in a splitview there will be `n-1` margins `m`.\n *\n * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.\n *\n * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.\n */\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.updateSashEnablement();\n if (this.viewItems.length === 0) {\n return;\n }\n const visibleViewItems = this.viewItems.filter((i) => i.visible);\n const sashCount = Math.max(0, visibleViewItems.length - 1);\n const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);\n let totalLeftOffset = 0;\n const viewLeftOffsets = [];\n const sashWidth = 4; // hardcoded in css\n const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {\n const flag = viewItem.visible ? 1 : 0;\n if (i === 0) {\n arr.push(flag);\n }\n else {\n arr.push(arr[i - 1] + flag);\n }\n return arr;\n }, []);\n // calculate both view and cash positions\n this.viewItems.forEach((view, i) => {\n totalLeftOffset += this.viewItems[i].size;\n viewLeftOffsets.push(totalLeftOffset);\n const size = view.visible ? view.size - marginReducedSize : 0;\n const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);\n const offset = i === 0 || visiblePanelsBeforeThisView === 0\n ? 0\n : viewLeftOffsets[i - 1] +\n (visiblePanelsBeforeThisView / sashCount) *\n marginReducedSize;\n if (i < this.viewItems.length - 1) {\n // calculate sash position\n const newSize = view.visible\n ? offset + size - sashWidth / 2 + this.margin / 2\n : offset;\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${newSize}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${newSize}px`;\n }\n }\n // calculate view position\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${size}px`;\n view.container.style.left = `${offset}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${size}px`;\n view.container.style.top = `${offset}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size - marginReducedSize, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'dv-view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'dv-sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical';\n element.className = `dv-split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","export const PROPERTY_KEYS_SPLITVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n orientation: undefined,\n descriptor: undefined,\n proportionalLayout: undefined,\n styles: undefined,\n margin: undefined,\n disableAutoResizing: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'dv-pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'dv-animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'dv-animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n get margin() {\n return this.splitview.margin;\n }\n set margin(value) {\n this.splitview.margin = value;\n this.children.forEach((child) => {\n if (child instanceof BranchNode) {\n child.margin = value;\n }\n });\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'dv-branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n margin,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n margin,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(_visible) {\n // noop\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n // }\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire({ visible });\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange(({ visible }) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction cloneNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(node.orientation, node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n result.addChild(cloneNode(child, child.size, child.orthogonalSize), child.size, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, node.orientation, orthogonalSize);\n }\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bdv-grid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n this.root.margin = value;\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n serializeBranchNode(this.getView(), this.orientation);\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire({\n view: node.view,\n isMaximized: true,\n });\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n const tmp = this._maximizedNode.leaf;\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire({\n view: tmp.view,\n isMaximized: false,\n });\n }\n serialize() {\n const maximizedView = this.maximizedView();\n let maxmizedViewLocation;\n if (maximizedView) {\n /**\n * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid\n * which is represented as a branch of indices\n */\n maxmizedViewLocation = getGridLocation(maximizedView.element);\n }\n if (this.hasMaximizedView()) {\n /**\n * the saved layout cannot be in its maxmized state otherwise all of the underlying\n * view dimensions will be wrong\n *\n * To counteract this we temporaily remove the maximized view to compute the serialized output\n * of the grid before adding back the maxmized view as to not alter the layout from the users\n * perspective when `.toJSON()` is called\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n const resullt = {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n if (maxmizedViewLocation) {\n resullt.maximizedNode = {\n location: maxmizedViewLocation,\n };\n }\n if (maximizedView) {\n // replace any maximzied view that was removed for serialization purposes\n this.maximizeView(maximizedView);\n }\n return resullt;\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this._onDidViewVisibilityChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n /**\n * The deserialied layout must be positioned through this.layout(...)\n * before any maximizedNode can be positioned\n */\n this.layout(json.width, json.height);\n if (json.maximizedNode) {\n const location = json.maximizedNode.location;\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n this.maximizeView(node.view);\n }\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n var _a;\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this.locked, this.margin, children);\n }\n else {\n const view = deserializer.fromJSON(node);\n if (typeof node.visible === 'boolean') {\n (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);\n }\n result = new LeafNode(view, orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n normalize() {\n if (!this._root) {\n return;\n }\n if (this._root.children.length !== 1) {\n return;\n }\n const oldRoot = this.root;\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n if (childReference instanceof LeafNode) {\n return;\n }\n oldRoot.element.remove();\n const child = oldRoot.removeChild(0); // Remove child to prevent double disposal\n oldRoot.dispose(); // Dispose old root (won't dispose removed child)\n child.dispose(); // Dispose the removed child\n this._root = cloneNode(childReference, childReference.size, childReference.orthogonalSize);\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation, locked, margin) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._margin = 0;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidViewVisibilityChange = new Emitter();\n this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'dv-grid-view';\n this._locked = locked !== null && locked !== void 0 ? locked : false;\n this._margin = margin !== null && margin !== void 0 ? margin : 0;\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n this._onDidViewVisibilityChange.fire();\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","export const PROPERTY_KEYS_GRIDVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n proportionalLayout: undefined,\n orientation: undefined,\n hideBorders: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, AsapEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidMaximizedChange = new Emitter();\n this.onDidMaximizedChange = this._onDidMaximizedChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new AsapEvent();\n this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;\n this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();\n this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {\n this._onDidMaximizedChange.fire({\n panel: event.view,\n isMaximized: event.isMaximized,\n });\n }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.layout(this.width, this.height, true);\n }), Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._onDidMaximizedChange, this._onDidViewVisibilityChangeMicroTaskQueue, this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._bufferOnDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n updateOptions(options) {\n var _a, _b, _c, _d;\n if (typeof options.proportionalLayout === 'boolean') {\n // this.gridview.proportionalLayout = options.proportionalLayout; // not supported\n }\n if (options.orientation) {\n this.gridview.orientation = options.orientation;\n }\n if ('styles' in options) {\n // this.gridview.styles = options.styles; // not supported\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;\n }\n if ('locked' in options) {\n this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;\n }\n if ('margin' in options) {\n this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;\n }\n if ('className' in options) {\n this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');\n }\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize || width !== this.width || height !== this.height;\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","export class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n get onDidMovePanel() {\n return this.component.onDidMovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n get onDidPopoutGroupSizeChange() {\n return this.component.onDidPopoutGroupSizeChange;\n }\n get onDidPopoutGroupPositionChange() {\n return this.component.onDidPopoutGroupPositionChange;\n }\n get onDidOpenPopoutWindowFail() {\n return this.component.onDidOpenPopoutWindowFail;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, options) {\n return this.component.addFloatingGroup(item, options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\n","import { disableIframePointEvents } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el, disabled) {\n super();\n this.el = el;\n this.disabled = disabled;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n setDisabled(disabled) {\n this.disabled = disabled;\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event) || this.disabled) {\n event.preventDefault();\n return;\n }\n const iframes = disableIframePointEvents();\n this.pointerEventsDisposable.value = {\n dispose: () => {\n iframes.release();\n },\n };\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n setTimeout(() => {\n this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing\n }, 0);\n }));\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nfunction setGPUOptimizedBounds(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Use traditional positioning but maintain GPU layer\n element.style.top = topPx;\n element.style.left = leftPx;\n element.style.width = widthPx;\n element.style.height = heightPx;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction setGPUOptimizedBoundsFromStrings(element, bounds) {\n const { top, left, width, height } = bounds;\n // Use traditional positioning but maintain GPU layer\n element.style.top = top;\n element.style.left = left;\n element.style.width = width;\n element.style.height = height;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction checkBoundsChanged(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Check if position or size changed (back to traditional method)\n return element.style.top !== topPx ||\n element.style.left !== leftPx ||\n element.style.width !== widthPx ||\n element.style.height !== heightPx;\n}\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._disabled = false;\n // use a set to take advantage of #.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => {\n var _a, _b, _c;\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();\n },\n onDragOver: (e) => {\n var _a, _b, _c, _d, _e, _f, _g;\n Droptarget.ACTUAL_TARGET = this;\n const overrideTarget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this._acceptedTargetZonesSet.size === 0) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;\n const width = target.offsetWidth;\n const height = target.offsetHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;\n const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n if (!this.options.canDisplayOverlay(e, quadrant)) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (overrideTarget) {\n //\n }\n else if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'dv-drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'dv-drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n target.classList.add('dv-drop-target');\n target.append(this.targetElement);\n // this.overlayElement.style.opacity = '0';\n // requestAnimationFrame(() => {\n // if (this.overlayElement) {\n // this.overlayElement.style.opacity = '';\n // }\n // });\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target) {\n return;\n }\n this.removeDropTarget();\n },\n onDragEnd: (e) => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target && Droptarget.ACTUAL_TARGET === this) {\n if (this._state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({\n position: this._state,\n nativeEvent: e,\n });\n }\n }\n this.removeDropTarget();\n target === null || target === void 0 ? void 0 : target.clear();\n },\n onDrop: (e) => {\n var _a, _b, _c;\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b, _c, _d, _e, _f, _g;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!target && !this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n if (target) {\n const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;\n const elBox = outlineEl.getBoundingClientRect();\n const ta = target.getElements(undefined, outlineEl);\n const el = ta.root;\n const overlay = ta.overlay;\n const bigbox = el.getBoundingClientRect();\n const rootTop = elBox.top - bigbox.top;\n const rootLeft = elBox.left - bigbox.left;\n const box = {\n top: rootTop,\n left: rootLeft,\n width: width,\n height: height,\n };\n if (rightClass) {\n box.left = rootLeft + width * (1 - size);\n box.width = width * size;\n }\n else if (leftClass) {\n box.width = width * size;\n }\n else if (topClass) {\n box.height = height * size;\n }\n else if (bottomClass) {\n box.top = rootTop + height * (1 - size);\n box.height = height * size;\n }\n if (isSmallX && isLeft) {\n box.width = 4;\n }\n if (isSmallX && isRight) {\n box.left = rootLeft + width - 4;\n box.width = 4;\n }\n // Use GPU-optimized bounds checking and setting\n if (!checkBoundsChanged(overlay, box)) {\n return;\n }\n setGPUOptimizedBounds(overlay, box);\n overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;\n toggleClass(overlay, 'dv-drop-target-left', isLeft);\n toggleClass(overlay, 'dv-drop-target-right', isRight);\n toggleClass(overlay, 'dv-drop-target-top', isTop);\n toggleClass(overlay, 'dv-drop-target-bottom', isBottom);\n toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');\n if (ta.changed) {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);\n setTimeout(() => {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);\n }, 10);\n }\n return;\n }\n if (!this.overlayElement) {\n return;\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n setGPUOptimizedBoundsFromStrings(this.overlayElement, box);\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n var _a;\n if (this.targetElement) {\n this._state = undefined;\n (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');\n this.targetElement.remove();\n this.targetElement = undefined;\n this.overlayElement = undefined;\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { AcceptableEvent } from '../events';\nexport const PROPERTY_KEYS_PANEVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n disableDnd: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\nexport class PaneviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, position, getData, panel) {\n super();\n this.nativeEvent = nativeEvent;\n this.position = position;\n this.getData = getData;\n this.panel = panel;\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id, component) {\n super();\n this.id = id;\n this.component = component;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this._parameters = {};\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onDidParametersChange = new Emitter();\n this.onDidParametersChange = this._onDidParametersChange.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);\n }\n getParameters() {\n return this._parameters;\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {\n this._parameters = parameters;\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onDidParametersChange.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id, component) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id, component) {\n super(id, component);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(options) {\n super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = 0;\n this._size = 0;\n this._isExpanded = false;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this.headerSize = options.headerSize;\n this.headerComponent = options.headerComponent;\n this._minimumBodySize = options.minimumBodySize;\n this._maximumBodySize = options.maximumBodySize;\n this._isExpanded = options.isExpanded;\n this._headerVisible = options.isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = options.orientation;\n this.element.classList.add('dv-pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'dv-pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'dv-pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewUnhandledDragOverEvent, } from './options';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(options) {\n super({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n isHeaderVisible: true,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.accessor = options.accessor;\n this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);\n if (!options.disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event, position) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n const firedEvent = new PaneviewUnhandledDragOverEvent(event, position, getPaneData, this);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n const target = group.dropTargetContainer;\n this.dropTarget = new Droptarget(this.element, {\n getOverlayOutline: () => {\n var _a;\n return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'\n ? this.element.parentElement\n : null;\n },\n className: 'dv-drop-target-content',\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n return true;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n getOverrideTarget: target ? () => target.model : undefined,\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisible':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n default:\n throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisible') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement, options) {\n var _a, _b;\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n // move the element off-screen initially otherwise it may in some cases be rendered at (0,0) momentarily\n ghostElement.style.top = '-9999px';\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nimport { addGhostImage } from '../../../dnd/ghost';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onPointDown = new Emitter();\n this.onPointerDown = this._onPointDown.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tab';\n this._element.tabIndex = 0;\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this.element, 'dv-inactive-tab', true);\n this.dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['left', 'right'],\n overlayModel: { activationSize: { value: 50, type: 'percentage' } },\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, this.dragHandler.onDragStart((event) => {\n if (event.dataTransfer) {\n const style = getComputedStyle(this.element);\n const newNode = this.element.cloneNode(true);\n Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));\n newNode.style.position = 'absolute';\n addGhostImage(event.dataTransfer, newNode, {\n y: -10,\n x: 30,\n });\n }\n this._onDragStart.fire(event);\n }), this.dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {\n this._onPointDown.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'dv-active-tab', isActive);\n toggleClass(this.element, 'dv-inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n this.dragHandler.setDisabled(!!this.accessor.options.disableDnd);\n }\n dispose() {\n super.dispose();\n }\n}\n","export class WillShowOverlayLocationEvent {\n get kind() {\n return this.options.kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n get panel() {\n return this.options.panel;\n }\n get api() {\n return this.options.api;\n }\n get group() {\n return this.options.group;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n getData() {\n return this.options.getData();\n }\n constructor(event, options) {\n this.event = event;\n this.options = options;\n }\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'pointerdown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.style.pointerEvents = 'none';\n ghostElement.style.top = '-9999px';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { toggleClass } from '../../../dom';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-void-container';\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n this.handler = new GroupDragHandler(this._element, accessor, group, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this.handler, this.handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTarget);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.handler.setDisabled(!!this.accessor.options.disableDnd);\n }\n}\n","import { toggleClass, watchElementResize } from './dom';\nimport { addDisposableListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nimport { clamp } from './math';\nexport class Scrollbar extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(scrollableElement) {\n super();\n this.scrollableElement = scrollableElement;\n this._scrollLeft = 0;\n this._element = document.createElement('div');\n this._element.className = 'dv-scrollable';\n this._horizontalScrollbar = document.createElement('div');\n this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';\n this.element.appendChild(scrollableElement);\n this.element.appendChild(this._horizontalScrollbar);\n this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {\n this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;\n this.calculateScrollbarStyles();\n }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {\n event.preventDefault();\n toggleClass(this.element, 'dv-scrollable-scrolling', true);\n const originalClientX = event.clientX;\n const originalScrollLeft = this._scrollLeft;\n const onPointerMove = (event) => {\n const deltaX = event.clientX - originalClientX;\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const p = clientWidth / scrollWidth;\n this._scrollLeft = originalScrollLeft + deltaX / p;\n this.calculateScrollbarStyles();\n };\n const onEnd = () => {\n toggleClass(this.element, 'dv-scrollable-scrolling', false);\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onEnd);\n document.removeEventListener('pointercancel', onEnd);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onEnd);\n document.addEventListener('pointercancel', onEnd);\n }), addDisposableListener(this.element, 'scroll', () => {\n this.calculateScrollbarStyles();\n }), addDisposableListener(this.scrollableElement, 'scroll', () => {\n this._scrollLeft = this.scrollableElement.scrollLeft;\n this.calculateScrollbarStyles();\n }), watchElementResize(this.element, () => {\n toggleClass(this.element, 'dv-scrollable-resizing', true);\n if (this._animationTimer) {\n clearTimeout(this._animationTimer);\n }\n this._animationTimer = setTimeout(() => {\n clearTimeout(this._animationTimer);\n toggleClass(this.element, 'dv-scrollable-resizing', false);\n }, 500);\n this.calculateScrollbarStyles();\n }));\n }\n calculateScrollbarStyles() {\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const hasScrollbar = scrollWidth > clientWidth;\n if (hasScrollbar) {\n const px = clientWidth * (clientWidth / scrollWidth);\n this._horizontalScrollbar.style.width = `${px}px`;\n this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);\n this.scrollableElement.scrollLeft = this._scrollLeft;\n const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);\n this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;\n }\n else {\n this._horizontalScrollbar.style.width = `0px`;\n this._horizontalScrollbar.style.left = `0px`;\n this._scrollLeft = 0;\n }\n }\n}\nScrollbar.MouseWheelSpeed = 1;\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../dom';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { Scrollbar } from '../../../scrollbar';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { Tab } from '../tab/tab';\nexport class Tabs extends CompositeDisposable {\n get showTabsOverflowControl() {\n return this._showTabsOverflowControl;\n }\n set showTabsOverflowControl(value) {\n if (this._showTabsOverflowControl == value) {\n return;\n }\n this._showTabsOverflowControl = value;\n if (value) {\n const observer = new OverflowObserver(this._tabsList);\n this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {\n const hasOverflow = event.hasScrollX || event.hasScrollY;\n this.toggleDropdown({ reset: !hasOverflow });\n }), addDisposableListener(this._tabsList, 'scroll', () => {\n this.toggleDropdown({ reset: false });\n }));\n }\n }\n get element() {\n return this._element;\n }\n get panels() {\n return this._tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this._tabs.length;\n }\n get tabs() {\n return this._tabs.map((_) => _.value);\n }\n constructor(group, accessor, options) {\n super();\n this.group = group;\n this.accessor = accessor;\n this._observerDisposable = new MutableDisposable();\n this._tabs = [];\n this.selectedIndex = -1;\n this._showTabsOverflowControl = false;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onOverflowTabsChange = new Emitter();\n this.onOverflowTabsChange = this._onOverflowTabsChange.event;\n this._tabsList = document.createElement('div');\n this._tabsList.className = 'dv-tabs-container dv-horizontal';\n this.showTabsOverflowControl = options.showTabsOverflowControl;\n if (accessor.options.scrollbars === 'native') {\n this._element = this._tabsList;\n }\n else {\n const scrollbar = new Scrollbar(this._tabsList);\n this._element = scrollbar.element;\n this.addDisposables(scrollbar);\n }\n this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }), Disposable.from(() => {\n for (const { value, disposable } of this._tabs) {\n disposable.dispose();\n value.dispose();\n }\n this._tabs = [];\n }));\n }\n indexOf(id) {\n return this._tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this._tabs[this.selectedIndex].value === tab);\n }\n setActivePanel(panel) {\n let runningWidth = 0;\n for (const tab of this._tabs) {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n if (isActivePanel) {\n const element = tab.value.element;\n const parentElement = element.parentElement;\n if (runningWidth < parentElement.scrollLeft ||\n runningWidth + element.clientWidth >\n parentElement.scrollLeft + parentElement.clientWidth) {\n parentElement.scrollLeft = runningWidth;\n }\n }\n runningWidth += tab.value.element.clientWidth;\n }\n }\n openPanel(panel, index = this._tabs.length) {\n if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onPointerDown((event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n inDragMode: true,\n });\n return;\n }\n switch (event.button) {\n case 0: // left click or touch\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n break;\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this._tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'tab',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n delete(id) {\n const index = this.indexOf(id);\n const tabToRemove = this._tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n addTab(tab, index = this._tabs.length) {\n if (index < 0 || index > this._tabs.length) {\n throw new Error('invalid location');\n }\n this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);\n this._tabs = [\n ...this._tabs.slice(0, index),\n tab,\n ...this._tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n toggleDropdown(options) {\n const tabs = options.reset\n ? []\n : this._tabs\n .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))\n .map((x) => x.value.panel.id);\n this._onOverflowTabsChange.fire({ tabs, reset: options.reset });\n }\n updateDragAndDropState() {\n for (const tab of this._tabs) {\n tab.value.updateDragAndDropState();\n }\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dv-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { VoidContainer } from './voidContainer';\nimport { findRelativeZIndexParent, toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Tabs } from './tabs';\nimport { createDropdownElementHandle, } from './tabOverflowControl';\nexport class TabsContainer extends CompositeDisposable {\n get onTabDragStart() {\n return this.tabs.onTabDragStart;\n }\n get panels() {\n return this.tabs.panels;\n }\n get size() {\n return this.tabs.size;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._hidden = false;\n this.dropdownPart = null;\n this._overflowTabs = [];\n this._dropdownDisposable = new MutableDisposable();\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'dv-right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'dv-left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'dv-pre-actions-container';\n this.tabs = new Tabs(group, accessor, {\n showTabsOverflowControl: !accessor.options.disableTabsOverflowList,\n });\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabs.element);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.tabs.onDrop((e) => this._onDrop.fire(e)), this.tabs.onWillShowOverlay((e) => this._onWillShowOverlay.fire(e)), accessor.onDidOptionsChange(() => {\n this.tabs.showTabsOverflowControl =\n !accessor.options.disableTabsOverflowList;\n }), this.tabs.onOverflowTabsChange((event) => {\n this.toggleDropdown(event);\n }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.size,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n inDragMode: true,\n });\n }\n }));\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n isActive(tab) {\n return this.tabs.isActive(tab);\n }\n indexOf(id) {\n return this.tabs.indexOf(id);\n }\n setActive(_isGroupActive) {\n // noop\n }\n delete(id) {\n this.tabs.delete(id);\n this.updateClassnames();\n }\n setActivePanel(panel) {\n this.tabs.setActivePanel(panel);\n }\n openPanel(panel, index = this.tabs.size) {\n this.tabs.openPanel(panel, index);\n this.updateClassnames();\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n updateClassnames() {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n toggleDropdown(options) {\n const tabs = options.reset ? [] : options.tabs;\n this._overflowTabs = tabs;\n if (this._overflowTabs.length > 0 && this.dropdownPart) {\n this.dropdownPart.update({ tabs: tabs.length });\n return;\n }\n if (this._overflowTabs.length === 0) {\n this._dropdownDisposable.dispose();\n return;\n }\n const root = document.createElement('div');\n root.className = 'dv-tabs-overflow-dropdown-root';\n const part = createDropdownElementHandle();\n part.update({ tabs: tabs.length });\n this.dropdownPart = part;\n root.appendChild(part.element);\n this.rightActionsContainer.prepend(root);\n this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {\n var _a, _b;\n root.remove();\n (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.dropdownPart = null;\n }), addDisposableListener(root, 'pointerdown', (event) => {\n event.preventDefault();\n }, { capture: true }), addDisposableListener(root, 'click', (event) => {\n const el = document.createElement('div');\n el.style.overflow = 'auto';\n el.className = 'dv-tabs-overflow-container';\n for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {\n const panelObject = this.group.panels.find((panel) => panel === tab.panel);\n const tabComponent = panelObject.view.createTabRenderer('headerOverflow');\n const child = tabComponent.element;\n const wrapper = document.createElement('div');\n toggleClass(wrapper, 'dv-tab', true);\n toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);\n toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);\n wrapper.addEventListener('click', (event) => {\n this.accessor.popupService.close();\n if (event.defaultPrevented) {\n return;\n }\n tab.element.scrollIntoView();\n tab.panel.api.setActive();\n });\n wrapper.appendChild(child);\n el.appendChild(wrapper);\n }\n const relativeParent = findRelativeZIndexParent(root);\n this.accessor.popupService.openPopover(el, {\n x: event.clientX,\n y: event.clientY,\n zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)\n ? `calc(${relativeParent.style.zIndex} * 2)`\n : undefined,\n });\n }));\n }\n updateDragAndDropState() {\n this.tabs.updateDragAndDropState();\n this.voidContainer.updateDragAndDropState();\n }\n}\n","import { createChevronRightButton } from '../../../svg';\nexport function createDropdownElementHandle() {\n const el = document.createElement('div');\n el.className = 'dv-tabs-overflow-dropdown-default';\n const text = document.createElement('span');\n text.textContent = ``;\n const icon = createChevronRightButton();\n el.appendChild(icon);\n el.appendChild(text);\n return {\n element: el,\n update: (params) => {\n text.textContent = `${params.tabs}`;\n },\n };\n}\n","import { AcceptableEvent } from '../events';\nexport class DockviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, target, position, getData, group) {\n super();\n this.nativeEvent = nativeEvent;\n this.target = target;\n this.position = position;\n this.getData = getData;\n this.group = group;\n }\n}\nexport const PROPERTY_KEYS_DOCKVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n hideBorders: undefined,\n singleTabMode: undefined,\n disableFloatingGroups: undefined,\n floatingGroupBounds: undefined,\n popoutUrl: undefined,\n defaultRenderer: undefined,\n debug: undefined,\n rootOverlayModel: undefined,\n locked: undefined,\n disableDnd: undefined,\n className: undefined,\n noPanelsOverlay: undefined,\n dndEdges: undefined,\n theme: undefined,\n disableTabsOverflowList: undefined,\n scrollbars: undefined,\n };\n return Object.keys(properties);\n})();\nexport function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nimport { DockviewUnhandledDragOverEvent, } from './options';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('dockview: not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._overwriteRenderContainer = null;\n this._overwriteDropTargetContainer = null;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._panelDisposables = new Map();\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPanelTitleChange = new Emitter();\n this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;\n this._onDidPanelParametersChange = new Emitter();\n this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n toggleClass(this.container, 'dv-groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n panel: this.activePanel,\n api: this._api,\n group: this.groupPanel,\n getData: getPanelData,\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this._onUnhandledDragOverEvent, this._onDidPanelTitleChange, this._onDidPanelParametersChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n set dropTargetContainer(value) {\n this._overwriteDropTargetContainer = value;\n }\n get dropTargetContainer() {\n var _a;\n return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionComponent) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionComponent) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionComponent) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;\n this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'\n ? { removeEmptyGroup: false }\n : undefined);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'dv-active-group', isGroupActive);\n toggleClass(this.container, 'dv-inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n const index = this.mostRecentlyUsed.indexOf(panel);\n this.mostRecentlyUsed.splice(index, 1);\n }\n const disposable = this._panelDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._panelDisposables.delete(panel.id);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'pointerdown', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.contentContainer.element.appendChild(this.watermark.element);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n }\n }\n canDisplayOverlay(event, position, target) {\n const firedEvent = new DockviewUnhandledDragOverEvent(event, target, position, getPanelData, this.accessor.getPanel(this.id));\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (type === 'content') {\n if (data.groupId === this.id) {\n // don't allow to drop on self for center position\n if (position === 'center') {\n return;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return;\n }\n }\n }\n if (type === 'header') {\n if (data.groupId === this.id) {\n if (data.panelId === null) {\n return;\n }\n }\n }\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n updateDragAndDropState() {\n this.tabsContainer.updateDragAndDropState();\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, component, panel) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumWidth();\n }\n get minimumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumHeight();\n }\n get maximumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumHeight();\n }\n get maximumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumWidth();\n }\n __minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n __maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get isActive() {\n return this.api.isActive;\n }\n get isVisible() {\n return this.api.isVisible;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nconst NOT_INITIALIZED_MESSAGE = 'dockview: DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id, '__dockviewgroup__');\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c, _d;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get minimumWidth() {\n var _a;\n const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;\n if (typeof activePanelMinimumWidth === 'number') {\n return activePanelMinimumWidth;\n }\n return super.__minimumWidth();\n }\n get minimumHeight() {\n var _a;\n const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;\n if (typeof activePanelMinimumHeight === 'number') {\n return activePanelMinimumHeight;\n }\n return super.__minimumHeight();\n }\n get maximumWidth() {\n var _a;\n const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;\n if (typeof activePanelMaximumWidth === 'number') {\n return activePanelMaximumWidth;\n }\n return super.__maximumWidth();\n }\n get maximumHeight() {\n var _a;\n const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;\n if (typeof activePanelMaximumHeight === 'number') {\n return activePanelMaximumHeight;\n }\n return super.__maximumHeight();\n }\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n var _a, _b, _c, _d, _e, _f;\n super(id, 'groupview_default', {\n minimumHeight: (_b = (_a = options.constraints) === null || _a === void 0 ? void 0 : _a.minimumHeight) !== null && _b !== void 0 ? _b : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: (_d = (_c = options.constraints) === null || _c === void 0 ? void 0 : _c.maximumHeight) !== null && _d !== void 0 ? _d : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n maximumHeight: (_e = options.constraints) === null || _e === void 0 ? void 0 : _e.maximumHeight,\n maximumWidth: (_f = options.constraints) === null || _f === void 0 ? void 0 : _f.maximumWidth,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n this.addDisposables(this.model.onDidActivePanelChange((event) => {\n this.api._onDidActivePanelChange.fire(event);\n }));\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export const themeDark = {\n name: 'dark',\n className: 'dockview-theme-dark',\n};\nexport const themeLight = {\n name: 'light',\n className: 'dockview-theme-light',\n};\nexport const themeVisualStudio = {\n name: 'visualStudio',\n className: 'dockview-theme-vs',\n};\nexport const themeAbyss = {\n name: 'abyss',\n className: 'dockview-theme-abyss',\n};\nexport const themeDracula = {\n name: 'dracula',\n className: 'dockview-theme-dracula',\n};\nexport const themeReplit = {\n name: 'replit',\n className: 'dockview-theme-replit',\n gap: 10,\n};\nexport const themeAbyssSpaced = {\n name: 'abyssSpaced',\n className: 'dockview-theme-abyss-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\nexport const themeLightSpaced = {\n name: 'lightSpaced',\n className: 'dockview-theme-light-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n get tabComponent() {\n return this._tabComponent;\n }\n constructor(panel, group, accessor, component, tabComponent) {\n super(panel.id, component);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this._tabComponent = tabComponent;\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a, _b;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,\n position: options.group\n ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n const hasBecomeHidden = !event.isVisible && this.isVisible;\n const hasBecomeVisible = event.isVisible && !this.isVisible;\n const isActivePanel = this.group.model.isPanelActive(this.panel);\n if (hasBecomeHidden || (hasBecomeVisible && isActivePanel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n get minimumWidth() {\n return this._minimumWidth;\n }\n get minimumHeight() {\n return this._minimumHeight;\n }\n get maximumWidth() {\n return this._maximumWidth;\n }\n get maximumHeight() {\n return this._maximumHeight;\n }\n constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this._minimumWidth = options.minimumWidth;\n this._minimumHeight = options.minimumHeight;\n this._maximumWidth = options.maximumWidth;\n this._maximumHeight = options.maximumHeight;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange(() => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n minimumHeight: this._minimumHeight,\n maximumHeight: this._maximumHeight,\n minimumWidth: this._minimumWidth,\n maximumWidth: this._maximumWidth,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: this._params,\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-default-tab';\n this._content = document.createElement('div');\n this._content.className = 'dv-default-tab-content';\n this.action = document.createElement('div');\n this.action.className = 'dv-default-tab-action';\n this.action.appendChild(createCloseButton());\n this._element.appendChild(this._content);\n this._element.appendChild(this.action);\n this.render();\n }\n init(params) {\n this._title = params.title;\n this.addDisposables(params.api.onDidTitleChange((event) => {\n this._title = event.title;\n this.render();\n }), addDisposableListener(this.action, 'pointerdown', (ev) => {\n ev.preventDefault();\n }), addDisposableListener(this.action, 'click', (ev) => {\n if (ev.defaultPrevented) {\n return;\n }\n ev.preventDefault();\n params.api.close();\n }));\n this.render();\n }\n render() {\n var _a;\n if (this._content.textContent !== this._title) {\n this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n createTabRenderer(tabLocation) {\n var _a;\n const cmp = this.createTabComponent(this.id, this.tabComponent);\n if (this._params) {\n cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));\n }\n if (this._updateEvent) {\n (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);\n }\n return cmp;\n }\n init(params) {\n this._params = params;\n this.content.init(params);\n this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n this._updateEvent = event;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n return this.accessor.options.createComponent({\n id,\n name: componentName,\n });\n }\n createTabComponent(id, componentName) {\n const name = componentName !== null && componentName !== void 0 ? componentName : this.accessor.options.defaultTabComponent;\n if (name) {\n if (this.accessor.options.createTabComponent) {\n const component = this.accessor.options.createTabComponent({\n id,\n name,\n });\n if (component) {\n return component;\n }\n else {\n return new DefaultTab();\n }\n }\n console.warn(`dockview: tabComponent '${componentName}' was not found. falling back to the default tab.`);\n }\n return new DefaultTab();\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n minimumWidth: panelData.minimumWidth,\n minimumHeight: panelData.minimumHeight,\n maximumWidth: panelData.maximumWidth,\n maximumHeight: panelData.maximumHeight,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-watermark';\n }\n init(_params) {\n // noop\n }\n}\n","import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nclass AriaLevelTracker {\n constructor() {\n this._orderedList = [];\n }\n push(element) {\n this._orderedList = [\n ...this._orderedList.filter((item) => item !== element),\n element,\n ];\n this.update();\n }\n destroy(element) {\n this._orderedList = this._orderedList.filter((item) => item !== element);\n this.update();\n }\n update() {\n for (let i = 0; i < this._orderedList.length; i++) {\n this._orderedList[i].setAttribute('aria-level', `${i}`);\n this._orderedList[i].style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${i * 2})`;\n }\n }\n}\nconst arialLevelTracker = new AriaLevelTracker();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n get element() {\n return this._element;\n }\n get isVisible() {\n return this._isVisible;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this._isVisible = true;\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));\n arialLevelTracker.push(this._element);\n }\n setVisible(isVisible) {\n if (isVisible === this.isVisible) {\n return;\n }\n this._isVisible = isVisible;\n toggleClass(this.element, 'dv-hidden', !this.isVisible);\n }\n bringToFront() {\n arialLevelTracker.push(this._element);\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if ('top' in bounds && typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n this._element.style.bottom = 'auto';\n this.verticalAlignment = 'top';\n }\n if ('bottom' in bounds && typeof bounds.bottom === 'number') {\n this._element.style.bottom = `${bounds.bottom}px`;\n this._element.style.top = 'auto';\n this.verticalAlignment = 'bottom';\n }\n if ('left' in bounds && typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n this._element.style.right = 'auto';\n this.horiziontalAlignment = 'left';\n }\n if ('right' in bounds && typeof bounds.right === 'number') {\n this._element.style.right = `${bounds.right}px`;\n this._element.style.left = 'auto';\n this.horiziontalAlignment = 'right';\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n if (this.verticalAlignment === 'top') {\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.top = `${top}px`;\n this._element.style.bottom = 'auto';\n }\n if (this.verticalAlignment === 'bottom') {\n const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.bottom = `${bottom}px`;\n this._element.style.top = 'auto';\n }\n if (this.horiziontalAlignment === 'left') {\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.left = `${left}px`;\n this._element.style.right = 'auto';\n }\n if (this.horiziontalAlignment === 'right') {\n const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.right = `${right}px`;\n this._element.style.left = 'auto';\n }\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n const result = {};\n if (this.verticalAlignment === 'top') {\n result.top = parseFloat(this._element.style.top);\n }\n else if (this.verticalAlignment === 'bottom') {\n result.bottom = parseFloat(this._element.style.bottom);\n }\n else {\n result.top = element.top - container.top;\n }\n if (this.horiziontalAlignment === 'left') {\n result.left = parseFloat(this._element.style.left);\n }\n else if (this.horiziontalAlignment === 'right') {\n result.right = parseFloat(this._element.style.right);\n }\n else {\n result.left = element.left - container.left;\n }\n result.width = element.width;\n result.height = element.height;\n return result;\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable({\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const bottom = clamp(offset.y -\n y +\n containerRect.height -\n overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n this.setBounds(bounds);\n }), addDisposableListener(window, 'pointerup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'pointerdown', () => {\n arialLevelTracker.push(this._element);\n }, true));\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let bottom = undefined;\n let height = undefined;\n let left = undefined;\n let right = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n bottom = containerRect.height - top - height;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n bottom = containerRect.height - top - height;\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n right = containerRect.width - left - width;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n right = containerRect.width - left - width;\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n bounds.height = height;\n bounds.width = width;\n this.setBounds(bounds);\n }), {\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointerup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return 0;\n }\n dispose() {\n arialLevelTracker.destroy(this._element);\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };\nexport const DESERIALIZATION_POPOUT_DELAY_MS = 100;\n","import { DragAndDropObserver } from '../dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from '../dom';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../lifecycle';\nclass PositionCache {\n constructor() {\n this.cache = new Map();\n this.currentFrameId = 0;\n this.rafId = null;\n }\n getPosition(element) {\n const cached = this.cache.get(element);\n if (cached && cached.frameId === this.currentFrameId) {\n return cached.rect;\n }\n this.scheduleFrameUpdate();\n const rect = getDomNodePagePosition(element);\n this.cache.set(element, { rect, frameId: this.currentFrameId });\n return rect;\n }\n invalidate() {\n this.currentFrameId++;\n }\n scheduleFrameUpdate() {\n if (this.rafId)\n return;\n this.rafId = requestAnimationFrame(() => {\n this.currentFrameId++;\n this.rafId = null;\n });\n }\n}\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element, accessor) {\n super();\n this.element = element;\n this.accessor = accessor;\n this.map = {};\n this._disposed = false;\n this.positionCache = new PositionCache();\n this.pendingUpdates = new Set();\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n updateAllPositions() {\n if (this._disposed) {\n return;\n }\n // Invalidate position cache to force recalculation\n this.positionCache.invalidate();\n // Call resize function directly for all visible panels\n for (const entry of Object.values(this.map)) {\n if (entry.panel.api.isVisible && entry.resize) {\n entry.resize();\n }\n }\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n const panelId = panel.api.id;\n if (this.pendingUpdates.has(panelId)) {\n return; // Update already scheduled\n }\n this.pendingUpdates.add(panelId);\n requestAnimationFrame(() => {\n this.pendingUpdates.delete(panelId);\n if (this.isDisposed || !this.map[panelId]) {\n return;\n }\n const box = this.positionCache.getPosition(referenceContainer.element);\n const box2 = this.positionCache.getPosition(this.element);\n // Use traditional positioning for overlay containers\n const left = box.left - box2.left;\n const top = box.top - box2.top;\n const width = box.width;\n const height = box.height;\n focusContainer.style.left = `${left}px`;\n focusContainer.style.top = `${top}px`;\n focusContainer.style.width = `${width}px`;\n focusContainer.style.height = `${height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n });\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n this.positionCache.invalidate();\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const observerDisposable = new MutableDisposable();\n const correctLayerPosition = () => {\n if (panel.api.location.type === 'floating') {\n queueMicrotask(() => {\n const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);\n if (!floatingGroup) {\n return;\n }\n const element = floatingGroup.overlay.element;\n const update = () => {\n const level = Number(element.getAttribute('aria-level'));\n focusContainer.style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${level * 2 + 1})`;\n };\n const observer = new MutationObserver(() => {\n update();\n });\n observerDisposable.value = Disposable.from(() => observer.disconnect());\n observer.observe(element, {\n attributeFilter: ['aria-level'],\n attributes: true,\n });\n update();\n });\n }\n else {\n focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here\n }\n };\n const disposable = new CompositeDisposable(observerDisposable, \n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange(() => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }), panel.api.onDidLocationChange(() => {\n correctLayerPosition();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n correctLayerPosition();\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n // store the resize function for direct access\n this.map[panel.api.id].resize = resize;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableListener } from './events';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(Disposable.from(() => {\n externalWindow.close();\n }), addDisposableListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve, reject) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n try {\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n }\n catch (err) {\n // only except this is the DOM isn't setup. e.g. in a in correctly configured test\n reject(err);\n }\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { CompositeDisposable } from '../lifecycle';\nexport class StrictEventsSequencing extends CompositeDisposable {\n constructor(accessor) {\n super();\n this.accessor = accessor;\n this.init();\n }\n init() {\n const panels = new Set();\n const groups = new Set();\n this.addDisposables(this.accessor.onDidAddPanel((panel) => {\n if (panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${panel.api.id} but panel already exists`);\n }\n else {\n panels.add(panel.api.id);\n }\n }), this.accessor.onDidRemovePanel((panel) => {\n if (!panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${panel.api.id} but panel does not exists`);\n }\n else {\n panels.delete(panel.api.id);\n }\n }), this.accessor.onDidAddGroup((group) => {\n if (groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${group.api.id} but group already exists`);\n }\n else {\n groups.add(group.api.id);\n }\n }), this.accessor.onDidRemoveGroup((group) => {\n if (!groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${group.api.id} but group does not exists`);\n }\n else {\n groups.delete(group.api.id);\n }\n }));\n }\n}\n","import { shiftAbsoluteElementIntoView } from '../../dom';\nimport { addDisposableListener } from '../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';\nexport class PopupService extends CompositeDisposable {\n constructor(root) {\n super();\n this.root = root;\n this._active = null;\n this._activeDisposable = new MutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-popover-anchor';\n this._element.style.position = 'relative';\n this.root.prepend(this._element);\n this.addDisposables(Disposable.from(() => {\n this.close();\n }), this._activeDisposable);\n }\n openPopover(element, position) {\n var _a;\n this.close();\n const wrapper = document.createElement('div');\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';\n wrapper.appendChild(element);\n const anchorBox = this._element.getBoundingClientRect();\n const offsetX = anchorBox.left;\n const offsetY = anchorBox.top;\n wrapper.style.top = `${position.y - offsetY}px`;\n wrapper.style.left = `${position.x - offsetX}px`;\n this._element.appendChild(wrapper);\n this._active = wrapper;\n this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {\n var _a;\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n let el = target;\n while (el && el !== wrapper) {\n el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;\n }\n if (el) {\n return; // clicked within popover\n }\n this.close();\n }));\n requestAnimationFrame(() => {\n shiftAbsoluteElementIntoView(wrapper, this.root);\n });\n }\n close() {\n if (this._active) {\n this._active.remove();\n this._activeDisposable.dispose();\n this._active = null;\n }\n }\n}\n","import { CompositeDisposable, Disposable } from '../lifecycle';\nexport class DropTargetAnchorContainer extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n var _a;\n if (this.disabled === value) {\n return;\n }\n this._disabled = value;\n if (value) {\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }\n }\n get model() {\n if (this.disabled) {\n return undefined;\n }\n return {\n clear: () => {\n var _a;\n if (this._model) {\n (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);\n }\n this._model = undefined;\n },\n exists: () => {\n return !!this._model;\n },\n getElements: (event, outline) => {\n const changed = this._outline !== outline;\n this._outline = outline;\n if (this._model) {\n this._model.changed = changed;\n return this._model;\n }\n const container = this.createContainer();\n const anchor = this.createAnchor();\n this._model = { root: container, overlay: anchor, changed };\n container.appendChild(anchor);\n this.element.appendChild(container);\n if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {\n const targetBox = event.target.getBoundingClientRect();\n const box = this.element.getBoundingClientRect();\n anchor.style.left = `${targetBox.left - box.left}px`;\n anchor.style.top = `${targetBox.top - box.top}px`;\n }\n return this._model;\n },\n };\n }\n constructor(element, options) {\n super();\n this.element = element;\n this._disabled = false;\n this._disabled = options.disabled;\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }));\n }\n createContainer() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-container';\n return el;\n }\n createAnchor() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-anchor';\n el.style.visibility = 'hidden';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, orthogonal, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { DockviewUnhandledDragOverEvent, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../overlay/overlay';\nimport { addTestId, Classnames, getDockviewTheme, onDidWindowResizeEnd, onDidWindowMoveEnd, toggleClass, watchElementResize, } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, DESERIALIZATION_POPOUT_DELAY_MS, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlay/overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nimport { StrictEventsSequencing } from './strictEventsSequencing';\nimport { PopupService } from './components/popupService';\nimport { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';\nimport { themeAbyss } from './theme';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';\n }\n get api() {\n return this._api;\n }\n get floatingGroups() {\n return this._floatingGroups;\n }\n /**\n * Promise that resolves when all popout groups from the last fromJSON call are restored.\n * Useful for tests that need to wait for delayed popout creation.\n */\n get popoutRestorationPromise() {\n return this._popoutRestorationPromise;\n }\n constructor(container, options) {\n var _a, _b, _c;\n super(container, {\n proportionalLayout: true,\n orientation: Orientation.HORIZONTAL,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,\n className: options.className,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this._watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPopoutGroupSizeChange = new Emitter();\n this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;\n this._onDidPopoutGroupPositionChange = new Emitter();\n this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;\n this._onDidOpenPopoutWindowFail = new Emitter();\n this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter({ replay: true });\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this.onDidMovePanel = this._onDidMovePanel.event;\n this._onDidMaximizedGroupChange = new Emitter();\n this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._popoutRestorationPromise = Promise.resolve();\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidOptionsChange = new Emitter();\n this.onDidOptionsChange = this._onDidOptionsChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n this._options = options;\n this.popupService = new PopupService(this.element);\n this._themeClassnames = new Classnames(this.element);\n this._api = new DockviewApi(this);\n this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });\n this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);\n this._rootDropTarget = new Droptarget(this.element, {\n className: 'dv-drop-target-edge',\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n const firedEvent = new DockviewUnhandledDragOverEvent(event, 'edge', position, getPanelData);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,\n getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.updateDropTargetModel(options);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.updateTheme();\n this.updateWatermark();\n if (options.debug) {\n this.addDisposables(new StrictEventsSequencing(this));\n }\n this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.updateWatermark();\n }), this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), this.onDidMaximizedChange((event) => {\n this._onDidMaximizedGroupChange.fire({\n group: event.panel,\n isMaximized: event.isMaximized,\n });\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }), this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n }\n setVisible(panel, visible) {\n switch (panel.api.location.type) {\n case 'grid':\n super.setVisible(panel, visible);\n break;\n case 'floating': {\n const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);\n if (item) {\n item.overlay.setVisible(visible);\n panel.api._onDidVisibilityChange.fire({\n isVisible: visible,\n });\n }\n break;\n }\n case 'popout':\n console.warn('dockview: You cannot hide a group that is in a popout window');\n break;\n }\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c, _d, _e;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group, options);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return false;\n }\n const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)\n ? options.referenceGroup\n : itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n /**\n * The group that is being added doesn't already exist within the DOM, the most likely occurrence\n * of this case is when being called from the `fromJSON(...)` method\n */\n const isGroupAddedToDom = referenceGroup.element.parentElement !== null;\n let group;\n if (!isGroupAddedToDom) {\n group = referenceGroup;\n }\n else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {\n group = options.overridePopoutGroup;\n }\n else {\n group = this.createGroup({ id: groupId });\n if (popoutContainer) {\n this._onDidAddGroup.fire(group);\n }\n }\n if (popoutContainer === null) {\n console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');\n popoutWindowDisposable.dispose();\n this._onDidOpenPopoutWindowFail.fire();\n // if the popout window was blocked, we need to move the group back to the reference group\n // and set it to visible\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n return false;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready, this);\n group.model.renderContainer = overlayRenderContainer;\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n let floatingBox;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n floatingBox = (_a = this._floatingGroups\n .find((value) => value.group.api.id ===\n itemToPopout.api.id)) === null || _a === void 0 ? void 0 : _a.overlay.toJSON();\n this.removeGroup(referenceGroup);\n break;\n }\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n const anchor = document.createElement('div');\n const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });\n popoutContainer.appendChild(anchor);\n group.model.dropTargetContainer = dropTargetContainer;\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,\n };\n if (isGroupAddedToDom &&\n itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const isValidReferenceGroup = isGroupAddedToDom &&\n referenceGroup &&\n this.getPanel(referenceGroup.id);\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: isValidReferenceGroup\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);\n popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {\n this._onDidPopoutGroupSizeChange.fire({\n width: _window.window.innerWidth,\n height: _window.window.innerHeight,\n group,\n });\n }), _onDidWindowPositionChange.event(() => {\n this._onDidPopoutGroupPositionChange.fire({\n screenX: _window.window.screenX,\n screenY: _window.window.screenX,\n group,\n });\n }), \n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableListener(_window.window, 'resize', () => {\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.isDisposed) {\n return; // cleanup may run after instance is disposed\n }\n if (isGroupAddedToDom &&\n this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else if (this.getPanel(group.id)) {\n group.model.renderContainer =\n this.overlayRenderContainer;\n group.model.dropTargetContainer =\n this.rootDropTargetContainer;\n returnedGroup = group;\n const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);\n if (alreadyRemoved) {\n /**\n * If this popout group was explicitly removed then we shouldn't run the additional\n * steps. To tell if the running of this disposable is the result of this popout group\n * being explicitly removed we can check if this popout group is still referenced in\n * the `this._popoutGroups` list.\n */\n return;\n }\n if (floatingBox) {\n this.addFloatingGroup(group, {\n height: floatingBox.height,\n width: floatingBox.width,\n position: floatingBox,\n });\n }\n else {\n this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n skipPopoutReturn: true,\n });\n group.model.location = { type: 'grid' };\n this.movingLock(() => {\n // suppress group add events since the group already exists\n this.doAddGroup(group, [0]);\n });\n }\n this.doSetGroupAndPanelActive(group);\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n return true;\n })\n .catch((err) => {\n console.error('dockview: failed to create popout.', err);\n return false;\n });\n }\n addFloatingGroup(item, options) {\n var _a, _b, _c, _d, _e;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n this.movingLock(() => group.model.openPanel(item, { skipSetGroupActive: true }));\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: false,\n });\n }\n }\n }\n function getAnchoredBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n const result = {};\n if ('left' in options.position) {\n result.left = Math.max(options.position.left, 0);\n }\n else if ('right' in options.position) {\n result.right = Math.max(options.position.right, 0);\n }\n else {\n result.left = DEFAULT_FLOATING_GROUP_POSITION.left;\n }\n if ('top' in options.position) {\n result.top = Math.max(options.position.top, 0);\n }\n else if ('bottom' in options.position) {\n result.bottom = Math.max(options.position.bottom, 0);\n }\n else {\n result.top = DEFAULT_FLOATING_GROUP_POSITION.top;\n }\n if (typeof options.width === 'number') {\n result.width = Math.max(options.width, 0);\n }\n else {\n result.width = DEFAULT_FLOATING_GROUP_POSITION.width;\n }\n if (typeof options.height === 'number') {\n result.height = Math.max(options.height, 0);\n }\n else {\n result.height = DEFAULT_FLOATING_GROUP_POSITION.height;\n }\n return result;\n }\n return {\n left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'\n ? Math.max(options.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left,\n top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'\n ? Math.max(options.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top,\n width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'\n ? Math.max(options.width, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.width,\n height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'\n ? Math.max(options.height, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.height,\n };\n }\n const anchoredBox = getAnchoredBox();\n const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));\n const el = group.element.querySelector('.dv-void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {\n if (event.isActive) {\n overlay.bringToFront();\n }\n }), watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n }));\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.width, group.height);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n remove(this._floatingGroups, floatingGroupPanel);\n group.model.location = { type: 'grid' };\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n group.model.location = { type: 'floating' };\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position, options) {\n this.gridview.normalize();\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0], undefined, options); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n super.updateOptions(options);\n if ('floatingGroupBounds' in options) {\n for (const group of this._floatingGroups) {\n switch (options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds();\n }\n }\n this.updateDropTargetModel(options);\n const oldDisableDnd = this.options.disableDnd;\n this._options = Object.assign(Object.assign({}, this.options), options);\n const newDisableDnd = this.options.disableDnd;\n if (oldDisableDnd !== newDisableDnd) {\n this.updateDragAndDropState();\n }\n if ('theme' in options) {\n this.updateTheme();\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n updateDragAndDropState() {\n // Update draggable state for all tabs and void containers\n for (const group of this.groups) {\n group.model.updateDragAndDropState();\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n url: group.popoutGroup.api.location.type === 'popout'\n ? group.popoutGroup.api.location.popoutUrl\n : undefined,\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n this._onDidAddGroup.fire(group);\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n position: position,\n width: position.width,\n height: position.height,\n skipRemoveGroup: true,\n inDragMode: false,\n });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n // Create a promise that resolves when all popout groups are created\n const popoutPromises = [];\n // Queue popup group creation with delays to avoid browser blocking\n serializedPopoutGroups.forEach((serializedPopoutGroup, index) => {\n const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n // Add a small delay for each popup after the first to avoid browser popup blocking\n const popoutPromise = new Promise((resolve) => {\n setTimeout(() => {\n this.addPopoutGroup(group, {\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup ? group : undefined,\n referenceGroup: gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined,\n popoutUrl: url,\n });\n resolve();\n }, index * DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup\n });\n popoutPromises.push(popoutPromise);\n });\n // Store the promise for tests to wait on\n this._popoutRestorationPromise = Promise.all(popoutPromises).then(() => void 0);\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n console.error('dockview: failed to deserialize layout. Reverting changes', err);\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n // Force position updates for always visible panels after DOM layout is complete\n requestAnimationFrame(() => {\n this.overlayRenderContainer.updateAllPositions();\n });\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n const initial = {\n width: options.initialWidth,\n height: options.initialHeight,\n };\n let index;\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n index = options.position.index;\n if (!referencePanel) {\n throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n index = options.position.index;\n if (!referenceGroup) {\n throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n group.api.setSize({\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n });\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const floatingGroupOptions = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n referenceGroup.api.setSize({\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation, this.orientationAtLocation(relativeLocation) ===\n Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const coordinates = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else {\n const group = this.createGroupAtLocation([0], this.gridview.orientation === Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n if (this.options.createWatermarkComponent) {\n return this.options.createWatermarkComponent();\n }\n return new Watermark();\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this._watermark) {\n this._watermark = this.createWatermarkComponent();\n this._watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n addTestId(watermarkContainer, 'watermark-component');\n watermarkContainer.appendChild(this._watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this._watermark) {\n this._watermark.element.parentElement.remove();\n (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this._watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction), options);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroup(options);\n const size = this.getLocationOrientation(relativeLocation) ===\n Orientation.VERTICAL\n ? options.initialHeight\n : options.initialWidth;\n this.doAddGroup(group, relativeLocation, size);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n const group = this.createGroup(options);\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n getLocationOrientation(location) {\n return location.length % 2 == 0 &&\n this.gridview.orientation === Orientation.HORIZONTAL\n ? Orientation.HORIZONTAL\n : Orientation.VERTICAL;\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup && refGroup.panels.length === 0) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._popoutGroups, selectedGroup);\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n skipSetActive: options.skipSetActive,\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n // Check if destination group is empty - if so, force render the component\n const isDestinationGroupEmpty = destinationGroup.model.size === 0;\n this.movingLock(() => {\n var _a;\n return destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetActive: ((_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false) && !isDestinationGroupEmpty,\n skipSetGroupActive: true,\n });\n });\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(destinationGroup);\n }\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n }\n if (sourceGroup.api.location.type === 'popout') {\n /**\n * the source group is a popout group with a single panel\n *\n * 1. remove the panel from the group without triggering any events\n * 2. remove the popout group\n * 3. create a new group at the requested location and add that panel\n */\n const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);\n const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {\n skipSetActive: true,\n skipSetActiveGroup: true,\n }));\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n const newGroup = this.createGroupAtLocation(targetLocation);\n this.movingLock(() => newGroup.model.openPanel(removedPanel));\n this.doSetGroupAndPanelActive(newGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n // Ensure group becomes active after move\n if (options.skipSetActive !== true) {\n // For center moves (merges), we need to ensure the target group is active\n // unless explicitly told not to (skipSetActive: true)\n this.doSetGroupAndPanelActive(to);\n }\n else if (!this.activePanel) {\n // Even with skipSetActive: true, ensure there's an active panel if none exists\n // This maintains basic functionality while respecting skipSetActive\n this.doSetGroupAndPanelActive(to);\n }\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n // Remove from popout groups list to prevent automatic restoration\n const index = this._popoutGroups.indexOf(selectedPopoutGroup);\n if (index >= 0) {\n this._popoutGroups.splice(index, 1);\n }\n // Clean up the reference group (ghost) if it exists and is hidden\n if (selectedPopoutGroup.referenceGroup) {\n const referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);\n if (referenceGroup && !referenceGroup.api.isVisible) {\n this.doRemoveGroup(referenceGroup, {\n skipActive: true,\n });\n }\n }\n // Manually dispose the window without triggering restoration\n selectedPopoutGroup.window.dispose();\n // Update group's location and containers for target\n if (to.api.location.type === 'grid') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'grid' };\n }\n else if (to.api.location.type === 'floating') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'floating' };\n }\n break;\n }\n }\n // For moves to grid locations\n if (to.api.location.type === 'grid') {\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n // Add to grid for all moves targeting grid location\n let size;\n switch (this.gridview.orientation) {\n case Orientation.VERTICAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.width\n : from.api.height;\n break;\n case Orientation.HORIZONTAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.height\n : from.api.width;\n break;\n }\n this.gridview.addView(from, size, dropLocation);\n }\n else if (to.api.location.type === 'floating') {\n // For moves to floating locations, add as floating group\n // Get the position/size from the target floating group\n const targetFloatingGroup = this._floatingGroups.find((x) => x.group === to);\n if (targetFloatingGroup) {\n const box = targetFloatingGroup.overlay.toJSON();\n // Calculate position based on available properties\n let left, top;\n if ('left' in box) {\n left = box.left + 50;\n }\n else if ('right' in box) {\n left = Math.max(0, box.right - box.width - 50);\n }\n else {\n left = 50; // Default fallback\n }\n if ('top' in box) {\n top = box.top + 50;\n }\n else if ('bottom' in box) {\n top = Math.max(0, box.bottom - box.height - 50);\n }\n else {\n top = 50; // Default fallback\n }\n this.addFloatingGroup(from, {\n height: box.height,\n width: box.width,\n position: {\n left,\n top,\n },\n });\n }\n }\n }\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel, from });\n });\n // Ensure group becomes active after move\n if (options.skipSetActive === false) {\n // Only activate when explicitly requested (skipSetActive: false)\n // Use 'to' group for non-center moves since 'from' may have been destroyed\n const targetGroup = to !== null && to !== void 0 ? to : from;\n this.doSetGroupAndPanelActive(targetGroup);\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`dockview: Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, {\n renderer: options.renderer,\n minimumWidth: options.minimumWidth,\n minimumHeight: options.minimumHeight,\n maximumWidth: options.maximumWidth,\n maximumHeight: options.maximumHeight,\n });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location, size, options) {\n const group = this.createGroup(options);\n this.doAddGroup(group, location, size);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n orientationAtLocation(location) {\n const rootOrientation = this.gridview.orientation;\n return location.length % 2 == 1\n ? rootOrientation\n : orthogonal(rootOrientation);\n }\n updateDropTargetModel(options) {\n if ('dndEdges' in options) {\n this._rootDropTarget.disabled =\n typeof options.dndEdges === 'boolean' &&\n options.dndEdges === false;\n if (typeof options.dndEdges === 'object' &&\n options.dndEdges !== null) {\n this._rootDropTarget.setOverlayModel(options.dndEdges);\n }\n else {\n this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);\n }\n }\n if ('rootOverlayModel' in options) {\n this.updateDropTargetModel({ dndEdges: options.dndEdges });\n }\n }\n updateTheme() {\n var _a, _b;\n const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;\n this._themeClassnames.setClassNames(theme.className);\n this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;\n switch (theme.dndOverlayMounting) {\n case 'absolute':\n this.rootDropTargetContainer.disabled = false;\n break;\n case 'relative':\n default:\n this.rootDropTargetContainer.disabled = true;\n break;\n }\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(container, options) {\n var _a;\n super(container, {\n proportionalLayout: (_a = options.proportionalLayout) !== null && _a !== void 0 ? _a : true,\n orientation: options.orientation,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n className: options.className,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n }\n updateOptions(options) {\n super.updateOptions(options);\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n const { data } = node;\n const view = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.registerPanel(view);\n this.doAddGroup(view, relativeLocation, options.size);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n if (this._splitview) {\n this._splitview.dispose();\n }\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n if (typeof options.orientation === 'string') {\n this.splitview.orientation = options.orientation;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_a = options.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n this.element.remove();\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = {\n api: null,\n };\n this._element = document.createElement('div');\n this.element.className = 'dv-default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dv-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nconst HEADER_SIZE = 22;\nconst MINIMUM_BODY_SIZE = 0;\nconst MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super({\n accessor: options.accessor,\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n disableDnd: options.disableDnd,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b;\n const body = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n let header;\n if (options.headerComponent && this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: options.id,\n name: options.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: MINIMUM_BODY_SIZE,\n maximumBodySize: MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_b = options.params) !== null && _b !== void 0 ? _b : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n headerSize: view.headerSize,\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c;\n const data = view.data;\n const body = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n let header;\n if (data.headerComponent &&\n this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: data.id,\n name: data.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,\n maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = new CompositeDisposable(panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), panel.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }));\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.element.remove();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id, componentName));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n","import { GridviewApi, PaneviewApi, SplitviewApi, } from '../api/component.api';\nimport { DockviewComponent } from '../dockview/dockviewComponent';\nimport { GridviewComponent } from '../gridview/gridviewComponent';\nimport { PaneviewComponent } from '../paneview/paneviewComponent';\nimport { SplitviewComponent } from '../splitview/splitviewComponent';\nexport function createDockview(element, options) {\n const component = new DockviewComponent(element, options);\n return component.api;\n}\nexport function createSplitview(element, options) {\n const component = new SplitviewComponent(element, options);\n return new SplitviewApi(component);\n}\nexport function createGridview(element, options) {\n const component = new GridviewComponent(element, options);\n return new GridviewApi(component);\n}\nexport function createPaneview(element, options) {\n const component = new PaneviewComponent(element, options);\n return new PaneviewApi(component);\n}\n","import {\n IGroupPanelInitParameters,\n IContentRenderer,\n PanelUpdateEvent,\n Parameters,\n ITabRenderer,\n DockviewComponent,\n} from 'dockview-core';\nimport './app.scss';\n\nclass DefaultPanel implements IContentRenderer {\n private _element: HTMLElement;\n private _titleElement: HTMLElement;\n private _paramsElement: HTMLElement;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor() {\n this._element = document.createElement('div');\n this._element.style.display = 'flex';\n this._element.style.justifyContent = 'center';\n this._element.style.alignItems = 'center';\n this._element.style.color = 'white';\n this._element.style.height = '100%';\n\n this._titleElement = document.createElement('span');\n this._paramsElement = document.createElement('span');\n\n this._element.appendChild(this._titleElement);\n }\n\n init(params: IGroupPanelInitParameters): void {\n this.render(params.params);\n }\n\n update(event: PanelUpdateEvent): void {\n this.render(event.params);\n }\n\n private render(params: Record) {\n this._titleElement.textContent = params.title;\n\n if (params.x) {\n if (!this._paramsElement.parentElement) {\n this._element.appendChild(this._paramsElement);\n }\n this._paramsElement.textContent = params.x;\n } else {\n this._paramsElement.parentElement?.removeChild(this._paramsElement);\n }\n }\n}\n\nclass DefaultTab implements ITabRenderer {\n private _element: HTMLElement;\n private _title: HTMLElement;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor() {\n this._element = document.createElement('div');\n this._element.className = 'my-custom-tab';\n\n this._title = document.createElement('span');\n\n const spacer = document.createElement('span');\n spacer.style.flexGrow = '1';\n\n const btn1 = document.createElement('span');\n btn1.className = 'my-custom-tab-icon material-symbols-outlined';\n btn1.textContent = 'minimize';\n\n const btn2 = document.createElement('span');\n btn2.className = 'my-custom-tab-icon material-symbols-outlined';\n btn2.textContent = 'maximize';\n\n const btn3 = document.createElement('span');\n btn3.className = 'my-custom-tab-icon material-symbols-outlined';\n btn3.textContent = 'close';\n\n this._element.appendChild(this._title);\n this._element.appendChild(spacer);\n this._element.appendChild(btn1);\n this._element.appendChild(btn2);\n this._element.appendChild(btn3);\n }\n\n init(params: IGroupPanelInitParameters): void {\n this.render(params.params);\n }\n\n update(event: PanelUpdateEvent): void {\n this.render(event.params);\n }\n\n private render(params: Record) {\n this._title = params.title;\n }\n}\n\nexport function attach(parent: HTMLElement): {\n dispose: () => void;\n} {\n const element = document.createElement('div');\n element.className = 'dockview-theme-abyss';\n element.style.height = '100%';\n element.style.width = '100%';\n\n const dockview = new DockviewComponent({\n components: {\n default: DefaultPanel,\n },\n tabComponents: {\n default: DefaultTab,\n },\n singleTabMode: 'fullwidth',\n parentElement: element,\n });\n\n parent.appendChild(element);\n\n const { clientWidth, clientHeight } = parent;\n dockview.layout(clientWidth, clientHeight);\n\n const panel1 = dockview.addPanel({\n id: 'panel_1',\n component: 'default',\n tabComponent: 'default',\n params: {\n title: 'Window 1',\n },\n });\n panel1.group.locked = true;\n\n const panel2 = dockview.addPanel({\n id: 'panel_2',\n component: 'default',\n tabComponent: 'default',\n params: {\n title: 'Window 2',\n },\n position: {\n direction: 'right',\n },\n });\n panel2.group.locked = true;\n\n const panel3 = dockview.addPanel({\n id: 'panel_3',\n component: 'default',\n tabComponent: 'default',\n params: {\n title: 'Window 3',\n },\n position: {\n direction: 'below',\n },\n });\n panel3.group.locked = true;\n\n return {\n dispose: () => {\n dockview.dispose();\n element.remove();\n },\n };\n}\n"],"names":["TransferObject","PanelTransfer","constructor","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","Event","Disposable","any","_len","arguments","length","children","Array","_key","listener","disposables","map","child","dispose","forEach","d","DockviewEvent","_defaultPrevented","defaultPrevented","preventDefault","AcceptableEvent","_isAccepted","isAccepted","accept","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","_last","options","_listeners","_disposed","event","_event","replay","push","index","indexOf","splice","add","fire","e","queueMicrotask","delete","addDisposableListener","element","type","addEventListener","removeEventListener","events","Map","size","set","AsapEvent","_onFired","_currentFireCount","_queued","onEvent","fireCountAtTimeOfEventSubscription","NONE","from","func","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","_len2","_key2","arg","MutableDisposable","_disposable","disposable","OverflowObserver","el","_onDidChange","onDidChange","_value","watchElementResize","entry","hasScrollX","target","scrollWidth","clientWidth","hasScrollY","scrollHeight","clientHeight","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","document","activeElement","loosingFocus","onFocus","onBlur","window","setTimeout","_refreshStateHandler","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","getDomNodePagePosition","domNode","left","top","width","height","getBoundingClientRect","scrollX","scrollY","disableIframePointEvents","rootNode","iframes","tagNames","findIframesInNode","node","nodeType","Node","ELEMENT_NODE","includes","tagName","shadowRoot","documentElement","allTagsNamesInclusiveOfShadowDoms","original","WeakMap","iframe","style","pointerEvents","release","get","Classnames","_classNames","setClassNames","classNames","split","filter","v","trim","tail","arr","slice","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","array","findIndex","t","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","contentSize","_contentSize","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","disabled","_disabled","margin","_margin","_b","_this","sashes","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","overloadMaxDelta","snapBefore","snapAfter","x","NEGATIVE_INFINITY","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","VERTICAL","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","Low","High","round","relayout","getViews","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","start","clientX","clientY","sashIndex","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","total","proportion","lowPriorityIndex","emptyDelta","visibleViewItems","sashCount","marginReducedSize","totalLeftOffset","viewLeftOffsets","runningVisiblePanelCount","flag","visiblePanelsBeforeThisView","offset","sashWidth","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","PROPERTY_KEYS_SPLITVIEW","properties","disableAutoResizing","Object","keys","Paneview","splitview","paneItems","skipAnimation","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","clearTimeout","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","_onDidVisibilityChange","onDidVisibilityChange","childDescriptor","setupChildrenEvents","_visible","isChildVisible","setChildVisible","wereAllChildrenHidden","areAllChildrenHidden","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","_ref","findLeaf","candiateNode","last","cloneNode","flipNode","orthogonal","totalSize","childSize","getGridLocation","parentElement","test","firstElementChild","lastElementChild","nextElementSibling","indexInParent","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","directionOrientation","getDirectionOrientation","rest","_index","serializeBranchNode","box","isGridBranchNode","toJSON","Gridview","_root","root","locked","_locked","branch","pop","maximizedView","_maximizedNode","leaf","hasMaximizedView","maximizeView","getNode","exitMaximizedView","getView","hiddenOnMaximize","hideAllViewsBut","parent","exclude","_onDidMaximizedNodeChange","isMaximized","showViewsInReverseOrder","serialize","maxmizedViewLocation","resullt","maximizedNode","_onDidViewVisibilityChange","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","call","oldRoot","normalize","childReference","insertOrthogonalSplitviewAtRoot","progmaticSelect","_getViews","nodeCachedVisibleSize","path","n","l","onDidViewVisibilityChange","onDidMaximizedNodeChange","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","PROPERTY_KEYS_GRIDVIEW","hideBorders","Resizable","_element","disableResizing","_disableResizing","offsetParent","currentElement","DocumentFragment","host","isInDocument","contentRect","nextLayoutId","toTarget","BaseGrid","id","_id","_groups","groups","values","gridview","activeGroup","_activeGroup","_onDidRemove","onDidRemove","_onDidAdd","onDidAdd","_onDidMaximizedChange","onDidMaximizedChange","_onDidActiveChange","onDidActiveChange","_bufferOnDidLayoutChange","onDidLayoutChange","_onDidViewVisibilityChangeMicroTaskQueue","onDidViewVisibilityChangeMicroTaskQueue","panel","isVisible","updateOptions","_c","_d","maximizeGroup","doSetGroupActive","isMaximizedGroup","exitMaximizedGroup","hasMaximizedGroup","doAddGroup","group","doRemoveGroup","has","skipActive","getPanel","setActive","removeGroup","moveToNext","moveToPrevious","forceResize","SplitviewApi","component","panels","onDidLayoutFromJSON","removePanel","focus","addPanel","movePanel","PaneviewApi","onDidDrop","onUnhandledDragOverEvent","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","force","DockviewApi","totalPanels","onDidMovePanel","onWillDrop","onWillShowOverlay","onWillDragGroup","onWillDragPanel","onDidPopoutGroupSizeChange","onDidPopoutGroupPositionChange","onDidOpenPopoutWindowFail","activePanel","getGroupPanel","addGroup","closeAllGroups","getGroup","addFloatingGroup","onDidMaximizedGroupChange","addPopoutGroup","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","setDisabled","isCancelled","dataTransfer","effectAllowed","items","DragAndDropObserver","callbacks","registerListeners","onDragEnter","onDragOver","onDragLeave","onDragEnd","onDrop","WillShowOverlayEvent","nativeEvent","directionToPosition","positionToDirection","DEFAULT_ACTIVATION_SIZE","DEFAULT_SIZE","Droptarget","_state","_onDrop","_onWillShowOverlay","_acceptedTargetZonesSet","Set","acceptedTargetZones","dnd","getOverrideTarget","getElements","_e","_f","_g","ACTUAL_TARGET","overrideTarget","removeDropTarget","getOverlayOutline","offsetWidth","offsetHeight","rect","currentTarget","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","willShowOverlayEvent","markAsUsed","targetElement","overlayElement","append","toggleClasses","stopPropagation","setTargetZones","setOverlayModel","model","overlayModel","USED_EVENT_ID","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","sizeOptions","outlineEl","elBox","ta","overlay","bigbox","rootTop","rootLeft","bounds","topPx","leftPx","widthPx","heightPx","checkBoundsChanged","visibility","transform","setGPUOptimizedBounds","changed","setGPUOptimizedBoundsFromStrings","overlayType","activationSizeOptions","activationSize","threshold","xp","yp","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","PROPERTY_KEYS_PANEVIEW","disableDnd","PaneviewUnhandledDragOverEvent","WillFocusEvent","PanelApiImpl","isFocused","_isFocused","isActive","_isActive","_isVisible","_width","_height","_parameters","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onWillFocus","onWillFocus","_onWillVisibilityChange","onWillVisibilityChange","_onActiveChange","onActiveChange","_onDidParametersChange","onDidParametersChange","getParameters","initialize","parameters","update","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","_params","api","tabIndex","outline","overflow","focusTracker","part","init","getComponent","assign","key","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","header","display","_onDidChangeExpansionState","_isExpanded","headerComponent","isHeaderVisible","accessor","ev","isPanelExpanded","renderOnce","expanded","body","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","lineHeight","minHeight","maxHeight","DraggablePaneviewPanel","_onDidDrop","_onUnhandledDragOverEvent","initDragFeatures","accessorId","draggable","handler","firedEvent","containerApi","existingPanel","allPanels","fromIndex","toIndex","ContentContainer","dropTargetContainer","dropTarget","theme","dndPanelOverlay","shiftKey","show","hide","renderPanel","asActive","doRender","isPanelActive","content","renderer","renderContainer","detatch","attach","referenceContainer","openPanel","closePanel","addGhostImage","ghostElement","setDragImage","TabDragHandler","Tab","_onPointDown","onPointerDown","_onDropped","dragHandler","getComputedStyle","newNode","getPropertyValue","getPropertyPriority","setContent","updateDragAndDropState","WillShowOverlayLocationEvent","kind","GroupDragHandler","dragEvent","bgColor","color","backgroundColor","padding","fontSize","borderRadius","textContent","VoidContainer","Scrollbar","scrollableElement","_scrollLeft","_horizontalScrollbar","deltaY","MouseWheelSpeed","calculateScrollbarStyles","originalClientX","originalScrollLeft","deltaX","onEnd","scrollLeft","_animationTimer","px","percentageComplete","Tabs","showTabsOverflowControl","_showTabsOverflowControl","_tabsList","_observerDisposable","hasOverflow","toggleDropdown","reset","_tabs","tabs","selectedIndex","_onTabDragStart","onTabDragStart","_onOverflowTabsChange","onOverflowTabsChange","scrollbars","scrollbar","button","tab","setActivePanel","runningWidth","isActivePanel","find","isFloatingGroupsEnabled","disableFloatingGroups","isFloatingWithOnePanel","inDragMode","addTab","tabToRemove","childPosition","parentPosition","isChildEntirelyVisibleWithinParent","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createChevronRightButton","TabsContainer","hidden","_hidden","dropdownPart","_overflowTabs","_dropdownDisposable","_onGroupDragStart","onGroupDragStart","singleTabMode","rightActionsContainer","leftActionsContainer","preActionsContainer","disableTabsOverflowList","voidContainer","onDidOptionsChange","setRightActionsElement","rightActions","setLeftActionsElement","leftActions","setPrefixActionsElement","preActions","_isGroupActive","updateClassnames","text","icon","createDropdownElementHandle","prepend","capture","panelObject","createTabRenderer","wrapper","popupService","close","scrollIntoView","relativeParent","zIndex","findRelativeZIndexParent","openPopover","DockviewUnhandledDragOverEvent","PROPERTY_KEYS_DOCKVIEW","floatingGroupBounds","popoutUrl","defaultRenderer","debug","rootOverlayModel","noPanelsOverlay","dndEdges","DockviewDidDropEvent","DockviewWillDropEvent","_kind","DockviewGroupPanelModel","_activePanel","_panels","isEmpty","hasWatermark","watermark","tabsContainer","isContentFocused","contentContainer","_location","groupPanel","_onDidLocationChange","mostRecentlyUsed","_overwriteRenderContainer","_overwriteDropTargetContainer","_panelDisposables","_onMove","onMove","_onWillDrop","_onDidAddPanel","_onDidPanelTitleChange","onDidPanelTitleChange","_onDidPanelParametersChange","onDidPanelParametersChange","_onDidRemovePanel","_onDidActivePanelChange","_api","hideHeader","handleDropEvent","focusContent","rerender","overlayRenderContainer","rootDropTargetContainer","doAddPanel","updateContainer","createRightHeaderActionComponent","_rightHeaderActions","createLeftHeaderActionComponent","_leftHeaderActions","createPrefixHeaderActionComponent","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","skipSetActive","updateParentGroup","doSetActivePanel","skipSetGroupActive","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isLast","removeEmptyGroup","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActiveGroup","hasExistingPanel","updateMru","onDidTitleChange","runEvents","createWatermarkComponent","willDropEvent","getKind","itemId","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","__minimumWidth","__minimumHeight","__maximumHeight","__maximumWidth","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_maximumWidth","_evaluatedMaximumWidth","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","MAX_SAFE_INTEGER","maximum","minimum","NOT_INITIALIZED_MESSAGE","DockviewGroupPanelApiImpl","_group","onDidLocationChange","getWindow","moveTo","moveGroupOrPanel","maximize","exitMaximized","DockviewGroupPanel","activePanelMinimumWidth","activePanelMinimumHeight","activePanelMaximumWidth","activePanelMaximumHeight","_model","constraints","themeDark","name","themeLight","themeVisualStudio","themeAbyss","themeDracula","themeReplit","gap","themeAbyssSpaced","dndOverlayMounting","themeLightSpaced","DockviewPanelApiImpl","oldGroup","_onDidGroupChange","setupGroupEventListeners","tabComponent","_tabComponent","_onDidTitleChange","_onDidActiveGroupChange","onDidGroupChange","_onDidRendererChange","onDidRendererChange","groupEventsDisposable","setTitle","setRenderer","previousGroup","_trackGroupActive","hasBecomeHidden","hasBecomeVisible","DockviewPanel","_title","_renderer","contentComponent","isPanelVisible","DefaultTab","_content","action","render","DockviewPanelModel","_tab","createContentComponent","createTabComponent","tabLocation","cmp","_updateEvent","componentName","createComponent","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","arialLevelTracker","_orderedList","destroy","setAttribute","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bottom","right","bringToFront","verticalAlignment","horiziontalAlignment","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","parseFloat","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DEFAULT_FLOATING_GROUP_POSITION","PositionCache","cache","currentFrameId","rafId","getPosition","cached","frameId","scheduleFrameUpdate","invalidate","OverlayRenderContainer","positionCache","pendingUpdates","updateAllPositions","createFocusableElement","focusContainer","box2","visibilityChanged","observerDisposable","correctLayerPosition","floatingGroup","floatingGroups","level","getAttribute","MutationObserver","attributeFilter","attributes","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","apply","PopoutWindow","_window","_onWillClose","onWillClose","_onDidClose","onDidClose","dimensions","screenX","screenY","innerWidth","innerHeight","open","url","features","entries","join","externalWindow","createPopoutWindowContainer","onDidOpen","externalDocument","styleSheetList","styleSheets","styleSheet","href","link","rel","head","cssTexts","cssRules","rule","cssText","err","createTextNode","addStyles","StrictEventsSequencing","PopupService","_active","_activeDisposable","anchorBox","offsetX","offsetY","HTMLElement","buffer","rootRect","translateX","translateY","shiftAbsoluteElementIntoView","DropTargetAnchorContainer","exists","_outline","anchor","createAnchor","targetBox","DEFAULT_ROOT_OVERLAY_MODEL","moveGroupWithoutDestroying","removedPanel","DockviewComponent","flatMap","_options","_floatingGroups","popoutRestorationPromise","_popoutRestorationPromise","nextGroupId","_deserializer","_watermark","_onWillDragPanel","_onWillDragGroup","_onDidPopoutGroupSizeChange","_onDidPopoutGroupPositionChange","_onDidOpenPopoutWindowFail","_onDidLayoutFromJSON","_onDidMovePanel","_onDidMaximizedGroupChange","_popoutGroups","_onDidRemoveGroup","_onDidAddGroup","_onDidOptionsChange","_moving","_themeClassnames","_rootDropTarget","updateDropTargetModel","updateTheme","updateWatermark","orthogonalize","itemToPopout","toClassList","list","cls","startsWith","getDockviewTheme","overridePopoutGroup","getNextGroupId","popoutWindowDisposable","popoutContainer","referenceGroup","referenceLocation","isGroupAddedToDom","createGroup","error","movingLock","gready","floatingBox","returnedGroup","doSetGroupAndPanelActive","isValidReferenceGroup","popoutGroup","_onDidWindowPositionChange","emitter","timeout","previousScreenX","previousScreenY","checkMovement","closed","currentScreenX","currentScreenY","onDidWindowMoveEnd","resizeTimeout","onDidWindowResizeEnd","skipPopoutAssociated","skipPopoutReturn","catch","popoutReferenceGroupId","popoutReferenceGroup","skipRemoveGroup","anchoredBox","getAnchoredBox","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","skipActiveGroup","createGroupAtLocation","oldDisableDnd","floating","includePanel","collection","floats","popoutGroups","gridReferenceGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","serializedPopoutGroups","popoutPromises","serializedPopoutGroup","popoutPromise","all","hasActiveGroup","initial","initialWidth","initialHeight","referencePanel","findGroup","isPanelOptionsWithGroup","createPanel","inactive","floatingGroupOptions","relativeLocation","orientationAtLocation","coordinates","watermarkContainer","isGroupOptionsWithGroup","selectedGroup","refGroup","removedGroup","re","isMoving","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","newGroup","targetGroup","updatedReferenceLocation","dropLocation","isDestinationGroupEmpty","moveGroup","selectedFloatingGroup","selectedPopoutGroup","targetFloatingGroup","GridviewComponent","_onDidLayoutfromJSON","hasOrientationChanged","serializedGridview","queue","registerPanel","f","reference","groupItem","SplitviewComponent","_splitview","_splitviewChangeDisposable","_onDidLayoutChange","skipFocus","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","MAXIMUM_BODY_SIZE","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","createHeaderComponent","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","createDockview","createSplitview","createGridview","createPaneview","DefaultPanel","justifyContent","alignItems","_titleElement","_paramsElement","spacer","flexGrow","btn1","btn2","btn3","dockview","components","default","tabComponents"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/js/1800.c393a774.js","mappings":"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","sources":["webpack://dockview-docs/../dockview-core/dist/esm/dnd/dataTransfer.js","webpack://dockview-docs/../dockview-core/dist/esm/events.js","webpack://dockview-docs/../dockview-core/dist/esm/lifecycle.js","webpack://dockview-docs/../dockview-core/dist/esm/dom.js","webpack://dockview-docs/../dockview-core/dist/esm/array.js","webpack://dockview-docs/../dockview-core/dist/esm/math.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/viewItem.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/leafNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/branchNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/resizable.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/baseComponentGridview.js","webpack://dockview-docs/../dockview-core/dist/esm/api/component.api.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/abstractDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dnd.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/droptarget.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/api/panelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/splitviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/paneviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/basePanelView.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/panel/content.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/ghost.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/tab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/events.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/groupDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/scrollbar.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabs.js","webpack://dockview-docs/../dockview-core/dist/esm/svg.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabOverflowControl.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/gridviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/theme.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/deserializer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/watermark/watermark.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlay.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/constants.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlayRenderContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/popoutWindow.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/strictEventsSequencing.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/popupService.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dropTargetAnchorContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/entryPoints.js","webpack://dockview-docs/./sandboxes/javascript/fullwidthtab-dockview/src/app.ts"],"sourcesContent":["class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nexport class AcceptableEvent {\n constructor() {\n this._isAccepted = false;\n }\n get isAccepted() {\n return this._isAccepted;\n }\n accept() {\n this._isAccepted = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn('dockview: stacktrace', this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `dockview: listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n var _a;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) {\n this._last = e;\n }\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn('dockview: stacktrace', (_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\n/**\n *\n * Event Emitter that fires events from a Microtask callback, only one event will fire per event-loop cycle.\n *\n * It's kind of like using an `asapScheduler` in RxJs with additional logic to only fire once per event-loop cycle.\n * This implementation exists to avoid external dependencies.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask\n * @see https://rxjs.dev/api/index/const/asapScheduler\n */\nexport class AsapEvent {\n constructor() {\n this._onFired = new Emitter();\n this._currentFireCount = 0;\n this._queued = false;\n this.onEvent = (e) => {\n /**\n * when the event is first subscribed to take note of the current fire count\n */\n const fireCountAtTimeOfEventSubscription = this._currentFireCount;\n return this._onFired.event(() => {\n /**\n * if the current fire count is greater than the fire count at event subscription\n * then the event has been fired since we subscribed and it's ok to \"on_next\" the event.\n *\n * if the count is not greater then what we are recieving is an event from the microtask\n * queue that was triggered before we actually subscribed and therfore we should ignore it.\n */\n if (this._currentFireCount > fireCountAtTimeOfEventSubscription) {\n e();\n }\n });\n };\n }\n fire() {\n this._currentFireCount++;\n if (this._queued) {\n return;\n }\n this._queued = true;\n queueMicrotask(() => {\n this._queued = false;\n this._onFired.fire();\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","import { Emitter, addDisposableListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class OverflowObserver extends CompositeDisposable {\n constructor(el) {\n super();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._value = null;\n this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {\n const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;\n const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;\n this._value = { hasScrollX, hasScrollY };\n this._onDidChange.fire(this._value);\n }));\n }\n}\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag, document) {\n return Array.prototype.slice.call(document.querySelectorAll(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\nexport function addTestId(element, id) {\n element.setAttribute('data-testid', id);\n}\n/**\n * Should be more efficient than element.querySelectorAll(\"*\") since there\n * is no need to store every element in-memory using this approach\n */\nfunction allTagsNamesInclusiveOfShadowDoms(tagNames) {\n const iframes = [];\n function findIframesInNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (tagNames.includes(node.tagName)) {\n iframes.push(node);\n }\n if (node.shadowRoot) {\n findIframesInNode(node.shadowRoot);\n }\n for (const child of node.children) {\n findIframesInNode(child);\n }\n }\n }\n findIframesInNode(document.documentElement);\n return iframes;\n}\nexport function disableIframePointEvents(rootNode = document) {\n const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);\n const original = new WeakMap(); // don't hold onto HTMLElement references longer than required\n for (const iframe of iframes) {\n original.set(iframe, iframe.style.pointerEvents);\n iframe.style.pointerEvents = 'none';\n }\n return {\n release: () => {\n var _a;\n for (const iframe of iframes) {\n iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';\n }\n iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required\n },\n };\n}\nexport function getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nexport class Classnames {\n constructor(element) {\n this.element = element;\n this._classNames = [];\n }\n setClassNames(classNames) {\n for (const className of this._classNames) {\n toggleClass(this.element, className, false);\n }\n this._classNames = classNames\n .split(' ')\n .filter((v) => v.trim().length > 0);\n for (const className of this._classNames) {\n toggleClass(this.element, className, true);\n }\n }\n}\nconst DEBOUCE_DELAY = 100;\nexport function isChildEntirelyVisibleWithinParent(child, parent) {\n //\n const childPosition = getDomNodePagePosition(child);\n const parentPosition = getDomNodePagePosition(parent);\n if (childPosition.left < parentPosition.left) {\n return false;\n }\n if (childPosition.left + childPosition.width >\n parentPosition.left + parentPosition.width) {\n return false;\n }\n return true;\n}\nexport function onDidWindowMoveEnd(window) {\n const emitter = new Emitter();\n let previousScreenX = window.screenX;\n let previousScreenY = window.screenY;\n let timeout;\n const checkMovement = () => {\n if (window.closed) {\n return;\n }\n const currentScreenX = window.screenX;\n const currentScreenY = window.screenY;\n if (currentScreenX !== previousScreenX ||\n currentScreenY !== previousScreenY) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n emitter.fire();\n }, DEBOUCE_DELAY);\n previousScreenX = currentScreenX;\n previousScreenY = currentScreenY;\n }\n requestAnimationFrame(checkMovement);\n };\n checkMovement();\n return emitter;\n}\nexport function onDidWindowResizeEnd(element, cb) {\n let resizeTimeout;\n const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n cb();\n }, DEBOUCE_DELAY);\n }));\n return disposable;\n}\nexport function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {\n const buffer = options.buffer;\n const rect = element.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n let translateX = 0;\n let translateY = 0;\n const left = rect.left - rootRect.left;\n const top = rect.top - rootRect.top;\n const bottom = rect.bottom - rootRect.bottom;\n const right = rect.right - rootRect.right;\n // Check horizontal overflow\n if (left < buffer) {\n translateX = buffer - left;\n }\n else if (right > buffer) {\n translateX = -buffer - right;\n }\n // Check vertical overflow\n if (top < buffer) {\n translateY = buffer - top;\n }\n else if (bottom > buffer) {\n translateY = -bottom - buffer;\n }\n // Apply the translation if needed\n if (translateX !== 0 || translateY !== 0) {\n element.style.transform = `translate(${translateX}px, ${translateY}px)`;\n }\n}\nexport function findRelativeZIndexParent(el) {\n let tmp = el;\n while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {\n tmp = tmp.parentElement;\n }\n return tmp;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n /**\n * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle\n * cases where `min` > `max` and in those cases return `min`.\n */\n return min;\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'dv-horizontal', 'dv-vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);\n }\n constructor(container, options) {\n var _a, _b;\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._margin = 0;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = this.createContainer();\n this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'dv-separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'dv-separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'dv-view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'dv-sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = disableIframePointEvents();\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n iframes.release();\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n /**\n * Margin explain:\n *\n * For `n` views in a splitview there will be `n-1` margins `m`.\n *\n * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.\n *\n * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.\n */\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.updateSashEnablement();\n if (this.viewItems.length === 0) {\n return;\n }\n const visibleViewItems = this.viewItems.filter((i) => i.visible);\n const sashCount = Math.max(0, visibleViewItems.length - 1);\n const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);\n let totalLeftOffset = 0;\n const viewLeftOffsets = [];\n const sashWidth = 4; // hardcoded in css\n const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {\n const flag = viewItem.visible ? 1 : 0;\n if (i === 0) {\n arr.push(flag);\n }\n else {\n arr.push(arr[i - 1] + flag);\n }\n return arr;\n }, []);\n // calculate both view and cash positions\n this.viewItems.forEach((view, i) => {\n totalLeftOffset += this.viewItems[i].size;\n viewLeftOffsets.push(totalLeftOffset);\n const size = view.visible ? view.size - marginReducedSize : 0;\n const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);\n const offset = i === 0 || visiblePanelsBeforeThisView === 0\n ? 0\n : viewLeftOffsets[i - 1] +\n (visiblePanelsBeforeThisView / sashCount) *\n marginReducedSize;\n if (i < this.viewItems.length - 1) {\n // calculate sash position\n const newSize = view.visible\n ? offset + size - sashWidth / 2 + this.margin / 2\n : offset;\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${newSize}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${newSize}px`;\n }\n }\n // calculate view position\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${size}px`;\n view.container.style.left = `${offset}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${size}px`;\n view.container.style.top = `${offset}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size - marginReducedSize, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'dv-view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'dv-sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical';\n element.className = `dv-split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","export const PROPERTY_KEYS_SPLITVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n orientation: undefined,\n descriptor: undefined,\n proportionalLayout: undefined,\n styles: undefined,\n margin: undefined,\n disableAutoResizing: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'dv-pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'dv-animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'dv-animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n get margin() {\n return this.splitview.margin;\n }\n set margin(value) {\n this.splitview.margin = value;\n this.children.forEach((child) => {\n if (child instanceof BranchNode) {\n child.margin = value;\n }\n });\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'dv-branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n margin,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n margin,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(_visible) {\n // noop\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n // }\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire({ visible });\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange(({ visible }) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction cloneNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(node.orientation, node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n result.addChild(cloneNode(child, child.size, child.orthogonalSize), child.size, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, node.orientation, orthogonalSize);\n }\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bdv-grid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n this.root.margin = value;\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n serializeBranchNode(this.getView(), this.orientation);\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire({\n view: node.view,\n isMaximized: true,\n });\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n const tmp = this._maximizedNode.leaf;\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire({\n view: tmp.view,\n isMaximized: false,\n });\n }\n serialize() {\n const maximizedView = this.maximizedView();\n let maxmizedViewLocation;\n if (maximizedView) {\n /**\n * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid\n * which is represented as a branch of indices\n */\n maxmizedViewLocation = getGridLocation(maximizedView.element);\n }\n if (this.hasMaximizedView()) {\n /**\n * the saved layout cannot be in its maxmized state otherwise all of the underlying\n * view dimensions will be wrong\n *\n * To counteract this we temporaily remove the maximized view to compute the serialized output\n * of the grid before adding back the maxmized view as to not alter the layout from the users\n * perspective when `.toJSON()` is called\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n const resullt = {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n if (maxmizedViewLocation) {\n resullt.maximizedNode = {\n location: maxmizedViewLocation,\n };\n }\n if (maximizedView) {\n // replace any maximzied view that was removed for serialization purposes\n this.maximizeView(maximizedView);\n }\n return resullt;\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this._onDidViewVisibilityChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n /**\n * The deserialied layout must be positioned through this.layout(...)\n * before any maximizedNode can be positioned\n */\n this.layout(json.width, json.height);\n if (json.maximizedNode) {\n const location = json.maximizedNode.location;\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n this.maximizeView(node.view);\n }\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n var _a;\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this.locked, this.margin, children);\n }\n else {\n const view = deserializer.fromJSON(node);\n if (typeof node.visible === 'boolean') {\n (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);\n }\n result = new LeafNode(view, orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n normalize() {\n if (!this._root) {\n return;\n }\n if (this._root.children.length !== 1) {\n return;\n }\n const oldRoot = this.root;\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n if (childReference instanceof LeafNode) {\n return;\n }\n oldRoot.element.remove();\n const child = oldRoot.removeChild(0); // Remove child to prevent double disposal\n oldRoot.dispose(); // Dispose old root (won't dispose removed child)\n child.dispose(); // Dispose the removed child\n this._root = cloneNode(childReference, childReference.size, childReference.orthogonalSize);\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation, locked, margin) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._margin = 0;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidViewVisibilityChange = new Emitter();\n this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'dv-grid-view';\n this._locked = locked !== null && locked !== void 0 ? locked : false;\n this._margin = margin !== null && margin !== void 0 ? margin : 0;\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n this._onDidViewVisibilityChange.fire();\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","export const PROPERTY_KEYS_GRIDVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n proportionalLayout: undefined,\n orientation: undefined,\n hideBorders: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, AsapEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidMaximizedChange = new Emitter();\n this.onDidMaximizedChange = this._onDidMaximizedChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new AsapEvent();\n this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;\n this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();\n this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {\n this._onDidMaximizedChange.fire({\n panel: event.view,\n isMaximized: event.isMaximized,\n });\n }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.layout(this.width, this.height, true);\n }), Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._onDidMaximizedChange, this._onDidViewVisibilityChangeMicroTaskQueue, this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._bufferOnDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n updateOptions(options) {\n var _a, _b, _c, _d;\n if (typeof options.proportionalLayout === 'boolean') {\n // this.gridview.proportionalLayout = options.proportionalLayout; // not supported\n }\n if (options.orientation) {\n this.gridview.orientation = options.orientation;\n }\n if ('styles' in options) {\n // this.gridview.styles = options.styles; // not supported\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;\n }\n if ('locked' in options) {\n this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;\n }\n if ('margin' in options) {\n this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;\n }\n if ('className' in options) {\n this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');\n }\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize || width !== this.width || height !== this.height;\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","export class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n get onDidMovePanel() {\n return this.component.onDidMovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n get onDidPopoutGroupSizeChange() {\n return this.component.onDidPopoutGroupSizeChange;\n }\n get onDidPopoutGroupPositionChange() {\n return this.component.onDidPopoutGroupPositionChange;\n }\n get onDidOpenPopoutWindowFail() {\n return this.component.onDidOpenPopoutWindowFail;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, options) {\n return this.component.addFloatingGroup(item, options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\n","import { disableIframePointEvents } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el, disabled) {\n super();\n this.el = el;\n this.disabled = disabled;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n setDisabled(disabled) {\n this.disabled = disabled;\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event) || this.disabled) {\n event.preventDefault();\n return;\n }\n const iframes = disableIframePointEvents();\n this.pointerEventsDisposable.value = {\n dispose: () => {\n iframes.release();\n },\n };\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n setTimeout(() => {\n this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing\n }, 0);\n }));\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nfunction setGPUOptimizedBounds(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Use traditional positioning but maintain GPU layer\n element.style.top = topPx;\n element.style.left = leftPx;\n element.style.width = widthPx;\n element.style.height = heightPx;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction setGPUOptimizedBoundsFromStrings(element, bounds) {\n const { top, left, width, height } = bounds;\n // Use traditional positioning but maintain GPU layer\n element.style.top = top;\n element.style.left = left;\n element.style.width = width;\n element.style.height = height;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction checkBoundsChanged(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Check if position or size changed (back to traditional method)\n return element.style.top !== topPx ||\n element.style.left !== leftPx ||\n element.style.width !== widthPx ||\n element.style.height !== heightPx;\n}\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._disabled = false;\n // use a set to take advantage of #.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => {\n var _a, _b, _c;\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();\n },\n onDragOver: (e) => {\n var _a, _b, _c, _d, _e, _f, _g;\n Droptarget.ACTUAL_TARGET = this;\n const overrideTarget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this._acceptedTargetZonesSet.size === 0) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;\n const width = target.offsetWidth;\n const height = target.offsetHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;\n const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n if (!this.options.canDisplayOverlay(e, quadrant)) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (overrideTarget) {\n //\n }\n else if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'dv-drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'dv-drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n target.classList.add('dv-drop-target');\n target.append(this.targetElement);\n // this.overlayElement.style.opacity = '0';\n // requestAnimationFrame(() => {\n // if (this.overlayElement) {\n // this.overlayElement.style.opacity = '';\n // }\n // });\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target) {\n return;\n }\n this.removeDropTarget();\n },\n onDragEnd: (e) => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target && Droptarget.ACTUAL_TARGET === this) {\n if (this._state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({\n position: this._state,\n nativeEvent: e,\n });\n }\n }\n this.removeDropTarget();\n target === null || target === void 0 ? void 0 : target.clear();\n },\n onDrop: (e) => {\n var _a, _b, _c;\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b, _c, _d, _e, _f, _g;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!target && !this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n if (target) {\n const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;\n const elBox = outlineEl.getBoundingClientRect();\n const ta = target.getElements(undefined, outlineEl);\n const el = ta.root;\n const overlay = ta.overlay;\n const bigbox = el.getBoundingClientRect();\n const rootTop = elBox.top - bigbox.top;\n const rootLeft = elBox.left - bigbox.left;\n const box = {\n top: rootTop,\n left: rootLeft,\n width: width,\n height: height,\n };\n if (rightClass) {\n box.left = rootLeft + width * (1 - size);\n box.width = width * size;\n }\n else if (leftClass) {\n box.width = width * size;\n }\n else if (topClass) {\n box.height = height * size;\n }\n else if (bottomClass) {\n box.top = rootTop + height * (1 - size);\n box.height = height * size;\n }\n if (isSmallX && isLeft) {\n box.width = 4;\n }\n if (isSmallX && isRight) {\n box.left = rootLeft + width - 4;\n box.width = 4;\n }\n // Use GPU-optimized bounds checking and setting\n if (!checkBoundsChanged(overlay, box)) {\n return;\n }\n setGPUOptimizedBounds(overlay, box);\n overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;\n toggleClass(overlay, 'dv-drop-target-left', isLeft);\n toggleClass(overlay, 'dv-drop-target-right', isRight);\n toggleClass(overlay, 'dv-drop-target-top', isTop);\n toggleClass(overlay, 'dv-drop-target-bottom', isBottom);\n toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');\n if (ta.changed) {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);\n setTimeout(() => {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);\n }, 10);\n }\n return;\n }\n if (!this.overlayElement) {\n return;\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n setGPUOptimizedBoundsFromStrings(this.overlayElement, box);\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n var _a;\n if (this.targetElement) {\n this._state = undefined;\n (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');\n this.targetElement.remove();\n this.targetElement = undefined;\n this.overlayElement = undefined;\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { AcceptableEvent } from '../events';\nexport const PROPERTY_KEYS_PANEVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n disableDnd: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\nexport class PaneviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, position, getData, panel) {\n super();\n this.nativeEvent = nativeEvent;\n this.position = position;\n this.getData = getData;\n this.panel = panel;\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id, component) {\n super();\n this.id = id;\n this.component = component;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this._parameters = {};\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onDidParametersChange = new Emitter();\n this.onDidParametersChange = this._onDidParametersChange.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);\n }\n getParameters() {\n return this._parameters;\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {\n this._parameters = parameters;\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onDidParametersChange.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id, component) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id, component) {\n super(id, component);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(options) {\n super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = 0;\n this._size = 0;\n this._isExpanded = false;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this.headerSize = options.headerSize;\n this.headerComponent = options.headerComponent;\n this._minimumBodySize = options.minimumBodySize;\n this._maximumBodySize = options.maximumBodySize;\n this._isExpanded = options.isExpanded;\n this._headerVisible = options.isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = options.orientation;\n this.element.classList.add('dv-pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'dv-pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'dv-pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewUnhandledDragOverEvent, } from './options';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(options) {\n super({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n isHeaderVisible: true,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.accessor = options.accessor;\n this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);\n if (!options.disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event, position) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n const firedEvent = new PaneviewUnhandledDragOverEvent(event, position, getPaneData, this);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n const target = group.dropTargetContainer;\n this.dropTarget = new Droptarget(this.element, {\n getOverlayOutline: () => {\n var _a;\n return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'\n ? this.element.parentElement\n : null;\n },\n className: 'dv-drop-target-content',\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n return true;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n getOverrideTarget: target ? () => target.model : undefined,\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisible':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n default:\n throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisible') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement, options) {\n var _a, _b;\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n // move the element off-screen initially otherwise it may in some cases be rendered at (0,0) momentarily\n ghostElement.style.top = '-9999px';\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nimport { addGhostImage } from '../../../dnd/ghost';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onPointDown = new Emitter();\n this.onPointerDown = this._onPointDown.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tab';\n this._element.tabIndex = 0;\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this.element, 'dv-inactive-tab', true);\n this.dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['left', 'right'],\n overlayModel: { activationSize: { value: 50, type: 'percentage' } },\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, this.dragHandler.onDragStart((event) => {\n if (event.dataTransfer) {\n const style = getComputedStyle(this.element);\n const newNode = this.element.cloneNode(true);\n Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));\n newNode.style.position = 'absolute';\n addGhostImage(event.dataTransfer, newNode, {\n y: -10,\n x: 30,\n });\n }\n this._onDragStart.fire(event);\n }), this.dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {\n this._onPointDown.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'dv-active-tab', isActive);\n toggleClass(this.element, 'dv-inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n this.dragHandler.setDisabled(!!this.accessor.options.disableDnd);\n }\n dispose() {\n super.dispose();\n }\n}\n","export class WillShowOverlayLocationEvent {\n get kind() {\n return this.options.kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n get panel() {\n return this.options.panel;\n }\n get api() {\n return this.options.api;\n }\n get group() {\n return this.options.group;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n getData() {\n return this.options.getData();\n }\n constructor(event, options) {\n this.event = event;\n this.options = options;\n }\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'pointerdown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.style.pointerEvents = 'none';\n ghostElement.style.top = '-9999px';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { toggleClass } from '../../../dom';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-void-container';\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n this.handler = new GroupDragHandler(this._element, accessor, group, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this.handler, this.handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTarget);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.handler.setDisabled(!!this.accessor.options.disableDnd);\n }\n}\n","import { toggleClass, watchElementResize } from './dom';\nimport { addDisposableListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nimport { clamp } from './math';\nexport class Scrollbar extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(scrollableElement) {\n super();\n this.scrollableElement = scrollableElement;\n this._scrollLeft = 0;\n this._element = document.createElement('div');\n this._element.className = 'dv-scrollable';\n this._horizontalScrollbar = document.createElement('div');\n this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';\n this.element.appendChild(scrollableElement);\n this.element.appendChild(this._horizontalScrollbar);\n this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {\n this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;\n this.calculateScrollbarStyles();\n }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {\n event.preventDefault();\n toggleClass(this.element, 'dv-scrollable-scrolling', true);\n const originalClientX = event.clientX;\n const originalScrollLeft = this._scrollLeft;\n const onPointerMove = (event) => {\n const deltaX = event.clientX - originalClientX;\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const p = clientWidth / scrollWidth;\n this._scrollLeft = originalScrollLeft + deltaX / p;\n this.calculateScrollbarStyles();\n };\n const onEnd = () => {\n toggleClass(this.element, 'dv-scrollable-scrolling', false);\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onEnd);\n document.removeEventListener('pointercancel', onEnd);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onEnd);\n document.addEventListener('pointercancel', onEnd);\n }), addDisposableListener(this.element, 'scroll', () => {\n this.calculateScrollbarStyles();\n }), addDisposableListener(this.scrollableElement, 'scroll', () => {\n this._scrollLeft = this.scrollableElement.scrollLeft;\n this.calculateScrollbarStyles();\n }), watchElementResize(this.element, () => {\n toggleClass(this.element, 'dv-scrollable-resizing', true);\n if (this._animationTimer) {\n clearTimeout(this._animationTimer);\n }\n this._animationTimer = setTimeout(() => {\n clearTimeout(this._animationTimer);\n toggleClass(this.element, 'dv-scrollable-resizing', false);\n }, 500);\n this.calculateScrollbarStyles();\n }));\n }\n calculateScrollbarStyles() {\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const hasScrollbar = scrollWidth > clientWidth;\n if (hasScrollbar) {\n const px = clientWidth * (clientWidth / scrollWidth);\n this._horizontalScrollbar.style.width = `${px}px`;\n this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);\n this.scrollableElement.scrollLeft = this._scrollLeft;\n const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);\n this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;\n }\n else {\n this._horizontalScrollbar.style.width = `0px`;\n this._horizontalScrollbar.style.left = `0px`;\n this._scrollLeft = 0;\n }\n }\n}\nScrollbar.MouseWheelSpeed = 1;\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../dom';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { Scrollbar } from '../../../scrollbar';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { Tab } from '../tab/tab';\nexport class Tabs extends CompositeDisposable {\n get showTabsOverflowControl() {\n return this._showTabsOverflowControl;\n }\n set showTabsOverflowControl(value) {\n if (this._showTabsOverflowControl == value) {\n return;\n }\n this._showTabsOverflowControl = value;\n if (value) {\n const observer = new OverflowObserver(this._tabsList);\n this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {\n const hasOverflow = event.hasScrollX || event.hasScrollY;\n this.toggleDropdown({ reset: !hasOverflow });\n }), addDisposableListener(this._tabsList, 'scroll', () => {\n this.toggleDropdown({ reset: false });\n }));\n }\n }\n get element() {\n return this._element;\n }\n get panels() {\n return this._tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this._tabs.length;\n }\n get tabs() {\n return this._tabs.map((_) => _.value);\n }\n constructor(group, accessor, options) {\n super();\n this.group = group;\n this.accessor = accessor;\n this._observerDisposable = new MutableDisposable();\n this._tabs = [];\n this.selectedIndex = -1;\n this._showTabsOverflowControl = false;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onOverflowTabsChange = new Emitter();\n this.onOverflowTabsChange = this._onOverflowTabsChange.event;\n this._tabsList = document.createElement('div');\n this._tabsList.className = 'dv-tabs-container dv-horizontal';\n this.showTabsOverflowControl = options.showTabsOverflowControl;\n if (accessor.options.scrollbars === 'native') {\n this._element = this._tabsList;\n }\n else {\n const scrollbar = new Scrollbar(this._tabsList);\n this._element = scrollbar.element;\n this.addDisposables(scrollbar);\n }\n this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }), Disposable.from(() => {\n for (const { value, disposable } of this._tabs) {\n disposable.dispose();\n value.dispose();\n }\n this._tabs = [];\n }));\n }\n indexOf(id) {\n return this._tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this._tabs[this.selectedIndex].value === tab);\n }\n setActivePanel(panel) {\n let runningWidth = 0;\n for (const tab of this._tabs) {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n if (isActivePanel) {\n const element = tab.value.element;\n const parentElement = element.parentElement;\n if (runningWidth < parentElement.scrollLeft ||\n runningWidth + element.clientWidth >\n parentElement.scrollLeft + parentElement.clientWidth) {\n parentElement.scrollLeft = runningWidth;\n }\n }\n runningWidth += tab.value.element.clientWidth;\n }\n }\n openPanel(panel, index = this._tabs.length) {\n if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onPointerDown((event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n inDragMode: true,\n });\n return;\n }\n switch (event.button) {\n case 0: // left click or touch\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n break;\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this._tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'tab',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n delete(id) {\n const index = this.indexOf(id);\n const tabToRemove = this._tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n addTab(tab, index = this._tabs.length) {\n if (index < 0 || index > this._tabs.length) {\n throw new Error('invalid location');\n }\n this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);\n this._tabs = [\n ...this._tabs.slice(0, index),\n tab,\n ...this._tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n toggleDropdown(options) {\n const tabs = options.reset\n ? []\n : this._tabs\n .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))\n .map((x) => x.value.panel.id);\n this._onOverflowTabsChange.fire({ tabs, reset: options.reset });\n }\n updateDragAndDropState() {\n for (const tab of this._tabs) {\n tab.value.updateDragAndDropState();\n }\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dv-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { VoidContainer } from './voidContainer';\nimport { findRelativeZIndexParent, toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Tabs } from './tabs';\nimport { createDropdownElementHandle, } from './tabOverflowControl';\nexport class TabsContainer extends CompositeDisposable {\n get onTabDragStart() {\n return this.tabs.onTabDragStart;\n }\n get panels() {\n return this.tabs.panels;\n }\n get size() {\n return this.tabs.size;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._hidden = false;\n this.dropdownPart = null;\n this._overflowTabs = [];\n this._dropdownDisposable = new MutableDisposable();\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'dv-right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'dv-left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'dv-pre-actions-container';\n this.tabs = new Tabs(group, accessor, {\n showTabsOverflowControl: !accessor.options.disableTabsOverflowList,\n });\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabs.element);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.tabs.onDrop((e) => this._onDrop.fire(e)), this.tabs.onWillShowOverlay((e) => this._onWillShowOverlay.fire(e)), accessor.onDidOptionsChange(() => {\n this.tabs.showTabsOverflowControl =\n !accessor.options.disableTabsOverflowList;\n }), this.tabs.onOverflowTabsChange((event) => {\n this.toggleDropdown(event);\n }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.size,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n inDragMode: true,\n });\n }\n }));\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n isActive(tab) {\n return this.tabs.isActive(tab);\n }\n indexOf(id) {\n return this.tabs.indexOf(id);\n }\n setActive(_isGroupActive) {\n // noop\n }\n delete(id) {\n this.tabs.delete(id);\n this.updateClassnames();\n }\n setActivePanel(panel) {\n this.tabs.setActivePanel(panel);\n }\n openPanel(panel, index = this.tabs.size) {\n this.tabs.openPanel(panel, index);\n this.updateClassnames();\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n updateClassnames() {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n toggleDropdown(options) {\n const tabs = options.reset ? [] : options.tabs;\n this._overflowTabs = tabs;\n if (this._overflowTabs.length > 0 && this.dropdownPart) {\n this.dropdownPart.update({ tabs: tabs.length });\n return;\n }\n if (this._overflowTabs.length === 0) {\n this._dropdownDisposable.dispose();\n return;\n }\n const root = document.createElement('div');\n root.className = 'dv-tabs-overflow-dropdown-root';\n const part = createDropdownElementHandle();\n part.update({ tabs: tabs.length });\n this.dropdownPart = part;\n root.appendChild(part.element);\n this.rightActionsContainer.prepend(root);\n this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {\n var _a, _b;\n root.remove();\n (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.dropdownPart = null;\n }), addDisposableListener(root, 'pointerdown', (event) => {\n event.preventDefault();\n }, { capture: true }), addDisposableListener(root, 'click', (event) => {\n const el = document.createElement('div');\n el.style.overflow = 'auto';\n el.className = 'dv-tabs-overflow-container';\n for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {\n const panelObject = this.group.panels.find((panel) => panel === tab.panel);\n const tabComponent = panelObject.view.createTabRenderer('headerOverflow');\n const child = tabComponent.element;\n const wrapper = document.createElement('div');\n toggleClass(wrapper, 'dv-tab', true);\n toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);\n toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);\n wrapper.addEventListener('click', (event) => {\n this.accessor.popupService.close();\n if (event.defaultPrevented) {\n return;\n }\n tab.element.scrollIntoView();\n tab.panel.api.setActive();\n });\n wrapper.appendChild(child);\n el.appendChild(wrapper);\n }\n const relativeParent = findRelativeZIndexParent(root);\n this.accessor.popupService.openPopover(el, {\n x: event.clientX,\n y: event.clientY,\n zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)\n ? `calc(${relativeParent.style.zIndex} * 2)`\n : undefined,\n });\n }));\n }\n updateDragAndDropState() {\n this.tabs.updateDragAndDropState();\n this.voidContainer.updateDragAndDropState();\n }\n}\n","import { createChevronRightButton } from '../../../svg';\nexport function createDropdownElementHandle() {\n const el = document.createElement('div');\n el.className = 'dv-tabs-overflow-dropdown-default';\n const text = document.createElement('span');\n text.textContent = ``;\n const icon = createChevronRightButton();\n el.appendChild(icon);\n el.appendChild(text);\n return {\n element: el,\n update: (params) => {\n text.textContent = `${params.tabs}`;\n },\n };\n}\n","import { AcceptableEvent } from '../events';\nexport class DockviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, target, position, getData, group) {\n super();\n this.nativeEvent = nativeEvent;\n this.target = target;\n this.position = position;\n this.getData = getData;\n this.group = group;\n }\n}\nexport const PROPERTY_KEYS_DOCKVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n hideBorders: undefined,\n singleTabMode: undefined,\n disableFloatingGroups: undefined,\n floatingGroupBounds: undefined,\n popoutUrl: undefined,\n defaultRenderer: undefined,\n debug: undefined,\n rootOverlayModel: undefined,\n locked: undefined,\n disableDnd: undefined,\n className: undefined,\n noPanelsOverlay: undefined,\n dndEdges: undefined,\n theme: undefined,\n disableTabsOverflowList: undefined,\n scrollbars: undefined,\n };\n return Object.keys(properties);\n})();\nexport function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nimport { DockviewUnhandledDragOverEvent, } from './options';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('dockview: not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._overwriteRenderContainer = null;\n this._overwriteDropTargetContainer = null;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._panelDisposables = new Map();\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPanelTitleChange = new Emitter();\n this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;\n this._onDidPanelParametersChange = new Emitter();\n this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n toggleClass(this.container, 'dv-groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n panel: this.activePanel,\n api: this._api,\n group: this.groupPanel,\n getData: getPanelData,\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this._onUnhandledDragOverEvent, this._onDidPanelTitleChange, this._onDidPanelParametersChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n set dropTargetContainer(value) {\n this._overwriteDropTargetContainer = value;\n }\n get dropTargetContainer() {\n var _a;\n return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionComponent) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionComponent) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionComponent) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;\n this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'\n ? { removeEmptyGroup: false }\n : undefined);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'dv-active-group', isGroupActive);\n toggleClass(this.container, 'dv-inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n const index = this.mostRecentlyUsed.indexOf(panel);\n this.mostRecentlyUsed.splice(index, 1);\n }\n const disposable = this._panelDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._panelDisposables.delete(panel.id);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'pointerdown', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.contentContainer.element.appendChild(this.watermark.element);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n }\n }\n canDisplayOverlay(event, position, target) {\n const firedEvent = new DockviewUnhandledDragOverEvent(event, target, position, getPanelData, this.accessor.getPanel(this.id));\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (type === 'content') {\n if (data.groupId === this.id) {\n // don't allow to drop on self for center position\n if (position === 'center') {\n return;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return;\n }\n }\n }\n if (type === 'header') {\n if (data.groupId === this.id) {\n if (data.panelId === null) {\n return;\n }\n }\n }\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n updateDragAndDropState() {\n this.tabsContainer.updateDragAndDropState();\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, component, panel) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumWidth();\n }\n get minimumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumHeight();\n }\n get maximumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumHeight();\n }\n get maximumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumWidth();\n }\n __minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n __maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get isActive() {\n return this.api.isActive;\n }\n get isVisible() {\n return this.api.isVisible;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nconst NOT_INITIALIZED_MESSAGE = 'dockview: DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id, '__dockviewgroup__');\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c, _d;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get minimumWidth() {\n var _a;\n const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;\n if (typeof activePanelMinimumWidth === 'number') {\n return activePanelMinimumWidth;\n }\n return super.__minimumWidth();\n }\n get minimumHeight() {\n var _a;\n const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;\n if (typeof activePanelMinimumHeight === 'number') {\n return activePanelMinimumHeight;\n }\n return super.__minimumHeight();\n }\n get maximumWidth() {\n var _a;\n const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;\n if (typeof activePanelMaximumWidth === 'number') {\n return activePanelMaximumWidth;\n }\n return super.__maximumWidth();\n }\n get maximumHeight() {\n var _a;\n const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;\n if (typeof activePanelMaximumHeight === 'number') {\n return activePanelMaximumHeight;\n }\n return super.__maximumHeight();\n }\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n var _a, _b, _c, _d, _e, _f;\n super(id, 'groupview_default', {\n minimumHeight: (_b = (_a = options.constraints) === null || _a === void 0 ? void 0 : _a.minimumHeight) !== null && _b !== void 0 ? _b : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: (_d = (_c = options.constraints) === null || _c === void 0 ? void 0 : _c.maximumHeight) !== null && _d !== void 0 ? _d : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n maximumHeight: (_e = options.constraints) === null || _e === void 0 ? void 0 : _e.maximumHeight,\n maximumWidth: (_f = options.constraints) === null || _f === void 0 ? void 0 : _f.maximumWidth,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n this.addDisposables(this.model.onDidActivePanelChange((event) => {\n this.api._onDidActivePanelChange.fire(event);\n }));\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export const themeDark = {\n name: 'dark',\n className: 'dockview-theme-dark',\n};\nexport const themeLight = {\n name: 'light',\n className: 'dockview-theme-light',\n};\nexport const themeVisualStudio = {\n name: 'visualStudio',\n className: 'dockview-theme-vs',\n};\nexport const themeAbyss = {\n name: 'abyss',\n className: 'dockview-theme-abyss',\n};\nexport const themeDracula = {\n name: 'dracula',\n className: 'dockview-theme-dracula',\n};\nexport const themeReplit = {\n name: 'replit',\n className: 'dockview-theme-replit',\n gap: 10,\n};\nexport const themeAbyssSpaced = {\n name: 'abyssSpaced',\n className: 'dockview-theme-abyss-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\nexport const themeLightSpaced = {\n name: 'lightSpaced',\n className: 'dockview-theme-light-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n get tabComponent() {\n return this._tabComponent;\n }\n constructor(panel, group, accessor, component, tabComponent) {\n super(panel.id, component);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this._tabComponent = tabComponent;\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a, _b;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,\n position: options.group\n ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n const hasBecomeHidden = !event.isVisible && this.isVisible;\n const hasBecomeVisible = event.isVisible && !this.isVisible;\n const isActivePanel = this.group.model.isPanelActive(this.panel);\n if (hasBecomeHidden || (hasBecomeVisible && isActivePanel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n get minimumWidth() {\n return this._minimumWidth;\n }\n get minimumHeight() {\n return this._minimumHeight;\n }\n get maximumWidth() {\n return this._maximumWidth;\n }\n get maximumHeight() {\n return this._maximumHeight;\n }\n constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this._minimumWidth = options.minimumWidth;\n this._minimumHeight = options.minimumHeight;\n this._maximumWidth = options.maximumWidth;\n this._maximumHeight = options.maximumHeight;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange(() => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n minimumHeight: this._minimumHeight,\n maximumHeight: this._maximumHeight,\n minimumWidth: this._minimumWidth,\n maximumWidth: this._maximumWidth,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: this._params,\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-default-tab';\n this._content = document.createElement('div');\n this._content.className = 'dv-default-tab-content';\n this.action = document.createElement('div');\n this.action.className = 'dv-default-tab-action';\n this.action.appendChild(createCloseButton());\n this._element.appendChild(this._content);\n this._element.appendChild(this.action);\n this.render();\n }\n init(params) {\n this._title = params.title;\n this.addDisposables(params.api.onDidTitleChange((event) => {\n this._title = event.title;\n this.render();\n }), addDisposableListener(this.action, 'pointerdown', (ev) => {\n ev.preventDefault();\n }), addDisposableListener(this.action, 'click', (ev) => {\n if (ev.defaultPrevented) {\n return;\n }\n ev.preventDefault();\n params.api.close();\n }));\n this.render();\n }\n render() {\n var _a;\n if (this._content.textContent !== this._title) {\n this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n createTabRenderer(tabLocation) {\n var _a;\n const cmp = this.createTabComponent(this.id, this.tabComponent);\n if (this._params) {\n cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));\n }\n if (this._updateEvent) {\n (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);\n }\n return cmp;\n }\n init(params) {\n this._params = params;\n this.content.init(params);\n this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n this._updateEvent = event;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n return this.accessor.options.createComponent({\n id,\n name: componentName,\n });\n }\n createTabComponent(id, componentName) {\n const name = componentName !== null && componentName !== void 0 ? componentName : this.accessor.options.defaultTabComponent;\n if (name) {\n if (this.accessor.options.createTabComponent) {\n const component = this.accessor.options.createTabComponent({\n id,\n name,\n });\n if (component) {\n return component;\n }\n else {\n return new DefaultTab();\n }\n }\n console.warn(`dockview: tabComponent '${componentName}' was not found. falling back to the default tab.`);\n }\n return new DefaultTab();\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n minimumWidth: panelData.minimumWidth,\n minimumHeight: panelData.minimumHeight,\n maximumWidth: panelData.maximumWidth,\n maximumHeight: panelData.maximumHeight,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-watermark';\n }\n init(_params) {\n // noop\n }\n}\n","import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nclass AriaLevelTracker {\n constructor() {\n this._orderedList = [];\n }\n push(element) {\n this._orderedList = [\n ...this._orderedList.filter((item) => item !== element),\n element,\n ];\n this.update();\n }\n destroy(element) {\n this._orderedList = this._orderedList.filter((item) => item !== element);\n this.update();\n }\n update() {\n for (let i = 0; i < this._orderedList.length; i++) {\n this._orderedList[i].setAttribute('aria-level', `${i}`);\n this._orderedList[i].style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${i * 2})`;\n }\n }\n}\nconst arialLevelTracker = new AriaLevelTracker();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n get element() {\n return this._element;\n }\n get isVisible() {\n return this._isVisible;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this._isVisible = true;\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));\n arialLevelTracker.push(this._element);\n }\n setVisible(isVisible) {\n if (isVisible === this.isVisible) {\n return;\n }\n this._isVisible = isVisible;\n toggleClass(this.element, 'dv-hidden', !this.isVisible);\n }\n bringToFront() {\n arialLevelTracker.push(this._element);\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if ('top' in bounds && typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n this._element.style.bottom = 'auto';\n this.verticalAlignment = 'top';\n }\n if ('bottom' in bounds && typeof bounds.bottom === 'number') {\n this._element.style.bottom = `${bounds.bottom}px`;\n this._element.style.top = 'auto';\n this.verticalAlignment = 'bottom';\n }\n if ('left' in bounds && typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n this._element.style.right = 'auto';\n this.horiziontalAlignment = 'left';\n }\n if ('right' in bounds && typeof bounds.right === 'number') {\n this._element.style.right = `${bounds.right}px`;\n this._element.style.left = 'auto';\n this.horiziontalAlignment = 'right';\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n if (this.verticalAlignment === 'top') {\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.top = `${top}px`;\n this._element.style.bottom = 'auto';\n }\n if (this.verticalAlignment === 'bottom') {\n const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.bottom = `${bottom}px`;\n this._element.style.top = 'auto';\n }\n if (this.horiziontalAlignment === 'left') {\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.left = `${left}px`;\n this._element.style.right = 'auto';\n }\n if (this.horiziontalAlignment === 'right') {\n const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.right = `${right}px`;\n this._element.style.left = 'auto';\n }\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n const result = {};\n if (this.verticalAlignment === 'top') {\n result.top = parseFloat(this._element.style.top);\n }\n else if (this.verticalAlignment === 'bottom') {\n result.bottom = parseFloat(this._element.style.bottom);\n }\n else {\n result.top = element.top - container.top;\n }\n if (this.horiziontalAlignment === 'left') {\n result.left = parseFloat(this._element.style.left);\n }\n else if (this.horiziontalAlignment === 'right') {\n result.right = parseFloat(this._element.style.right);\n }\n else {\n result.left = element.left - container.left;\n }\n result.width = element.width;\n result.height = element.height;\n return result;\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable({\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const bottom = clamp(offset.y -\n y +\n containerRect.height -\n overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n this.setBounds(bounds);\n }), addDisposableListener(window, 'pointerup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'pointerdown', () => {\n arialLevelTracker.push(this._element);\n }, true));\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let bottom = undefined;\n let height = undefined;\n let left = undefined;\n let right = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n bottom = containerRect.height - top - height;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n bottom = containerRect.height - top - height;\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n right = containerRect.width - left - width;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n right = containerRect.width - left - width;\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n bounds.height = height;\n bounds.width = width;\n this.setBounds(bounds);\n }), {\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointerup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return 0;\n }\n dispose() {\n arialLevelTracker.destroy(this._element);\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };\nexport const DESERIALIZATION_POPOUT_DELAY_MS = 100;\n","import { DragAndDropObserver } from '../dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from '../dom';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../lifecycle';\nclass PositionCache {\n constructor() {\n this.cache = new Map();\n this.currentFrameId = 0;\n this.rafId = null;\n }\n getPosition(element) {\n const cached = this.cache.get(element);\n if (cached && cached.frameId === this.currentFrameId) {\n return cached.rect;\n }\n this.scheduleFrameUpdate();\n const rect = getDomNodePagePosition(element);\n this.cache.set(element, { rect, frameId: this.currentFrameId });\n return rect;\n }\n invalidate() {\n this.currentFrameId++;\n }\n scheduleFrameUpdate() {\n if (this.rafId)\n return;\n this.rafId = requestAnimationFrame(() => {\n this.currentFrameId++;\n this.rafId = null;\n });\n }\n}\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element, accessor) {\n super();\n this.element = element;\n this.accessor = accessor;\n this.map = {};\n this._disposed = false;\n this.positionCache = new PositionCache();\n this.pendingUpdates = new Set();\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n updateAllPositions() {\n if (this._disposed) {\n return;\n }\n // Invalidate position cache to force recalculation\n this.positionCache.invalidate();\n // Call resize function directly for all visible panels\n for (const entry of Object.values(this.map)) {\n if (entry.panel.api.isVisible && entry.resize) {\n entry.resize();\n }\n }\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n const panelId = panel.api.id;\n if (this.pendingUpdates.has(panelId)) {\n return; // Update already scheduled\n }\n this.pendingUpdates.add(panelId);\n requestAnimationFrame(() => {\n this.pendingUpdates.delete(panelId);\n if (this.isDisposed || !this.map[panelId]) {\n return;\n }\n const box = this.positionCache.getPosition(referenceContainer.element);\n const box2 = this.positionCache.getPosition(this.element);\n // Use traditional positioning for overlay containers\n const left = box.left - box2.left;\n const top = box.top - box2.top;\n const width = box.width;\n const height = box.height;\n focusContainer.style.left = `${left}px`;\n focusContainer.style.top = `${top}px`;\n focusContainer.style.width = `${width}px`;\n focusContainer.style.height = `${height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n });\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n this.positionCache.invalidate();\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const observerDisposable = new MutableDisposable();\n const correctLayerPosition = () => {\n if (panel.api.location.type === 'floating') {\n queueMicrotask(() => {\n const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);\n if (!floatingGroup) {\n return;\n }\n const element = floatingGroup.overlay.element;\n const update = () => {\n const level = Number(element.getAttribute('aria-level'));\n focusContainer.style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${level * 2 + 1})`;\n };\n const observer = new MutationObserver(() => {\n update();\n });\n observerDisposable.value = Disposable.from(() => observer.disconnect());\n observer.observe(element, {\n attributeFilter: ['aria-level'],\n attributes: true,\n });\n update();\n });\n }\n else {\n focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here\n }\n };\n const disposable = new CompositeDisposable(observerDisposable, \n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange(() => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }), panel.api.onDidLocationChange(() => {\n correctLayerPosition();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n correctLayerPosition();\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n // store the resize function for direct access\n this.map[panel.api.id].resize = resize;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableListener } from './events';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(Disposable.from(() => {\n externalWindow.close();\n }), addDisposableListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve, reject) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n try {\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n }\n catch (err) {\n // only except this is the DOM isn't setup. e.g. in a in correctly configured test\n reject(err);\n }\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { CompositeDisposable } from '../lifecycle';\nexport class StrictEventsSequencing extends CompositeDisposable {\n constructor(accessor) {\n super();\n this.accessor = accessor;\n this.init();\n }\n init() {\n const panels = new Set();\n const groups = new Set();\n this.addDisposables(this.accessor.onDidAddPanel((panel) => {\n if (panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${panel.api.id} but panel already exists`);\n }\n else {\n panels.add(panel.api.id);\n }\n }), this.accessor.onDidRemovePanel((panel) => {\n if (!panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${panel.api.id} but panel does not exists`);\n }\n else {\n panels.delete(panel.api.id);\n }\n }), this.accessor.onDidAddGroup((group) => {\n if (groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${group.api.id} but group already exists`);\n }\n else {\n groups.add(group.api.id);\n }\n }), this.accessor.onDidRemoveGroup((group) => {\n if (!groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${group.api.id} but group does not exists`);\n }\n else {\n groups.delete(group.api.id);\n }\n }));\n }\n}\n","import { shiftAbsoluteElementIntoView } from '../../dom';\nimport { addDisposableListener } from '../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';\nexport class PopupService extends CompositeDisposable {\n constructor(root) {\n super();\n this.root = root;\n this._active = null;\n this._activeDisposable = new MutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-popover-anchor';\n this._element.style.position = 'relative';\n this.root.prepend(this._element);\n this.addDisposables(Disposable.from(() => {\n this.close();\n }), this._activeDisposable);\n }\n openPopover(element, position) {\n var _a;\n this.close();\n const wrapper = document.createElement('div');\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';\n wrapper.appendChild(element);\n const anchorBox = this._element.getBoundingClientRect();\n const offsetX = anchorBox.left;\n const offsetY = anchorBox.top;\n wrapper.style.top = `${position.y - offsetY}px`;\n wrapper.style.left = `${position.x - offsetX}px`;\n this._element.appendChild(wrapper);\n this._active = wrapper;\n this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {\n var _a;\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n let el = target;\n while (el && el !== wrapper) {\n el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;\n }\n if (el) {\n return; // clicked within popover\n }\n this.close();\n }));\n requestAnimationFrame(() => {\n shiftAbsoluteElementIntoView(wrapper, this.root);\n });\n }\n close() {\n if (this._active) {\n this._active.remove();\n this._activeDisposable.dispose();\n this._active = null;\n }\n }\n}\n","import { CompositeDisposable, Disposable } from '../lifecycle';\nexport class DropTargetAnchorContainer extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n var _a;\n if (this.disabled === value) {\n return;\n }\n this._disabled = value;\n if (value) {\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }\n }\n get model() {\n if (this.disabled) {\n return undefined;\n }\n return {\n clear: () => {\n var _a;\n if (this._model) {\n (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);\n }\n this._model = undefined;\n },\n exists: () => {\n return !!this._model;\n },\n getElements: (event, outline) => {\n const changed = this._outline !== outline;\n this._outline = outline;\n if (this._model) {\n this._model.changed = changed;\n return this._model;\n }\n const container = this.createContainer();\n const anchor = this.createAnchor();\n this._model = { root: container, overlay: anchor, changed };\n container.appendChild(anchor);\n this.element.appendChild(container);\n if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {\n const targetBox = event.target.getBoundingClientRect();\n const box = this.element.getBoundingClientRect();\n anchor.style.left = `${targetBox.left - box.left}px`;\n anchor.style.top = `${targetBox.top - box.top}px`;\n }\n return this._model;\n },\n };\n }\n constructor(element, options) {\n super();\n this.element = element;\n this._disabled = false;\n this._disabled = options.disabled;\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }));\n }\n createContainer() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-container';\n return el;\n }\n createAnchor() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-anchor';\n el.style.visibility = 'hidden';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, orthogonal, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { DockviewUnhandledDragOverEvent, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../overlay/overlay';\nimport { addTestId, Classnames, getDockviewTheme, onDidWindowResizeEnd, onDidWindowMoveEnd, toggleClass, watchElementResize, } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, DESERIALIZATION_POPOUT_DELAY_MS, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlay/overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nimport { StrictEventsSequencing } from './strictEventsSequencing';\nimport { PopupService } from './components/popupService';\nimport { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';\nimport { themeAbyss } from './theme';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';\n }\n get api() {\n return this._api;\n }\n get floatingGroups() {\n return this._floatingGroups;\n }\n /**\n * Promise that resolves when all popout groups from the last fromJSON call are restored.\n * Useful for tests that need to wait for delayed popout creation.\n */\n get popoutRestorationPromise() {\n return this._popoutRestorationPromise;\n }\n constructor(container, options) {\n var _a, _b, _c;\n super(container, {\n proportionalLayout: true,\n orientation: Orientation.HORIZONTAL,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,\n className: options.className,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this._watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPopoutGroupSizeChange = new Emitter();\n this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;\n this._onDidPopoutGroupPositionChange = new Emitter();\n this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;\n this._onDidOpenPopoutWindowFail = new Emitter();\n this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter({ replay: true });\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this.onDidMovePanel = this._onDidMovePanel.event;\n this._onDidMaximizedGroupChange = new Emitter();\n this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._popoutRestorationPromise = Promise.resolve();\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidOptionsChange = new Emitter();\n this.onDidOptionsChange = this._onDidOptionsChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n this._options = options;\n this.popupService = new PopupService(this.element);\n this._themeClassnames = new Classnames(this.element);\n this._api = new DockviewApi(this);\n this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });\n this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);\n this._rootDropTarget = new Droptarget(this.element, {\n className: 'dv-drop-target-edge',\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n const firedEvent = new DockviewUnhandledDragOverEvent(event, 'edge', position, getPanelData);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,\n getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.updateDropTargetModel(options);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.updateTheme();\n this.updateWatermark();\n if (options.debug) {\n this.addDisposables(new StrictEventsSequencing(this));\n }\n this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.updateWatermark();\n }), this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), this.onDidMaximizedChange((event) => {\n this._onDidMaximizedGroupChange.fire({\n group: event.panel,\n isMaximized: event.isMaximized,\n });\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }), this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n }\n setVisible(panel, visible) {\n switch (panel.api.location.type) {\n case 'grid':\n super.setVisible(panel, visible);\n break;\n case 'floating': {\n const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);\n if (item) {\n item.overlay.setVisible(visible);\n panel.api._onDidVisibilityChange.fire({\n isVisible: visible,\n });\n }\n break;\n }\n case 'popout':\n console.warn('dockview: You cannot hide a group that is in a popout window');\n break;\n }\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c, _d, _e;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group, options);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return false;\n }\n const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)\n ? options.referenceGroup\n : itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n /**\n * The group that is being added doesn't already exist within the DOM, the most likely occurrence\n * of this case is when being called from the `fromJSON(...)` method\n */\n const isGroupAddedToDom = referenceGroup.element.parentElement !== null;\n let group;\n if (!isGroupAddedToDom) {\n group = referenceGroup;\n }\n else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {\n group = options.overridePopoutGroup;\n }\n else {\n group = this.createGroup({ id: groupId });\n if (popoutContainer) {\n this._onDidAddGroup.fire(group);\n }\n }\n if (popoutContainer === null) {\n console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');\n popoutWindowDisposable.dispose();\n this._onDidOpenPopoutWindowFail.fire();\n // if the popout window was blocked, we need to move the group back to the reference group\n // and set it to visible\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n return false;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready, this);\n group.model.renderContainer = overlayRenderContainer;\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n let floatingBox;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n floatingBox = (_a = this._floatingGroups\n .find((value) => value.group.api.id ===\n itemToPopout.api.id)) === null || _a === void 0 ? void 0 : _a.overlay.toJSON();\n this.removeGroup(referenceGroup);\n break;\n }\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n const anchor = document.createElement('div');\n const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });\n popoutContainer.appendChild(anchor);\n group.model.dropTargetContainer = dropTargetContainer;\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,\n };\n if (isGroupAddedToDom &&\n itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const isValidReferenceGroup = isGroupAddedToDom &&\n referenceGroup &&\n this.getPanel(referenceGroup.id);\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: isValidReferenceGroup\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);\n popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {\n this._onDidPopoutGroupSizeChange.fire({\n width: _window.window.innerWidth,\n height: _window.window.innerHeight,\n group,\n });\n }), _onDidWindowPositionChange.event(() => {\n this._onDidPopoutGroupPositionChange.fire({\n screenX: _window.window.screenX,\n screenY: _window.window.screenX,\n group,\n });\n }), \n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableListener(_window.window, 'resize', () => {\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.isDisposed) {\n return; // cleanup may run after instance is disposed\n }\n if (isGroupAddedToDom &&\n this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else if (this.getPanel(group.id)) {\n group.model.renderContainer =\n this.overlayRenderContainer;\n group.model.dropTargetContainer =\n this.rootDropTargetContainer;\n returnedGroup = group;\n const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);\n if (alreadyRemoved) {\n /**\n * If this popout group was explicitly removed then we shouldn't run the additional\n * steps. To tell if the running of this disposable is the result of this popout group\n * being explicitly removed we can check if this popout group is still referenced in\n * the `this._popoutGroups` list.\n */\n return;\n }\n if (floatingBox) {\n this.addFloatingGroup(group, {\n height: floatingBox.height,\n width: floatingBox.width,\n position: floatingBox,\n });\n }\n else {\n this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n skipPopoutReturn: true,\n });\n group.model.location = { type: 'grid' };\n this.movingLock(() => {\n // suppress group add events since the group already exists\n this.doAddGroup(group, [0]);\n });\n }\n this.doSetGroupAndPanelActive(group);\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n return true;\n })\n .catch((err) => {\n console.error('dockview: failed to create popout.', err);\n return false;\n });\n }\n addFloatingGroup(item, options) {\n var _a, _b, _c, _d, _e;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n this.movingLock(() => group.model.openPanel(item, { skipSetGroupActive: true }));\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: false,\n });\n }\n }\n }\n function getAnchoredBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n const result = {};\n if ('left' in options.position) {\n result.left = Math.max(options.position.left, 0);\n }\n else if ('right' in options.position) {\n result.right = Math.max(options.position.right, 0);\n }\n else {\n result.left = DEFAULT_FLOATING_GROUP_POSITION.left;\n }\n if ('top' in options.position) {\n result.top = Math.max(options.position.top, 0);\n }\n else if ('bottom' in options.position) {\n result.bottom = Math.max(options.position.bottom, 0);\n }\n else {\n result.top = DEFAULT_FLOATING_GROUP_POSITION.top;\n }\n if (typeof options.width === 'number') {\n result.width = Math.max(options.width, 0);\n }\n else {\n result.width = DEFAULT_FLOATING_GROUP_POSITION.width;\n }\n if (typeof options.height === 'number') {\n result.height = Math.max(options.height, 0);\n }\n else {\n result.height = DEFAULT_FLOATING_GROUP_POSITION.height;\n }\n return result;\n }\n return {\n left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'\n ? Math.max(options.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left,\n top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'\n ? Math.max(options.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top,\n width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'\n ? Math.max(options.width, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.width,\n height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'\n ? Math.max(options.height, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.height,\n };\n }\n const anchoredBox = getAnchoredBox();\n const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));\n const el = group.element.querySelector('.dv-void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {\n if (event.isActive) {\n overlay.bringToFront();\n }\n }), watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n }));\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.width, group.height);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n remove(this._floatingGroups, floatingGroupPanel);\n group.model.location = { type: 'grid' };\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n group.model.location = { type: 'floating' };\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position, options) {\n this.gridview.normalize();\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0], undefined, options); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n super.updateOptions(options);\n if ('floatingGroupBounds' in options) {\n for (const group of this._floatingGroups) {\n switch (options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds();\n }\n }\n this.updateDropTargetModel(options);\n const oldDisableDnd = this.options.disableDnd;\n this._options = Object.assign(Object.assign({}, this.options), options);\n const newDisableDnd = this.options.disableDnd;\n if (oldDisableDnd !== newDisableDnd) {\n this.updateDragAndDropState();\n }\n if ('theme' in options) {\n this.updateTheme();\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n updateDragAndDropState() {\n // Update draggable state for all tabs and void containers\n for (const group of this.groups) {\n group.model.updateDragAndDropState();\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n url: group.popoutGroup.api.location.type === 'popout'\n ? group.popoutGroup.api.location.popoutUrl\n : undefined,\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n this._onDidAddGroup.fire(group);\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n position: position,\n width: position.width,\n height: position.height,\n skipRemoveGroup: true,\n inDragMode: false,\n });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n // Create a promise that resolves when all popout groups are created\n const popoutPromises = [];\n // Queue popup group creation with delays to avoid browser blocking\n serializedPopoutGroups.forEach((serializedPopoutGroup, index) => {\n const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n // Add a small delay for each popup after the first to avoid browser popup blocking\n const popoutPromise = new Promise((resolve) => {\n setTimeout(() => {\n this.addPopoutGroup(group, {\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup ? group : undefined,\n referenceGroup: gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined,\n popoutUrl: url,\n });\n resolve();\n }, index * DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup\n });\n popoutPromises.push(popoutPromise);\n });\n // Store the promise for tests to wait on\n this._popoutRestorationPromise = Promise.all(popoutPromises).then(() => void 0);\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n console.error('dockview: failed to deserialize layout. Reverting changes', err);\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n // Force position updates for always visible panels after DOM layout is complete\n requestAnimationFrame(() => {\n this.overlayRenderContainer.updateAllPositions();\n });\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n const initial = {\n width: options.initialWidth,\n height: options.initialHeight,\n };\n let index;\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n index = options.position.index;\n if (!referencePanel) {\n throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n index = options.position.index;\n if (!referenceGroup) {\n throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n group.api.setSize({\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n });\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const floatingGroupOptions = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n referenceGroup.api.setSize({\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation, this.orientationAtLocation(relativeLocation) ===\n Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const coordinates = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else {\n const group = this.createGroupAtLocation([0], this.gridview.orientation === Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n if (this.options.createWatermarkComponent) {\n return this.options.createWatermarkComponent();\n }\n return new Watermark();\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this._watermark) {\n this._watermark = this.createWatermarkComponent();\n this._watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n addTestId(watermarkContainer, 'watermark-component');\n watermarkContainer.appendChild(this._watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this._watermark) {\n this._watermark.element.parentElement.remove();\n (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this._watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction), options);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroup(options);\n const size = this.getLocationOrientation(relativeLocation) ===\n Orientation.VERTICAL\n ? options.initialHeight\n : options.initialWidth;\n this.doAddGroup(group, relativeLocation, size);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n const group = this.createGroup(options);\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n getLocationOrientation(location) {\n return location.length % 2 == 0 &&\n this.gridview.orientation === Orientation.HORIZONTAL\n ? Orientation.HORIZONTAL\n : Orientation.VERTICAL;\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup && refGroup.panels.length === 0) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._popoutGroups, selectedGroup);\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n skipSetActive: options.skipSetActive,\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n // Check if destination group is empty - if so, force render the component\n const isDestinationGroupEmpty = destinationGroup.model.size === 0;\n this.movingLock(() => {\n var _a;\n return destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetActive: ((_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false) && !isDestinationGroupEmpty,\n skipSetGroupActive: true,\n });\n });\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(destinationGroup);\n }\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n }\n if (sourceGroup.api.location.type === 'popout') {\n /**\n * the source group is a popout group with a single panel\n *\n * 1. remove the panel from the group without triggering any events\n * 2. remove the popout group\n * 3. create a new group at the requested location and add that panel\n */\n const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);\n const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {\n skipSetActive: true,\n skipSetActiveGroup: true,\n }));\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n const newGroup = this.createGroupAtLocation(targetLocation);\n this.movingLock(() => newGroup.model.openPanel(removedPanel));\n this.doSetGroupAndPanelActive(newGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n // Ensure group becomes active after move\n if (options.skipSetActive !== true) {\n // For center moves (merges), we need to ensure the target group is active\n // unless explicitly told not to (skipSetActive: true)\n this.doSetGroupAndPanelActive(to);\n }\n else if (!this.activePanel) {\n // Even with skipSetActive: true, ensure there's an active panel if none exists\n // This maintains basic functionality while respecting skipSetActive\n this.doSetGroupAndPanelActive(to);\n }\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n // Remove from popout groups list to prevent automatic restoration\n const index = this._popoutGroups.indexOf(selectedPopoutGroup);\n if (index >= 0) {\n this._popoutGroups.splice(index, 1);\n }\n // Clean up the reference group (ghost) if it exists and is hidden\n if (selectedPopoutGroup.referenceGroup) {\n const referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);\n if (referenceGroup && !referenceGroup.api.isVisible) {\n this.doRemoveGroup(referenceGroup, {\n skipActive: true,\n });\n }\n }\n // Manually dispose the window without triggering restoration\n selectedPopoutGroup.window.dispose();\n // Update group's location and containers for target\n if (to.api.location.type === 'grid') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'grid' };\n }\n else if (to.api.location.type === 'floating') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'floating' };\n }\n break;\n }\n }\n // For moves to grid locations\n if (to.api.location.type === 'grid') {\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n // Add to grid for all moves targeting grid location\n let size;\n switch (this.gridview.orientation) {\n case Orientation.VERTICAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.width\n : from.api.height;\n break;\n case Orientation.HORIZONTAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.height\n : from.api.width;\n break;\n }\n this.gridview.addView(from, size, dropLocation);\n }\n else if (to.api.location.type === 'floating') {\n // For moves to floating locations, add as floating group\n // Get the position/size from the target floating group\n const targetFloatingGroup = this._floatingGroups.find((x) => x.group === to);\n if (targetFloatingGroup) {\n const box = targetFloatingGroup.overlay.toJSON();\n // Calculate position based on available properties\n let left, top;\n if ('left' in box) {\n left = box.left + 50;\n }\n else if ('right' in box) {\n left = Math.max(0, box.right - box.width - 50);\n }\n else {\n left = 50; // Default fallback\n }\n if ('top' in box) {\n top = box.top + 50;\n }\n else if ('bottom' in box) {\n top = Math.max(0, box.bottom - box.height - 50);\n }\n else {\n top = 50; // Default fallback\n }\n this.addFloatingGroup(from, {\n height: box.height,\n width: box.width,\n position: {\n left,\n top,\n },\n });\n }\n }\n }\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel, from });\n });\n // Ensure group becomes active after move\n if (options.skipSetActive === false) {\n // Only activate when explicitly requested (skipSetActive: false)\n // Use 'to' group for non-center moves since 'from' may have been destroyed\n const targetGroup = to !== null && to !== void 0 ? to : from;\n this.doSetGroupAndPanelActive(targetGroup);\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`dockview: Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, {\n renderer: options.renderer,\n minimumWidth: options.minimumWidth,\n minimumHeight: options.minimumHeight,\n maximumWidth: options.maximumWidth,\n maximumHeight: options.maximumHeight,\n });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location, size, options) {\n const group = this.createGroup(options);\n this.doAddGroup(group, location, size);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n orientationAtLocation(location) {\n const rootOrientation = this.gridview.orientation;\n return location.length % 2 == 1\n ? rootOrientation\n : orthogonal(rootOrientation);\n }\n updateDropTargetModel(options) {\n if ('dndEdges' in options) {\n this._rootDropTarget.disabled =\n typeof options.dndEdges === 'boolean' &&\n options.dndEdges === false;\n if (typeof options.dndEdges === 'object' &&\n options.dndEdges !== null) {\n this._rootDropTarget.setOverlayModel(options.dndEdges);\n }\n else {\n this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);\n }\n }\n if ('rootOverlayModel' in options) {\n this.updateDropTargetModel({ dndEdges: options.dndEdges });\n }\n }\n updateTheme() {\n var _a, _b;\n const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;\n this._themeClassnames.setClassNames(theme.className);\n this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;\n switch (theme.dndOverlayMounting) {\n case 'absolute':\n this.rootDropTargetContainer.disabled = false;\n break;\n case 'relative':\n default:\n this.rootDropTargetContainer.disabled = true;\n break;\n }\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(container, options) {\n var _a;\n super(container, {\n proportionalLayout: (_a = options.proportionalLayout) !== null && _a !== void 0 ? _a : true,\n orientation: options.orientation,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n className: options.className,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n }\n updateOptions(options) {\n super.updateOptions(options);\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n const { data } = node;\n const view = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.doAddGroup(view, relativeLocation, options.size);\n this.registerPanel(view);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n if (this._splitview) {\n this._splitview.dispose();\n }\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n if (typeof options.orientation === 'string') {\n this.splitview.orientation = options.orientation;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_a = options.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n this.element.remove();\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = {\n api: null,\n };\n this._element = document.createElement('div');\n this.element.className = 'dv-default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dv-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nconst HEADER_SIZE = 22;\nconst MINIMUM_BODY_SIZE = 0;\nconst MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super({\n accessor: options.accessor,\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n disableDnd: options.disableDnd,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b;\n const body = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n let header;\n if (options.headerComponent && this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: options.id,\n name: options.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: MINIMUM_BODY_SIZE,\n maximumBodySize: MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_b = options.params) !== null && _b !== void 0 ? _b : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n headerSize: view.headerSize,\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c;\n const data = view.data;\n const body = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n let header;\n if (data.headerComponent &&\n this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: data.id,\n name: data.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,\n maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = new CompositeDisposable(panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), panel.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }));\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.element.remove();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id, componentName));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n","import { GridviewApi, PaneviewApi, SplitviewApi, } from '../api/component.api';\nimport { DockviewComponent } from '../dockview/dockviewComponent';\nimport { GridviewComponent } from '../gridview/gridviewComponent';\nimport { PaneviewComponent } from '../paneview/paneviewComponent';\nimport { SplitviewComponent } from '../splitview/splitviewComponent';\nexport function createDockview(element, options) {\n const component = new DockviewComponent(element, options);\n return component.api;\n}\nexport function createSplitview(element, options) {\n const component = new SplitviewComponent(element, options);\n return new SplitviewApi(component);\n}\nexport function createGridview(element, options) {\n const component = new GridviewComponent(element, options);\n return new GridviewApi(component);\n}\nexport function createPaneview(element, options) {\n const component = new PaneviewComponent(element, options);\n return new PaneviewApi(component);\n}\n","import {\n IGroupPanelInitParameters,\n IContentRenderer,\n PanelUpdateEvent,\n Parameters,\n ITabRenderer,\n DockviewComponent,\n} from 'dockview-core';\nimport './app.scss';\n\nclass DefaultPanel implements IContentRenderer {\n private _element: HTMLElement;\n private _titleElement: HTMLElement;\n private _paramsElement: HTMLElement;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor() {\n this._element = document.createElement('div');\n this._element.style.display = 'flex';\n this._element.style.justifyContent = 'center';\n this._element.style.alignItems = 'center';\n this._element.style.color = 'white';\n this._element.style.height = '100%';\n\n this._titleElement = document.createElement('span');\n this._paramsElement = document.createElement('span');\n\n this._element.appendChild(this._titleElement);\n }\n\n init(params: IGroupPanelInitParameters): void {\n this.render(params.params);\n }\n\n update(event: PanelUpdateEvent): void {\n this.render(event.params);\n }\n\n private render(params: Record) {\n this._titleElement.textContent = params.title;\n\n if (params.x) {\n if (!this._paramsElement.parentElement) {\n this._element.appendChild(this._paramsElement);\n }\n this._paramsElement.textContent = params.x;\n } else {\n this._paramsElement.parentElement?.removeChild(this._paramsElement);\n }\n }\n}\n\nclass DefaultTab implements ITabRenderer {\n private _element: HTMLElement;\n private _title: HTMLElement;\n\n get element(): HTMLElement {\n return this._element;\n }\n\n constructor() {\n this._element = document.createElement('div');\n this._element.className = 'my-custom-tab';\n\n this._title = document.createElement('span');\n\n const spacer = document.createElement('span');\n spacer.style.flexGrow = '1';\n\n const btn1 = document.createElement('span');\n btn1.className = 'my-custom-tab-icon material-symbols-outlined';\n btn1.textContent = 'minimize';\n\n const btn2 = document.createElement('span');\n btn2.className = 'my-custom-tab-icon material-symbols-outlined';\n btn2.textContent = 'maximize';\n\n const btn3 = document.createElement('span');\n btn3.className = 'my-custom-tab-icon material-symbols-outlined';\n btn3.textContent = 'close';\n\n this._element.appendChild(this._title);\n this._element.appendChild(spacer);\n this._element.appendChild(btn1);\n this._element.appendChild(btn2);\n this._element.appendChild(btn3);\n }\n\n init(params: IGroupPanelInitParameters): void {\n this.render(params.params);\n }\n\n update(event: PanelUpdateEvent): void {\n this.render(event.params);\n }\n\n private render(params: Record) {\n this._title = params.title;\n }\n}\n\nexport function attach(parent: HTMLElement): {\n dispose: () => void;\n} {\n const element = document.createElement('div');\n element.className = 'dockview-theme-abyss';\n element.style.height = '100%';\n element.style.width = '100%';\n\n const dockview = new DockviewComponent({\n components: {\n default: DefaultPanel,\n },\n tabComponents: {\n default: DefaultTab,\n },\n singleTabMode: 'fullwidth',\n parentElement: element,\n });\n\n parent.appendChild(element);\n\n const { clientWidth, clientHeight } = parent;\n dockview.layout(clientWidth, clientHeight);\n\n const panel1 = dockview.addPanel({\n id: 'panel_1',\n component: 'default',\n tabComponent: 'default',\n params: {\n title: 'Window 1',\n },\n });\n panel1.group.locked = true;\n\n const panel2 = dockview.addPanel({\n id: 'panel_2',\n component: 'default',\n tabComponent: 'default',\n params: {\n title: 'Window 2',\n },\n position: {\n direction: 'right',\n },\n });\n panel2.group.locked = true;\n\n const panel3 = dockview.addPanel({\n id: 'panel_3',\n component: 'default',\n tabComponent: 'default',\n params: {\n title: 'Window 3',\n },\n position: {\n direction: 'below',\n },\n });\n panel3.group.locked = true;\n\n return {\n dispose: () => {\n dockview.dispose();\n element.remove();\n },\n };\n}\n"],"names":["TransferObject","PanelTransfer","constructor","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","Event","Disposable","any","_len","arguments","length","children","Array","_key","listener","disposables","map","child","dispose","forEach","d","DockviewEvent","_defaultPrevented","defaultPrevented","preventDefault","AcceptableEvent","_isAccepted","isAccepted","accept","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","_last","options","_listeners","_disposed","event","_event","replay","push","index","indexOf","splice","add","fire","e","queueMicrotask","delete","addDisposableListener","element","type","addEventListener","removeEventListener","events","Map","size","set","AsapEvent","_onFired","_currentFireCount","_queued","onEvent","fireCountAtTimeOfEventSubscription","NONE","from","func","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","_len2","_key2","arg","MutableDisposable","_disposable","disposable","OverflowObserver","el","_onDidChange","onDidChange","_value","watchElementResize","entry","hasScrollX","target","scrollWidth","clientWidth","hasScrollY","scrollHeight","clientHeight","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","document","activeElement","loosingFocus","onFocus","onBlur","window","setTimeout","_refreshStateHandler","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","getDomNodePagePosition","domNode","left","top","width","height","getBoundingClientRect","scrollX","scrollY","disableIframePointEvents","rootNode","iframes","tagNames","findIframesInNode","node","nodeType","Node","ELEMENT_NODE","includes","tagName","shadowRoot","documentElement","allTagsNamesInclusiveOfShadowDoms","original","WeakMap","iframe","style","pointerEvents","release","get","Classnames","_classNames","setClassNames","classNames","split","filter","v","trim","tail","arr","slice","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","array","findIndex","t","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","contentSize","_contentSize","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","disabled","_disabled","margin","_margin","_b","_this","sashes","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","overloadMaxDelta","snapBefore","snapAfter","x","NEGATIVE_INFINITY","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","VERTICAL","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","Low","High","round","relayout","getViews","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","start","clientX","clientY","sashIndex","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","total","proportion","lowPriorityIndex","emptyDelta","visibleViewItems","sashCount","marginReducedSize","totalLeftOffset","viewLeftOffsets","runningVisiblePanelCount","flag","visiblePanelsBeforeThisView","offset","sashWidth","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","PROPERTY_KEYS_SPLITVIEW","properties","disableAutoResizing","Object","keys","Paneview","splitview","paneItems","skipAnimation","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","clearTimeout","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","_onDidVisibilityChange","onDidVisibilityChange","childDescriptor","setupChildrenEvents","_visible","isChildVisible","setChildVisible","wereAllChildrenHidden","areAllChildrenHidden","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","_ref","findLeaf","candiateNode","last","cloneNode","flipNode","orthogonal","totalSize","childSize","getGridLocation","parentElement","test","firstElementChild","lastElementChild","nextElementSibling","indexInParent","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","directionOrientation","getDirectionOrientation","rest","_index","serializeBranchNode","box","isGridBranchNode","toJSON","Gridview","_root","root","locked","_locked","branch","pop","maximizedView","_maximizedNode","leaf","hasMaximizedView","maximizeView","getNode","exitMaximizedView","getView","hiddenOnMaximize","hideAllViewsBut","parent","exclude","_onDidMaximizedNodeChange","isMaximized","showViewsInReverseOrder","serialize","maxmizedViewLocation","resullt","maximizedNode","_onDidViewVisibilityChange","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","call","oldRoot","normalize","childReference","insertOrthogonalSplitviewAtRoot","progmaticSelect","_getViews","nodeCachedVisibleSize","path","n","l","onDidViewVisibilityChange","onDidMaximizedNodeChange","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","PROPERTY_KEYS_GRIDVIEW","hideBorders","Resizable","_element","disableResizing","_disableResizing","offsetParent","currentElement","DocumentFragment","host","isInDocument","contentRect","nextLayoutId","toTarget","BaseGrid","id","_id","_groups","groups","values","gridview","activeGroup","_activeGroup","_onDidRemove","onDidRemove","_onDidAdd","onDidAdd","_onDidMaximizedChange","onDidMaximizedChange","_onDidActiveChange","onDidActiveChange","_bufferOnDidLayoutChange","onDidLayoutChange","_onDidViewVisibilityChangeMicroTaskQueue","onDidViewVisibilityChangeMicroTaskQueue","panel","isVisible","updateOptions","_c","_d","maximizeGroup","doSetGroupActive","isMaximizedGroup","exitMaximizedGroup","hasMaximizedGroup","doAddGroup","group","doRemoveGroup","has","skipActive","getPanel","setActive","removeGroup","moveToNext","moveToPrevious","forceResize","SplitviewApi","component","panels","onDidLayoutFromJSON","removePanel","focus","addPanel","movePanel","PaneviewApi","onDidDrop","onUnhandledDragOverEvent","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","force","DockviewApi","totalPanels","onDidMovePanel","onWillDrop","onWillShowOverlay","onWillDragGroup","onWillDragPanel","onDidPopoutGroupSizeChange","onDidPopoutGroupPositionChange","onDidOpenPopoutWindowFail","activePanel","getGroupPanel","addGroup","closeAllGroups","getGroup","addFloatingGroup","onDidMaximizedGroupChange","addPopoutGroup","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","setDisabled","isCancelled","dataTransfer","effectAllowed","items","DragAndDropObserver","callbacks","registerListeners","onDragEnter","onDragOver","onDragLeave","onDragEnd","onDrop","WillShowOverlayEvent","nativeEvent","directionToPosition","positionToDirection","DEFAULT_ACTIVATION_SIZE","DEFAULT_SIZE","Droptarget","_state","_onDrop","_onWillShowOverlay","_acceptedTargetZonesSet","Set","acceptedTargetZones","dnd","getOverrideTarget","getElements","_e","_f","_g","ACTUAL_TARGET","overrideTarget","removeDropTarget","getOverlayOutline","offsetWidth","offsetHeight","rect","currentTarget","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","willShowOverlayEvent","markAsUsed","targetElement","overlayElement","append","toggleClasses","stopPropagation","setTargetZones","setOverlayModel","model","overlayModel","USED_EVENT_ID","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","sizeOptions","outlineEl","elBox","ta","overlay","bigbox","rootTop","rootLeft","bounds","topPx","leftPx","widthPx","heightPx","checkBoundsChanged","visibility","transform","setGPUOptimizedBounds","changed","setGPUOptimizedBoundsFromStrings","overlayType","activationSizeOptions","activationSize","threshold","xp","yp","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","PROPERTY_KEYS_PANEVIEW","disableDnd","PaneviewUnhandledDragOverEvent","WillFocusEvent","PanelApiImpl","isFocused","_isFocused","isActive","_isActive","_isVisible","_width","_height","_parameters","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onWillFocus","onWillFocus","_onWillVisibilityChange","onWillVisibilityChange","_onActiveChange","onActiveChange","_onDidParametersChange","onDidParametersChange","getParameters","initialize","parameters","update","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","_params","api","tabIndex","outline","overflow","focusTracker","part","init","getComponent","assign","key","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","header","display","_onDidChangeExpansionState","_isExpanded","headerComponent","isHeaderVisible","accessor","ev","isPanelExpanded","renderOnce","expanded","body","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","lineHeight","minHeight","maxHeight","DraggablePaneviewPanel","_onDidDrop","_onUnhandledDragOverEvent","initDragFeatures","accessorId","draggable","handler","firedEvent","containerApi","existingPanel","allPanels","fromIndex","toIndex","ContentContainer","dropTargetContainer","dropTarget","theme","dndPanelOverlay","shiftKey","show","hide","renderPanel","asActive","doRender","isPanelActive","content","renderer","renderContainer","detatch","attach","referenceContainer","openPanel","closePanel","addGhostImage","ghostElement","setDragImage","TabDragHandler","Tab","_onPointDown","onPointerDown","_onDropped","dragHandler","getComputedStyle","newNode","getPropertyValue","getPropertyPriority","setContent","updateDragAndDropState","WillShowOverlayLocationEvent","kind","GroupDragHandler","dragEvent","bgColor","color","backgroundColor","padding","fontSize","borderRadius","textContent","VoidContainer","Scrollbar","scrollableElement","_scrollLeft","_horizontalScrollbar","deltaY","MouseWheelSpeed","calculateScrollbarStyles","originalClientX","originalScrollLeft","deltaX","onEnd","scrollLeft","_animationTimer","px","percentageComplete","Tabs","showTabsOverflowControl","_showTabsOverflowControl","_tabsList","_observerDisposable","hasOverflow","toggleDropdown","reset","_tabs","tabs","selectedIndex","_onTabDragStart","onTabDragStart","_onOverflowTabsChange","onOverflowTabsChange","scrollbars","scrollbar","button","tab","setActivePanel","runningWidth","isActivePanel","find","isFloatingGroupsEnabled","disableFloatingGroups","isFloatingWithOnePanel","inDragMode","addTab","tabToRemove","childPosition","parentPosition","isChildEntirelyVisibleWithinParent","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createChevronRightButton","TabsContainer","hidden","_hidden","dropdownPart","_overflowTabs","_dropdownDisposable","_onGroupDragStart","onGroupDragStart","singleTabMode","rightActionsContainer","leftActionsContainer","preActionsContainer","disableTabsOverflowList","voidContainer","onDidOptionsChange","setRightActionsElement","rightActions","setLeftActionsElement","leftActions","setPrefixActionsElement","preActions","_isGroupActive","updateClassnames","text","icon","createDropdownElementHandle","prepend","capture","panelObject","createTabRenderer","wrapper","popupService","close","scrollIntoView","relativeParent","zIndex","findRelativeZIndexParent","openPopover","DockviewUnhandledDragOverEvent","PROPERTY_KEYS_DOCKVIEW","floatingGroupBounds","popoutUrl","defaultRenderer","debug","rootOverlayModel","noPanelsOverlay","dndEdges","DockviewDidDropEvent","DockviewWillDropEvent","_kind","DockviewGroupPanelModel","_activePanel","_panels","isEmpty","hasWatermark","watermark","tabsContainer","isContentFocused","contentContainer","_location","groupPanel","_onDidLocationChange","mostRecentlyUsed","_overwriteRenderContainer","_overwriteDropTargetContainer","_panelDisposables","_onMove","onMove","_onWillDrop","_onDidAddPanel","_onDidPanelTitleChange","onDidPanelTitleChange","_onDidPanelParametersChange","onDidPanelParametersChange","_onDidRemovePanel","_onDidActivePanelChange","_api","hideHeader","handleDropEvent","focusContent","rerender","overlayRenderContainer","rootDropTargetContainer","doAddPanel","updateContainer","createRightHeaderActionComponent","_rightHeaderActions","createLeftHeaderActionComponent","_leftHeaderActions","createPrefixHeaderActionComponent","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","skipSetActive","updateParentGroup","doSetActivePanel","skipSetGroupActive","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isLast","removeEmptyGroup","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActiveGroup","hasExistingPanel","updateMru","onDidTitleChange","runEvents","createWatermarkComponent","willDropEvent","getKind","itemId","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","__minimumWidth","__minimumHeight","__maximumHeight","__maximumWidth","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_maximumWidth","_evaluatedMaximumWidth","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","MAX_SAFE_INTEGER","maximum","minimum","NOT_INITIALIZED_MESSAGE","DockviewGroupPanelApiImpl","_group","onDidLocationChange","getWindow","moveTo","moveGroupOrPanel","maximize","exitMaximized","DockviewGroupPanel","activePanelMinimumWidth","activePanelMinimumHeight","activePanelMaximumWidth","activePanelMaximumHeight","_model","constraints","themeDark","name","themeLight","themeVisualStudio","themeAbyss","themeDracula","themeReplit","gap","themeAbyssSpaced","dndOverlayMounting","themeLightSpaced","DockviewPanelApiImpl","oldGroup","_onDidGroupChange","setupGroupEventListeners","tabComponent","_tabComponent","_onDidTitleChange","_onDidActiveGroupChange","onDidGroupChange","_onDidRendererChange","onDidRendererChange","groupEventsDisposable","setTitle","setRenderer","previousGroup","_trackGroupActive","hasBecomeHidden","hasBecomeVisible","DockviewPanel","_title","_renderer","contentComponent","isPanelVisible","DefaultTab","_content","action","render","DockviewPanelModel","_tab","createContentComponent","createTabComponent","tabLocation","cmp","_updateEvent","componentName","createComponent","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","arialLevelTracker","_orderedList","destroy","setAttribute","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bottom","right","bringToFront","verticalAlignment","horiziontalAlignment","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","parseFloat","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DEFAULT_FLOATING_GROUP_POSITION","PositionCache","cache","currentFrameId","rafId","getPosition","cached","frameId","scheduleFrameUpdate","invalidate","OverlayRenderContainer","positionCache","pendingUpdates","updateAllPositions","createFocusableElement","focusContainer","box2","visibilityChanged","observerDisposable","correctLayerPosition","floatingGroup","floatingGroups","level","getAttribute","MutationObserver","attributeFilter","attributes","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","apply","PopoutWindow","_window","_onWillClose","onWillClose","_onDidClose","onDidClose","dimensions","screenX","screenY","innerWidth","innerHeight","open","url","features","entries","join","externalWindow","createPopoutWindowContainer","onDidOpen","externalDocument","styleSheetList","styleSheets","styleSheet","href","link","rel","head","cssTexts","cssRules","rule","cssText","err","createTextNode","addStyles","StrictEventsSequencing","PopupService","_active","_activeDisposable","anchorBox","offsetX","offsetY","HTMLElement","buffer","rootRect","translateX","translateY","shiftAbsoluteElementIntoView","DropTargetAnchorContainer","exists","_outline","anchor","createAnchor","targetBox","DEFAULT_ROOT_OVERLAY_MODEL","moveGroupWithoutDestroying","removedPanel","DockviewComponent","flatMap","_options","_floatingGroups","popoutRestorationPromise","_popoutRestorationPromise","nextGroupId","_deserializer","_watermark","_onWillDragPanel","_onWillDragGroup","_onDidPopoutGroupSizeChange","_onDidPopoutGroupPositionChange","_onDidOpenPopoutWindowFail","_onDidLayoutFromJSON","_onDidMovePanel","_onDidMaximizedGroupChange","_popoutGroups","_onDidRemoveGroup","_onDidAddGroup","_onDidOptionsChange","_moving","_themeClassnames","_rootDropTarget","updateDropTargetModel","updateTheme","updateWatermark","orthogonalize","itemToPopout","toClassList","list","cls","startsWith","getDockviewTheme","overridePopoutGroup","getNextGroupId","popoutWindowDisposable","popoutContainer","referenceGroup","referenceLocation","isGroupAddedToDom","createGroup","error","movingLock","gready","floatingBox","returnedGroup","doSetGroupAndPanelActive","isValidReferenceGroup","popoutGroup","_onDidWindowPositionChange","emitter","timeout","previousScreenX","previousScreenY","checkMovement","closed","currentScreenX","currentScreenY","onDidWindowMoveEnd","resizeTimeout","onDidWindowResizeEnd","skipPopoutAssociated","skipPopoutReturn","catch","popoutReferenceGroupId","popoutReferenceGroup","skipRemoveGroup","anchoredBox","getAnchoredBox","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","skipActiveGroup","createGroupAtLocation","oldDisableDnd","floating","includePanel","collection","floats","popoutGroups","gridReferenceGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","serializedPopoutGroups","popoutPromises","serializedPopoutGroup","popoutPromise","all","hasActiveGroup","initial","initialWidth","initialHeight","referencePanel","findGroup","isPanelOptionsWithGroup","createPanel","inactive","floatingGroupOptions","relativeLocation","orientationAtLocation","coordinates","watermarkContainer","isGroupOptionsWithGroup","selectedGroup","refGroup","removedGroup","re","isMoving","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","newGroup","targetGroup","updatedReferenceLocation","dropLocation","isDestinationGroupEmpty","moveGroup","selectedFloatingGroup","selectedPopoutGroup","targetFloatingGroup","GridviewComponent","_onDidLayoutfromJSON","hasOrientationChanged","serializedGridview","queue","registerPanel","f","reference","groupItem","SplitviewComponent","_splitview","_splitviewChangeDisposable","_onDidLayoutChange","skipFocus","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","MAXIMUM_BODY_SIZE","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","createHeaderComponent","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","createDockview","createSplitview","createGridview","createPaneview","DefaultPanel","justifyContent","alignItems","_titleElement","_paramsElement","spacer","flexGrow","btn1","btn2","btn3","dockview","components","default","tabComponents"],"sourceRoot":""} \ No newline at end of file diff --git a/assets/js/1df93b7f.0e9879a7.js b/assets/js/1df93b7f.52f669bc.js similarity index 99% rename from assets/js/1df93b7f.0e9879a7.js rename to assets/js/1df93b7f.52f669bc.js index 5dca928cb..455a1da3d 100644 --- a/assets/js/1df93b7f.0e9879a7.js +++ b/assets/js/1df93b7f.52f669bc.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[3237],{4940:(e,t,i)=>{i.d(t,{Z:()=>o});i(6204);var n=i(541),s=i(3188);function o(e){let{children:t,fallback:i}=e;return(0,n.Z)()?(0,s.jsx)(s.Fragment,{children:t?.()}):i??null}},5399:(e,t,i)=>{i.d(t,{CJ:()=>Ot,KU:()=>w,GW:()=>d,O4:()=>v,Gi:()=>_,Tn:()=>ce,Tg:()=>Xe,g1:()=>F,i5:()=>j,gq:()=>Fe,kQ:()=>oe,jl:()=>ye,mH:()=>U,fX:()=>de,hJ:()=>Tt,lT:()=>Rt,rc:()=>Wt,iz:()=>jt,cO:()=>Ht,M:()=>we,UM:()=>it,Zc:()=>ot,Hx:()=>Qe,MV:()=>nt,Qp:()=>et,Lt:()=>rt,TR:()=>st,ZS:()=>tt});class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var l,d;r.INSTANCE=new r,function(e){e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=t.map((t=>t(e)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}}}}(l||(l={}));class p{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class c{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class m{static create(){var e;return new m(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class u{constructor(e,t){this.callback=e,this.stacktrace=t}}class v{static setLeakageMonitorEnabled(e){e!==v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.clear(),v.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new u(e,v.ENABLE_TRACKING?m.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):v.ENABLE_TRACKING}}},v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.add(this._event,m.create())),this._event}fire(e){var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const i of this._listeners)i.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(v.ENABLE_TRACKING&&queueMicrotask((()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())})),this._listeners=[]),v.ENABLE_TRACKING&&this._event&&v.MEMORY_LEAK_WATCHER.delete(this._event))}}function g(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}v.ENABLE_TRACKING=!1,v.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class f{constructor(){this._onFired=new v,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event((()=>{this._currentFireCount>t&&e()}))}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask((()=>{this._queued=!1,this._onFired.fire()})))}dispose(){this._onFired.dispose()}}!function(e){e.NONE={dispose:()=>{}},e.from=function(e){return{dispose:()=>{e()}}}}(d||(d={}));class w{get isDisposed(){return this._isDisposed}constructor(){this._isDisposed=!1;for(var e=arguments.length,t=new Array(e),i=0;ithis._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class _{constructor(){this._disposable=d.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=d.NONE)}}class D extends w{constructor(e){super(),this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,b(e,(e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)})))}}function b(e,t){const i=new ResizeObserver((e=>{requestAnimationFrame((()=>{const i=e[0];t(i)}))}));return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const y=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function z(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function S(e){return new A(e)}class A extends w{constructor(e){super(),this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=z(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{z(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(g(e,"focus",n,!0)),this.addDisposables(g(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const E="dv-quasiPreventDefault";function P(e){return e[E]}function O(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function I(e){void 0===e&&(e=document);const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const n of t)i.set(n,n.style.pointerEvents),n.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class G{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const t of this._classNames)C(this.element,t,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const t of this._classNames)C(this.element,t,!0)}}function M(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function N(e,t){if(e.length!==t.length)return!1;for(let i=0;i-1&&(e.splice(i,1),e.unshift(t))}function k(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function L(e,t){const i=e.findIndex((e=>e===t));return i>-1&&(e.splice(i,1),!0)}const T=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),R=()=>{let e=1;return{next:()=>(e++).toString()}},H=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;nt;n--)i.push(n);return i};class W{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=T(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var j,B,F,Z;!function(e){e.HORIZONTAL="HORIZONTAL",e.VERTICAL="VERTICAL"}(j||(j={})),function(e){e[e.MAXIMUM=0]="MAXIMUM",e[e.MINIMUM=1]="MINIMUM",e[e.DISABLED=2]="DISABLED",e[e.ENABLED=3]="ENABLED"}(B||(B={})),function(e){e.Low="low",e.High="high",e.Normal="normal"}(F||(F={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(Z||(Z={}));class J{get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,y(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==j.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce(((e,t)=>e+t.minimumSize),0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce(((e,t)=>e+t.maximumSize),0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,C(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,C(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,n,s=this;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new v,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=function(e,t,i,n,o,r,a,h,l){if(void 0===i&&(i=s.viewItems.map((e=>e.size))),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===a&&(a=Number.POSITIVE_INFINITY),e<0||e>s.viewItems.length)return 0;const d=H(e,-1),p=H(e+1,s.viewItems.length);if(o)for(const s of o)V(d,s),V(p,s);if(n)for(const s of n)k(d,s),k(p,s);const c=d.map((e=>s.viewItems[e])),m=d.map((e=>i[e])),u=p.map((e=>s.viewItems[e])),v=p.map((e=>i[e])),g=d.reduce(((e,t)=>e+s.viewItems[t].minimumSize-i[t]),0),f=d.reduce(((e,t)=>e+s.viewItems[t].maximumSize-i[t]),0),w=0===p.length?Number.POSITIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].minimumSize),0),_=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].maximumSize),0),D=Math.max(g,_),b=Math.min(w,f);let y=!1;if(h){const e=s.viewItems[h.index],i=t>=h.limitDelta;y=i!==e.visible,e.setVisible(i,h.size)}if(!y&&l){const e=s.viewItems[l.index],i=t{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(y(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(x(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=H(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>this.viewItems[e].priority===F.Low)),e],s=i.filter((e=>this.viewItems[e].priority===F.High)),o=this.viewItems[e];t=Math.round(t),t=T(t,o.minimumSize,Math.min(o.maximumSize,this._size)),o.size=t,this.relayout(n,s)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=T(t,e.minimumSize,e.maximumSize),e.size=t;const n=H(this.viewItems.length).filter((e=>e!==i)),s=[...n.filter((e=>this.viewItems[e].priority===F.Low)),i],o=n.filter((e=>this.viewItems[e].priority===F.High));this.relayout([...s,i],o)}addView(e,t,i,n){void 0===t&&(t={type:"distribute"}),void 0===i&&(i=this.viewItems.length);const s=document.createElement("div");let o;s.className="dv-view",s.appendChild(e.element),o="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange((e=>this.onDidChange(a,e.size))),a=new W(s,e,o,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(s)}});if(i===this.viewItems.length?this.viewContainer.appendChild(s):this.viewContainer.insertBefore(s,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=I(),n=this._orientation===j.HORIZONTAL?t.clientX:t.clientY,s=function(e,t){for(let i=0;it.container===e)),o=this.viewItems.map((e=>e.size));let r,a;const h=H(s,-1),l=H(s+1,this.viewItems.length),d=h.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-o[t])),0),p=h.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t])),0),c=0===l.length?Number.POSITIVE_INFINITY:l.reduce(((e,t)=>e+(o[t]-this.viewItems[t].minimumSize)),0),m=0===l.length?Number.NEGATIVE_INFINITY:l.reduce(((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize)),0),u=Math.max(d,m),v=Math.min(c,p),g=this.findFirstSnapIndex(h),f=this.findFirstSnapIndex(l);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?u-t:u+t,size:e.size}}if("number"==typeof f){const e=this.viewItems[f],t=Math.floor(e.viewMinimumSize/2);a={index:f,limitDelta:e.visible?v+t:v-t,size:e.size}}const w=e=>{const t=(this._orientation===j.HORIZONTAL?e.clientX:e.clientY)-n;this.resize(s,t,o,void 0,void 0,u,v,r,a),this.distributeEmptySpace(),this.layoutViews()},_=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",_),document.removeEventListener("pointercancel",_),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",w),document.addEventListener("pointerup",_),document.addEventListener("pointercancel",_)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}n||this.relayout([i]),n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=T(i,r.minimumSize,r.maximumSize);const n=H(this.viewItems.length),s=n.filter((e=>this.viewItems[e].priority===F.Low)),o=n.filter((e=>this.viewItems[e].priority===F.High));this.relayout(s,o)}removeView(e,t,i){void 0===i&&(i=!1);const n=this.viewItems.splice(e,1)[0];if(n.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),n=void 0===i?this.getViewSize(e):Z.Invisible(i),s=this.removeView(e,void 0,!0);this.addView(s,n,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=T(Math.round(s*e/t),n.minimumSize,n.maximumSize))}}else{const t=H(this.viewItems.length),n=t.filter((e=>this.viewItems[e].priority===F.Low)),s=t.filter((e=>this.viewItems[e].priority===F.High));this.resize(this.viewItems.length-1,e-i,void 0,n,s)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=H(this.viewItems.length-1,-1),s=n.filter((e=>this.viewItems[e].priority===F.Low)),o=n.filter((e=>this.viewItems[e].priority===F.High));for(const r of o)V(n,r);for(const r of s)k(n,r);"number"==typeof e&&k(n,e);for(let r=0;0!==i&&r0&&(this._proportions=this.viewItems.map((e=>e.visible?e.size/this._contentSize:void 0)))}layoutViews(){if(this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter((e=>e.visible)),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let n=0;const s=[],o=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((e,r)=>{n+=this.viewItems[r].size,s.push(n);const a=e.visible?e.size-i:0,h=Math.max(0,o[r]-1),l=0===r||0===h?0:s[r-1]+h/t*i;if(r0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const s=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const o=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let a=0;a0||this.startSnappingEnabled)?this.updateSash(e,B.MINIMUM):d&&t[a]&&(r{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class $ extends w{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:j.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new J(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach((e=>{const t=new w(e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}))),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize})),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire(void 0)})),this.splitview.onDidAddView((()=>{this._onDidChange.fire()})),this.splitview.onDidRemoveView((()=>{this._onDidChange.fire()})))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i,n){void 0===i&&(i=this.splitview.length),void 0===n&&(n=!1);const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t){void 0===t&&(t={skipDispose:!1});const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),x(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,y(this.element,"dv-animated")}),200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach((e=>{e.disposable.dispose(),e.pane.dispose()})),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===j.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===j.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,n){void 0===n&&(n=0),this.view=e,this.orientation=t,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=n,this._disposable=this.view.onDidChange((e=>{e?this._onDidChange.fire({size:this.orientation===j.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===j.VERTICAL?e.height:e.width}):this._onDidChange.fire({})}))}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class Y extends w{get width(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0)))}get maximumSize(){return Math.min(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY)))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===j.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===j.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===j.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===j.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return F.Normal;const e=this.children.map((e=>void 0===e.priority?F.Normal:e.priority));return e.some((e=>e===F.High))?F.High:e.some((e=>e===F.Low))?F.Low:F.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach((t=>{t instanceof Y&&(t.margin=e)}))}constructor(e,t,i,n,s,o,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=d.NONE,this.children=[],this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=s,this._size=n,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=a.map((e=>e.node)),this.splitview=new J(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new J(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=o,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire({})}))),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const n=0===this.splitview.contentSize;(t&&i||!t&&n)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new w(l.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((e,t)=>e instanceof Y?e.onDidVisibilityChange((e=>{let{visible:i}=e;this.setChildVisible(t,i)})):d.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function q(e,t){if(e instanceof X)return e;if(e instanceof Y)return q(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];n.addChild(K(i,i.size,i.orthogonalSize),i.size,0,!0)}return n}return new X(e.view,e.orientation,i)}function Q(e,t,i){if(e instanceof Y){const n=new Y(ie(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(Q(r,i,h),h,0,!0)}return n}return new X(e.view,ie(e.orientation),i)}function ee(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=function(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}(t);return[...ee(t.parentElement.parentElement.parentElement),i]}function te(e,t,i){const n=function(e,t){return t.length%2==0?ie(e):e}(e,t),s=function(e){return"top"===e||"bottom"===e?j.VERTICAL:j.HORIZONTAL}(i);if(n===s){const[e,n]=M(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}const ie=e=>e===j.HORIZONTAL?j.VERTICAL:j.HORIZONTAL;const ne=(e,t)=>{const i=t===j.VERTICAL?e.box.width:e.box.height;return function(e){return!!e.children}(e)?{type:"branch",data:e.children.map((e=>ne(e,ie(t)))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class se{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=Q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof Y&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=ee(e.element),[n,s]=this.getNode(i);if(!(s instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n=0;n--){const s=i.children[n];s instanceof X?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=ee(e.element)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,n=i===j.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,n),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,n]=this.getNode(t);if(!(n instanceof X))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ie(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new X(r,t,n,e.size)}return o}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=K(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new Y(ie(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Q(t,t.orthogonalSize,t.size),Z.Distribute,0)}else this._root.addChild(e,Z.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const n={height:e.height,width:e.width};if(e instanceof X)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let o=0;o-1;s--){const n=i[s],o=e[s]||0;if(t?o-1>-1:o+1h.getChildSize(t)));if(h.removeChild(d,t).dispose(),a instanceof Y){m.splice(d,1,...a.children.map((e=>e.size)));for(let e=0;e0;)a.removeChild(0)}else{const e=new X(a.view,ie(a.orientation),a.size),t=c?a.orthogonalSize:Z.Invisible(a.orthogonalSize);h.addChild(e,t,d)}a.dispose();for(let u=0;u=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,i)}}const oe=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class re extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t){void 0===t&&(t=!1),super(),this._disableResizing=t,this._element=e,this.addDisposables(b(this._element,(e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const ae=R();function he(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class le extends re{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map((e=>e.value))}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=ae.next(),this._groups=new Map,this._onDidRemove=new v,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new v,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new v,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new f,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new f,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new G(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new se(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange((e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})})),this.gridview.onDidViewVisibilityChange((()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire())),this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.layout(this.width,this.height,!0)})),d.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),l.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)((()=>{this._bufferOnDidLayoutChange.fire()})),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(ee(e.element))}updateOptions(e){var t,i,n,s;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t,i){void 0===t&&(t=[0]),this.gridview.addView(e,null!=i?i:Z.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),n=this.gridview.remove(e,Z.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return n}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class de{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class pe{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ce{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPanel(){return this.component.onDidAddGroup}get onDidRemovePanel(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActiveGroupChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get panels(){return this.component.groups}get orientation(){return this.component.orientation}set orientation(e){this.component.updateOptions({orientation:e})}constructor(e){this.component=e}focus(){this.component.focus()}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e,t){this.component.removePanel(e,t)}movePanel(e,t){this.component.movePanel(e,t)}getPanel(e){return this.component.getPanel(e)}fromJSON(e){return this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}get panels(){return this.component.panels}get groups(){return this.component.groups}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e){this.component.removePanel(e)}addGroup(e){return this.component.addGroup(e)}closeAllGroups(){return this.component.closeAllGroups()}removeGroup(e){this.component.removeGroup(e)}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.addFloatingGroup(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}moveToNext(e){this.component.moveToNext(e)}moveToPrevious(e){this.component.moveToPrevious(e)}maximizeGroup(e){this.component.maximizeGroup(e.group)}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.exitMaximizedGroup()}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.addPopoutGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ue extends w{constructor(e,t){super(),this.el=e,this.disabled=t,this.dataDisposable=new _,this.pointerEventsDisposable=new _,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this.addDisposables(this._onDragStart,this.dataDisposable,this.pointerEventsDisposable),this.configure()}setDisabled(e){this.disabled=e}isCancelled(e){return!1}configure(){this.addDisposables(this._onDragStart,g(this.el,"dragstart",(e=>{if(e.defaultPrevented||this.isCancelled(e)||this.disabled)return void e.preventDefault();const t=I();if(this.pointerEventsDisposable.value={dispose:()=>{t.release()}},this.el.classList.add("dv-dragged"),setTimeout((()=>this.el.classList.remove("dv-dragged")),0),this.dataDisposable.value=this.getData(e),this._onDragStart.fire(e),e.dataTransfer){e.dataTransfer.effectAllowed="move";e.dataTransfer.items.length>0||e.dataTransfer.setData("text/plain","")}})),g(this.el,"dragend",(()=>{this.pointerEventsDisposable.dispose(),setTimeout((()=>{this.dataDisposable.dispose()}),0)})))}}class ve extends w{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(g(this.element,"dragenter",(e=>{this.onDragEnter(e)}),!0)),this.addDisposables(g(this.element,"dragover",(e=>{this.onDragOver(e)}),!0)),this.addDisposables(g(this.element,"dragleave",(e=>{this.onDragLeave(e)}))),this.addDisposables(g(this.element,"dragend",(e=>{this.onDragEnd(e)}))),this.addDisposables(g(this.element,"drop",(e=>{this.onDrop(e)})))}}class ge extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}constructor(e){super(),this.options=e}}function fe(e){switch(e){case"above":return"top";case"below":return"bottom";case"left":return"left";case"right":return"right";case"within":return"center";default:throw new Error(`invalid direction '${e}'`)}}function we(e){switch(e){case"top":return"above";case"bottom":return"below";case"left":return"left";case"right":return"right";case"center":return"within";default:throw new Error(`invalid position '${e}'`)}}const _e={value:20,type:"percentage"},De={value:50,type:"percentage"};class be extends w{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new ve(this.element,{onDragEnter:()=>{var e,t,i;null===(i=null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||void 0===i||i.getElements()},onDragOver:e=>{var t,i,n,s,o,r,a;be.ACTUAL_TARGET=this;const h=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);if(0===this._acceptedTargetZonesSet.size){if(h)return;return void this.removeDropTarget()}const l=null!==(o=null===(s=(n=this.options).getOverlayOutline)||void 0===s?void 0:s.call(n))&&void 0!==o?o:this.element,d=l.offsetWidth,p=l.offsetHeight;if(0===d||0===p)return;const c=e.currentTarget.getBoundingClientRect(),m=(null!==(r=e.clientX)&&void 0!==r?r:0)-c.left,u=(null!==(a=e.clientY)&&void 0!==a?a:0)-c.top,v=this.calculateQuadrant(this._acceptedTargetZonesSet,m,u,d,p);if(this.isAlreadyUsed(e)||null===v)return void this.removeDropTarget();if(!this.options.canDisplayOverlay(e,v)){if(h)return;return void this.removeDropTarget()}const g=new ge({nativeEvent:e,position:v});this._onWillShowOverlay.fire(g),g.defaultPrevented?this.removeDropTarget():(this.markAsUsed(e),h||this.targetElement||(this.targetElement=document.createElement("div"),this.targetElement.className="dv-drop-target-dropzone",this.overlayElement=document.createElement("div"),this.overlayElement.className="dv-drop-target-selection",this._state="center",this.targetElement.appendChild(this.overlayElement),l.classList.add("dv-drop-target"),l.append(this.targetElement)),this.toggleClasses(v,d,p),this._state=v)},onDragLeave:()=>{var e,t;(null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||this.removeDropTarget()},onDragEnd:e=>{var t,i;const n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);n&&be.ACTUAL_TARGET===this&&this._state&&(e.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:e})),this.removeDropTarget(),null==n||n.clear()},onDrop:e=>{var t,i,n;e.preventDefault();const s=this._state;this.removeDropTarget(),null===(n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t))||void 0===n||n.clear(),s&&(e.stopPropagation(),this._onDrop.fire({position:s,nativeEvent:e}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(e){e[be.USED_EVENT_ID]=!0}isAlreadyUsed(e){const t=e[be.USED_EVENT_ID];return"boolean"==typeof t&&t}toggleClasses(e,t,i){var n,s,o,r,a,h,l;const d=null===(s=(n=this.options).getOverrideTarget)||void 0===s?void 0:s.call(n);if(!d&&!this.overlayElement)return;const p=t<100,c=i<100,m="left"===e,u="right"===e,v="top"===e,g="bottom"===e,f=!p&&u,w=!p&&m,_=!c&&v,D=!c&&g;let b=1;const y=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.size)&&void 0!==r?r:De;if("percentage"===y.type?b=T(y.value,0,100)/100:((f||w)&&(b=T(0,y.value,t)/t),(_||D)&&(b=T(0,y.value,i)/i)),d){const n=null!==(l=null===(h=(a=this.options).getOverlayOutline)||void 0===h?void 0:h.call(a))&&void 0!==l?l:this.element,s=n.getBoundingClientRect(),o=d.getElements(void 0,n),r=o.root,c=o.overlay,y=r.getBoundingClientRect(),x=s.top-y.top,z=s.left-y.left,S={top:x,left:z,width:t,height:i};if(f?(S.left=z+t*(1-b),S.width=t*b):w?S.width=t*b:_?S.height=i*b:D&&(S.top=x+i*(1-b),S.height=i*b),p&&m&&(S.width=4),p&&u&&(S.left=z+t-4,S.width=4),!function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,l=`${Math.round(o)}px`;return e.style.top!==r||e.style.left!==a||e.style.width!==h||e.style.height!==l}(c,S))return;return function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,l=`${Math.round(o)}px`;e.style.top=r,e.style.left=a,e.style.width=h,e.style.height=l,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(c,S),c.className="dv-drop-target-anchor"+(this.options.className?` ${this.options.className}`:""),C(c,"dv-drop-target-left",m),C(c,"dv-drop-target-right",u),C(c,"dv-drop-target-top",v),C(c,"dv-drop-target-bottom",g),C(c,"dv-drop-target-center","center"===e),void(o.changed&&(C(c,"dv-drop-target-anchor-container-changed",!0),setTimeout((()=>{C(c,"dv-drop-target-anchor-container-changed",!1)}),10)))}if(!this.overlayElement)return;const x={top:"0px",left:"0px",width:"100%",height:"100%"};f?(x.left=100*(1-b)+"%",x.width=100*b+"%"):w?x.width=100*b+"%":_?x.height=100*b+"%":D&&(x.top=100*(1-b)+"%",x.height=100*b+"%"),function(e,t){const{top:i,left:n,width:s,height:o}=t;e.style.top=i,e.style.left=n,e.style.width=s,e.style.height=o,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(this.overlayElement,x),C(this.overlayElement,"dv-drop-target-small-vertical",c),C(this.overlayElement,"dv-drop-target-small-horizontal",p),C(this.overlayElement,"dv-drop-target-left",m),C(this.overlayElement,"dv-drop-target-right",u),C(this.overlayElement,"dv-drop-target-top",v),C(this.overlayElement,"dv-drop-target-bottom",g),C(this.overlayElement,"dv-drop-target-center","center"===e)}calculateQuadrant(e,t,i,n,s){var o,r;const a=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.activationSize)&&void 0!==r?r:_e;return"percentage"===a.type?function(e,t,i,n,s,o){const r=100*t/n,a=100*i/s;if(e.has("left")&&r100-o)return"right";if(e.has("top")&&a100-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value):function(e,t,i,n,s,o){if(e.has("left")&&tn-o)return"right";if(e.has("top")&&is-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value)}removeDropTarget(){var e;this.targetElement&&(this._state=void 0,null===(e=this.targetElement.parentElement)||void 0===e||e.classList.remove("dv-drop-target"),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0)}}be.USED_EVENT_ID="__dockview_droptarget_event_is_used__";const ye=(()=>{const e={disableAutoResizing:void 0,disableDnd:void 0,className:void 0};return Object.keys(e)})();class xe extends c{constructor(e,t,i,n){super(),this.nativeEvent=e,this.position=t,this.getData=i,this.panel=n}}class Ce extends p{constructor(){super()}}class ze extends w{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new _,this._onDidDimensionChange=new v,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new v,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new v,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new v,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new v,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new v,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange((e=>{this._isFocused=e.isFocused})),this.onDidActiveChange((e=>{this._isActive=e.isActive})),this.onDidVisibilityChange((e=>{this._isVisible=e.isVisible})),this.onDidDimensionsChange((e=>{this._width=e.width,this._height=e.height})),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event((t=>{this._parameters=t,e.update({params:t})}))}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}}class Se extends ze{constructor(e,t){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v({replay:!0}),this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Ae extends Se{set pane(e){this._pane=e}constructor(e,t){super(e,t),this._onDidExpansionChange=new v({replay:!0}),this.onDidExpansionChange=this._onDidExpansionChange.event,this._onMouseEnter=new v({}),this.onMouseEnter=this._onMouseEnter.event,this._onMouseLeave=new v({}),this.onMouseLeave=this._onMouseLeave.event,this.addDisposables(this._onDidExpansionChange,this._onMouseEnter,this._onMouseLeave)}setExpanded(e){var t;null===(t=this._pane)||void 0===t||t.setExpanded(e)}get isExpanded(){var e;return!!(null===(e=this._pane)||void 0===e?void 0:e.isExpanded())}}class Ee extends w{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){var e;return null===(e=this._params)||void 0===e?void 0:e.params}constructor(e,t,i){super(),this.id=e,this.component=t,this.api=i,this._height=0,this._width=0,this._element=document.createElement("div"),this._element.tabIndex=-1,this._element.style.outline="none",this._element.style.height="100%",this._element.style.width="100%",this._element.style.overflow="hidden";const n=S(this._element);this.addDisposables(this.api,n.onDidFocus((()=>{this.api._onDidChangeFocus.fire({isFocused:!0})})),n.onDidBlur((()=>{this.api._onDidChangeFocus.fire({isFocused:!1})})),n)}focus(){const e=new Ce;this.api._onWillFocus.fire(e),e.defaultPrevented||this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t,i;this._params=Object.assign(Object.assign({},this._params),{params:Object.assign(Object.assign({},null===(t=this._params)||void 0===t?void 0:t.params),e.params)});for(const n of Object.keys(e.params))void 0===e.params[n]&&delete this._params.params[n];null===(i=this.part)||void 0===i||i.update({params:this._params.params})}toJSON(){var e,t;const i=null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{};return{id:this.id,component:this.component,params:Object.keys(i).length>0?i:void 0}}dispose(){var e;this.api.dispose(),null===(e=this.part)||void 0===e||e.dispose(),super.dispose()}}class Pe extends Ee{set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){return this.headerSize+(this.isExpanded()?this._minimumBodySize:0)}get maximumSize(){return this.headerSize+(this.isExpanded()?this._maximumBodySize:0)}get size(){return this._size}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get minimumBodySize(){return this._minimumBodySize}set minimumBodySize(e){this._minimumBodySize="number"==typeof e?e:0}get maximumBodySize(){return this._maximumBodySize}set maximumBodySize(e){this._maximumBodySize="number"==typeof e?e:Number.POSITIVE_INFINITY}get headerVisible(){return this._headerVisible}set headerVisible(e){this._headerVisible=e,this.header.style.display=e?"":"none"}constructor(e){super(e.id,e.component,new Ae(e.id,e.component)),this._onDidChangeExpansionState=new v({replay:!0}),this.onDidChangeExpansionState=this._onDidChangeExpansionState.event,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=0,this._size=0,this._isExpanded=!1,this.api.pane=this,this.api.initialize(this),this.headerSize=e.headerSize,this.headerComponent=e.headerComponent,this._minimumBodySize=e.minimumBodySize,this._maximumBodySize=e.maximumBodySize,this._isExpanded=e.isExpanded,this._headerVisible=e.isHeaderVisible,this._onDidChangeExpansionState.fire(this.isExpanded()),this._orientation=e.orientation,this.element.classList.add("dv-pane"),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})),g(this.element,"mouseenter",(e=>{this.api._onMouseEnter.fire(e)})),g(this.element,"mouseleave",(e=>{this.api._onMouseLeave.fire(e)}))),this.addDisposables(this._onDidChangeExpansionState,this.onDidChangeExpansionState((e=>{this.api._onDidExpansionChange.fire({isExpanded:e})})),this.api.onDidFocusChange((e=>{this.header&&(e.isFocused?x(this.header,"focused"):y(this.header,"focused"))}))),this.renderOnce()}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}isExpanded(){return this._isExpanded}setExpanded(e){this._isExpanded!==e&&(this._isExpanded=e,e?(this.animationTimer&&clearTimeout(this.animationTimer),this.body&&this.element.appendChild(this.body)):this.animationTimer=setTimeout((()=>{var e;null===(e=this.body)||void 0===e||e.remove()}),200),this._onDidChange.fire(e?{size:this.width}:{}),this._onDidChangeExpansionState.fire(e))}layout(e,t){this._size=e,this._orthogonalSize=t;const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){var t,i;super.init(e),"number"==typeof e.minimumBodySize&&(this.minimumBodySize=e.minimumBodySize),"number"==typeof e.maximumBodySize&&(this.maximumBodySize=e.maximumBodySize),this.bodyPart=this.getBodyComponent(),this.headerPart=this.getHeaderComponent(),this.bodyPart.init(Object.assign(Object.assign({},e),{api:this.api})),this.headerPart.init(Object.assign(Object.assign({},e),{api:this.api})),null===(t=this.body)||void 0===t||t.append(this.bodyPart.element),null===(i=this.header)||void 0===i||i.append(this.headerPart.element),"boolean"==typeof e.isExpanded&&this.setExpanded(e.isExpanded)}toJSON(){const e=this._params;return Object.assign(Object.assign({},super.toJSON()),{headerComponent:this.headerComponent,title:e.title})}renderOnce(){this.header=document.createElement("div"),this.header.tabIndex=0,this.header.className="dv-pane-header",this.header.style.height=`${this.headerSize}px`,this.header.style.lineHeight=`${this.headerSize}px`,this.header.style.minHeight=`${this.headerSize}px`,this.header.style.maxHeight=`${this.headerSize}px`,this.element.appendChild(this.header),this.body=document.createElement("div"),this.body.className="dv-pane-body",this.element.appendChild(this.body)}getComponent(){return{update:e=>{var t,i;null===(t=this.bodyPart)||void 0===t||t.update({params:e}),null===(i=this.headerPart)||void 0===i||i.update({params:e})},dispose:()=>{var e,t;null===(e=this.bodyPart)||void 0===e||e.dispose(),null===(t=this.headerPart)||void 0===t||t.dispose()}}}}class Oe extends Pe{constructor(e){super({id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,isHeaderVisible:!0,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.accessor=e.accessor,this.addDisposables(this._onDidDrop,this._onUnhandledDragOverEvent),e.disableDnd||this.initDragFeatures()}initDragFeatures(){if(!this.header)return;const e=this.id,t=this.accessor.id;this.header.draggable=!0,this.handler=new class extends ue{getData(){return r.getInstance().setData([new o(t,e)],o.prototype),{dispose:()=>{r.getInstance().clearData(o.prototype)}}}}(this.header),this.target=new be(this.element,{acceptedTargetZones:["top","bottom"],overlayModel:{activationSize:{type:"percentage",value:50}},canDisplayOverlay:(e,t)=>{const i=h();if(i&&i.paneId!==this.id&&i.viewId===this.accessor.id)return!0;const n=new xe(e,t,h,this);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}}),this.addDisposables(this._onDidDrop,this.handler,this.target,this.target.onDrop((e=>{this.onDrop(e)})))}onDrop(e){const t=h();if(!t||t.viewId!==this.accessor.id)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,api:new pe(this.accessor),getData:h}));const i=this._params.containerApi,n=t.paneId,s=i.getPanel(n);if(!s)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,getData:h,api:new pe(this.accessor)}));const o=i.panels,r=o.indexOf(s);let a=i.panels.indexOf(this);"left"!==e.position&&"top"!==e.position||(a=Math.max(0,a-1)),"right"!==e.position&&"bottom"!==e.position||(r>a&&a++,a=Math.min(o.length-1,a)),i.movePanel(r,a)}}class Ie extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this.disposable=new _,this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-content-container",this._element.tabIndex=-1,this.addDisposables(this._onDidFocus,this._onDidBlur);const i=t.dropTargetContainer;this.dropTarget=new be(this.element,{getOverlayOutline:()=>{var t;return"group"===(null===(t=e.options.theme)||void 0===t?void 0:t.dndPanelOverlay)?this.element.parentElement:null},className:"dv-drop-target-content",acceptedTargetZones:["top","bottom","left","right","center"],canDisplayOverlay:(e,t)=>{if("no-drop-target"===this.group.locked||this.group.locked&&"center"===t)return!1;const i=a();return!(!i&&e.shiftKey&&"floating"!==this.group.location.type)&&(!(!i||i.viewId!==this.accessor.id)||this.group.canDisplayOverlay(e,t,"content"))},getOverrideTarget:i?()=>i.model:void 0}),this.addDisposables(this.dropTarget)}show(){this.element.style.display=""}hide(){this.element.style.display="none"}renderPanel(e,t){void 0===t&&(t={asActive:!0});const i=t.asActive||this.panel&&this.group.isPanelActive(this.panel);let n;switch(this.panel&&this.panel.view.content.element.parentElement===this._element&&this._element.removeChild(this.panel.view.content.element),this.panel=e,e.api.renderer){case"onlyWhenVisible":this.group.renderContainer.detatch(e),this.panel&&i&&this._element.appendChild(this.panel.view.content.element),n=this._element;break;case"always":e.view.content.element.parentElement===this._element&&this._element.removeChild(e.view.content.element),n=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw new Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(i){const e=S(n),t=new w;t.addDisposables(e,e.onDidFocus((()=>this._onDidFocus.fire())),e.onDidBlur((()=>this._onDidBlur.fire()))),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){var e;this.panel&&"onlyWhenVisible"===this.panel.api.renderer&&(null===(e=this.panel.view.content.element.parentElement)||void 0===e||e.removeChild(this.panel.view.content.element)),this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}}function Ge(e,t,i){var n,s;x(t,"dv-dragged"),t.style.top="-9999px",document.body.appendChild(t),e.setDragImage(t,null!==(n=null==i?void 0:i.x)&&void 0!==n?n:0,null!==(s=null==i?void 0:i.y)&&void 0!==s?s:0),setTimeout((()=>{y(t,"dv-dragged"),t.remove()}),0)}class Me extends ue{constructor(e,t,i,n,s){super(e,s),this.accessor=t,this.group=i,this.panel=n,this.panelTransfer=r.getInstance()}getData(e){return this.panelTransfer.setData([new s(this.accessor.id,this.group.id,this.panel.id)],s.prototype),{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Ne extends w{get element(){return this._element}constructor(e,t,i){super(),this.panel=e,this.accessor=t,this.group=i,this.content=void 0,this._onPointDown=new v,this.onPointerDown=this._onPointDown.event,this._onDropped=new v,this.onDrop=this._onDropped.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-tab",this._element.tabIndex=0,this._element.draggable=!this.accessor.options.disableDnd,C(this.element,"dv-inactive-tab",!0),this.dragHandler=new Me(this._element,this.accessor,this.group,this.panel,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["left","right"],overlayModel:{activationSize:{value:50,type:"percentage"}},canDisplayOverlay:(e,t)=>{if(this.group.locked)return!1;const i=a();return!(!i||this.accessor.id!==i.viewId)||this.group.model.canDisplayOverlay(e,t,"tab")},getOverrideTarget:()=>{var e;return null===(e=i.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this._onPointDown,this._onDropped,this._onDragStart,this.dragHandler.onDragStart((e=>{if(e.dataTransfer){const t=getComputedStyle(this.element),i=this.element.cloneNode(!0);Array.from(t).forEach((e=>i.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e)))),i.style.position="absolute",Ge(e.dataTransfer,i,{y:-10,x:30})}this._onDragStart.fire(e)})),this.dragHandler,g(this._element,"pointerdown",(e=>{this._onPointDown.fire(e)})),this.dropTarget.onDrop((e=>{this._onDropped.fire(e)})),this.dropTarget)}setActive(e){C(this.element,"dv-active-tab",e),C(this.element,"dv-inactive-tab",!e)}setContent(e){this.content&&this._element.removeChild(this.content.element),this.content=e,this._element.appendChild(this.content.element)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,this.dragHandler.setDisabled(!!this.accessor.options.disableDnd)}dispose(){super.dispose()}}class Ve{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}}class ke extends ue{constructor(e,t,i,n){super(e,n),this.accessor=t,this.group=i,this.panelTransfer=r.getInstance(),this.addDisposables(g(e,"pointerdown",(e=>{e.shiftKey&&(e[E]=!0)}),!0))}isCancelled(e){return"floating"===this.group.api.location.type&&!e.shiftKey}getData(e){const t=e.dataTransfer;this.panelTransfer.setData([new s(this.accessor.id,this.group.id,null)],s.prototype);const i=window.getComputedStyle(this.el),n=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-background-color"),o=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-color");if(t){const e=document.createElement("div");e.style.backgroundColor=n,e.style.color=o,e.style.padding="2px 8px",e.style.height="24px",e.style.fontSize="11px",e.style.lineHeight="20px",e.style.borderRadius="12px",e.style.position="absolute",e.style.pointerEvents="none",e.style.top="-9999px",e.textContent=`Multiple Panels (${this.group.size})`,Ge(t,e,{y:-10,x:30})}return{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Le extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-void-container",this._element.draggable=!this.accessor.options.disableDnd,C(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.addDisposables(this._onDrop,this._onDragStart,g(this._element,"pointerdown",(()=>{this.accessor.doSetGroupActive(this.group)}))),this.handler=new ke(this._element,e,t,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["center"],canDisplayOverlay:(e,i)=>{const n=a();return!(!n||this.accessor.id!==n.viewId)||t.model.canDisplayOverlay(e,i,"header_space")},getOverrideTarget:()=>{var e;return null===(e=t.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this.handler,this.handler.onDragStart((e=>{this._onDragStart.fire(e)})),this.dropTarget.onDrop((e=>{this._onDrop.fire(e)})),this.dropTarget)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,C(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.handler.setDisabled(!!this.accessor.options.disableDnd)}}class Te extends w{get element(){return this._element}constructor(e){super(),this.scrollableElement=e,this._scrollLeft=0,this._element=document.createElement("div"),this._element.className="dv-scrollable",this._horizontalScrollbar=document.createElement("div"),this._horizontalScrollbar.className="dv-scrollbar-horizontal",this.element.appendChild(e),this.element.appendChild(this._horizontalScrollbar),this.addDisposables(g(this.element,"wheel",(e=>{this._scrollLeft+=e.deltaY*Te.MouseWheelSpeed,this.calculateScrollbarStyles()})),g(this._horizontalScrollbar,"pointerdown",(e=>{e.preventDefault(),C(this.element,"dv-scrollable-scrolling",!0);const t=e.clientX,i=this._scrollLeft,n=e=>{const n=e.clientX-t,{clientWidth:s}=this.element,{scrollWidth:o}=this.scrollableElement,r=s/o;this._scrollLeft=i+n/r,this.calculateScrollbarStyles()},s=()=>{C(this.element,"dv-scrollable-scrolling",!1),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",s),document.removeEventListener("pointercancel",s)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",s),document.addEventListener("pointercancel",s)})),g(this.element,"scroll",(()=>{this.calculateScrollbarStyles()})),g(this.scrollableElement,"scroll",(()=>{this._scrollLeft=this.scrollableElement.scrollLeft,this.calculateScrollbarStyles()})),b(this.element,(()=>{C(this.element,"dv-scrollable-resizing",!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout((()=>{clearTimeout(this._animationTimer),C(this.element,"dv-scrollable-resizing",!1)}),500),this.calculateScrollbarStyles()})))}calculateScrollbarStyles(){const{clientWidth:e}=this.element,{scrollWidth:t}=this.scrollableElement;if(t>e){const i=e*(e/t);this._horizontalScrollbar.style.width=`${i}px`,this._scrollLeft=T(this._scrollLeft,0,this.scrollableElement.scrollWidth-e),this.scrollableElement.scrollLeft=this._scrollLeft;const n=this._scrollLeft/(t-e);this._horizontalScrollbar.style.left=(e-i)*n+"px"}else this._horizontalScrollbar.style.width="0px",this._horizontalScrollbar.style.left="0px",this._scrollLeft=0}}Te.MouseWheelSpeed=1;class Re extends w{get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e&&(this._showTabsOverflowControl=e,e)){const e=new D(this._tabsList);this._observerDisposable.value=new w(e,e.onDidChange((e=>{const t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t})})),g(this._tabsList,"scroll",(()=>{this.toggleDropdown({reset:!1})})))}}get element(){return this._element}get panels(){return this._tabs.map((e=>e.value.panel.id))}get size(){return this._tabs.length}get tabs(){return this._tabs.map((e=>e.value))}constructor(e,t,i){if(super(),this.group=e,this.accessor=t,this._observerDisposable=new _,this._tabs=[],this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new v,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement("div"),this._tabsList.className="dv-tabs-container dv-horizontal",this.showTabsOverflowControl=i.showTabsOverflowControl,"native"===t.options.scrollbars)this._element=this._tabsList;else{const e=new Te(this._tabsList);this._element=e.element,this.addDisposables(e)}this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,g(this.element,"pointerdown",(e=>{if(e.defaultPrevented)return;0===e.button&&this.accessor.doSetGroupActive(this.group)})),d.from((()=>{for(const{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[]})))}indexOf(e){return this._tabs.findIndex((t=>t.value.panel.id===e))}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}setActivePanel(e){let t=0;for(const i of this._tabs){const n=e.id===i.value.panel.id;if(i.value.setActive(n),n){const e=i.value.element,n=e.parentElement;(tn.scrollLeft+n.clientWidth)&&(n.scrollLeft=t)}t+=i.value.element.clientWidth}}openPanel(e,t){if(void 0===t&&(t=this._tabs.length),this._tabs.find((t=>t.value.panel.id===e.id)))return;const i=new Ne(e,this.accessor,this.group);i.setContent(e.view.tab);const n=new w(i.onDragStart((t=>{this._onTabDragStart.fire({nativeEvent:t,panel:e})})),i.onPointerDown((t=>{if(t.defaultPrevented)return;const n=!this.accessor.options.disableFloatingGroups,s="floating"===this.group.api.location.type&&1===this.size;if(n&&!s&&t.shiftKey){t.preventDefault();const e=this.accessor.getGroupPanel(i.panel.id),{top:n,left:s}=i.element.getBoundingClientRect(),{top:o,left:r}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:s-r,y:n-o,inDragMode:!0})}else if(0===t.button)this.group.activePanel!==e&&this.group.model.openPanel(e)})),i.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this._tabs.findIndex((e=>e.value===i))})})),i.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Ve(e,{kind:"tab",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))}))),s={value:i,disposable:n};this.addTab(s,t)}delete(e){const t=this.indexOf(e),i=this._tabs.splice(t,1)[0],{value:n,disposable:s}=i;s.dispose(),n.dispose(),n.element.remove()}addTab(e,t){if(void 0===t&&(t=this._tabs.length),t<0||t>this._tabs.length)throw new Error("invalid location");this._tabsList.insertBefore(e.value.element,this._tabsList.children[t]),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){const t=e.reset?[]:this._tabs.filter((e=>!function(e,t){const i=O(e),n=O(t);return!(i.leftn.left+n.width)}(e.value.element,this._tabsList))).map((e=>e.value.panel.id));this._onOverflowTabsChange.fire({tabs:t,reset:e.reset})}updateDragAndDropState(){for(const e of this._tabs)e.value.updateDragAndDropState()}}const He=e=>{const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"height",e.height),t.setAttributeNS(null,"width",e.width),t.setAttributeNS(null,"viewBox",e.viewbox),t.setAttributeNS(null,"aria-hidden","false"),t.setAttributeNS(null,"focusable","false"),t.classList.add("dv-svg");const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d",e.path),t.appendChild(i),t},We=()=>He({width:"11",height:"11",viewbox:"0 0 15 25",path:"M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z"});class je extends w{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?"none":""}get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this.dropdownPart=null,this._overflowTabs=[],this._dropdownDisposable=new _,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement("div"),this._element.className="dv-tabs-and-actions-container",C(this._element,"dv-full-width-single-tab","fullwidth"===this.accessor.options.singleTabMode),this.rightActionsContainer=document.createElement("div"),this.rightActionsContainer.className="dv-right-actions-container",this.leftActionsContainer=document.createElement("div"),this.leftActionsContainer.className="dv-left-actions-container",this.preActionsContainer=document.createElement("div"),this.preActionsContainer.className="dv-pre-actions-container",this.tabs=new Re(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new Le(this.accessor,this.group),this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.addDisposables(this.tabs.onDrop((e=>this._onDrop.fire(e))),this.tabs.onWillShowOverlay((e=>this._onWillShowOverlay.fire(e))),e.onDidOptionsChange((()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList})),this.tabs.onOverflowTabsChange((e=>{this.toggleDropdown(e)})),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart((e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})})),this.voidContainer.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})})),this.voidContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Ve(e,{kind:"header_space",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))})),g(this.voidContainer.element,"pointerdown",(e=>{if(e.defaultPrevented)return;if(!this.accessor.options.disableFloatingGroups&&e.shiftKey&&"floating"!==this.group.api.location.type){e.preventDefault();const{top:t,left:i}=this.element.getBoundingClientRect(),{top:n,left:s}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:i-s+20,y:t-n+20,inDragMode:!0})}})))}show(){this.hidden||(this.element.style.display="")}hide(){this._element.style.display="none"}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&(this.rightActions.remove(),this.rightActions=void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&(this.leftActions.remove(),this.leftActions=void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&(this.preActions.remove(),this.preActions=void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}openPanel(e,t){void 0===t&&(t=this.tabs.size),this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}updateClassnames(){C(this._element,"dv-single-tab",1===this.size)}toggleDropdown(e){const t=e.reset?[]:e.tabs;if(this._overflowTabs=t,this._overflowTabs.length>0&&this.dropdownPart)return void this.dropdownPart.update({tabs:t.length});if(0===this._overflowTabs.length)return void this._dropdownDisposable.dispose();const i=document.createElement("div");i.className="dv-tabs-overflow-dropdown-root";const n=function(){const e=document.createElement("div");e.className="dv-tabs-overflow-dropdown-default";const t=document.createElement("span");t.textContent="";const i=We();return e.appendChild(i),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}();n.update({tabs:t.length}),this.dropdownPart=n,i.appendChild(n.element),this.rightActionsContainer.prepend(i),this._dropdownDisposable.value=new w(d.from((()=>{var e,t;i.remove(),null===(t=null===(e=this.dropdownPart)||void 0===e?void 0:e.dispose)||void 0===t||t.call(e),this.dropdownPart=null})),g(i,"pointerdown",(e=>{e.preventDefault()}),{capture:!0}),g(i,"click",(e=>{const t=document.createElement("div");t.style.overflow="auto",t.className="dv-tabs-overflow-container";for(const i of this.tabs.tabs.filter((e=>this._overflowTabs.includes(e.panel.id)))){const e=this.group.panels.find((e=>e===i.panel)),n=e.view.createTabRenderer("headerOverflow").element,s=document.createElement("div");C(s,"dv-tab",!0),C(s,"dv-active-tab",e.api.isActive),C(s,"dv-inactive-tab",!e.api.isActive),s.addEventListener("click",(e=>{this.accessor.popupService.close(),e.defaultPrevented||(i.element.scrollIntoView(),i.panel.api.setActive())})),s.appendChild(n),t.appendChild(s)}const n=function(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}(i);this.accessor.popupService.openPopover(t,{x:e.clientX,y:e.clientY,zIndex:(null==n?void 0:n.style.zIndex)?`calc(${n.style.zIndex} * 2)`:void 0})})))}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}}class Be extends c{constructor(e,t,i,n,s){super(),this.nativeEvent=e,this.target=t,this.position=i,this.getData=n,this.group=s}}const Fe=(()=>{const e={disableAutoResizing:void 0,hideBorders:void 0,singleTabMode:void 0,disableFloatingGroups:void 0,floatingGroupBounds:void 0,popoutUrl:void 0,defaultRenderer:void 0,debug:void 0,rootOverlayModel:void 0,locked:void 0,disableDnd:void 0,className:void 0,noPanelsOverlay:void 0,dndEdges:void 0,theme:void 0,disableTabsOverflowList:void 0,scrollbars:void 0};return Object.keys(e)})();class Ze extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}}class Je extends Ze{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}}class Ue extends w{get element(){throw new Error("dockview: not supported")}get activePanel(){return this._activePanel}get locked(){return this._locked}set locked(e){this._locked=e,C(this.container,"dv-locked-groupview","no-drop-target"===e||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return 0===this._panels.length}get hasWatermark(){return!(!this.watermark||!this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get isContentFocused(){return!!document.activeElement&&z(document.activeElement,this.contentContainer.element)}get location(){return this._location}set location(e){switch(this._location=e,C(this.container,"dv-groupview-floating",!1),C(this.container,"dv-groupview-popout",!1),e.type){case"grid":this.contentContainer.dropTarget.setTargetZones(["top","bottom","left","right","center"]);break;case"floating":this.contentContainer.dropTarget.setTargetZones(["center"]),this.contentContainer.dropTarget.setTargetZones(e?["center"]:["top","bottom","left","right","center"]),C(this.container,"dv-groupview-floating",!0);break;case"popout":this.contentContainer.dropTarget.setTargetZones(["center"]),C(this.container,"dv-groupview-popout",!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,i,n,s){var o;super(),this.container=e,this.accessor=t,this.id=i,this.options=n,this.groupPanel=s,this._isGroupActive=!1,this._locked=!1,this._location={type:"grid"},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._onMove=new v,this.onMove=this._onMove.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new v,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new v,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,C(this.container,"dv-groupview",!0),this._api=new me(this.accessor),this.tabsContainer=new je(this.accessor,this.groupPanel),this.contentContainer=new Ie(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!n.hideHeader,this.locked=null!==(o=n.locked)&&void 0!==o&&o,this.addDisposables(this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart((e=>{this._onTabDragStart.fire(e)})),this.tabsContainer.onGroupDragStart((e=>{this._onGroupDragStart.fire(e)})),this.tabsContainer.onDrop((e=>{this.handleDropEvent("header",e.event,"center",e.index)})),this.contentContainer.onDidFocus((()=>{this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.onDidBlur((()=>{})),this.contentContainer.dropTarget.onDrop((e=>{this.handleDropEvent("content",e.nativeEvent,e.position)})),this.tabsContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(e)})),this.contentContainer.dropTarget.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Ve(e,{kind:"content",panel:this.activePanel,api:this._api,group:this.groupPanel,getData:a}))})),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOverEvent,this._onDidPanelTitleChange,this._onDidPanelParametersChange)}focusContent(){this.contentContainer.element.focus()}set renderContainer(e){this.panels.forEach((e=>{this.renderContainer.detatch(e)})),this._overwriteRenderContainer=e,this.panels.forEach((e=>{this.rerender(e)}))}get renderContainer(){var e;return null!==(e=this._overwriteRenderContainer)&&void 0!==e?e:this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){var e;return null!==(e=this._overwriteDropTargetContainer)&&void 0!==e?e:this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach((e=>{this.doAddPanel(e)})),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.accessor.options.createRightHeaderActionComponent&&(this._rightHeaderActions=this.accessor.options.createRightHeaderActionComponent(this.groupPanel),this.addDisposables(this._rightHeaderActions),this._rightHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element)),this.accessor.options.createLeftHeaderActionComponent&&(this._leftHeaderActions=this.accessor.options.createLeftHeaderActionComponent(this.groupPanel),this.addDisposables(this._leftHeaderActions),this._leftHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element)),this.accessor.options.createPrefixHeaderActionComponent&&(this._prefixHeaderActions=this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel),this.addDisposables(this._prefixHeaderActions),this._prefixHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element))}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){var e;const t={views:this.tabsContainer.panels,activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,id:this.id};return!1!==this.locked&&(t.locked=this.locked),this.header.hidden&&(t.hideHeader=!0),t}moveToNext(e){e||(e={}),e.panel||(e.panel=this.activePanel);const t=e.panel?this.panels.indexOf(e.panel):-1;let i;if(t0)i=t-1;else{if(e.suppressRoll)return;i=this.panels.length-1}this.openPanel(this.panels[i])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}openPanel(e,t){void 0===t&&(t={}),("number"!=typeof t.index||t.index>this.panels.length)&&(t.index=this.panels.length);const i=!!t.skipSetActive;e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:i}),this._activePanel!==e?(i||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()):this.contentContainer.renderPanel(e,{asActive:!0})}removePanel(e,t){void 0===t&&(t={skipSetActive:!1});const i="string"==typeof e?e:e.id,n=this._panels.find((e=>e.id===i));if(!n)throw new Error("invalid operation");return this._removePanel(n,t)}closeAllPanels(){if(this.panels.length>0){const e=[...this.panels];for(const t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){const t=1===this.panels.length&&1===this.accessor.groups.length;this.accessor.removePanel(e,t&&"emptyGroup"===this.accessor.options.noPanelsOverlay?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t){void 0===t&&(t=!1),(t||this.isActive!==e)&&(this._isGroupActive=e,C(this.container,"dv-active-group",e),C(this.container,"dv-inactive-group",!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0&&this.doSetActivePanel(this.panels[0]),this.updateContainer())}layout(e,t){var i;this._width=e,this._height=t,this.contentContainer.layout(this._width,this._height),(null===(i=this._activePanel)||void 0===i?void 0:i.layout)&&this._activePanel.layout(this._width,this._height)}_removePanel(e,t){const i=this._activePanel===e;if(this.doRemovePanel(e),i&&this.panels.length>0){const e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t.skipSetActive,skipSetGroupActive:t.skipSetActiveGroup})}return this._activePanel&&0===this.panels.length&&this.doSetActivePanel(void 0),t.skipSetActive||this.updateContainer(),e}doRemovePanel(e){const t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){const t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}const i=this._panelDisposables.get(e.id);i&&(i.dispose(),this._panelDisposables.delete(e.id)),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t,i){void 0===t&&(t=this.panels.length),void 0===i&&(i={skipSetActive:!1});const n=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),i.skipSetActive||this.contentContainer.openPanel(e),n||(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new w(e.api.onDidTitleChange((e=>this._onDidPanelTitleChange.fire(e))),e.api.onDidParametersChange((e=>this._onDidPanelParametersChange.fire(e))))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){this._activePanel!==e&&(this._activePanel=e,e&&(this.tabsContainer.setActivePanel(e),e.layout(this._width,this._height),this.updateMru(e),this._onDidActivePanelChange.fire({panel:e})))}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){var e,t;if(this.panels.forEach((e=>e.runEvents())),this.isEmpty&&!this.watermark){const e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,g(this.watermark.element,"pointerdown",(()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.element.appendChild(this.watermark.element)}!this.isEmpty&&this.watermark&&(this.watermark.element.remove(),null===(t=(e=this.watermark).dispose)||void 0===t||t.call(e),this.watermark=void 0)}canDisplayOverlay(e,t,i){const n=new Be(e,i,t,a,this.accessor.getPanel(this.id));return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}handleDropEvent(e,t,i,n){if("no-drop-target"===this.locked)return;const s="number"==typeof n?this.panels[n]:void 0,o=new Je({nativeEvent:t,position:i,panel:s,getData:()=>a(),kind:function(){switch(e){case"header":return"number"==typeof n?"tab":"header_space";case"content":return"content"}}(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(o),o.defaultPrevented)return;const r=a();if(r&&r.viewId===this.accessor.id){if("content"===e&&r.groupId===this.id){if("center"===i)return;if(null===r.panelId)return}if("header"===e&&r.groupId===this.id&&null===r.panelId)return;if(null===r.panelId){const{groupId:e}=r;return void this._onMove.fire({target:i,groupId:e,index:n})}if(-1!==this.tabsContainer.indexOf(r.panelId)&&1===this.tabsContainer.size)return;const{groupId:t,panelId:s}=r;if(this.id===t&&!i){if(this.tabsContainer.indexOf(s)===n)return}this._onMove.fire({target:i,groupId:r.groupId,itemId:r.panelId,index:n})}else this._onDidDrop.fire(new Ze({nativeEvent:t,position:i,panel:s,getData:()=>a(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,i;super.dispose(),null===(e=this.watermark)||void 0===e||e.element.remove(),null===(i=null===(t=this.watermark)||void 0===t?void 0:t.dispose)||void 0===i||i.call(t),this.watermark=void 0;for(const n of this.panels)n.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}}class $e extends ze{constructor(e,t,i){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),i&&this.initialize(i)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Xe extends Ee{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){const e="function"==typeof this._minimumWidth?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){const e="function"==typeof this._maximumWidth?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){const e="function"==typeof this._minimumHeight?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){const e="function"==typeof this._maximumHeight?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,i,n){super(e,t,null!=n?n:new $e(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=Number.MAX_SAFE_INTEGER,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=Number.MAX_SAFE_INTEGER,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=Number.MAX_SAFE_INTEGER,this._maximumHeight=Number.MAX_SAFE_INTEGER,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,"number"==typeof(null==i?void 0:i.minimumWidth)&&(this._minimumWidth=i.minimumWidth),"number"==typeof(null==i?void 0:i.maximumWidth)&&(this._maximumWidth=i.maximumWidth),"number"==typeof(null==i?void 0:i.minimumHeight)&&(this._minimumHeight=i.minimumHeight),"number"==typeof(null==i?void 0:i.maximumHeight)&&(this._maximumHeight=i.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.doSetGroupActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumWidth&&"function"!=typeof e.minimumWidth||(this._minimumWidth=e.minimumWidth),"number"!=typeof e.minimumHeight&&"function"!=typeof e.minimumHeight||(this._minimumHeight=e.minimumHeight),"number"!=typeof e.maximumWidth&&"function"!=typeof e.maximumWidth||(this._maximumWidth=e.maximumWidth),"number"!=typeof e.maximumHeight&&"function"!=typeof e.maximumHeight||(this._maximumHeight=e.maximumHeight)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({height:e.height,width:e.width})})),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),"boolean"==typeof e.isVisible&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){const e=super.toJSON(),t=e=>e===Number.MAX_SAFE_INTEGER?void 0:e,i=e=>e<=0?void 0:e;return Object.assign(Object.assign({},e),{minimumHeight:i(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:i(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}}const Ye="dockview: DockviewGroupPanelApiImpl not initialized";class qe extends $e{get location(){if(!this._group)throw new Error(Ye);return this._group.model.location}constructor(e,t){super(e,"__dockviewgroup__"),this.accessor=t,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return"popout"===this.location.type?this.location.getWindow():window}moveTo(e){var t,i,n,s;if(!this._group)throw new Error(Ye);const o=null!==(t=e.group)&&void 0!==t?t:this.accessor.addGroup({direction:we(null!==(i=e.position)&&void 0!==i?i:"right"),skipSetActive:null!==(n=e.skipSetActive)&&void 0!==n&&n});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:o,position:e.group&&null!==(s=e.position)&&void 0!==s?s:"center",index:e.index},skipSetActive:e.skipSetActive})}maximize(){if(!this._group)throw new Error(Ye);"grid"===this.location.type&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw new Error(Ye);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw new Error(Ye);this.isMaximized()&&this.accessor.exitMaximizedGroup()}initialize(e){this._group=e}}class Ke extends Xe{get minimumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumWidth;return"number"==typeof t?t:super.__minimumWidth()}get minimumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumHeight;return"number"==typeof t?t:super.__minimumHeight()}get maximumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumWidth;return"number"==typeof t?t:super.__maximumWidth()}get maximumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumHeight;return"number"==typeof t?t:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,i){var n,s,o,r,a,h;super(t,"groupview_default",{minimumHeight:null!==(s=null===(n=i.constraints)||void 0===n?void 0:n.minimumHeight)&&void 0!==s?s:100,minimumWidth:null!==(r=null===(o=i.constraints)||void 0===o?void 0:o.maximumHeight)&&void 0!==r?r:100,maximumHeight:null===(a=i.constraints)||void 0===a?void 0:a.maximumHeight,maximumWidth:null===(h=i.constraints)||void 0===h?void 0:h.maximumWidth},new qe(t,e)),this.api.initialize(this),this._model=new Ue(this.element,e,t,i,this),this.addDisposables(this.model.onDidActivePanelChange((e=>{this.api._onDidActivePanelChange.fire(e)})))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}getComponent(){return this._model}toJSON(){return this.model.toJSON()}}const Qe={name:"dark",className:"dockview-theme-dark"},et={name:"light",className:"dockview-theme-light"},tt={name:"visualStudio",className:"dockview-theme-vs"},it={name:"abyss",className:"dockview-theme-abyss"},nt={name:"dracula",className:"dockview-theme-dracula"},st={name:"replit",className:"dockview-theme-replit",gap:10},ot={name:"abyssSpaced",className:"dockview-theme-abyss-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"},rt={name:"lightSpaced",className:"dockview-theme-light-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"};class at extends $e{get location(){return this.group.api.location}get title(){return this.panel.title}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){const t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this._onDidLocationChange.fire({location:this.group.api.location}))}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,i,n,s){super(e.id,n),this.panel=e,this.accessor=i,this._onDidTitleChange=new v,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new v,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new v,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new _,this._tabComponent=s,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}moveTo(e){var t,i;this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:null!==(t=e.group)&&void 0!==t?t:this._group,position:e.group&&null!==(i=e.position)&&void 0!==i?i:"center",index:e.index},skipSetActive:e.skipSetActive})}setTitle(e){this.panel.setTitle(e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}setupGroupEventListeners(e){var t;let i=null!==(t=null==e?void 0:e.isActive)&&void 0!==t&&t;this.groupEventsDisposable.value=new w(this.group.api.onDidVisibilityChange((e=>{const t=!e.isVisible&&this.isVisible,i=e.isVisible&&!this.isVisible,n=this.group.model.isPanelActive(this.panel);(t||i&&n)&&this._onDidVisibilityChange.fire(e)})),this.group.api.onDidLocationChange((e=>{this.group===this.panel.group&&this._onDidLocationChange.fire(e)})),this.group.api.onDidActiveChange((()=>{this.group===this.panel.group&&i!==this.isGroupActive&&(i=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))})))}}class ht extends w{get params(){return this._params}get title(){return this._title}get group(){return this._group}get renderer(){var e;return null!==(e=this._renderer)&&void 0!==e?e:this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,i,n,s,o,r,a){super(),this.id=e,this.accessor=n,this.containerApi=s,this.view=r,this._renderer=a.renderer,this._group=o,this._minimumWidth=a.minimumWidth,this._minimumHeight=a.minimumHeight,this._maximumWidth=a.maximumWidth,this._maximumHeight=a.maximumHeight,this.api=new at(this,this._group,n,t,i),this.addDisposables(this.api.onActiveChange((()=>{n.setActivePanel(this)})),this.api.onDidSizeChange((e=>{this.group.api.setSize(e)})),this.api.onDidRendererChange((()=>{this.group.model.rerender(this)})))}init(e){this._params=e.params,this.view.init(Object.assign(Object.assign({},e),{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){const e=new Ce;this.api._onWillFocus.fire(e),e.defaultPrevented||this.api.isActive||this.api.setActive()}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth}}setTitle(e){e!==this.title&&(this._title=e,this.api._onDidTitleChange.fire({title:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){var t;this._params=Object.assign(Object.assign({},null!==(t=this._params)&&void 0!==t?t:{}),e.params);for(const i of Object.keys(e.params))void 0===e.params[i]&&delete this._params[i];this.view.update({params:this._params})}updateParentGroup(e,t){this._group=e,this.api.group=this._group;const i=this._group.model.isPanelActive(this),n=this.group.api.isActive&&i;(null==t?void 0:t.skipSetActive)||this.api.isActive!==n&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&i}),this.api.isVisible!==i&&this.api._onDidVisibilityChange.fire({isVisible:i})}runEvents(){const e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}}class lt extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-default-tab",this._content=document.createElement("div"),this._content.className="dv-default-tab-content",this.action=document.createElement("div"),this.action.className="dv-default-tab-action",this.action.appendChild(He({width:"11",height:"11",viewbox:"0 0 28 28",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"})),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this.addDisposables(e.api.onDidTitleChange((e=>{this._title=e.title,this.render()})),g(this.action,"pointerdown",(e=>{e.preventDefault()})),g(this.action,"click",(t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())}))),this.render()}render(){var e;this._content.textContent!==this._title&&(this._content.textContent=null!==(e=this._title)&&void 0!==e?e:"")}}class dt{get content(){return this._content}get tab(){return this._tab}constructor(e,t,i,n){this.accessor=e,this.id=t,this.contentComponent=i,this.tabComponent=n,this._content=this.createContentComponent(this.id,i),this._tab=this.createTabComponent(this.id,n)}createTabRenderer(e){var t;const i=this.createTabComponent(this.id,this.tabComponent);return this._params&&i.init(Object.assign(Object.assign({},this._params),{tabLocation:e})),this._updateEvent&&(null===(t=i.update)||void 0===t||t.call(i,this._updateEvent)),i}init(e){this._params=e,this.content.init(e),this.tab.init(Object.assign(Object.assign({},e),{tabLocation:"header"}))}layout(e,t){var i,n;null===(n=(i=this.content).layout)||void 0===n||n.call(i,e,t)}update(e){var t,i,n,s;this._updateEvent=e,null===(i=(t=this.content).update)||void 0===i||i.call(t,e),null===(s=(n=this.tab).update)||void 0===s||s.call(n,e)}dispose(){var e,t,i,n;null===(t=(e=this.content).dispose)||void 0===t||t.call(e),null===(n=(i=this.tab).dispose)||void 0===n||n.call(i)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){const i=null!=t?t:this.accessor.options.defaultTabComponent;if(i){if(this.accessor.options.createTabComponent){const t=this.accessor.options.createTabComponent({id:e,name:i});return t||new lt}console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new lt}}class pt{constructor(e){this.accessor=e}fromJSON(e,t){var i,n;const s=e.id,o=e.params,r=e.title,a=e.view,h=a?a.content.id:null!==(i=e.contentComponent)&&void 0!==i?i:"unknown",l=a?null===(n=a.tab)||void 0===n?void 0:n.id:e.tabComponent,d=new dt(this.accessor,s,h,l),p=new ht(s,h,l,this.accessor,new me(this.accessor),t,d,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return p.init({title:null!=r?r:s,params:null!=o?o:{}}),p}}class ct extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-watermark"}init(e){}}const mt=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter((t=>t!==e)),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter((t=>t!==e)),this.update()}update(){for(let e=0;e{let e=null;const t=I();i.value=new w({dispose:()=>{t.release()}},g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),n=t.clientX-i.left,s=t.clientY-i.top;C(this._element,"dv-resize-container-dragging",!0);const o=this._element.getBoundingClientRect();null===e&&(e={x:t.clientX-o.left,y:t.clientY-o.top});const r=Math.max(0,this.getMinimumWidth(o.width)),a=Math.max(0,this.getMinimumHeight(o.height)),h=T(s-e.y,-a,Math.max(0,i.height-o.height+a)),l=T(e.y-s+i.height-o.height,-a,Math.max(0,i.height-o.height+a)),d=T(n-e.x,-r,Math.max(0,i.width-o.width+r)),p=T(e.x-n+i.width-o.width,-r,Math.max(0,i.width-o.width+r)),c={};h<=l?c.top=h:c.bottom=l,d<=p?c.left=d:c.right=p,this.setBounds(c)})),g(window,"pointerup",(()=>{C(this._element,"dv-resize-container-dragging",!1),i.dispose(),this._onDidChangeEnd.fire()})))};this.addDisposables(i,g(e,"pointerdown",(e=>{e.defaultPrevented?e.preventDefault():P(e)||n()})),g(this.options.content,"pointerdown",(e=>{e.defaultPrevented||P(e)||e.shiftKey&&n()})),g(this.options.content,"pointerdown",(()=>{mt.push(this._element)}),!0)),t.inDragMode&&n()}setupResize(e){const t=document.createElement("div");t.className=`dv-resize-handle-${e}`,this._element.appendChild(t);const i=new _;this.addDisposables(i,g(t,"pointerdown",(t=>{t.preventDefault();let n=null;const s=I();i.value=new w(g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),s=this._element.getBoundingClientRect(),o=t.clientY-i.top,r=t.clientX-i.left;let a,h,l,d,p,c;null===n&&(n={originalY:o,originalHeight:s.height,originalX:r,originalWidth:s.width});const m=()=>{a=T(o,-Number.MAX_VALUE,n.originalY+n.originalHeight>i.height?this.getMinimumHeight(i.height):Math.max(0,n.originalY+n.originalHeight-ut.MINIMUM_HEIGHT)),l=n.originalY+n.originalHeight-a,h=i.height-a-l},u=()=>{a=n.originalY-n.originalHeight,l=T(o-a,a<0&&"number"==typeof this.options.minimumInViewportHeight?-a+this.options.minimumInViewportHeight:ut.MINIMUM_HEIGHT,Number.MAX_VALUE),h=i.height-a-l},v=()=>{d=T(r,-Number.MAX_VALUE,n.originalX+n.originalWidth>i.width?this.getMinimumWidth(i.width):Math.max(0,n.originalX+n.originalWidth-ut.MINIMUM_WIDTH)),c=n.originalX+n.originalWidth-d,p=i.width-d-c},g=()=>{d=n.originalX-n.originalWidth,c=T(r-d,d<0&&"number"==typeof this.options.minimumInViewportWidth?-d+this.options.minimumInViewportWidth:ut.MINIMUM_WIDTH,Number.MAX_VALUE),p=i.width-d-c};switch(e){case"top":m();break;case"bottom":u();break;case"left":v();break;case"right":g();break;case"topleft":m(),v();break;case"topright":m(),g();break;case"bottomleft":u(),v();break;case"bottomright":u(),g()}const f={};a<=h?f.top=a:f.bottom=h,d<=p?f.left=d:f.right=p,f.height=l,f.width=c,this.setBounds(f)})),{dispose:()=>{s.release()}},g(window,"pointerup",(()=>{i.dispose(),this._onDidChangeEnd.fire()})))})))}getMinimumWidth(e){return"number"==typeof this.options.minimumInViewportWidth?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return"number"==typeof this.options.minimumInViewportHeight?e-this.options.minimumInViewportHeight:0}dispose(){mt.destroy(this._element),this._element.remove(),super.dispose()}}ut.MINIMUM_HEIGHT=20,ut.MINIMUM_WIDTH=20;class vt extends w{constructor(e,t){super(),this.group=e,this.overlay=t,this.addDisposables(t)}position(e){this.overlay.setBounds(e)}}const gt=100,ft=100,wt=100,_t=300,Dt=300;class bt{constructor(){this.cache=new Map,this.currentFrameId=0,this.rafId=null}getPosition(e){const t=this.cache.get(e);if(t&&t.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();const i=O(e);return this.cache.set(e,{rect:i,frameId:this.currentFrameId}),i}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||(this.rafId=requestAnimationFrame((()=>{this.currentFrameId++,this.rafId=null})))}}class yt extends w{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this.positionCache=new bt,this.pendingUpdates=new Set,this.addDisposables(d.from((()=>{for(const e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose();this._disposed=!0})))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(const e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}detatch(e){if(this.map[e.api.id]){const{disposable:t,destroy:i}=this.map[e.api.id];return t.dispose(),i.dispose(),delete this.map[e.api.id],!0}return!1}attach(e){const{panel:t,referenceContainer:i}=e;if(!this.map[t.api.id]){const e=function(){const e=document.createElement("div");return e.tabIndex=-1,e}();e.className="dv-render-overlay",this.map[t.api.id]={panel:t,disposable:d.NONE,destroy:d.NONE,element:e}}const n=this.map[t.api.id].element;t.view.content.element.parentElement!==n&&n.appendChild(t.view.content.element),n.parentElement!==this.element&&this.element.appendChild(n);const s=()=>{const e=t.api.id;this.pendingUpdates.has(e)||(this.pendingUpdates.add(e),requestAnimationFrame((()=>{if(this.pendingUpdates.delete(e),this.isDisposed||!this.map[e])return;const s=this.positionCache.getPosition(i.element),o=this.positionCache.getPosition(this.element),r=s.left-o.left,a=s.top-o.top,h=s.width,l=s.height;n.style.left=`${r}px`,n.style.top=`${a}px`,n.style.width=`${h}px`,n.style.height=`${l}px`,C(n,"dv-render-overlay-float","floating"===t.group.api.location.type)})))},o=()=>{t.api.isVisible&&(this.positionCache.invalidate(),s()),n.style.display=t.api.isVisible?"":"none"},r=new _,a=()=>{"floating"===t.api.location.type?queueMicrotask((()=>{const e=this.accessor.floatingGroups.find((e=>e.group===t.api.group));if(!e)return;const i=e.overlay.element,s=()=>{const e=Number(i.getAttribute("aria-level"));n.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${2*e+1})`},o=new MutationObserver((()=>{s()}));r.value=d.from((()=>o.disconnect())),o.observe(i,{attributeFilter:["aria-level"],attributes:!0}),s()})):n.style.zIndex=""},h=new w(r,new ve(n,{onDragEnd:e=>{i.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{i.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{i.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{i.dropTarget.dnd.onDrop(e)},onDragOver:e=>{i.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange((()=>{o()})),t.api.onDidDimensionsChange((()=>{t.api.isVisible&&s()})),t.api.onDidLocationChange((()=>{a()})));return this.map[t.api.id].destroy=d.from((()=>{var e;t.view.content.element.parentElement===n&&n.removeChild(t.view.content.element),null===(e=n.parentElement)||void 0===e||e.removeChild(n)})),a(),queueMicrotask((()=>{this.isDisposed||o()})),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=h,this.map[t.api.id].resize=s,n}}var xt=function(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{h(n.next(e))}catch(t){o(t)}}function a(e){try{h(n.throw(e))}catch(t){o(t)}}function h(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}h((n=n.apply(e,t||[])).next())}))};class Ct extends w{get window(){var e,t;return null!==(t=null===(e=this._window)||void 0===e?void 0:e.value)&&void 0!==t?t:null}constructor(e,t,i){super(),this.target=e,this.className=t,this.options=i,this._onWillClose=new v,this.onWillClose=this._onWillClose.event,this._onDidClose=new v,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;const e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){var e,t;this._window&&(this._onWillClose.fire(),null===(t=(e=this.options).onWillClose)||void 0===t||t.call(e,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire())}open(){var e,t;return xt(this,void 0,void 0,(function*(){if(this._window)throw new Error("instance of popout window is already open");const i=`${this.options.url}`,n=Object.entries({top:this.options.top,left:this.options.left,width:this.options.width,height:this.options.height}).map((e=>{let[t,i]=e;return`${t}=${i}`})).join(","),s=window.open(i,this.target,n);if(!s)return null;const o=new w;this._window={value:s,disposable:o},o.addDisposables(d.from((()=>{s.close()})),g(window,"beforeunload",(()=>{this.close()})));const r=this.createPopoutWindowContainer();return this.className&&r.classList.add(this.className),null===(t=(e=this.options).onDidOpen)||void 0===t||t.call(e,{id:this.target,window:s}),new Promise(((e,t)=>{s.addEventListener("unload",(e=>{})),s.addEventListener("load",(()=>{try{const t=s.document;t.title=document.title,t.body.appendChild(r),function(e,t){const i=Array.from(t);for(const s of i){if(s.href){const t=e.createElement("link");t.href=s.href,t.type=s.type,t.rel="stylesheet",e.head.appendChild(t)}let t=[];try{s.cssRules&&(t=Array.from(s.cssRules).map((e=>e.cssText)))}catch(n){}for(const i of t){const t=e.createElement("style");t.appendChild(e.createTextNode(i)),e.head.appendChild(t)}}}(t,window.document.styleSheets),g(s,"beforeunload",(()=>{this.close()})),e(r)}catch(i){t(i)}}))}))}))}createPopoutWindowContainer(){const e=document.createElement("div");return e.classList.add("dv-popout-window"),e.id="dv-popout-window",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e}}class zt extends w{constructor(e){super(),this.accessor=e,this.init()}init(){const e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel((t=>{if(e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)})),this.accessor.onDidRemovePanel((t=>{if(!e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`);e.delete(t.api.id)})),this.accessor.onDidAddGroup((e=>{if(t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)})),this.accessor.onDidRemoveGroup((e=>{if(!t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`);t.delete(e.api.id)})))}}class St extends w{constructor(e){super(),this.root=e,this._active=null,this._activeDisposable=new _,this._element=document.createElement("div"),this._element.className="dv-popover-anchor",this._element.style.position="relative",this.root.prepend(this._element),this.addDisposables(d.from((()=>{this.close()})),this._activeDisposable)}openPopover(e,t){var i;this.close();const n=document.createElement("div");n.style.position="absolute",n.style.zIndex=null!==(i=t.zIndex)&&void 0!==i?i:"var(--dv-overlay-z-index)",n.appendChild(e);const s=this._element.getBoundingClientRect(),o=s.left,r=s.top;n.style.top=t.y-r+"px",n.style.left=t.x-o+"px",this._element.appendChild(n),this._active=n,this._activeDisposable.value=new w(g(window,"pointerdown",(e=>{var t;const i=e.target;if(!(i instanceof HTMLElement))return;let s=i;for(;s&&s!==n;)s=null!==(t=null==s?void 0:s.parentElement)&&void 0!==t?t:null;s||this.close()}))),requestAnimationFrame((()=>{!function(e,t,i){void 0===i&&(i={buffer:10});const n=i.buffer,s=e.getBoundingClientRect(),o=t.getBoundingClientRect();let r=0,a=0;const h=s.left-o.left,l=s.top-o.top,d=s.bottom-o.bottom,p=s.right-o.right;hn&&(r=-n-p),ln&&(a=-d-n),0===r&&0===a||(e.style.transform=`translate(${r}px, ${a}px)`)}(n,this.root)}))}close(){this._active&&(this._active.remove(),this._activeDisposable.dispose(),this._active=null)}}class At extends w{get disabled(){return this._disabled}set disabled(e){var t;this.disabled!==e&&(this._disabled=e,e&&(null===(t=this.model)||void 0===t||t.clear()))}get model(){if(!this.disabled)return{clear:()=>{var e;this._model&&(null===(e=this._model.root.parentElement)||void 0===e||e.removeChild(this._model.root)),this._model=void 0},exists:()=>!!this._model,getElements:(e,t)=>{const i=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=i,this._model;const n=this.createContainer(),s=this.createAnchor();if(this._model={root:n,overlay:s,changed:i},n.appendChild(s),this.element.appendChild(n),(null==e?void 0:e.target)instanceof HTMLElement){const t=e.target.getBoundingClientRect(),i=this.element.getBoundingClientRect();s.style.left=t.left-i.left+"px",s.style.top=t.top-i.top+"px"}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(d.from((()=>{var e;null===(e=this.model)||void 0===e||e.clear()})))}createContainer(){const e=document.createElement("div");return e.className="dv-drop-target-container",e}createAnchor(){const e=document.createElement("div");return e.className="dv-drop-target-anchor",e.style.visibility="hidden",e}}const Et={activationSize:{type:"pixels",value:10},size:{type:"pixels",value:20}};function Pt(e){const t=e.from.activePanel;[...e.from.panels].map((t=>{const i=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),i})).forEach((i=>{e.to.model.openPanel(i,{skipSetActive:t!==i,skipSetGroupActive:!0})}))}class Ot extends le{get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap((e=>e.panels))}get options(){return this._options}get activePanel(){const e=this.activeGroup;if(e)return e.activePanel}get renderer(){var e;return null!==(e=this.options.defaultRenderer)&&void 0!==e?e:"onlyWhenVisible"}get api(){return this._api}get floatingGroups(){return this._floatingGroups}get popoutRestorationPromise(){return this._popoutRestorationPromise}constructor(e,t){var i,n,s;super(e,{proportionalLayout:!0,orientation:j.HORIZONTAL,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:null!==(n=null===(i=t.theme)||void 0===i?void 0:i.gap)&&void 0!==n?n:0,className:t.className}),this.nextGroupId=R(),this._deserializer=new pt(this),this._watermark=null,this._onWillDragPanel=new v,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new v,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new v,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new v,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidOpenPopoutWindowFail=new v,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidLayoutFromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new v({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidMovePanel=new v,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidMaximizedGroupChange=new v,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._floatingGroups=[],this._popoutGroups=[],this._popoutRestorationPromise=Promise.resolve(),this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new v,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._moving=!1,this._options=t,this.popupService=new St(this.element),this._themeClassnames=new G(this.element),this._api=new me(this),this.rootDropTargetContainer=new At(this.element,{disabled:!0}),this.overlayRenderContainer=new yt(this.gridview.element,this),this._rootDropTarget=new be(this.element,{className:"dv-drop-target-edge",canDisplayOverlay:(e,t)=>{const i=a();if(i)return i.viewId===this.id&&("center"!==t||0===this.gridview.length);if("center"===t&&0!==this.gridview.length)return!1;const n=new Be(e,"edge",t,a);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted},acceptedTargetZones:["top","bottom","left","right","center"],overlayModel:null!==(s=t.rootOverlayModel)&&void 0!==s?s:Et,getOverrideTarget:()=>{var e;return null===(e=this.rootDropTargetContainer)||void 0===e?void 0:e.model}}),this.updateDropTargetModel(t),C(this.gridview.element,"dv-dockview",!0),C(this.element,"dv-debug",!!t.debug),this.updateTheme(),this.updateWatermark(),t.debug&&this.addDisposables(new zt(this)),this.addDisposables(this.rootDropTargetContainer,this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onDidMovePanel,this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this._onUnhandledDragOverEvent,this._onDidMaximizedGroupChange,this._onDidOptionsChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidOpenPopoutWindowFail,this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.updateWatermark()})),this.onDidAdd((e=>{this._moving||this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._moving||this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._moving||this._onDidActiveGroupChange.fire(e)})),this.onDidMaximizedChange((e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})})),l.any(this.onDidAdd,this.onDidRemove)((()=>{this.updateWatermark()})),l.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidMovePanel,this.onDidActivePanelChange,this.onDidPopoutGroupPositionChange,this.onDidPopoutGroupSizeChange)((()=>{this._bufferOnDidLayoutChange.fire()})),d.from((()=>{for(const e of[...this._floatingGroups])e.dispose();for(const e of[...this._popoutGroups])e.disposable.dispose()})),this._rootDropTarget,this._rootDropTarget.onWillShowOverlay((e=>{this.gridview.length>0&&"center"===e.position||this._onWillShowOverlay.fire(new Ve(e,{kind:"edge",panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget.onDrop((e=>{var t;const i=new Je({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a,kind:"edge"});if(this._onWillDrop.fire(i),i.defaultPrevented)return;const n=a();n?this.moveGroupOrPanel({from:{groupId:n.groupId,panelId:null!==(t=n.panelId)&&void 0!==t?t:void 0},to:{group:this.orthogonalize(e.position),position:"center"}}):this._onDidDrop.fire(new Ze({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget)}setVisible(e,t){switch(e.api.location.type){case"grid":super.setVisible(e,t);break;case"floating":{const i=this.floatingGroups.find((t=>t.group===e));i&&(i.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case"popout":console.warn("dockview: You cannot hide a group that is in a popout window")}}addPopoutGroup(e,t){var i,n,s,o,r;if(e instanceof ht&&1===e.group.size)return this.addPopoutGroup(e.group,t);const a=function(e){function t(e){const t=[];for(let i=0;ie.startsWith("dockview-theme-"))),"string"!=typeof i);)n=n.parentElement;return i}(this.gridview.element),h=this.element;const l=(null==t?void 0:t.position)?t.position:e instanceof Ke?e.element.getBoundingClientRect():e.group?e.group.element.getBoundingClientRect():h.getBoundingClientRect(),p=null!==(n=null===(i=null==t?void 0:t.overridePopoutGroup)||void 0===i?void 0:i.id)&&void 0!==n?n:this.getNextGroupId(),c=new Ct(`${this.id}-${p}`,null!=a?a:"",{url:null!==(r=null!==(s=null==t?void 0:t.popoutUrl)&&void 0!==s?s:null===(o=this.options)||void 0===o?void 0:o.popoutUrl)&&void 0!==r?r:"/popout.html",left:window.screenX+l.left,top:window.screenY+l.top,width:l.width,height:l.height,onDidOpen:null==t?void 0:t.onDidOpen,onWillClose:null==t?void 0:t.onWillClose}),m=new w(c,c.onDidClose((()=>{m.dispose()})));return c.open().then((i=>{var n;if(c.isDisposed)return!1;const s=(null==t?void 0:t.referenceGroup)?t.referenceGroup:e instanceof ht?e.group:e,o=e.api.location.type,r=null!==s.element.parentElement;let a;if(r?(null==t?void 0:t.overridePopoutGroup)?a=t.overridePopoutGroup:(a=this.createGroup({id:p}),i&&this._onDidAddGroup.fire(a)):a=s,null===i)return console.error("dockview: failed to create popout. perhaps you need to allow pop-ups for this website"),m.dispose(),this._onDidOpenPopoutWindowFail.fire(),this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),!1;const h=document.createElement("div");h.className="dv-overlay-render-container";const l=new yt(h,this);let u;if(a.model.renderContainer=l,a.layout(c.window.innerWidth,c.window.innerHeight),!(null==t?void 0:t.overridePopoutGroup)&&r)if(e instanceof ht)this.movingLock((()=>{const t=s.model.removePanel(e);a.model.openPanel(t)}));else switch(this.movingLock((()=>Pt({from:s,to:a}))),o){case"grid":s.api.setVisible(!1);break;case"floating":case"popout":u=null===(n=this._floatingGroups.find((t=>t.group.api.id===e.api.id)))||void 0===n?void 0:n.overlay.toJSON(),this.removeGroup(s)}i.classList.add("dv-dockview"),i.style.overflow="hidden",i.appendChild(h),i.appendChild(a.element);const f=document.createElement("div"),_=new At(f,{disabled:this.rootDropTargetContainer.disabled});let D;i.appendChild(f),a.model.dropTargetContainer=_,a.model.location={type:"popout",getWindow:()=>c.window,popoutUrl:null==t?void 0:t.popoutUrl},r&&"grid"===e.api.location.type&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(a),m.addDisposables(a.api.onDidActiveChange((e=>{var t;e.isActive&&(null===(t=c.window)||void 0===t||t.focus())})),a.api.onWillFocus((()=>{var e;null===(e=c.window)||void 0===e||e.focus()})));const b=r&&s&&this.getPanel(s.id),y={window:c,popoutGroup:a,referenceGroup:b?s.id:void 0,disposable:{dispose:()=>(m.dispose(),D)}},x=function(e){const t=new v;let i,n=e.screenX,s=e.screenY;const o=()=>{if(e.closed)return;const r=e.screenX,a=e.screenY;r===n&&a===s||(clearTimeout(i),i=setTimeout((()=>{t.fire()}),100),n=r,s=a),requestAnimationFrame(o)};return o(),t}(c.window);return m.addDisposables(x,function(e,t){let i;return new w(g(e,"resize",(()=>{clearTimeout(i),i=setTimeout((()=>{t()}),100)})))}(c.window,(()=>{this._onDidPopoutGroupSizeChange.fire({width:c.window.innerWidth,height:c.window.innerHeight,group:a})})),x.event((()=>{this._onDidPopoutGroupPositionChange.fire({screenX:c.window.screenX,screenY:c.window.screenX,group:a})})),g(c.window,"resize",(()=>{a.layout(c.window.innerWidth,c.window.innerHeight)})),l,d.from((()=>{if(!this.isDisposed)if(r&&this.getPanel(s.id))this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),this.getPanel(a.id)&&this.doRemoveGroup(a,{skipPopoutAssociated:!0});else if(this.getPanel(a.id)){a.model.renderContainer=this.overlayRenderContainer,a.model.dropTargetContainer=this.rootDropTargetContainer,D=a;if(!this._popoutGroups.find((e=>e.popoutGroup===a)))return;u?this.addFloatingGroup(a,{height:u.height,width:u.width,position:u}):(this.doRemoveGroup(a,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),a.model.location={type:"grid"},this.movingLock((()=>{this.doAddGroup(a,[0])}))),this.doSetGroupAndPanelActive(a)}}))),this._popoutGroups.push(y),this.updateWatermark(),!0})).catch((e=>(console.error("dockview: failed to create popout.",e),!1)))}addFloatingGroup(e,t){var i,n,s,o,r;let a;if(e instanceof ht)a=this.createGroup(),this._onDidAddGroup.fire(a),this.movingLock((()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0}))),this.movingLock((()=>a.model.openPanel(e,{skipSetGroupActive:!0})));else{a=e;const n=null===(i=this._popoutGroups.find((e=>e.popoutGroup===a)))||void 0===i?void 0:i.referenceGroup,s=n?this.getPanel(n):void 0;"boolean"==typeof(null==t?void 0:t.skipRemoveGroup)&&t.skipRemoveGroup||(s?(this.movingLock((()=>Pt({from:e,to:s}))),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(s,{skipDispose:!0}),a=s):this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}))}const h=function(){if(null==t?void 0:t.position){const e={};return"left"in t.position?e.left=Math.max(t.position.left,0):"right"in t.position?e.right=Math.max(t.position.right,0):e.left=ft,"top"in t.position?e.top=Math.max(t.position.top,0):"bottom"in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=wt,"number"==typeof t.width?e.width=Math.max(t.width,0):e.width=_t,"number"==typeof t.height?e.height=Math.max(t.height,0):e.height=Dt,e}return{left:"number"==typeof(null==t?void 0:t.x)?Math.max(t.x,0):ft,top:"number"==typeof(null==t?void 0:t.y)?Math.max(t.y,0):wt,width:"number"==typeof(null==t?void 0:t.width)?Math.max(t.width,0):_t,height:"number"==typeof(null==t?void 0:t.height)?Math.max(t.height,0):Dt}}(),l=new ut(Object.assign(Object.assign({container:this.gridview.element,content:a.element},h),{minimumInViewportWidth:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(s=null===(n=this.options.floatingGroupBounds)||void 0===n?void 0:n.minimumWidthWithinViewport)&&void 0!==s?s:gt,minimumInViewportHeight:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(r=null===(o=this.options.floatingGroupBounds)||void 0===o?void 0:o.minimumHeightWithinViewport)&&void 0!==r?r:gt})),d=a.element.querySelector(".dv-void-container");if(!d)throw new Error("failed to find drag handle");l.setupDrag(d,{inDragMode:"boolean"==typeof(null==t?void 0:t.inDragMode)&&t.inDragMode});const p=new vt(a,l),c=new w(a.api.onDidActiveChange((e=>{e.isActive&&l.bringToFront()})),b(a.element,(e=>{const{width:t,height:i}=e.contentRect;a.layout(t,i)})));p.addDisposables(l.onDidChange((()=>{a.layout(a.width,a.height)})),l.onDidChangeEnd((()=>{this._bufferOnDidLayoutChange.fire()})),a.onDidChange((e=>{l.setBounds({height:null==e?void 0:e.height,width:null==e?void 0:e.width})})),{dispose:()=>{c.dispose(),L(this._floatingGroups,p),a.model.location={type:"grid"},this.updateWatermark()}}),this._floatingGroups.push(p),a.model.location={type:"floating"},(null==t?void 0:t.skipActiveGroup)||this.doSetGroupAndPanelActive(a),this.updateWatermark()}orthogonalize(e,t){switch(this.gridview.normalize(),e){case"top":case"bottom":this.gridview.orientation===j.HORIZONTAL&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case"left":case"right":this.gridview.orientation===j.VERTICAL&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case"top":case"left":case"center":return this.createGroupAtLocation([0],void 0,t);case"bottom":case"right":return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw new Error(`unsupported position ${e}`)}}updateOptions(e){var t,i;if(super.updateOptions(e),"floatingGroupBounds"in e)for(const s of this._floatingGroups){switch(e.floatingGroupBounds){case"boundedWithinViewport":s.overlay.minimumInViewportHeight=void 0,s.overlay.minimumInViewportWidth=void 0;break;case void 0:s.overlay.minimumInViewportHeight=gt,s.overlay.minimumInViewportWidth=gt;break;default:s.overlay.minimumInViewportHeight=null===(t=e.floatingGroupBounds)||void 0===t?void 0:t.minimumHeightWithinViewport,s.overlay.minimumInViewportWidth=null===(i=e.floatingGroupBounds)||void 0===i?void 0:i.minimumWidthWithinViewport}s.overlay.setBounds()}this.updateDropTargetModel(e);const n=this.options.disableDnd;this._options=Object.assign(Object.assign({},this.options),e);n!==this.options.disableDnd&&this.updateDragAndDropState(),"theme"in e&&this.updateTheme(),this.layout(this.gridview.width,this.gridview.height,!0)}layout(e,t,i){if(super.layout(e,t,i),this._floatingGroups)for(const n of this._floatingGroups)n.overlay.setBounds()}updateDragAndDropState(){for(const e of this.groups)e.model.updateDragAndDropState()}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}getGroupPanel(e){return this.panels.find((t=>t.id===e))}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}moveToNext(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1])return void e.group.model.moveToNext({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupAndPanelActive(n)}moveToPrevious(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0])return void e.group.model.moveToPrevious({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){var e;const t=this.gridview.serialize(),i=this.panels.reduce(((e,t)=>(e[t.id]=t.toJSON(),e)),{}),n=this._floatingGroups.map((e=>({data:e.group.toJSON(),position:e.overlay.toJSON()}))),s=this._popoutGroups.map((e=>({data:e.popoutGroup.toJSON(),gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:"popout"===e.popoutGroup.api.location.type?e.popoutGroup.api.location.popoutUrl:void 0}))),o={grid:t,panels:i,activeGroup:null===(e=this.activeGroup)||void 0===e?void 0:e.id};return n.length>0&&(o.floatingGroups=n),s.length>0&&(o.popoutGroups=s),o}fromJSON(e){var t,i;if(this.clear(),"object"!=typeof e||null===e)throw new Error("serialized layout must be a non-null object");const{grid:n,panels:s,activeGroup:o}=e;if("branch"!==n.root.type||!Array.isArray(n.root.data))throw new Error("root must be of type branch");try{const r=this.width,a=this.height,h=e=>{const{id:t,locked:i,hideHeader:n,views:o,activeView:r}=e;if("string"!=typeof t)throw new Error("group id must be of type string");const a=this.createGroup({id:t,locked:!!i,hideHeader:!!n});this._onDidAddGroup.fire(a);const h=[];for(const l of o){const e=this._deserializer.fromJSON(s[l],a);h.push(e)}for(let s=0;s0&&a.model.openPanel(a.panels[a.panels.length-1],{skipSetGroupActive:!0}),a};this.gridview.deserialize(n,{fromJSON:e=>h(e.data)}),this.layout(r,a,!0);const l=null!==(t=e.floatingGroups)&&void 0!==t?t:[];for(const e of l){const{data:t,position:i}=e,n=h(t);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}const d=null!==(i=e.popoutGroups)&&void 0!==i?i:[],p=[];d.forEach(((e,t)=>{const{data:i,position:n,gridReferenceGroup:s,url:o}=e,r=h(i),a=new Promise((e=>{setTimeout((()=>{this.addPopoutGroup(r,{position:null!=n?n:void 0,overridePopoutGroup:s?r:void 0,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:o}),e()}),100*t)}));p.push(a)})),this._popoutRestorationPromise=Promise.all(p).then((()=>{}));for(const e of this._floatingGroups)e.overlay.setBounds();if("string"==typeof o){const e=this.getPanel(o);e&&this.doSetGroupAndPanelActive(e)}}catch(r){console.error("dockview: failed to deserialize layout. Reverting changes",r);for(const e of this.groups)for(const t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);for(const e of[...this._floatingGroups])e.dispose();throw this.clear(),r}this.updateWatermark(),requestAnimationFrame((()=>{this.overlayRenderContainer.updateAllPositions()})),this._onDidLayoutFromJSON.fire()}clear(){const e=Array.from(this._groups.values()).map((e=>e.value)),t=!!this.activeGroup;for(const i of e)this.removeGroup(i,{skipActive:!0});t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){for(const e of this._groups.entries()){const[t,i]=e;i.value.model.closeAllPanels()}}addPanel(e){var t,i;if(this.panels.find((t=>t.id===e.id)))throw new Error(`panel with id ${e.id} already exists`);let n;if(e.position&&e.floating)throw new Error("you can only provide one of: position, floating as arguments to .addPanel(...)");const s={width:e.initialWidth,height:e.initialHeight};let o;if(e.position)if(e.position.referencePanel){const t="string"==typeof e.position.referencePanel?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(o=e.position.index,!t)throw new Error(`referencePanel '${e.position.referencePanel}' does not exist`);n=this.findGroup(t)}else{if(!function(e){return!!e.referenceGroup}(e.position)){const t=this.orthogonalize(fe(e.position.direction)),i=this.createPanel(e,t);return t.model.openPanel(i,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:null==s?void 0:s.height,width:null==s?void 0:s.width}),i}if(n="string"==typeof e.position.referenceGroup?null===(t=this._groups.get(e.position.referenceGroup))||void 0===t?void 0:t.value:e.position.referenceGroup,o=e.position.index,!n)throw new Error(`referenceGroup '${e.position.referenceGroup}' does not exist`)}else n=this.activeGroup;let r;if(n){const t=he((null===(i=e.position)||void 0===i?void 0:i.direction)||"within");if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else if("floating"===n.api.location.type||"center"===t)r=this.createPanel(e,n),n.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),n.api.setSize({width:null==s?void 0:s.width,height:null==s?void 0:s.height}),e.inactive||this.doSetGroupAndPanelActive(n);else{const i=ee(n.element),a=te(this.gridview.orientation,i,t),h=this.createGroupAtLocation(a,this.orientationAtLocation(a)===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,h),h.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(h)}}else if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else{const t=this.createGroupAtLocation([0],this.gridview.orientation===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t)}return r}removePanel(e,t){void 0===t&&(t={removeEmptyGroup:!0});const i=e.group;if(!i)throw new Error(`cannot remove panel ${e.id}. it's missing a group.`);i.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),0===i.size&&t.removeEmptyGroup&&this.removeGroup(i,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ct}updateWatermark(){var e,t,i;if(0===this.groups.filter((e=>"grid"===e.api.location.type&&e.api.isVisible)).length){if(!this._watermark){this._watermark=this.createWatermarkComponent(),this._watermark.init({containerApi:new me(this)});const e=document.createElement("div");e.className="dv-watermark-container",i="watermark-component",e.setAttribute("data-testid",i),e.appendChild(this._watermark.element),this.gridview.element.appendChild(e)}}else this._watermark&&(this._watermark.element.parentElement.remove(),null===(t=(e=this._watermark).dispose)||void 0===t||t.call(e),this._watermark=null)}addGroup(e){var t;if(e){let i;if(e.referencePanel){const t="string"==typeof e.referencePanel?this.panels.find((t=>t.id===e.referencePanel)):e.referencePanel;if(!t)throw new Error(`reference panel ${e.referencePanel} does not exist`);if(i=this.findGroup(t),!i)throw new Error(`reference group for reference panel ${e.referencePanel} does not exist`)}else{if(!function(e){return!!e.referenceGroup}(e)){const t=this.orthogonalize(fe(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}if(i="string"==typeof e.referenceGroup?null===(t=this._groups.get(e.referenceGroup))||void 0===t?void 0:t.value:e.referenceGroup,!i)throw new Error(`reference group ${e.referenceGroup} does not exist`)}const n=he(e.direction||"within"),s=ee(i.element),o=te(this.gridview.orientation,s,n),r=this.createGroup(e),a=this.getLocationOrientation(o)===j.VERTICAL?e.initialHeight:e.initialWidth;return this.doAddGroup(r,o,a),e.skipSetActive||this.doSetGroupAndPanelActive(r),r}{const t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===j.HORIZONTAL?j.HORIZONTAL:j.VERTICAL}removeGroup(e,t){this.doRemoveGroup(e,t)}doRemoveGroup(e,t){var i;const n=[...e.panels];if(!(null==t?void 0:t.skipDispose))for(const r of n)this.removePanel(r,{removeEmptyGroup:!1,skipDispose:null!==(i=null==t?void 0:t.skipDispose)&&void 0!==i&&i});const s=this.activePanel;if("floating"===e.api.location.type){const i=this._floatingGroups.find((t=>t.group===e));if(i){if((null==t?void 0:t.skipDispose)||(i.group.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)),L(this._floatingGroups,i),i.dispose(),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return i.group}throw new Error("failed to find floating group")}if("popout"===e.api.location.type){const i=this._popoutGroups.find((t=>t.popoutGroup===e));if(i){if(!(null==t?void 0:t.skipDispose)){if(!(null==t?void 0:t.skipPopoutAssociated)){const e=i.referenceGroup?this.getPanel(i.referenceGroup):void 0;e&&0===e.panels.length&&this.removeGroup(e)}i.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}L(this._popoutGroups,i);const n=i.disposable.dispose();if(!(null==t?void 0:t.skipPopoutReturn)&&n&&(this.doAddGroup(n,[0]),this.doSetGroupAndPanelActive(n)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return this.updateWatermark(),i.popoutGroup}throw new Error("failed to find popout group")}const o=super.doRemoveGroup(e,t);return(null==t?void 0:t.skipActive)||this.activePanel!==s&&this._onDidActivePanelChange.fire(this.activePanel),o}movingLock(e){const t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}moveGroupOrPanel(e){var t;const i=e.to.group,n=e.from.groupId,s=e.from.panelId,o=e.to.position,r=e.to.index,a=n?null===(t=this._groups.get(n))||void 0===t?void 0:t.value:void 0;if(!a)throw new Error(`Failed to find group id ${n}`);if(void 0!==s)if(o&&"center"!==o){const e=ee(i.element),t=te(this.gridview.orientation,e,o);if(a.size<2){const[e,n]=M(t);if("grid"===a.api.location.type){const t=ee(a.element),[i,o]=M(t);if(N(i,e))return this.gridview.moveView(i,o,n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}if("popout"===a.api.location.type){const e=this._popoutGroups.find((e=>e.popoutGroup===a)),i=this.movingLock((()=>e.popoutGroup.model.removePanel(e.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0})));this.doRemoveGroup(a,{skipActive:!0});const n=this.createGroupAtLocation(t);return this.movingLock((()=>n.model.openPanel(i))),this.doSetGroupAndPanelActive(n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}const r=this.movingLock((()=>this.doRemoveGroup(a,{skipActive:!0,skipDispose:!0}))),h=ee(i.element),l=te(this.gridview.orientation,h,o);this.movingLock((()=>this.doAddGroup(r,l))),this.doSetGroupAndPanelActive(r),this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);const i=te(this.gridview.orientation,e,o),n=this.createGroupAtLocation(i);this.movingLock((()=>n.model.openPanel(t,{skipSetGroupActive:!0}))),this.doSetGroupAndPanelActive(n),this._onDidMovePanel.fire({panel:t,from:a})}}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);0===a.model.size&&this.doRemoveGroup(a,{skipActive:!0});const n=0===i.model.size;this.movingLock((()=>{var s;return i.model.openPanel(t,{index:r,skipSetActive:null!==(s=e.skipSetActive)&&void 0!==s&&s&&!n,skipSetGroupActive:!0})})),e.skipSetActive||this.doSetGroupAndPanelActive(i),this._onDidMovePanel.fire({panel:t,from:a})}else this.moveGroup({from:{group:a},to:{group:i,position:o},skipSetActive:e.skipSetActive})}moveGroup(e){const t=e.from.group,i=e.to.group,n=e.to.position;if("center"===n){const n=t.activePanel,s=this.movingLock((()=>[...t.panels].map((e=>t.model.removePanel(e.id,{skipSetActive:!0})))));0===(null==t?void 0:t.model.size)&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock((()=>{for(const e of s)i.model.openPanel(e,{skipSetActive:e!==n,skipSetGroupActive:!0})})),!0!==e.skipSetActive?this.doSetGroupAndPanelActive(i):this.activePanel||this.doSetGroupAndPanelActive(i)}else{switch(t.api.location.type){case"grid":this.gridview.removeView(ee(t.element));break;case"floating":{const e=this._floatingGroups.find((e=>e.group===t));if(!e)throw new Error("failed to find floating group");e.dispose();break}case"popout":{const e=this._popoutGroups.find((e=>e.popoutGroup===t));if(!e)throw new Error("failed to find popout group");const n=this._popoutGroups.indexOf(e);if(n>=0&&this._popoutGroups.splice(n,1),e.referenceGroup){const t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose(),"grid"===i.api.location.type?(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"grid"}):"floating"===i.api.location.type&&(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"floating"});break}}if("grid"===i.api.location.type){const e=ee(i.element),s=te(this.gridview.orientation,e,n);let o;switch(this.gridview.orientation){case j.VERTICAL:o=e.length%2==0?t.api.width:t.api.height;break;case j.HORIZONTAL:o=e.length%2==0?t.api.height:t.api.width}this.gridview.addView(t,o,s)}else if("floating"===i.api.location.type){const e=this._floatingGroups.find((e=>e.group===i));if(e){const i=e.overlay.toJSON();let n,s;n="left"in i?i.left+50:"right"in i?Math.max(0,i.right-i.width-50):50,s="top"in i?i.top+50:"bottom"in i?Math.max(0,i.bottom-i.height-50):50,this.addFloatingGroup(t,{height:i.height,width:i.width,position:{left:n,top:s}})}}}if(t.panels.forEach((e=>{this._onDidMovePanel.fire({panel:e,from:t})})),!1===e.skipSetActive){const e=null!=i?i:t;this.doSetGroupAndPanelActive(e)}}doSetGroupActive(e){super.doSetGroupActive(e);const t=this.activePanel;this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);const t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e||(e={});let t=null==e?void 0:e.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${null==e?void 0:e.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();const i=new Ke(this,t,e);if(i.init({params:{},accessor:this}),!this._groups.has(i.id)){const e=new w(i.model.onTabDragStart((e=>{this._onWillDragPanel.fire(e)})),i.model.onGroupDragStart((e=>{this._onWillDragGroup.fire(e)})),i.model.onMove((e=>{const{groupId:t,itemId:n,target:s,index:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:n},to:{group:i,position:s,index:o}})})),i.model.onDidDrop((e=>{this._onDidDrop.fire(e)})),i.model.onWillDrop((e=>{this._onWillDrop.fire(e)})),i.model.onWillShowOverlay((e=>{this.options.disableDnd?e.preventDefault():this._onWillShowOverlay.fire(e)})),i.model.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})),i.model.onDidAddPanel((e=>{this._moving||this._onDidAddPanel.fire(e.panel)})),i.model.onDidRemovePanel((e=>{this._moving||this._onDidRemovePanel.fire(e.panel)})),i.model.onDidActivePanelChange((e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value!==e.panel&&this._onDidActivePanelChange.fire(e.panel)})),l.any(i.model.onDidPanelTitleChange,i.model.onDidPanelParametersChange)((()=>{this._bufferOnDidLayoutChange.fire()})));this._groups.set(i.id,{value:i,disposable:e})}return i.initialize(),i}createPanel(e,t){var i,n,s;const o=e.component,r=null!==(i=e.tabComponent)&&void 0!==i?i:this.options.defaultTabComponent,a=new dt(this,e.id,o,r),h=new ht(e.id,o,r,this,this._api,t,a,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return h.init({title:null!==(n=e.title)&&void 0!==n?n:e.id,params:null!==(s=null==e?void 0:e.params)&&void 0!==s?s:{}}),h}createGroupAtLocation(e,t,i){const n=this.createGroup(i);return this.doAddGroup(n,e,t),n}findGroup(e){var t;return null===(t=Array.from(this._groups.values()).find((t=>t.value.model.containsPanel(e))))||void 0===t?void 0:t.value}orientationAtLocation(e){const t=this.gridview.orientation;return e.length%2==1?t:ie(t)}updateDropTargetModel(e){"dndEdges"in e&&(this._rootDropTarget.disabled="boolean"==typeof e.dndEdges&&!1===e.dndEdges,"object"==typeof e.dndEdges&&null!==e.dndEdges?this._rootDropTarget.setOverlayModel(e.dndEdges):this._rootDropTarget.setOverlayModel(Et)),"rootOverlayModel"in e&&this.updateDropTargetModel({dndEdges:e.dndEdges})}updateTheme(){var e,t;const i=null!==(e=this._options.theme)&&void 0!==e?e:it;if(this._themeClassnames.setClassNames(i.className),this.gridview.margin=null!==(t=i.gap)&&void 0!==t?t:0,"absolute"===i.dndOverlayMounting)this.rootDropTargetContainer.disabled=!1;else this.rootDropTargetContainer.disabled=!0}}class It extends le{get orientation(){return this.gridview.orientation}set orientation(e){this.gridview.orientation=e}get options(){return this._options}get deserializer(){return this._deserializer}set deserializer(e){this._deserializer=e}constructor(e,t){var i;super(e,{proportionalLayout:null===(i=t.proportionalLayout)||void 0===i||i,orientation:t.orientation,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,className:t.className}),this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._options=t,this.addDisposables(this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this.onDidAdd((e=>{this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._onDidActiveGroupChange.fire(e)})))}updateOptions(e){super.updateOptions(e);const t="string"==typeof e.orientation&&this.gridview.orientation!==e.orientation;this._options=Object.assign(Object.assign({},this.options),e),t&&(this.gridview.orientation=e.orientation),this.layout(this.gridview.width,this.gridview.height,!0)}removePanel(e){this.removeGroup(e)}toJSON(){var e;return{grid:this.gridview.serialize(),activePanel:null===(e=this.activeGroup)||void 0===e?void 0:e.id}}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t)}setActive(e){this._groups.forEach(((t,i)=>{t.value.setActive(e===t.value)}))}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}fromJSON(e){this.clear();const{grid:t,activePanel:i}=e;try{const e=[],n=this.width,s=this.height;if(this.gridview.deserialize(t,{fromJSON:t=>{const{data:i}=t,n=this.options.createComponent({id:i.id,name:i.component});return e.push((()=>n.init({params:i.params,minimumWidth:i.minimumWidth,maximumWidth:i.maximumWidth,minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,priority:i.priority,snap:!!i.snap,accessor:this,isVisible:t.visible}))),this._onDidAddGroup.fire(n),this.registerPanel(n),n}}),this.layout(n,s,!0),e.forEach((e=>e())),"string"==typeof i){const e=this.getPanel(i);e&&this.doSetGroupActive(e)}}catch(n){for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw this.clear(),n}this._onDidLayoutfromJSON.fire()}clear(){const e=this.activeGroup,t=Array.from(this._groups.values());for(const i of t)i.disposable.dispose(),this.doRemoveGroup(i.value,{skipActive:!0});e&&this.doSetGroupActive(void 0),this.gridview.clear()}movePanel(e,t){var i;let n;const s=this.gridview.remove(e),o=null===(i=this._groups.get(t.reference))||void 0===i?void 0:i.value;if(!o)throw new Error(`reference group ${t.reference} does not exist`);const r=he(t.direction);if("center"===r)throw new Error(`${r} not supported as an option`);{const e=ee(o.element);n=te(this.gridview.orientation,e,r)}this.doAddGroup(s,n,t.size)}addPanel(e){var t,i,n,s;let o=null!==(t=e.location)&&void 0!==t?t:[0];if(null===(i=e.position)||void 0===i?void 0:i.referencePanel){const t=null===(n=this._groups.get(e.position.referencePanel))||void 0===n?void 0:n.value;if(!t)throw new Error(`reference group ${e.position.referencePanel} does not exist`);const i=he(e.position.direction);if("center"===i)throw new Error(`${i} not supported as an option`);{const e=ee(t.element);o=te(this.gridview.orientation,e,i)}}const r=this.options.createComponent({id:e.id,name:e.component});return r.init({params:null!==(s=e.params)&&void 0!==s?s:{},minimumWidth:e.minimumWidth,maximumWidth:e.maximumWidth,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,priority:e.priority,snap:!!e.snap,accessor:this,isVisible:!0}),this.registerPanel(r),this.doAddGroup(r,o,e.size),this.doSetGroupActive(r),r}registerPanel(e){const t=new w(e.api.onDidFocusChange((t=>{t.isFocused&&this._groups.forEach((t=>{const i=t.value;i!==e?i.setActive(!1):i.setActive(!0)}))})));this._groups.set(e.id,{value:e,disposable:t})}moveGroup(e,t,i){const n=this.getPanel(t);if(!n)throw new Error("invalid operation");const s=ee(e.element),o=te(this.gridview.orientation,s,i),[r,a]=M(o),h=ee(n.element),[l,d]=M(h);if(N(l,r))return void this.gridview.moveView(l,d,a);const p=this.doRemoveGroup(n,{skipActive:!0,skipDispose:!0}),c=ee(e.element),m=te(this.gridview.orientation,c,i);this.doAddGroup(p,m)}removeGroup(e){super.removeGroup(e)}dispose(){super.dispose(),this._onDidLayoutfromJSON.dispose()}}class Gt extends re{get panels(){return this.splitview.getViews()}get options(){return this._options}get length(){return this._panels.size}get orientation(){return this.splitview.orientation}get splitview(){return this._splitview}set splitview(e){this._splitview&&this._splitview.dispose(),this._splitview=e,this._splitviewChangeDisposable.value=new w(this._splitview.onDidSashEnd((()=>{this._onDidLayoutChange.fire(void 0)})),this._splitview.onDidAddView((e=>this._onDidAddView.fire(e))),this._splitview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get height(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.orthogonalSize:this.splitview.size}get width(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.size:this.splitview.orthogonalSize}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._splitviewChangeDisposable=new _,this._panels=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new G(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.splitview=new J(this.element,t),this.addDisposables(this._onDidAddView,this._onDidLayoutfromJSON,this._onDidRemoveView,this._onDidLayoutChange)}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),"string"==typeof e.orientation&&(this.splitview.orientation=e.orientation),this._options=Object.assign(Object.assign({},this.options),e),this.splitview.layout(this.splitview.size,this.splitview.orthogonalSize)}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}movePanel(e,t){this.splitview.moveView(e,t)}setVisible(e,t){const i=this.panels.indexOf(e);this.splitview.setViewVisible(i,t)}setActive(e,t){this._activePanel=e,this.panels.filter((t=>t!==e)).forEach((e=>{e.api._onDidActiveChange.fire({isActive:!1}),t||e.focus()})),e.api._onDidActiveChange.fire({isActive:!0}),t||e.focus()}removePanel(e,t){const i=this._panels.get(e.id);if(!i)throw new Error(`unknown splitview panel ${e.id}`);i.dispose(),this._panels.delete(e.id);const n=this.panels.findIndex((t=>t===e));this.splitview.removeView(n,t).dispose();const s=this.panels;s.length>0&&this.setActive(s[s.length-1])}getPanel(e){return this.panels.find((t=>t.id===e))}addPanel(e){var t;if(this._panels.has(e.id))throw new Error(`panel ${e.id} already exists`);const i=this.options.createComponent({id:e.id,name:e.component});i.orientation=this.splitview.orientation,i.init({params:null!==(t=e.params)&&void 0!==t?t:{},minimumSize:e.minimumSize,maximumSize:e.maximumSize,snap:e.snap,priority:e.priority,accessor:this});const n="number"==typeof e.size?e.size:Z.Distribute,s="number"==typeof e.index?e.index:void 0;return this.splitview.addView(i,n,s),this.doAddView(i),this.setActive(i),i}layout(e,t){const[i,n]=this.splitview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.splitview.layout(i,n)}doAddView(e){const t=e.api.onDidFocusChange((t=>{t.isFocused&&this.setActive(e,!0)}));this._panels.set(e.id,t)}toJSON(){var e;return{views:this.splitview.getViews().map(((e,t)=>({size:this.splitview.getViewSize(t),data:e.toJSON(),snap:!!e.snap,priority:e.priority}))),activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,size:this.splitview.size,orientation:this.splitview.orientation}}fromJSON(e){this.clear();const{views:t,orientation:i,size:n,activeView:s}=e,o=[],r=this.width,a=this.height;if(this.splitview=new J(this.element,{orientation:i,proportionalLayout:this.options.proportionalLayout,descriptor:{size:n,views:t.map((e=>{const t=e.data;if(this._panels.has(t.id))throw new Error(`panel ${t.id} already exists`);const n=this.options.createComponent({id:t.id,name:t.component});return o.push((()=>{var i;n.init({params:null!==(i=t.params)&&void 0!==i?i:{},minimumSize:t.minimumSize,maximumSize:t.maximumSize,snap:e.snap,priority:e.priority,accessor:this})})),n.orientation=i,this.doAddView(n),setTimeout((()=>{this._onDidAddView.fire(n)}),0),{size:e.size,view:n}}))}}),this.layout(r,a),o.forEach((e=>e())),"string"==typeof s){const e=this.getPanel(s);e&&this.setActive(e)}this._onDidLayoutfromJSON.fire()}clear(){for(const e of this._panels.values())e.dispose();for(this._panels.clear();this.splitview.length>0;){this.splitview.removeView(0,Z.Distribute,!0).dispose()}}dispose(){for(const t of this._panels.values())t.dispose();this._panels.clear();const e=this.splitview.getViews();this._splitviewChangeDisposable.dispose(),this.splitview.dispose();for(const t of e)t.dispose();this.element.remove(),super.dispose()}}class Mt extends w{get element(){return this._element}constructor(){super(),this._expandedIcon=He({width:"11",height:"11",viewbox:"0 0 24 15",path:"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z"}),this._collapsedIcon=We(),this.disposable=new _,this.apiRef={api:null},this._element=document.createElement("div"),this.element.className="dv-default-header",this._content=document.createElement("span"),this._expander=document.createElement("div"),this._expander.className="dv-pane-header-icon",this.element.appendChild(this._expander),this.element.appendChild(this._content),this.addDisposables(g(this._element,"click",(()=>{var e;null===(e=this.apiRef.api)||void 0===e||e.setExpanded(!this.apiRef.api.isExpanded)})))}init(e){this.apiRef.api=e.api,this._content.textContent=e.title,this.updateIcon(),this.disposable.value=e.api.onDidExpansionChange((()=>{this.updateIcon()}))}updateIcon(){var e;const t=!!(null===(e=this.apiRef.api)||void 0===e?void 0:e.isExpanded);C(this._expander,"collapsed",!t),t?(this._expander.contains(this._collapsedIcon)&&this._collapsedIcon.remove(),this._expander.contains(this._expandedIcon)||this._expander.appendChild(this._expandedIcon)):(this._expander.contains(this._expandedIcon)&&this._expandedIcon.remove(),this._expander.contains(this._collapsedIcon)||this._expander.appendChild(this._collapsedIcon))}update(e){}dispose(){this.disposable.dispose(),super.dispose()}}const Nt=R(),Vt=Number.MAX_SAFE_INTEGER;class kt extends Oe{constructor(e){super({accessor:e.accessor,id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,disableDnd:e.disableDnd,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this.options=e}getBodyComponent(){return this.options.body}getHeaderComponent(){return this.options.header}}class Lt extends re{get id(){return this._id}get panels(){return this.paneview.getPanes()}set paneview(e){this._paneview=e,this._disposable.value=new w(this._paneview.onDidChange((()=>{this._onDidLayoutChange.fire(void 0)})),this._paneview.onDidAddView((e=>this._onDidAddView.fire(e))),this._paneview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get paneview(){return this._paneview}get minimumSize(){return this.paneview.minimumSize}get maximumSize(){return this.paneview.maximumSize}get height(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.orthogonalSize:this.paneview.size}get width(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.size:this.paneview.orthogonalSize}get options(){return this._options}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=Nt.next(),this._disposable=new _,this._viewDisposables=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.element.style.height="100%",this.element.style.width="100%",this.addDisposables(this._onDidLayoutChange,this._onDidLayoutfromJSON,this._onDidDrop,this._onDidAddView,this._onDidRemoveView,this._onUnhandledDragOverEvent),this._classNames=new G(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.paneview=new $(this.element,{orientation:j.VERTICAL}),this.addDisposables(this._disposable)}setVisible(e,t){const i=this.panels.indexOf(e);this.paneview.setViewVisible(i,t)}focus(){}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),this._options=Object.assign(Object.assign({},this.options),e)}addPanel(e){var t,i;const n=this.options.createComponent({id:e.id,name:e.component});let s;e.headerComponent&&this.options.createHeaderComponent&&(s=this.options.createHeaderComponent({id:e.id,name:e.headerComponent})),s||(s=new Mt);const o=new kt({id:e.id,component:e.component,headerComponent:e.headerComponent,header:s,body:n,orientation:j.VERTICAL,isExpanded:!!e.isExpanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:0,maximumBodySize:Vt});this.doAddPanel(o);const r="number"==typeof e.size?e.size:Z.Distribute,a="number"==typeof e.index?e.index:void 0;return o.init({params:null!==(i=e.params)&&void 0!==i?i:{},minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize,isExpanded:e.isExpanded,title:e.title,containerApi:new pe(this),accessor:this}),this.paneview.addPane(o,r,a),o.orientation=this.paneview.orientation,o}removePanel(e){const t=this.panels.findIndex((t=>t===e));this.paneview.removePane(t),this.doRemovePanel(e)}movePanel(e,t){this.paneview.moveView(e,t)}getPanel(e){return this.panels.find((t=>t.id===e))}layout(e,t){const[i,n]=this.paneview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.paneview.layout(i,n)}toJSON(){const e=e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e;return{views:this.paneview.getPanes().map(((t,i)=>{return{size:this.paneview.getViewSize(i),data:t.toJSON(),minimumSize:(n=t.minimumBodySize,n<=0?void 0:n),maximumSize:e(t.maximumBodySize),headerSize:t.headerSize,expanded:t.isExpanded()};var n})),size:this.paneview.size}}fromJSON(e){this.clear();const{views:t,size:i}=e,n=[],s=this.width,o=this.height;this.paneview=new $(this.element,{orientation:j.VERTICAL,descriptor:{size:i,views:t.map((e=>{var t,i,s;const o=e.data,r=this.options.createComponent({id:o.id,name:o.component});let a;o.headerComponent&&this.options.createHeaderComponent&&(a=this.options.createHeaderComponent({id:o.id,name:o.headerComponent})),a||(a=new Mt);const h=new kt({id:o.id,component:o.component,headerComponent:o.headerComponent,header:a,body:r,orientation:j.VERTICAL,isExpanded:!!e.expanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:null!==(i=e.minimumSize)&&void 0!==i?i:0,maximumBodySize:null!==(s=e.maximumSize)&&void 0!==s?s:Vt});return this.doAddPanel(h),n.push((()=>{var t;h.init({params:null!==(t=o.params)&&void 0!==t?t:{},minimumBodySize:e.minimumSize,maximumBodySize:e.maximumSize,title:o.title,isExpanded:!!e.expanded,containerApi:new pe(this),accessor:this}),h.orientation=this.paneview.orientation})),setTimeout((()=>{this._onDidAddView.fire(h)}),0),{size:e.size,view:h}}))}}),this.layout(s,o),n.forEach((e=>e())),this._onDidLayoutfromJSON.fire()}clear(){for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.paneview.dispose()}doAddPanel(e){const t=new w(e.onDidDrop((e=>{this._onDidDrop.fire(e)})),e.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})));this._viewDisposables.set(e.id,t)}doRemovePanel(e){const t=this._viewDisposables.get(e.id);t&&(t.dispose(),this._viewDisposables.delete(e.id))}dispose(){super.dispose();for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.element.remove(),this.paneview.dispose()}}class Tt extends Ee{get priority(){return this._priority}set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){const e="function"==typeof this._minimumSize?this._minimumSize():this._minimumSize;return e!==this._evaluatedMinimumSize&&(this._evaluatedMinimumSize=e,this.updateConstraints()),e}get maximumSize(){const e="function"==typeof this._maximumSize?this._maximumSize():this._maximumSize;return e!==this._evaluatedMaximumSize&&(this._evaluatedMaximumSize=e,this.updateConstraints()),e}get snap(){return this._snap}constructor(e,t){super(e,t,new Se(e,t)),this._evaluatedMinimumSize=0,this._evaluatedMaximumSize=Number.POSITIVE_INFINITY,this._minimumSize=0,this._maximumSize=Number.POSITIVE_INFINITY,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this.api.initialize(this),this.addDisposables(this._onDidChange,this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.setActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumSize&&"function"!=typeof e.minimumSize||(this._minimumSize=e.minimumSize),"number"!=typeof e.maximumSize&&"function"!=typeof e.maximumSize||(this._maximumSize=e.maximumSize),this.updateConstraints()})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})))}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}layout(e,t){const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){super.init(e),this._priority=e.priority,e.minimumSize&&(this._minimumSize=e.minimumSize),e.maximumSize&&(this._maximumSize=e.maximumSize),e.snap&&(this._snap=e.snap)}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{minimumSize:(e=this.minimumSize,e<=0?void 0:e),maximumSize:(e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e)(this.maximumSize)});var e}updateConstraints(){this.api._onDidConstraintsChange.fire({maximumSize:this._evaluatedMaximumSize,minimumSize:this._evaluatedMinimumSize})}}function Rt(e,t){return new Ot(e,t).api}function Ht(e,t){const i=new Gt(e,t);return new de(i)}function Wt(e,t){const i=new It(e,t);return new ce(i)}function jt(e,t){const i=new Lt(e,t);return new pe(i)}},6376:(e,t,i)=>{i.d(t,{Pg:()=>D,O4:()=>n.O4,tu:()=>f,$R:()=>C,g1:()=>n.g1,i5:()=>n.i5,Vm:()=>S,TU:()=>y,M:()=>n.M,UM:()=>n.UM,Zc:()=>n.Zc,Hx:()=>n.Hx,MV:()=>n.MV,Qp:()=>n.Qp,Lt:()=>n.Lt,TR:()=>n.TR,ZS:()=>n.ZS});var n=i(5399),s=i(6204),o=i(2457);const r=(e,t)=>{const[i,n]=s.useState(),o=s.useRef(e.componentProps);return s.useImperativeHandle(t,(()=>({update:e=>{o.current=Object.assign(Object.assign({},o.current),e),n(Date.now())}})),[]),s.createElement(e.component,o.current)};r.displayName="DockviewReactJsBridge";const a=(()=>{let e=1;return{next:()=>`dockview_react_portal_key_${(e++).toString()}`}})(),h=s.createContext({});class l{constructor(e,t,i,n,s){this.parent=e,this.portalStore=t,this.component=i,this.parameters=n,this.context=s,this._initialProps={},this.disposed=!1,this.createPortal()}update(e){if(this.disposed)throw new Error("invalid operation: resource is already disposed");this.componentInstance?this.componentInstance.update(e):this._initialProps=Object.assign(Object.assign({},this._initialProps),e)}createPortal(){if(this.disposed)throw new Error("invalid operation: resource is already disposed");if("function"!=typeof(e=this.component)&&!(null==e?void 0:e.$$typeof))throw new Error("Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components");var e;const t=s.createElement(s.forwardRef(r),{component:this.component,componentProps:this.parameters,ref:e=>{this.componentInstance=e,Object.keys(this._initialProps).length>0&&(this.componentInstance.update(this._initialProps),this._initialProps={})}}),i=this.context?s.createElement(h.Provider,{value:this.context},t):t,n=o.createPortal(i,this.parent,a.next());this.ref={portal:n,disposable:this.portalStore.addPortal(n)}}dispose(){var e;null===(e=this.ref)||void 0===e||e.disposable.dispose(),this.disposed=!0}}const d=()=>{const[e,t]=s.useState([]);s.useDebugValue(`Portal count: ${e.length}`);return[e,s.useCallback((e=>{t((t=>[...t,e]));let i=!1;return n.GW.from((()=>{if(i)throw new Error("invalid operation: resource already disposed");i=!0,t((t=>t.filter((t=>t!==e))))}))}),[])]};class p{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._onDidFocus=new n.O4,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new n.O4,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;this._onDidFocus.dispose(),this._onDidBlur.dispose(),null===(e=this.part)||void 0===e||e.dispose()}}class c{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi,tabLocation:e.tabLocation})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class m{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{group:e.group,containerApi:e.containerApi})}focus(){}update(e){var t,i,n;this.parameters&&(this.parameters.params=e.params),null===(t=this.part)||void 0===t||t.update({params:null!==(n=null===(i=this.parameters)||void 0===i?void 0:i.params)&&void 0!==n?n:{}})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class u{get element(){return this._element}get part(){return this._part}constructor(e,t,i){this.component=e,this.reactPortalStore=t,this._group=i,this.mutableDisposable=new n.Gi,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.mutableDisposable.value=new n.KU(this._group.model.onDidAddPanel((()=>{this.updatePanels()})),this._group.model.onDidRemovePanel((()=>{this.updatePanels()})),this._group.model.onDidActivePanelChange((()=>{this.updateActivePanel()})),e.api.onDidActiveChange((()=>{this.updateGroupActive()}))),this._part=new l(this.element,this.reactPortalStore,this.component,{api:e.api,containerApi:e.containerApi,panels:this._group.model.panels,activePanel:this._group.model.activePanel,isGroupActive:this._group.api.isActive,group:this._group})}dispose(){var e;this.mutableDisposable.dispose(),null===(e=this._part)||void 0===e||e.dispose()}update(e){var t;null===(t=this._part)||void 0===t||t.update(e.params)}updatePanels(){this.update({params:{panels:this._group.model.panels}})}updateActivePanel(){this.update({params:{activePanel:this._group.model.activePanel}})}updateGroupActive(){this.update({params:{isGroupActive:this._group.api.isActive}})}}function v(e,t){return e?i=>new u(e,t,i):void 0}const g="props.defaultTabComponent";const f=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.gq.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.gq.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return;const s=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(s[g]=e.defaultTabComponent);const r={createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a}),createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a}),createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a}),createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a}),createTabComponent:e=>new c(e.id,s[e.name],{addPortal:a}),createWatermarkComponent:e.watermarkComponent?()=>new m("watermark",e.watermarkComponent,{addPortal:a}):void 0,defaultTabComponent:e.defaultTabComponent?g:void 0},h=(0,n.lT)(i.current,Object.assign(Object.assign({},function(e){return n.gq.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:l,clientHeight:d}=i.current;return h.layout(l,d),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onWillDrop((t=>{e.onWillDrop&&e.onWillDrop(t)}));return()=>{t.dispose()}}),[e.onWillDrop]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(i[g]=e.defaultTabComponent),o.current.updateOptions({defaultTabComponent:e.defaultTabComponent?g:void 0,createTabComponent:e=>new c(e.id,i[e.name],{addPortal:a})})}),[e.tabComponents,e.defaultTabComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createWatermarkComponent:e.watermarkComponent?()=>new m("watermark",e.watermarkComponent,{addPortal:a}):void 0})}),[e.watermarkComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a})})}),[e.rightHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a})})}),[e.leftHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a})})}),[e.prefixHeaderActionsComponent]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));f.displayName="DockviewComponent";const w=()=>s.createElement("svg",{height:"11",width:"11",viewBox:"0 0 28 28","aria-hidden":"false",focusable:!1,className:"dv-svg"},s.createElement("path",{d:"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"}));var _=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s{var{api:t,containerApi:i,params:n,hideClose:o,closeActionOverride:r,onPointerDown:a,onPointerUp:h,onPointerLeave:l,tabLocation:d}=e,p=_(e,["api","containerApi","params","hideClose","closeActionOverride","onPointerDown","onPointerUp","onPointerLeave","tabLocation"]);const c=function(e){const[t,i]=s.useState(e.title);return s.useEffect((()=>{const n=e.onDidTitleChange((e=>{i(e.title)}));return t!==e.title&&i(e.title),()=>{n.dispose()}}),[e]),t}(t),m=s.useRef(!1),u=s.useCallback((e=>{e.preventDefault(),r?r():t.close()}),[t,r]),v=s.useCallback((e=>{e.preventDefault()}),[]),g=s.useCallback((e=>{m.current=1===e.button,null==a||a(e)}),[a]),f=s.useCallback((e=>{m&&1===e.button&&!o&&(m.current=!1,u(e)),null==h||h(e)}),[h,u,o]),D=s.useCallback((e=>{m.current=!1,null==l||l(e)}),[l]);return s.createElement("div",Object.assign({"data-testid":"dockview-dv-default-tab"},p,{onPointerDown:g,onPointerUp:f,onPointerLeave:D,className:"dv-default-tab"}),s.createElement("span",{className:"dv-default-tab-content"},c),!o&&s.createElement("div",{className:"dv-default-tab-action",onPointerDown:v,onClick:u},s.createElement(w,null)))};class b extends n.hJ{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new l(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.fX(this._params.accessor)})}}const y=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.mH.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.mH.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.cO)(i.current,Object.assign(Object.assign({},function(e){return n.mH.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));y.displayName="SplitviewComponent";class x extends n.Tg{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new l(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.Tn(this._params.accessor)})}}const C=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.kQ.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.kQ.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new x(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.rc)(i.current,Object.assign(Object.assign({},function(e){return n.kQ.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new x(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));C.displayName="GridviewComponent";class z{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,title:e.title,containerApi:e.containerApi})}toJSON(){return{id:this.id}}update(e){var t;null===(t=this.part)||void 0===t||t.update(e.params)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}const S=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.jl.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.jl.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return()=>{};const s=null!==(t=e.headerComponents)&&void 0!==t?t:{},r={createComponent:t=>new z(t.id,e.components[t.name],{addPortal:a}),createHeaderComponent:e=>new z(e.id,s[e.name],{addPortal:a})},h=(0,n.iz)(i.current,Object.assign(Object.assign({},function(e){return n.jl.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:l,clientHeight:d}=i.current;return h.layout(l,d),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new z(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.headerComponents)&&void 0!==t?t:{};o.current.updateOptions({createHeaderComponent:e=>new z(e.id,i[e.name],{addPortal:a})})}),[e.headerComponents]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));S.displayName="PaneviewComponent"},4537:(e,t,i)=>{i.d(t,{M:()=>a});var n=i(6204),s=i(5186),o=i(3188);const r=()=>{return e={width:"16",height:"16",viewbox:"0 0 50 58",path:"M22.5581 50.9938V30.1717L4.65116 19.869V31.7386L12.8536 36.4939V45.4198L22.5581 50.9938ZM27.2093 51.1162L37.0931 45.4226V36.2851L45.3488 31.501V19.7801L27.2093 30.2529V51.1162ZM42.9633 15.7867L33.4288 10.2615L25.0571 15.1193L16.6219 10.2567L7.00237 15.8557L24.9542 26.1842L42.9633 15.7867ZM0 43.4008V14.5498L24.9974 0L50 14.4887V43.3552L24.9969 57.7584L0 43.4008Z"},(0,o.jsx)("svg",{height:e.height,width:e.width,viewBox:e.viewbox,focusable:!1,className:"dv-svg",children:(0,o.jsx)("path",{d:e.path})});var e},a=e=>{const t=n.useMemo((()=>e.id?`https://codesandbox.io/s/github/mathuo/dockview/tree/master/packages/docs/sandboxes/${e.id}`:""),[e.id]);return(0,o.jsxs)(o.Fragment,{children:[!e.hideThemePicker&&(0,o.jsx)(s.JE,{}),(0,o.jsxs)("span",{className:"codesandbox-button",style:{display:"flex",alignItems:"center"},children:[(0,o.jsx)("span",{className:"codesandbox-button-pretext",children:"Open in "}),(0,o.jsxs)("a",{href:t,target:"_blank",rel:"noopener",className:"codesandbox-button-content",children:[(0,o.jsx)("span",{style:{fontWeight:"bold",paddingRight:"4px"},children:"CodeSandbox"}),(0,o.jsx)(r,{})]})]})]})}},5186:(e,t,i)=>{i.d(t,{Qj:()=>v,JE:()=>m});var n=i(6204),s=i(4537),o=i(6261),r=i(3188);const a=()=>(0,r.jsxs)("div",{className:"lds-ellipsis",children:[(0,r.jsx)("div",{}),(0,r.jsx)("div",{}),(0,r.jsx)("div",{}),(0,r.jsx)("div",{})]});var h=i(4940);const l=e=>(0,r.jsx)("img",{style:{marginRight:"0px 4px"},height:e.height,width:e.width,src:(0,o.Z)("img/react-icon.svg")}),d=e=>(0,r.jsx)("img",{style:{marginRight:"0px 4px"},height:e.height,width:e.width,src:(0,o.Z)("img/js-icon.svg")}),p=["dockview-theme-abyss","dockview-theme-dark","dockview-theme-light","dockview-theme-vs","dockview-theme-dracula","dockview-theme-replit","dockview-theme-kraken"];function c(e,t){const[i,s]=n.useState(localStorage.getItem(e));return n.useEffect((()=>{const t=t=>{s(localStorage.getItem(e))};return window.addEventListener("storage",t),s(localStorage.getItem(e)),()=>{window.removeEventListener("storage",t)}}),[e]),null===i?t:i}const m=()=>{const[e,t]=n.useState(localStorage.getItem("dv-theme-class-name")||p[0]);return n.useEffect((()=>{localStorage.setItem("dv-theme-class-name",e),window.dispatchEvent(new StorageEvent("storage"))}),[e]),(0,r.jsxs)("div",{style:{height:"20px",display:"flex",alignItems:"center",padding:"0px 0px 0px 4px"},children:[(0,r.jsx)("span",{style:{paddingRight:"4px"},children:"Theme: "}),(0,r.jsx)("select",{style:{backgroundColor:"inherit",color:"inherit"},onChange:e=>t(e.target.value),value:e,children:p.map((e=>(0,r.jsx)("option",{value:e,children:e},e)))})]})};const u=e=>{const t=n.useRef(null),[i,o]=n.useState("React"),[h,p]=n.useState(!1),m=c("dv-theme-class-name","dockview-theme-abyss");n.useEffect((()=>{p(!0),setTimeout((()=>{p(!1)}),500)}),[i]),n.useEffect((()=>{if(t.current&&"Javascript"===i){const i=e.typescript(t.current);return()=>{i.dispose()}}}),[e.typescript,i]);const u=n.useMemo((()=>"Javascript"===i?`javascript/${e.sandboxId}`:e.sandboxId),[e.sandboxId,i]);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{ref:t,style:{position:"relative",height:e.height?`${e.height}px`:"300px"},children:[h&&(0,r.jsx)("div",{style:{background:"rgba(30,30,30)",position:"absolute",zIndex:9999,top:0,left:0,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},children:(0,r.jsx)(a,{})}),"React"===i&&(0,r.jsx)(e.react,{theme:m})]}),(0,r.jsxs)("div",{style:{margin:"2px 0px",padding:"2px 0px",display:"flex",alignItems:"center",fontSize:"14px",height:"24px"},children:[(0,r.jsxs)("div",{className:"framework-button",style:{display:"flex",alignItems:"center",cursor:"pointer"},children:[e.typescript&&("React"===i?(0,r.jsx)(l,{height:16,width:16}):(0,r.jsx)(d,{height:16,width:16})),e.typescript&&(0,r.jsxs)("select",{style:{border:"none",fontWeight:"bold",backgroundColor:"inherit",cursor:"inherit",color:"inherit",height:"24px"},onChange:e=>{const t=e.target;o(t.value)},children:[(0,r.jsx)("option",{value:"React",children:"React"}),(0,r.jsx)("option",{value:"Javascript",children:"Javascript"})]})]}),(0,r.jsx)("span",{style:{flexGrow:1}}),(0,r.jsx)(s.M,{id:u,hideThemePicker:e.hideThemePicker})]})]})},v=e=>(0,r.jsx)(h.Z,{children:()=>(0,r.jsx)(u,{...e})})},8854:(e,t,i)=>{i.r(t),i.d(t,{default:()=>_});i(6204);var n=i(6223),s=i(1210),o=i(5136),r=i(6261);const a={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var h=i(3188);const l=[{title:"",Svg:i(9368).Z,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Serializable Layouts"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Add and remove panels using the provided api or use the serialziation methods to persist layouts."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Customizable Theme"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Adjust a number of provided CSS Properties for a simple change or target specific classes for a more customized approach."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Choose Your Control"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Choose from a simple splitview, gridview, collapsable panes or a full docking solution. Combine multiple for complex layouts."})]})]})},{title:"",Svg:i(7885).Z,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Rich Feature Control"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Customize header features to add additional icons and more as well as custom tab rendering."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Floating and Popout Groups"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Built-in support for floating groups and groups in new windows with a supporting api for progmatic control."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Drag And Drop"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Drag and Drop tab to position your layout as well as interacting with external drag events."})]})]})},{title:"",Svg:i(2614).Z,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Zero Dependencies"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Zero dependencies, that's all."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Code Quality and Transparency"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"All of the code is run through Sonarcloud Code Analysis, which along with the source code and high test coverage can be viewed from the Github page."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"React or Vanilla TypeScript"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Exposes native support for both ReactJS components and Vanilla TypeScript."})]})]})}];function d(e){let{title:t,Svg:i,description:n}=e;return(0,h.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",margin:"auto",justifyContent:"center"},className:"dockview-feature",children:[(0,h.jsx)(i,{className:a.featureSvg,role:"img"}),(0,h.jsxs)("div",{style:{maxWidth:"400px",padding:"0px 20px"},children:[(0,h.jsx)("h3",{children:t}),n]})]})}function p(){return(0,h.jsx)("section",{className:a.features,children:(0,h.jsx)("div",{className:"container",children:(0,h.jsx)("div",{className:"row",children:l.map(((e,t)=>(0,h.jsx)(d,{...e},t)))})})})}const c=()=>(0,h.jsxs)("div",{style:{height:"30px",borderBottom:"1px solid #BABABA",backgroundColor:"#DCDCDC",borderTopLeftRadius:"15px",borderTopRightRadius:"15px",padding:"0px 15px",display:"flex",alignItems:"center"},children:[(0,h.jsx)("div",{style:{height:"14px",width:"14px",borderRadius:"100%",backgroundColor:"#FD605E",marginRight:7}}),(0,h.jsx)("div",{style:{height:"14px",width:"14px",borderRadius:"100%",backgroundColor:"#FBBC3F",marginRight:7}}),(0,h.jsx)("div",{style:{height:"14px",width:"14px",borderRadius:"100%",backgroundColor:"#34C942",marginRight:7}})]});var m=i(5186),u=i(6376);const v={default:e=>(0,h.jsx)("div",{style:{height:"100%",padding:"20px",background:"var(--dv-group-view-background-color)"},children:e.params.title})},g={default:e=>(0,h.jsx)("div",{style:{height:"100%",padding:"20px",background:"var(--dv-group-view-background-color)"},children:e.params.title}),panes:e=>(0,h.jsx)(u.Vm,{onReady:e=>{e.api.addPanel({id:"pane_1",component:"default",title:"Pane 1",isExpanded:!1}),e.api.addPanel({id:"pane_2",component:"default",title:"Pane 2",isExpanded:!0}),e.api.addPanel({id:"pane_3",component:"default",title:"Pane 3",isExpanded:!0}),e.api.addPanel({id:"pane_4",component:"default",title:"Pane 4",isExpanded:!1})},components:v})},f=e=>(0,h.jsx)(u.$R,{onReady:e=>{e.api.addPanel({id:"panes",component:"panes",minimumHeight:100,minimumWidth:100}),e.api.addPanel({id:"panel_1",component:"default",position:{referencePanel:"panes",direction:"right"},minimumHeight:100,minimumWidth:100}),e.api.addPanel({id:"panel_2",component:"default",position:{referencePanel:"panel_1",direction:"below"},minimumHeight:100,minimumWidth:100}),e.api.addPanel({id:"panel_3",component:"default",position:{referencePanel:"panel_2",direction:"below"},minimumHeight:100,minimumWidth:100})},components:g,className:`${e.theme||"dockview-theme-abyss"}`}),w=()=>(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(p,{}),(0,h.jsxs)("div",{id:"live-demo",style:{height:"30px",display:"flex",alignItems:"center",fontSize:"1.5em",fontWeight:"bold"},children:[(0,h.jsx)("img",{src:(0,r.Z)("/img/dockview_logo.svg"),height:30}),(0,h.jsx)("span",{style:{paddingLeft:"8px"},children:"Dockview Live Demos"})]}),(0,h.jsxs)("div",{style:{padding:"20px"},children:[(0,h.jsx)(c,{}),(0,h.jsx)(m.Qj,{height:500,react:f,sandboxId:"dockview-app"})]})]});function _(){const{siteConfig:e}=(0,o.Z)();return(0,h.jsx)(n.Z,{title:`${e.tagline}`,children:(0,h.jsx)("div",{className:"home-page",children:(0,h.jsxs)("main",{children:[(0,h.jsx)("div",{className:"container",children:(0,h.jsxs)("div",{className:"splashscreen",children:[(0,h.jsxs)("div",{className:"splashscreen-title",children:[(0,h.jsx)("h1",{children:"Fully Featured Docking Layout Manager"}),(0,h.jsx)("h2",{children:"Zero dependency layout management and docking controls"})]}),(0,h.jsxs)("div",{className:"splashscreen-video",children:[(0,h.jsx)("img",{src:(0,r.Z)("/img/Animation.gif")}),(0,h.jsx)(s.Z,{to:"/demo",children:(0,h.jsx)("button",{children:"Go To Live Demo"})})]})]})}),(0,h.jsx)("div",{style:{backgroundColor:"#020c18",padding:"20px 0px"},children:(0,h.jsx)("div",{className:"container"})}),(0,h.jsx)("div",{className:"container",children:(0,h.jsx)(w,{})})]})})})}},9368:(e,t,i)=>{i.d(t,{Z:()=>ee});var n,s,o,r,a,h,l,d,p,c,m,u,v,g,f,w,_,D,b,y,x,C,z,S,A,E,P,O,I,G,M,N,V,k,L,T,R,H,W,j,B,F,Z,J,U,$,X,Y,q,K=i(6204);function Q(){return Q=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:i,...ee}=e;return K.createElement("svg",Q({xmlns:"http://www.w3.org/2000/svg",width:312,height:200,fill:"none",viewBox:"0 0 312 200","aria-labelledby":i},ee),t?K.createElement("title",{id:i},t):null,n||(n=K.createElement("rect",{width:311.504,height:200,fill:"#fff",rx:5})),s||(s=K.createElement("path",{fill:"#DCDCDC",d:"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z"})),o||(o=K.createElement("path",{fill:"#BABABA",d:"M0 10h312v1H0z"})),r||(r=K.createElement("path",{fill:"#A8A8A8",d:"M0 11h156v189H0z"})),a||(a=K.createElement("path",{fill:"#000C18",d:"M156 11h156v91H156zM234 102h78v98h-78zM156 102h78v98h-78zM0 24h156v176H0z"})),h||(h=K.createElement("path",{fill:"#2B2B4A",d:"M157 102h155v1H157zM157 11h-1v189h1zM234 103h-1v97h1v-97Z"})),l||(l=K.createElement("path",{fill:"#1C1C2A",d:"M0 11h156v14H0z"})),d||(d=K.createElement("path",{fill:"#10192C",d:"M0 11h30v14H0zM31 11h30v14H31z"})),p||(p=K.createElement("path",{fill:"#000C18",d:"M62 11h30v14H62z"})),c||(c=K.createElement("path",{fill:"#2B2B4A",d:"M30 11h1v14h-1zM61 11h1v14h-1zM92 11h1v14h-1z"})),m||(m=K.createElement("path",{fill:"#1C1C2A",d:"M157 11h155v14H157z"})),u||(u=K.createElement("path",{fill:"#10192C",d:"M157 11h30v14h-30z"})),v||(v=K.createElement("path",{fill:"#000C18",d:"M188 11h30v14h-30z"})),g||(g=K.createElement("path",{fill:"#2B2B4A",d:"M187 11h1v14h-1zM218 11h1v14h-1z"})),f||(f=K.createElement("path",{fill:"#1C1C2A",d:"M234 103h78v14h-78z"})),w||(w=K.createElement("path",{fill:"#10192C",d:"M234 103h24v14h-24z"})),_||(_=K.createElement("path",{fill:"#000C18",d:"M258 103h24v14h-24z"})),D||(D=K.createElement("path",{fill:"#2B2B4A",d:"M258 103h.503v14H258zM282 103h.503v14H282z"})),b||(b=K.createElement("rect",{width:7,height:4,x:66,y:16,fill:"#fff",rx:2})),y||(y=K.createElement("rect",{width:12,height:4,x:76,y:16,fill:"#fff",rx:2})),x||(x=K.createElement("rect",{width:12,height:4,x:191,y:16,fill:"#777",rx:2})),C||(C=K.createElement("rect",{width:7,height:4,x:260,y:108,fill:"#777",rx:2})),z||(z=K.createElement("rect",{width:11,height:4,x:268,y:108,fill:"#777",rx:2})),S||(S=K.createElement("rect",{width:4,height:4,x:206,y:16,fill:"#777",rx:2})),A||(A=K.createElement("rect",{width:5,height:4,x:160,y:16,fill:"#282828",rx:2})),E||(E=K.createElement("rect",{width:16,height:4,x:166,y:16,fill:"#282828",rx:2})),P||(P=K.createElement("rect",{width:16,height:4,x:237,y:108,fill:"#282828",rx:2})),O||(O=K.createElement("rect",{width:15,height:4,x:33,y:16,fill:"#777",rx:2})),I||(I=K.createElement("rect",{width:4,height:4,x:4,y:3,fill:"#FD605E",rx:2})),G||(G=K.createElement("rect",{width:4,height:4,x:10,y:3,fill:"#FBBC3F",rx:2})),M||(M=K.createElement("rect",{width:4,height:4,x:16,y:3,fill:"#34C942",rx:2})),N||(N=K.createElement("rect",{width:6,height:4,x:2,y:16,fill:"#777",rx:2})),V||(V=K.createElement("rect",{width:18,height:4,x:10,y:16,fill:"#777",rx:2})),k||(k=K.createElement("path",{fill:"#E1E1E1",fillOpacity:.25,d:"M297 11h15v189h-15z"})),L||(L=K.createElement("path",{fill:"#000C18",stroke:"#2B2B4A",d:"M90.5 18.5h48v13h-48z"})),T||(T=K.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M140.344 22.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),R||(R=K.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M139.5 23.5h4v2h-4z"})),H||(H=K.createElement("path",{fill:"#fff",d:"M97.33 23.09h.421l.989 2.416h.034l.989-2.415h.42V26h-.33v-2.21h-.028L98.916 26h-.318l-.91-2.21h-.028V26h-.33v-2.91Zm4.889 2.018v-1.29h.335V26h-.335v-.37h-.023a.713.713 0 0 1-.238.283.692.692 0 0 1-.41.115.727.727 0 0 1-.363-.09.623.623 0 0 1-.25-.272 1.03 1.03 0 0 1-.091-.462v-1.386h.335v1.364c0 .159.045.286.134.38.09.095.204.142.343.142a.571.571 0 0 0 .563-.596Zm1.284-2.017V26h-.335v-2.91h.335Zm1.563.727v.284h-1.13v-.284h1.13Zm-.801-.523h.335v2.08c0 .095.014.166.042.213a.212.212 0 0 0 .107.094.438.438 0 0 0 .141.023.598.598 0 0 0 .091-.006l.057-.012.068.302a.7.7 0 0 1-.528-.021.556.556 0 0 1-.225-.187.532.532 0 0 1-.088-.315v-2.17ZM105.57 26v-2.182h.336V26h-.336Zm.171-2.546a.238.238 0 0 1-.169-.066.216.216 0 0 1-.07-.16c0-.063.024-.117.07-.161a.238.238 0 0 1 .169-.067c.065 0 .121.022.168.067a.214.214 0 0 1 .071.16.214.214 0 0 1-.071.16.236.236 0 0 1-.168.067Zm.779 3.364v-3h.324v.347h.039c.025-.038.059-.086.103-.145a.596.596 0 0 1 .19-.16.683.683 0 0 1 .338-.07c.184 0 .346.046.486.138a.92.92 0 0 1 .328.39c.079.169.118.368.118.597 0 .23-.039.431-.118.6a.935.935 0 0 1-.327.393.852.852 0 0 1-.481.137.7.7 0 0 1-.337-.07.636.636 0 0 1-.195-.16c-.045-.06-.08-.11-.105-.15h-.028v1.153h-.335Zm.329-1.909c0 .165.024.31.073.436a.661.661 0 0 0 .211.294.55.55 0 0 0 .341.105.55.55 0 0 0 .351-.11.672.672 0 0 0 .213-.302c.048-.127.073-.268.073-.423 0-.153-.024-.292-.071-.415a.644.644 0 0 0-.212-.294.56.56 0 0 0-.354-.11.556.556 0 0 0-.343.105.627.627 0 0 0-.211.287 1.187 1.187 0 0 0-.071.427Zm2.443-1.818V26h-.335v-2.91h.335Zm1.529 2.954c-.21 0-.391-.046-.544-.139a.942.942 0 0 1-.351-.392 1.343 1.343 0 0 1-.122-.588c0-.223.041-.42.122-.59a.967.967 0 0 1 .344-.401.924.924 0 0 1 .517-.145c.114 0 .226.019.337.057.111.037.211.099.302.184a.884.884 0 0 1 .218.335c.054.14.081.311.081.515v.142h-1.682v-.29h1.341a.718.718 0 0 0-.074-.33.556.556 0 0 0-.523-.312.6.6 0 0 0-.346.1.65.65 0 0 0-.223.255.74.74 0 0 0-.079.338v.193c0 .165.029.305.086.42.057.113.137.2.24.26a.701.701 0 0 0 .356.087.728.728 0 0 0 .239-.037.511.511 0 0 0 .186-.113.526.526 0 0 0 .121-.19l.324.09a.734.734 0 0 1-.172.29.84.84 0 0 1-.299.193 1.104 1.104 0 0 1-.399.069Zm2.539.773v-3h.323v.347h.04a3.76 3.76 0 0 1 .102-.145.6.6 0 0 1 .191-.16.683.683 0 0 1 .338-.07c.184 0 .346.046.486.138a.92.92 0 0 1 .328.39c.078.169.118.368.118.597 0 .23-.04.431-.118.6a.935.935 0 0 1-.327.393.854.854 0 0 1-.481.137.697.697 0 0 1-.337-.07.636.636 0 0 1-.195-.16c-.045-.06-.08-.11-.105-.15h-.028v1.153h-.335Zm.329-1.909c0 .165.024.31.073.436a.653.653 0 0 0 .211.294.55.55 0 0 0 .341.105.55.55 0 0 0 .351-.11.672.672 0 0 0 .213-.302c.048-.127.072-.268.072-.423 0-.153-.023-.292-.071-.415a.642.642 0 0 0-.211-.294.56.56 0 0 0-.354-.11.561.561 0 0 0-.344.105.625.625 0 0 0-.21.287 1.187 1.187 0 0 0-.071.427Zm2.75 1.142a.883.883 0 0 1-.376-.078.643.643 0 0 1-.269-.229.647.647 0 0 1-.099-.363c0-.125.024-.227.074-.304a.522.522 0 0 1 .197-.185c.082-.044.173-.078.273-.1.1-.022.201-.04.302-.053.133-.017.24-.03.323-.039a.5.5 0 0 0 .182-.047c.038-.021.058-.06.058-.113v-.012a.444.444 0 0 0-.115-.326c-.076-.078-.191-.117-.345-.117a.605.605 0 0 0-.377.105.622.622 0 0 0-.192.225l-.318-.114a.764.764 0 0 1 .228-.31.843.843 0 0 1 .312-.156c.114-.03.225-.045.335-.045.07 0 .151.008.242.025.092.016.18.05.265.101a.59.59 0 0 1 .215.232.86.86 0 0 1 .085.415V26h-.335v-.296h-.017a.653.653 0 0 1-.325.29.82.82 0 0 1-.323.057Zm.051-.301a.66.66 0 0 0 .335-.078.537.537 0 0 0 .279-.462v-.307c-.014.018-.046.033-.094.047a1.55 1.55 0 0 1-.165.036 6.889 6.889 0 0 1-.321.042c-.087.012-.168.03-.244.056a.424.424 0 0 0-.182.112.288.288 0 0 0-.068.202.3.3 0 0 0 .129.264.581.581 0 0 0 .331.088Zm1.896-1.063V26h-.335v-2.182h.324v.341h.028c.051-.11.129-.2.233-.267a.726.726 0 0 1 .404-.102c.147 0 .277.03.387.09.111.06.197.151.259.273.061.122.092.275.092.46V26h-.335v-1.364c0-.171-.045-.305-.134-.4a.473.473 0 0 0-.366-.145.585.585 0 0 0-.287.07.497.497 0 0 0-.197.203.663.663 0 0 0-.073.323Zm2.92 1.358c-.211 0-.392-.046-.544-.139a.929.929 0 0 1-.351-.392 1.33 1.33 0 0 1-.122-.588c0-.223.04-.42.122-.59a.964.964 0 0 1 .343-.401.926.926 0 0 1 .517-.145c.114 0 .226.019.337.057a.835.835 0 0 1 .52.52c.054.139.081.31.081.514v.142h-1.682v-.29h1.341a.718.718 0 0 0-.074-.33.554.554 0 0 0-.523-.312.6.6 0 0 0-.346.1.65.65 0 0 0-.223.255.752.752 0 0 0-.078.338v.193c0 .165.028.305.085.42.058.113.138.2.24.26a.702.702 0 0 0 .357.087.722.722 0 0 0 .238-.037.511.511 0 0 0 .186-.113.513.513 0 0 0 .121-.19l.324.09a.711.711 0 0 1-.172.29.835.835 0 0 1-.298.193 1.112 1.112 0 0 1-.399.069Zm1.748-2.954V26h-.335v-2.91h.335Zm2.16 1.216-.302.085a.53.53 0 0 0-.083-.146.413.413 0 0 0-.148-.12.54.54 0 0 0-.24-.047.572.572 0 0 0-.334.093c-.088.06-.132.138-.132.231 0 .084.03.15.091.198.06.048.155.088.284.12l.324.08c.195.048.34.12.436.218a.507.507 0 0 1 .143.373.554.554 0 0 1-.108.335.713.713 0 0 1-.298.233 1.089 1.089 0 0 1-.446.085.978.978 0 0 1-.552-.144.639.639 0 0 1-.277-.424l.318-.08c.03.118.087.206.172.265a.575.575 0 0 0 .333.088.625.625 0 0 0 .373-.1c.092-.067.139-.147.139-.24a.254.254 0 0 0-.08-.191.505.505 0 0 0-.244-.117l-.364-.085c-.2-.047-.346-.12-.44-.22a.532.532 0 0 1-.139-.377.54.54 0 0 1 .103-.326.716.716 0 0 1 .286-.223c.121-.054.258-.081.412-.081.216 0 .385.047.508.142.124.095.213.22.265.375Zm1.788.239c0-.358.047-.688.14-.988.093-.3.227-.578.4-.83h.296a1.75 1.75 0 0 0-.192.346 4.068 4.068 0 0 0-.26.956 3.627 3.627 0 0 0 .028 1.201c.044.232.103.448.176.647.074.199.157.36.248.486h-.296a3.068 3.068 0 0 1-.4-.83 3.337 3.337 0 0 1-.14-.988Zm2.307 1.494c-.187 0-.354-.032-.501-.097a.857.857 0 0 1-.348-.268.719.719 0 0 1-.139-.402h.358c.007.093.04.174.096.243.057.067.132.119.223.156a.815.815 0 0 0 .306.055.796.796 0 0 0 .332-.065.536.536 0 0 0 .227-.182.455.455 0 0 0 .083-.27.507.507 0 0 0-.313-.476.903.903 0 0 0-.375-.07h-.233v-.312h.233c.116 0 .217-.02.304-.062a.474.474 0 0 0 .282-.443.488.488 0 0 0-.066-.258.446.446 0 0 0-.184-.17.602.602 0 0 0-.279-.061c-.1 0-.195.018-.284.055a.53.53 0 0 0-.216.158.412.412 0 0 0-.091.247h-.341a.696.696 0 0 1 .138-.4.868.868 0 0 1 .338-.27c.14-.065.294-.097.462-.097.18 0 .334.037.463.11a.748.748 0 0 1 .4.669.653.653 0 0 1-.477.66v.021c.184.03.327.109.431.235.103.125.154.28.154.464 0 .158-.043.3-.129.426a.88.88 0 0 1-.349.296 1.139 1.139 0 0 1-.505.108Zm2.286-1.494c0 .357-.047.687-.141.988-.092.3-.225.577-.399.83h-.295a1.8 1.8 0 0 0 .19-.347c.06-.136.112-.286.156-.449a4.123 4.123 0 0 0 .142-1.023c0-.225-.021-.454-.065-.686a3.876 3.876 0 0 0-.176-.646 2.031 2.031 0 0 0-.247-.486h.295c.174.253.307.53.399.831.094.3.141.63.141.988Z"})),W||(W=K.createElement("path",{fill:"#000C18",stroke:"#2B2B4A",d:"M279.5 46.5h29v13h-29z"})),j||(j=K.createElement("rect",{width:7,height:4,x:283,y:51,fill:"#fff",rx:2})),B||(B=K.createElement("rect",{width:12,height:4,x:294,y:51,fill:"#fff",rx:2})),F||(F=K.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M305.344 61.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),Z||(Z=K.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M304.5 62.5h4v2h-4z"})),J||(J=K.createElement("path",{fill:"#E1E1E1",fillOpacity:.25,d:"M157 153h76v47h-76z"})),U||(U=K.createElement("path",{fill:"#000C18",stroke:"#2B2B4A",d:"M180.5 163.5h29v13h-29z"})),$||($=K.createElement("rect",{width:7,height:4,x:184,y:168,fill:"#fff",rx:2})),X||(X=K.createElement("rect",{width:12,height:4,x:195,y:168,fill:"#fff",rx:2})),Y||(Y=K.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M194.344 176.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),q||(q=K.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M193.5 177.5h4v2h-4z"})))}},7885:(e,t,i)=>{i.d(t,{Z:()=>ge});var n,s,o,r,a,h,l,d,p,c,m,u,v,g,f,w,_,D,b,y,x,C,z,S,A,E,P,O,I,G,M,N,V,k,L,T,R,H,W,j,B,F,Z,J,U,$,X,Y,q,K,Q,ee,te,ie,ne,se,oe,re,ae,he,le,de,pe,ce,me,ue=i(6204);function ve(){return ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:i,...ge}=e;return ue.createElement("svg",ve({xmlns:"http://www.w3.org/2000/svg",width:312,height:200,fill:"none",viewBox:"0 0 312 200","aria-labelledby":i},ge),t?ue.createElement("title",{id:i},t):null,n||(n=ue.createElement("rect",{width:311.504,height:200,fill:"#fff",rx:5})),s||(s=ue.createElement("path",{fill:"#DCDCDC",d:"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z"})),o||(o=ue.createElement("path",{fill:"#BABABA",d:"M0 10h312v1H0z"})),r||(r=ue.createElement("path",{fill:"#A8A8A8",d:"M0 11h156v189H0z"})),a||(a=ue.createElement("path",{fill:"#000C18",d:"M188 11h124v91H188zM188 102h124v98H188zM0 24h187v176H0z"})),h||(h=ue.createElement("path",{fill:"#2B2B4A",d:"M188 102h124v1H188zM188 11h-1v189h1z"})),l||(l=ue.createElement("path",{fill:"#1C1C2A",d:"M0 11h187v14H0z"})),d||(d=ue.createElement("path",{fill:"#10192C",d:"M0 11h35.962v14H0zM37.16 11h35.962v14H37.16z"})),p||(p=ue.createElement("path",{fill:"#000C18",d:"M74.32 11h35.962v14H74.32z"})),c||(c=ue.createElement("path",{fill:"#2B2B4A",d:"M35.962 11h1.199v14h-1.199zM73.122 11h1.199v14h-1.199zM110.282 11h1.199v14h-1.199z"})),m||(m=ue.createElement("path",{fill:"#1C1C2A",d:"M188 11h124v14H188z"})),u||(u=ue.createElement("path",{fill:"#10192C",d:"M188 11h30v14h-30z"})),v||(v=ue.createElement("path",{fill:"#000C18",d:"M219 11h30v14h-30z"})),g||(g=ue.createElement("path",{fill:"#2B2B4A",d:"M218 11h1v14h-1zM249 11h1v14h-1z"})),f||(f=ue.createElement("path",{fill:"#1C1C2A",d:"M188 103h124v14H188z"})),w||(w=ue.createElement("path",{fill:"#10192C",d:"M188 103h24v14h-24z"})),_||(_=ue.createElement("path",{fill:"#000C18",d:"M212 103h24v14h-24z"})),D||(D=ue.createElement("path",{fill:"#2B2B4A",d:"M212 103h.503v14H212zM236 103h.503v14H236z"})),b||(b=ue.createElement("path",{fill:"#fff",d:"M76 18a2 2 0 0 1 2-2h3a2 2 0 1 1 0 4h-3a2 2 0 0 1-2-2Z"})),y||(y=ue.createElement("rect",{width:12,height:4,x:85,y:16,fill:"#fff",rx:2})),x||(x=ue.createElement("rect",{width:12,height:4,x:222,y:16,fill:"#777",rx:2})),C||(C=ue.createElement("rect",{width:7,height:4,x:214,y:108,fill:"#777",rx:2})),z||(z=ue.createElement("rect",{width:11,height:4,x:222,y:108,fill:"#777",rx:2})),S||(S=ue.createElement("rect",{width:4,height:4,x:237,y:16,fill:"#777",rx:2})),A||(A=ue.createElement("rect",{width:5,height:4,x:191,y:16,fill:"#282828",rx:2})),E||(E=ue.createElement("rect",{width:16,height:4,x:197,y:16,fill:"#282828",rx:2})),P||(P=ue.createElement("rect",{width:16,height:4,x:191,y:108,fill:"#282828",rx:2})),O||(O=ue.createElement("path",{fill:"#777",d:"M39 18a2 2 0 0 1 2-2h11a2 2 0 1 1 0 4H41a2 2 0 0 1-2-2Z"})),I||(I=ue.createElement("rect",{width:4,height:4,x:4,y:3,fill:"#FD605E",rx:2})),G||(G=ue.createElement("rect",{width:4,height:4,x:10,y:3,fill:"#FBBC3F",rx:2})),M||(M=ue.createElement("rect",{width:4,height:4,x:16,y:3,fill:"#34C942",rx:2})),N||(N=ue.createElement("rect",{width:6,height:4,x:2,y:16,fill:"#777",rx:2})),V||(V=ue.createElement("rect",{width:18,height:4,x:10,y:16,fill:"#777",rx:2})),k||(k=ue.createElement("path",{fill:"#10192C",d:"M173 11h14v14h-14z"})),L||(L=ue.createElement("circle",{cx:176,cy:18,r:1,fill:"#fff",transform:"rotate(-90 176 18)"})),T||(T=ue.createElement("circle",{cx:184,cy:18,r:1,fill:"#fff",transform:"rotate(-90 184 18)"})),R||(R=ue.createElement("circle",{cx:180,cy:18,r:1,fill:"#fff",transform:"rotate(-90 180 18)"})),H||(H=ue.createElement("path",{fill:"#10192C",d:"M298 11h14v14h-14z"})),W||(W=ue.createElement("circle",{cx:301,cy:18,r:1,fill:"#fff",transform:"rotate(-90 301 18)"})),j||(j=ue.createElement("circle",{cx:309,cy:18,r:1,fill:"#fff",transform:"rotate(-90 309 18)"})),B||(B=ue.createElement("circle",{cx:305,cy:18,r:1,fill:"#fff",transform:"rotate(-90 305 18)"})),F||(F=ue.createElement("path",{fill:"#10192C",d:"M111 11h14v14h-14z"})),Z||(Z=ue.createElement("rect",{width:1.333,height:8,x:117.333,y:14,fill:"#fff",rx:.667})),J||(J=ue.createElement("rect",{width:1.333,height:8,x:114,y:18.666,fill:"#fff",rx:.667,transform:"rotate(-90 114 18.666)"})),U||(U=ue.createElement("path",{fill:"#10192C",d:"M298 103h14v14h-14z"})),$||($=ue.createElement("circle",{cx:301,cy:110,r:1,fill:"#fff",transform:"rotate(-90 301 110)"})),X||(X=ue.createElement("circle",{cx:309,cy:110,r:1,fill:"#fff",transform:"rotate(-90 309 110)"})),Y||(Y=ue.createElement("circle",{cx:305,cy:110,r:1,fill:"#fff",transform:"rotate(-90 305 110)"})),q||(q=ue.createElement("path",{fill:"#10192C",d:"M285 103h14v14h-14z"})),K||(K=ue.createElement("rect",{width:7,height:7,x:288.5,y:106.5,stroke:"#fff",rx:1.5})),Q||(Q=ue.createElement("path",{fill:"#fff",d:"M288 109h8v2h-8z"})),ee||(ee=ue.createElement("g",{opacity:.35},ue.createElement("path",{fill:"#000C18",d:"M40 45h128.769v91H40z"}),ue.createElement("path",{fill:"#2B2B4A",d:"M40 136h128.769v1H40z"}),ue.createElement("path",{fill:"#1C1C2A",d:"M40 45h128.769v14H40z"}),ue.createElement("path",{fill:"#10192C",d:"M40 45h31.154v14H40z"}),ue.createElement("path",{fill:"#000C18",d:"M72.192 45h31.154v14H72.192z"}),ue.createElement("path",{fill:"#2B2B4A",d:"M71.154 45h1.038v14h-1.038zM40 45h1v92h-1zM168 45h1v92h-1zM103.346 45h1.038v14h-1.038z"}),ue.createElement("rect",{width:12.461,height:4,x:75.308,y:50,fill:"#777",rx:2}),ue.createElement("rect",{width:4.154,height:4,x:90.885,y:50,fill:"#777",rx:2}),ue.createElement("rect",{width:5.192,height:4,x:43.115,y:50,fill:"#282828",rx:2}),ue.createElement("rect",{width:16.615,height:4,x:49.346,y:50,fill:"#282828",rx:2}),ue.createElement("path",{fill:"#2B2B4A",d:"M40 45h128.769v1H40z"}))),te||(te=ue.createElement("path",{fill:"#000C18",d:"M29 54h128.769v91H29z"})),ie||(ie=ue.createElement("path",{fill:"#2B2B4A",d:"M29 145h128.769v1H29z"})),ne||(ne=ue.createElement("path",{fill:"#1C1C2A",d:"M29 54h128.769v14H29z"})),se||(se=ue.createElement("path",{fill:"#10192C",d:"M29 54h31.154v14H29z"})),oe||(oe=ue.createElement("path",{fill:"#000C18",d:"M61.192 54h31.154v14H61.192z"})),re||(re=ue.createElement("path",{fill:"#2B2B4A",d:"M60.154 54h1.038v14h-1.038zM29 54h1v92h-1zM157 54h1v92h-1zM92.346 54h1.038v14h-1.038z"})),ae||(ae=ue.createElement("rect",{width:12.461,height:4,x:64.308,y:59,fill:"#777",rx:2})),he||(he=ue.createElement("rect",{width:4.154,height:4,x:79.885,y:59,fill:"#777",rx:2})),le||(le=ue.createElement("rect",{width:5.192,height:4,x:32.115,y:59,fill:"#282828",rx:2})),de||(de=ue.createElement("rect",{width:16.615,height:4,x:38.346,y:59,fill:"#282828",rx:2})),pe||(pe=ue.createElement("path",{fill:"#2B2B4A",d:"M29 54h128.769v1H29z"})),ce||(ce=ue.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M128.344 61.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),me||(me=ue.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M127.5 62.5h4v2h-4z"})))}},2614:(e,t,i)=>{i.d(t,{Z:()=>T});var n,s,o,r,a,h,l,d,p,c,m,u,v,g,f,w,_,D,b,y,x,C,z,S,A,E,P,O,I,G,M,N,V,k=i(6204);function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:i,...T}=e;return k.createElement("svg",L({xmlns:"http://www.w3.org/2000/svg",width:312,height:200,fill:"none",viewBox:"0 0 312 200","aria-labelledby":i},T),t?k.createElement("title",{id:i},t):null,n||(n=k.createElement("path",{fill:"#DCDCDC",d:"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z"})),s||(s=k.createElement("path",{fill:"#BABABA",d:"M0 10h312v1H0z"})),o||(o=k.createElement("rect",{width:4,height:4,x:4,y:3,fill:"#FD605E",rx:2})),r||(r=k.createElement("rect",{width:4,height:4,x:10,y:3,fill:"#FBBC3F",rx:2})),a||(a=k.createElement("rect",{width:4,height:4,x:16,y:3,fill:"#34C942",rx:2})),h||(h=k.createElement("path",{fill:"#D9D9D9",d:"M0 11h312v189H0z"})),l||(l=k.createElement("path",{fill:"#000C18",d:"M0 11h166v189H0zM167 11h145v189H167z"})),d||(d=k.createElement("path",{fill:"#2B2B4A",d:"M166 11h1v189h-1zM167 56h145v1H167zM167 112h145v1H167z"})),p||(p=k.createElement("path",{fill:"#1C1C2A",d:"M0 11h166v10H0zM0 22h166v10H0zM0 94h166v10H0zM0 190h166v10H0z"})),c||(c=k.createElement("path",{fill:"#2B2B4A",d:"M0 21h166v1H0z"})),m||(m=k.createElement("rect",{width:21,height:4,x:11,y:14,fill:"#fff",rx:2})),u||(u=k.createElement("rect",{width:11,height:4,x:34,y:14,fill:"#fff",rx:2})),v||(v=k.createElement("rect",{width:6,height:4,x:11,y:25,fill:"#fff",rx:2})),g||(g=k.createElement("rect",{width:11,height:4,x:19,y:25,fill:"#fff",rx:2})),f||(f=k.createElement("rect",{width:16,height:4,x:11,y:97,fill:"#fff",rx:2})),w||(w=k.createElement("rect",{width:5,height:4,x:29,y:97,fill:"#fff",rx:2})),_||(_=k.createElement("rect",{width:14,height:4,x:11,y:193,fill:"#fff",rx:2})),D||(D=k.createElement("path",{fill:"#fff",d:"m5 29-3-3.392.538-.608L5 27.799l2.463-2.785.537.608L5 29ZM5 101l-3-3.392.538-.608L5 99.799l2.463-2.785.537.608L5 101ZM6 16l-3.392 3L2 18.462 4.799 16l-2.785-2.463.608-.537L6 16ZM6 195l-3.392 3-.608-.537L4.799 195l-2.785-2.462.608-.538L6 195Z"})),b||(b=k.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M212.674 111c.236 0 .394-.221.297-.416l-2.174-4.409c-.115-.233-.479-.233-.594 0l-2.174 4.409c-.097.195.061.416.297.416h.889a.327.327 0 0 0 .297-.175l.691-1.401c.115-.233.479-.233.594 0l.691 1.401a.327.327 0 0 0 .297.175h.889ZM208.326 114c-.236 0-.394.221-.297.416l2.174 4.409c.115.233.479.233.594 0l2.174-4.409c.097-.195-.061-.416-.297-.416h-.889a.327.327 0 0 0-.297.175l-.691 1.401c-.115.233-.479.233-.594 0l-.691-1.401a.327.327 0 0 0-.297-.175h-.889Z",clipRule:"evenodd"})),y||(y=k.createElement("path",{stroke:"#fff",d:"M210.5 116v-7"})),x||(x=k.createElement("rect",{width:20,height:19,x:175,y:18,fill:"#777",rx:2})),C||(C=k.createElement("rect",{width:5,height:5,x:198,y:18,fill:"#777",rx:2})),z||(z=k.createElement("rect",{width:26,height:5,x:206,y:18,fill:"#777",rx:2})),S||(S=k.createElement("rect",{width:44,height:5,x:203,y:71,fill:"#777",rx:2})),A||(A=k.createElement("rect",{width:44,height:14,x:228,y:78,fill:"#777",rx:2})),E||(E=k.createElement("rect",{width:22,height:5,x:250,y:71,fill:"#777",rx:2})),P||(P=k.createElement("rect",{width:33,height:5,x:239,y:95,fill:"#777",rx:2})),O||(O=k.createElement("rect",{width:33,height:5,x:272,y:117,fill:"#777",rx:2})),I||(I=k.createElement("rect",{width:7,height:5,x:259,y:117,fill:"#777",rx:2})),G||(G=k.createElement("rect",{width:23,height:5,x:213,y:95,fill:"#777",rx:2})),M||(M=k.createElement("rect",{width:8,height:5,x:203,y:95,fill:"#777",rx:2})),N||(N=k.createElement("rect",{width:15,height:5,x:198,y:25,fill:"#777",rx:2})),V||(V=k.createElement("rect",{width:18,height:5,x:215,y:25,fill:"#777",rx:2})))}}}]); -//# sourceMappingURL=1df93b7f.0e9879a7.js.map \ No newline at end of file +"use strict";(self.webpackChunkdockview_docs=self.webpackChunkdockview_docs||[]).push([[3237],{4940:(e,t,i)=>{i.d(t,{Z:()=>o});i(6204);var n=i(541),s=i(3188);function o(e){let{children:t,fallback:i}=e;return(0,n.Z)()?(0,s.jsx)(s.Fragment,{children:t?.()}):i??null}},5399:(e,t,i)=>{i.d(t,{CJ:()=>Ot,KU:()=>w,GW:()=>d,O4:()=>v,Gi:()=>_,Tn:()=>ce,Tg:()=>Xe,g1:()=>F,i5:()=>j,gq:()=>Fe,kQ:()=>oe,jl:()=>ye,mH:()=>U,fX:()=>de,hJ:()=>Tt,lT:()=>Rt,rc:()=>Wt,iz:()=>jt,cO:()=>Ht,M:()=>we,UM:()=>it,Zc:()=>ot,Hx:()=>Qe,MV:()=>nt,Qp:()=>et,Lt:()=>rt,TR:()=>st,ZS:()=>tt});class n{}class s extends n{constructor(e,t,i){super(),this.viewId=e,this.groupId=t,this.panelId=i}}class o extends n{constructor(e,t){super(),this.viewId=e,this.paneId=t}}class r{constructor(){}static getInstance(){return r.INSTANCE}hasData(e){return e&&e===this.proto}clearData(e){this.hasData(e)&&(this.proto=void 0,this.data=void 0)}getData(e){if(this.hasData(e))return this.data}setData(e,t){t&&(this.data=e,this.proto=t)}}function a(){const e=r.getInstance();if(e.hasData(s.prototype))return e.getData(s.prototype)[0]}function h(){const e=r.getInstance();if(e.hasData(o.prototype))return e.getData(o.prototype)[0]}var l,d;r.INSTANCE=new r,function(e){e.any=function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=t.map((t=>t(e)));return{dispose:()=>{i.forEach((e=>{e.dispose()}))}}}}}(l||(l={}));class p{constructor(){this._defaultPrevented=!1}get defaultPrevented(){return this._defaultPrevented}preventDefault(){this._defaultPrevented=!0}}class c{constructor(){this._isAccepted=!1}get isAccepted(){return this._isAccepted}accept(){this._isAccepted=!0}}class m{static create(){var e;return new m(null!==(e=(new Error).stack)&&void 0!==e?e:"")}constructor(e){this.value=e}print(){console.warn("dockview: stacktrace",this.value)}}class u{constructor(e,t){this.callback=e,this.stacktrace=t}}class v{static setLeakageMonitorEnabled(e){e!==v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.clear(),v.ENABLE_TRACKING=e}get value(){return this._last}constructor(e){this.options=e,this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=e=>{var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&void 0!==this._last&&e(this._last);const i=new u(e,v.ENABLE_TRACKING?m.create():void 0);return this._listeners.push(i),{dispose:()=>{const e=this._listeners.indexOf(i);e>-1?this._listeners.splice(e,1):v.ENABLE_TRACKING}}},v.ENABLE_TRACKING&&v.MEMORY_LEAK_WATCHER.add(this._event,m.create())),this._event}fire(e){var t;(null===(t=this.options)||void 0===t?void 0:t.replay)&&(this._last=e);for(const i of this._listeners)i.callback(e)}dispose(){this._disposed||(this._disposed=!0,this._listeners.length>0&&(v.ENABLE_TRACKING&&queueMicrotask((()=>{var e;for(const t of this._listeners)console.warn("dockview: stacktrace",null===(e=t.stacktrace)||void 0===e?void 0:e.print())})),this._listeners=[]),v.ENABLE_TRACKING&&this._event&&v.MEMORY_LEAK_WATCHER.delete(this._event))}}function g(e,t,i,n){return e.addEventListener(t,i,n),{dispose:()=>{e.removeEventListener(t,i,n)}}}v.ENABLE_TRACKING=!1,v.MEMORY_LEAK_WATCHER=new class{constructor(){this.events=new Map}get size(){return this.events.size}add(e,t){this.events.set(e,t)}delete(e){this.events.delete(e)}clear(){this.events.clear()}};class f{constructor(){this._onFired=new v,this._currentFireCount=0,this._queued=!1,this.onEvent=e=>{const t=this._currentFireCount;return this._onFired.event((()=>{this._currentFireCount>t&&e()}))}}fire(){this._currentFireCount++,this._queued||(this._queued=!0,queueMicrotask((()=>{this._queued=!1,this._onFired.fire()})))}dispose(){this._onFired.dispose()}}!function(e){e.NONE={dispose:()=>{}},e.from=function(e){return{dispose:()=>{e()}}}}(d||(d={}));class w{get isDisposed(){return this._isDisposed}constructor(){this._isDisposed=!1;for(var e=arguments.length,t=new Array(e),i=0;ithis._disposables.push(e)))}dispose(){this._isDisposed||(this._isDisposed=!0,this._disposables.forEach((e=>e.dispose())),this._disposables=[])}}class _{constructor(){this._disposable=d.NONE}set value(e){this._disposable&&this._disposable.dispose(),this._disposable=e}dispose(){this._disposable&&(this._disposable.dispose(),this._disposable=d.NONE)}}class D extends w{constructor(e){super(),this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._value=null,this.addDisposables(this._onDidChange,b(e,(e=>{const t=e.target.scrollWidth>e.target.clientWidth,i=e.target.scrollHeight>e.target.clientHeight;this._value={hasScrollX:t,hasScrollY:i},this._onDidChange.fire(this._value)})))}}function b(e,t){const i=new ResizeObserver((e=>{requestAnimationFrame((()=>{const i=e[0];t(i)}))}));return i.observe(e),{dispose:()=>{i.unobserve(e),i.disconnect()}}}const y=function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n{const n=e.classList.contains(t);i&&!n&&e.classList.add(t),!i&&n&&e.classList.remove(t)};function z(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function S(e){return new A(e)}class A extends w{constructor(e){super(),this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this.addDisposables(this._onDidFocus,this._onDidBlur);let t=z(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{z(document.activeElement,e)!==t&&(t?s():n())},this.addDisposables(g(e,"focus",n,!0)),this.addDisposables(g(e,"blur",s,!0))}refreshState(){this._refreshStateHandler()}}const E="dv-quasiPreventDefault";function P(e){return e[E]}function O(e){const{left:t,top:i,width:n,height:s}=e.getBoundingClientRect();return{left:t+window.scrollX,top:i+window.scrollY,width:n,height:s}}function I(e){void 0===e&&(e=document);const t=function(e){const t=[];return function i(n){if(n.nodeType===Node.ELEMENT_NODE){e.includes(n.tagName)&&t.push(n),n.shadowRoot&&i(n.shadowRoot);for(const e of n.children)i(e)}}(document.documentElement),t}(["IFRAME","WEBVIEW"]),i=new WeakMap;for(const n of t)i.set(n,n.style.pointerEvents),n.style.pointerEvents="none";return{release:()=>{var e;for(const n of t)n.style.pointerEvents=null!==(e=i.get(n))&&void 0!==e?e:"auto";t.splice(0,t.length)}}}class G{constructor(e){this.element=e,this._classNames=[]}setClassNames(e){for(const t of this._classNames)C(this.element,t,!1);this._classNames=e.split(" ").filter((e=>e.trim().length>0));for(const t of this._classNames)C(this.element,t,!0)}}function M(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function N(e,t){if(e.length!==t.length)return!1;for(let i=0;i-1&&(e.splice(i,1),e.unshift(t))}function k(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function L(e,t){const i=e.findIndex((e=>e===t));return i>-1&&(e.splice(i,1),!0)}const T=(e,t,i)=>t>i?t:Math.min(i,Math.max(e,t)),R=()=>{let e=1;return{next:()=>(e++).toString()}},H=(e,t)=>{const i=[];if("number"!=typeof t&&(t=e,e=0),e<=t)for(let n=e;nt;n--)i.push(n);return i};class W{set size(e){this._size=e}get size(){return this._size}get cachedVisibleSize(){return this._cachedVisibleSize}get visible(){return void 0===this._cachedVisibleSize}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}setVisible(e,t){var i;e!==this.visible&&(e?(this.size=T(null!==(i=this._cachedVisibleSize)&&void 0!==i?i:0,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),this.container.classList.toggle("visible",e),this.view.setVisible&&this.view.setVisible(e))}dispose(){return this.disposable.dispose(),this.view}}var j,B,F,Z;!function(e){e.HORIZONTAL="HORIZONTAL",e.VERTICAL="VERTICAL"}(j||(j={})),function(e){e[e.MAXIMUM=0]="MAXIMUM",e[e.MINIMUM=1]="MINIMUM",e[e.DISABLED=2]="DISABLED",e[e.ENABLED=3]="ENABLED"}(B||(B={})),function(e){e.Low="low",e.High="high",e.Normal="normal"}(F||(F={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(Z||(Z={}));class J{get contentSize(){return this._contentSize}get size(){return this._size}set size(e){this._size=e}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get length(){return this.viewItems.length}get proportions(){return this._proportions?[...this._proportions]:void 0}get orientation(){return this._orientation}set orientation(e){this._orientation=e;const t=this.size;this.size=this.orthogonalSize,this.orthogonalSize=t,y(this.element,"dv-horizontal","dv-vertical"),this.element.classList.add(this.orientation==j.HORIZONTAL?"dv-horizontal":"dv-vertical")}get minimumSize(){return this.viewItems.reduce(((e,t)=>e+t.minimumSize),0)}get maximumSize(){return 0===this.length?Number.POSITIVE_INFINITY:this.viewItems.reduce(((e,t)=>e+t.maximumSize),0)}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}get disabled(){return this._disabled}set disabled(e){this._disabled=e,C(this.element,"dv-splitview-disabled",e)}get margin(){return this._margin}set margin(e){this._margin=e,C(this.element,"dv-splitview-has-margin",0!==e)}constructor(e,t){var i,n,s=this;this.container=e,this.viewItems=[],this.sashes=[],this._size=0,this._orthogonalSize=0,this._contentSize=0,this._proportions=void 0,this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this._disabled=!1,this._margin=0,this._onDidSashEnd=new v,this.onDidSashEnd=this._onDidSashEnd.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this.resize=function(e,t,i,n,o,r,a,h,l){if(void 0===i&&(i=s.viewItems.map((e=>e.size))),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===a&&(a=Number.POSITIVE_INFINITY),e<0||e>s.viewItems.length)return 0;const d=H(e,-1),p=H(e+1,s.viewItems.length);if(o)for(const s of o)V(d,s),V(p,s);if(n)for(const s of n)k(d,s),k(p,s);const c=d.map((e=>s.viewItems[e])),m=d.map((e=>i[e])),u=p.map((e=>s.viewItems[e])),v=p.map((e=>i[e])),g=d.reduce(((e,t)=>e+s.viewItems[t].minimumSize-i[t]),0),f=d.reduce(((e,t)=>e+s.viewItems[t].maximumSize-i[t]),0),w=0===p.length?Number.POSITIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].minimumSize),0),_=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(((e,t)=>e+i[t]-s.viewItems[t].maximumSize),0),D=Math.max(g,_),b=Math.min(w,f);let y=!1;if(h){const e=s.viewItems[h.index],i=t>=h.limitDelta;y=i!==e.visible,e.setVisible(i,h.size)}if(!y&&l){const e=s.viewItems[l.index],i=t{const i=void 0===e.visible||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.addView(n,i,t,!0)})),this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}style(e){"transparent"===(null==e?void 0:e.separatorBorder)?(y(this.element,"dv-separator-border"),this.element.style.removeProperty("--dv-separator-border")):(x(this.element,"dv-separator-border"),(null==e?void 0:e.separatorBorder)&&this.element.style.setProperty("--dv-separator-border",e.separatorBorder))}isViewVisible(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].visible}setViewVisible(e,t){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");const i=this.viewItems[e];i.setVisible(t,i.size),this.distributeEmptySpace(e),this.layoutViews(),this.saveProportions()}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}resizeView(e,t){if(e<0||e>=this.viewItems.length)return;const i=H(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>this.viewItems[e].priority===F.Low)),e],s=i.filter((e=>this.viewItems[e].priority===F.High)),o=this.viewItems[e];t=Math.round(t),t=T(t,o.minimumSize,Math.min(o.maximumSize,this._size)),o.size=t,this.relayout(n,s)}getViews(){return this.viewItems.map((e=>e.view))}onDidChange(e,t){const i=this.viewItems.indexOf(e);if(i<0||i>=this.viewItems.length)return;t="number"==typeof t?t:e.size,t=T(t,e.minimumSize,e.maximumSize),e.size=t;const n=H(this.viewItems.length).filter((e=>e!==i)),s=[...n.filter((e=>this.viewItems[e].priority===F.Low)),i],o=n.filter((e=>this.viewItems[e].priority===F.High));this.relayout([...s,i],o)}addView(e,t,i,n){void 0===t&&(t={type:"distribute"}),void 0===i&&(i=this.viewItems.length);const s=document.createElement("div");let o;s.className="dv-view",s.appendChild(e.element),o="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const r=e.onDidChange((e=>this.onDidChange(a,e.size))),a=new W(s,e,o,{dispose:()=>{r.dispose(),this.viewContainer.removeChild(s)}});if(i===this.viewItems.length?this.viewContainer.appendChild(s):this.viewContainer.insertBefore(s,this.viewContainer.children.item(i)),this.viewItems.splice(i,0,a),this.viewItems.length>1){const e=document.createElement("div");e.className="dv-sash";const t=t=>{for(const e of this.viewItems)e.enabled=!1;const i=I(),n=this._orientation===j.HORIZONTAL?t.clientX:t.clientY,s=function(e,t){for(let i=0;it.container===e)),o=this.viewItems.map((e=>e.size));let r,a;const h=H(s,-1),l=H(s+1,this.viewItems.length),d=h.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-o[t])),0),p=h.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-o[t])),0),c=0===l.length?Number.POSITIVE_INFINITY:l.reduce(((e,t)=>e+(o[t]-this.viewItems[t].minimumSize)),0),m=0===l.length?Number.NEGATIVE_INFINITY:l.reduce(((e,t)=>e+(o[t]-this.viewItems[t].viewMaximumSize)),0),u=Math.max(d,m),v=Math.min(c,p),g=this.findFirstSnapIndex(h),f=this.findFirstSnapIndex(l);if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);r={index:g,limitDelta:e.visible?u-t:u+t,size:e.size}}if("number"==typeof f){const e=this.viewItems[f],t=Math.floor(e.viewMinimumSize/2);a={index:f,limitDelta:e.visible?v+t:v-t,size:e.size}}const w=e=>{const t=(this._orientation===j.HORIZONTAL?e.clientX:e.clientY)-n;this.resize(s,t,o,void 0,void 0,u,v,r,a),this.distributeEmptySpace(),this.layoutViews()},_=()=>{for(const e of this.viewItems)e.enabled=!0;i.release(),this.saveProportions(),document.removeEventListener("pointermove",w),document.removeEventListener("pointerup",_),document.removeEventListener("pointercancel",_),this._onDidSashEnd.fire(void 0)};document.addEventListener("pointermove",w),document.addEventListener("pointerup",_),document.addEventListener("pointercancel",_)};e.addEventListener("pointerdown",t);const i={container:e,disposable:()=>{e.removeEventListener("pointerdown",t),this.sashContainer.removeChild(e)}};this.sashContainer.appendChild(e),this.sashes.push(i)}n||this.relayout([i]),n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes(),this._onDidAddView.fire(e)}distributeViewSizes(){const e=[];let t=0;for(const r of this.viewItems)r.maximumSize-r.minimumSize>0&&(e.push(r),t+=r.size);const i=Math.floor(t/e.length);for(const r of e)r.size=T(i,r.minimumSize,r.maximumSize);const n=H(this.viewItems.length),s=n.filter((e=>this.viewItems[e].priority===F.Low)),o=n.filter((e=>this.viewItems[e].priority===F.High));this.relayout(s,o)}removeView(e,t,i){void 0===i&&(i=!1);const n=this.viewItems.splice(e,1)[0];if(n.dispose(),this.viewItems.length>=1){const t=Math.max(e-1,0);this.sashes.splice(t,1)[0].disposable()}return i||this.relayout(),t&&"distribute"===t.type&&this.distributeViewSizes(),this._onDidRemoveView.fire(n.view),n.view}getViewCachedVisibleSize(e){if(e<0||e>=this.viewItems.length)throw new Error("Index out of bounds");return this.viewItems[e].cachedVisibleSize}moveView(e,t){const i=this.getViewCachedVisibleSize(e),n=void 0===i?this.getViewSize(e):Z.Invisible(i),s=this.removeView(e,void 0,!0);this.addView(s,n,t)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.orthogonalSize=t,this.proportions){let t=0;for(let i=0;i0&&(n.size=T(Math.round(s*e/t),n.minimumSize,n.maximumSize))}}else{const t=H(this.viewItems.length),n=t.filter((e=>this.viewItems[e].priority===F.Low)),s=t.filter((e=>this.viewItems[e].priority===F.High));this.resize(this.viewItems.length-1,e-i,void 0,n,s)}this.distributeEmptySpace(),this.layoutViews()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this._size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=H(this.viewItems.length-1,-1),s=n.filter((e=>this.viewItems[e].priority===F.Low)),o=n.filter((e=>this.viewItems[e].priority===F.High));for(const r of o)V(n,r);for(const r of s)k(n,r);"number"==typeof e&&k(n,e);for(let r=0;0!==i&&r0&&(this._proportions=this.viewItems.map((e=>e.visible?e.size/this._contentSize:void 0)))}layoutViews(){if(this._contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.updateSashEnablement(),0===this.viewItems.length)return;const e=this.viewItems.filter((e=>e.visible)),t=Math.max(0,e.length-1),i=this.margin*t/Math.max(1,e.length);let n=0;const s=[],o=this.viewItems.reduce(((e,t,i)=>{const n=t.visible?1:0;return 0===i?e.push(n):e.push(e[i-1]+n),e}),[]);this.viewItems.forEach(((e,r)=>{n+=this.viewItems[r].size,s.push(n);const a=e.visible?e.size-i:0,h=Math.max(0,o[r]-1),l=0===r||0===h?0:s[r-1]+h/t*i;if(r0)return;if(!e.visible&&e.snap)return t}}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const s=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const o=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let r=0;for(let a=0;a0||this.startSnappingEnabled)?this.updateSash(e,B.MINIMUM):d&&t[a]&&(r{const e={orientation:void 0,descriptor:void 0,proportionalLayout:void 0,styles:void 0,margin:void 0,disableAutoResizing:void 0,className:void 0};return Object.keys(e)})();class $ extends w{get onDidAddView(){return this.splitview.onDidAddView}get onDidRemoveView(){return this.splitview.onDidRemoveView}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get orientation(){return this.splitview.orientation}get size(){return this.splitview.size}get orthogonalSize(){return this.splitview.orthogonalSize}constructor(e,t){var i;super(),this.paneItems=[],this.skipAnimation=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orientation=null!==(i=t.orientation)&&void 0!==i?i:j.VERTICAL,this.element=document.createElement("div"),this.element.className="dv-pane-container",e.appendChild(this.element),this.splitview=new J(this.element,{orientation:this._orientation,proportionalLayout:!1,descriptor:t.descriptor}),this.getPanes().forEach((e=>{const t=new w(e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)}))),i={pane:e,disposable:{dispose:()=>{t.dispose()}}};this.paneItems.push(i),e.orthogonalSize=this.splitview.orthogonalSize})),this.addDisposables(this._onDidChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire(void 0)})),this.splitview.onDidAddView((()=>{this._onDidChange.fire()})),this.splitview.onDidRemoveView((()=>{this._onDidChange.fire()})))}setViewVisible(e,t){this.splitview.setViewVisible(e,t)}addPane(e,t,i,n){void 0===i&&(i=this.splitview.length),void 0===n&&(n=!1);const s=e.onDidChangeExpansionState((()=>{this.setupAnimation(),this._onDidChange.fire(void 0)})),o={pane:e,disposable:{dispose:()=>{s.dispose()}}};this.paneItems.splice(i,0,o),e.orthogonalSize=this.splitview.orthogonalSize,this.splitview.addView(e,t,i,n)}getViewSize(e){return this.splitview.getViewSize(e)}getPanes(){return this.splitview.getViews()}removePane(e,t){void 0===t&&(t={skipDispose:!1});const i=this.paneItems.splice(e,1)[0];return this.splitview.removeView(e),t.skipDispose||(i.disposable.dispose(),i.pane.dispose()),i}moveView(e,t){if(e===t)return;const i=this.removePane(e,{skipDispose:!0});this.skipAnimation=!0;try{this.addPane(i.pane,i.pane.size,t,!1)}finally{this.skipAnimation=!1}}layout(e,t){this.splitview.layout(e,t)}setupAnimation(){this.skipAnimation||(this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),x(this.element,"dv-animated"),this.animationTimer=setTimeout((()=>{this.animationTimer=void 0,y(this.element,"dv-animated")}),200))}dispose(){super.dispose(),this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=void 0),this.paneItems.forEach((e=>{e.disposable.dispose(),e.pane.dispose()})),this.paneItems=[],this.splitview.dispose(),this.element.remove()}}class X{get minimumWidth(){return this.view.minimumWidth}get maximumWidth(){return this.view.maximumWidth}get minimumHeight(){return this.view.minimumHeight}get maximumHeight(){return this.view.maximumHeight}get priority(){return this.view.priority}get snap(){return this.view.snap}get minimumSize(){return this.orientation===j.HORIZONTAL?this.minimumHeight:this.minimumWidth}get maximumSize(){return this.orientation===j.HORIZONTAL?this.maximumHeight:this.maximumWidth}get minimumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.minimumWidth:this.minimumHeight}get maximumOrthogonalSize(){return this.orientation===j.HORIZONTAL?this.maximumWidth:this.maximumHeight}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get element(){return this.view.element}get width(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get height(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}constructor(e,t,i,n){void 0===n&&(n=0),this.view=e,this.orientation=t,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=i,this._size=n,this._disposable=this.view.onDidChange((e=>{e?this._onDidChange.fire({size:this.orientation===j.VERTICAL?e.width:e.height,orthogonalSize:this.orientation===j.VERTICAL?e.height:e.width}):this._onDidChange.fire({})}))}setVisible(e){this.view.setVisible&&this.view.setVisible(e)}layout(e,t){this._size=e,this._orthogonalSize=t,this.view.layout(this.width,this.height)}dispose(){this._onDidChange.dispose(),this._disposable.dispose()}}class Y extends w{get width(){return this.orientation===j.HORIZONTAL?this.size:this.orthogonalSize}get height(){return this.orientation===j.HORIZONTAL?this.orthogonalSize:this.size}get minimumSize(){return 0===this.children.length?0:Math.max(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.minimumOrthogonalSize:0)))}get maximumSize(){return Math.min(...this.children.map(((e,t)=>this.splitview.isViewVisible(t)?e.maximumOrthogonalSize:Number.POSITIVE_INFINITY)))}get minimumOrthogonalSize(){return this.splitview.minimumSize}get maximumOrthogonalSize(){return this.splitview.maximumSize}get orthogonalSize(){return this._orthogonalSize}get size(){return this._size}get minimumWidth(){return this.orientation===j.HORIZONTAL?this.minimumOrthogonalSize:this.minimumSize}get minimumHeight(){return this.orientation===j.HORIZONTAL?this.minimumSize:this.minimumOrthogonalSize}get maximumWidth(){return this.orientation===j.HORIZONTAL?this.maximumOrthogonalSize:this.maximumSize}get maximumHeight(){return this.orientation===j.HORIZONTAL?this.maximumSize:this.maximumOrthogonalSize}get priority(){if(0===this.children.length)return F.Normal;const e=this.children.map((e=>void 0===e.priority?F.Normal:e.priority));return e.some((e=>e===F.High))?F.High:e.some((e=>e===F.Low))?F.Low:F.Normal}get disabled(){return this.splitview.disabled}set disabled(e){this.splitview.disabled=e}get margin(){return this.splitview.margin}set margin(e){this.splitview.margin=e,this.children.forEach((t=>{t instanceof Y&&(t.margin=e)}))}constructor(e,t,i,n,s,o,r,a){if(super(),this.orientation=e,this.proportionalLayout=t,this.styles=i,this._childrenDisposable=d.NONE,this.children=[],this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._orthogonalSize=s,this._size=n,this.element=document.createElement("div"),this.element.className="dv-branch-node",a){const e={views:a.map((e=>({view:e.node,size:e.node.size,visible:!(e.node instanceof X&&void 0!==e.visible)||e.visible}))),size:this.orthogonalSize};this.children=a.map((e=>e.node)),this.splitview=new J(this.element,{orientation:this.orientation,descriptor:e,proportionalLayout:t,styles:i,margin:r})}else this.splitview=new J(this.element,{orientation:this.orientation,proportionalLayout:t,styles:i,margin:r}),this.splitview.layout(this.size,this.orthogonalSize);this.disabled=o,this.addDisposables(this._onDidChange,this._onDidVisibilityChange,this.splitview.onDidSashEnd((()=>{this._onDidChange.fire({})}))),this.setupChildrenEvents()}setVisible(e){}isChildVisible(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.isViewVisible(e)}setChildVisible(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");if(this.splitview.isViewVisible(e)===t)return;const i=0===this.splitview.contentSize;this.splitview.setViewVisible(e,t);const n=0===this.splitview.contentSize;(t&&i||!t&&n)&&this._onDidVisibilityChange.fire({visible:t})}moveChild(e,t){if(e===t)return;if(e<0||e>=this.children.length)throw new Error("Invalid from index");e=this.children.length)throw new Error("Invalid index");return this.splitview.getViewSize(e)}resizeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");this.splitview.resizeView(e,t)}layout(e,t){this._size=t,this._orthogonalSize=e,this.splitview.layout(t,e)}addChild(e,t,i,n){if(i<0||i>this.children.length)throw new Error("Invalid index");this.splitview.addView(e,t,i,n),this._addChild(e,i)}getChildCachedVisibleSize(e){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.getViewCachedVisibleSize(e)}removeChild(e,t){if(e<0||e>=this.children.length)throw new Error("Invalid index");return this.splitview.removeView(e,t),this._removeChild(e)}_addChild(e,t){this.children.splice(t,0,e),this.setupChildrenEvents()}_removeChild(e){const[t]=this.children.splice(e,1);return this.setupChildrenEvents(),t}setupChildrenEvents(){this._childrenDisposable.dispose(),this._childrenDisposable=new w(l.any(...this.children.map((e=>e.onDidChange)))((e=>{this._onDidChange.fire({size:e.orthogonalSize})})),...this.children.map(((e,t)=>e instanceof Y?e.onDidVisibilityChange((e=>{let{visible:i}=e;this.setChildVisible(t,i)})):d.NONE)))}dispose(){this._childrenDisposable.dispose(),this.splitview.dispose(),this.children.forEach((e=>e.dispose())),super.dispose()}}function q(e,t){if(e instanceof X)return e;if(e instanceof Y)return q(e.children[t?e.children.length-1:0],t);throw new Error("invalid node")}function K(e,t,i){if(e instanceof Y){const n=new Y(e.orientation,e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);for(let t=e.children.length-1;t>=0;t--){const i=e.children[t];n.addChild(K(i,i.size,i.orthogonalSize),i.size,0,!0)}return n}return new X(e.view,e.orientation,i)}function Q(e,t,i){if(e instanceof Y){const n=new Y(ie(e.orientation),e.proportionalLayout,e.styles,t,i,e.disabled,e.margin);let s=0;for(let o=e.children.length-1;o>=0;o--){const r=e.children[o],a=r instanceof Y?r.orthogonalSize:r.size;let h=0===e.size?0:Math.round(t*a/e.size);s+=h,0===o&&(h+=t-s),n.addChild(Q(r,i,h),h,0,!0)}return n}return new X(e.view,ie(e.orientation),i)}function ee(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");if(/\bdv-grid-view\b/.test(t.className))return[];const i=function(e){const t=e.parentElement;if(!t)throw new Error("Invalid grid element");let i=t.firstElementChild,n=0;for(;i!==e&&i!==t.lastElementChild&&i;)i=i.nextElementSibling,n++;return n}(t);return[...ee(t.parentElement.parentElement.parentElement),i]}function te(e,t,i){const n=function(e,t){return t.length%2==0?ie(e):e}(e,t),s=function(e){return"top"===e||"bottom"===e?j.VERTICAL:j.HORIZONTAL}(i);if(n===s){const[e,n]=M(t);let s=n;return"right"!==i&&"bottom"!==i||(s+=1),[...e,s]}{const e="right"===i||"bottom"===i?1:0;return[...t,e]}}const ie=e=>e===j.HORIZONTAL?j.VERTICAL:j.HORIZONTAL;const ne=(e,t)=>{const i=t===j.VERTICAL?e.box.width:e.box.height;return function(e){return!!e.children}(e)?{type:"branch",data:e.children.map((e=>ne(e,ie(t)))),size:i}:"number"==typeof e.cachedVisibleSize?{type:"leaf",data:e.view.toJSON(),size:e.cachedVisibleSize,visible:!1}:{type:"leaf",data:e.view.toJSON(),size:i}};class se{get length(){return this._root?this._root.children.length:0}get orientation(){return this.root.orientation}set orientation(e){if(this.root.orientation===e)return;const{size:t,orthogonalSize:i}=this.root;this.root=Q(this.root,i,t),this.root.layout(t,i)}get width(){return this.root.width}get height(){return this.root.height}get minimumWidth(){return this.root.minimumWidth}get minimumHeight(){return this.root.minimumHeight}get maximumWidth(){return this.root.maximumHeight}get maximumHeight(){return this.root.maximumHeight}get locked(){return this._locked}set locked(e){this._locked=e;const t=[this.root];for(;t.length>0;){const i=t.pop();i instanceof Y&&(i.disabled=e,t.push(...i.children))}}get margin(){return this._margin}set margin(e){this._margin=e,this.root.margin=e}maximizedView(){var e;return null===(e=this._maximizedNode)||void 0===e?void 0:e.leaf.view}hasMaximizedView(){return void 0!==this._maximizedNode}maximizeView(e){var t;const i=ee(e.element),[n,s]=this.getNode(i);if(!(s instanceof X))return;if((null===(t=this._maximizedNode)||void 0===t?void 0:t.leaf)===s)return;this.hasMaximizedView()&&this.exitMaximizedView(),ne(this.getView(),this.orientation);const o=[];!function e(t,i){for(let n=0;n=0;n--){const s=i.children[n];s instanceof X?e.includes(s)||i.setChildVisible(n,!0):t(s)}}(this.root);const t=this._maximizedNode.leaf;this._maximizedNode=void 0,this._onDidMaximizedNodeChange.fire({view:t.view,isMaximized:!1})}serialize(){const e=this.maximizedView();let t;e&&(t=ee(e.element)),this.hasMaximizedView()&&this.exitMaximizedView();const i={root:ne(this.getView(),this.orientation),width:this.width,height:this.height,orientation:this.orientation};return t&&(i.maximizedNode={location:t}),e&&this.maximizeView(e),i}dispose(){this.disposable.dispose(),this._onDidChange.dispose(),this._onDidMaximizedNodeChange.dispose(),this._onDidViewVisibilityChange.dispose(),this.root.dispose(),this._maximizedNode=void 0,this.element.remove()}clear(){const e=this.root.orientation;this.root=new Y(e,this.proportionalLayout,this.styles,this.root.size,this.root.orthogonalSize,this.locked,this.margin)}deserialize(e,t){const i=e.orientation,n=i===j.VERTICAL?e.height:e.width;if(this._deserialize(e.root,i,t,n),this.layout(e.width,e.height),e.maximizedNode){const t=e.maximizedNode.location,[i,n]=this.getNode(t);if(!(n instanceof X))return;this.maximizeView(n.view)}}_deserialize(e,t,i,n){this.root=this._deserializeNode(e,t,i,n)}_deserializeNode(e,t,i,n){var s;let o;if("branch"===e.type){const s=e.data.map((n=>({node:this._deserializeNode(n,ie(t),i,e.size),visible:n.visible})));o=new Y(t,this.proportionalLayout,this.styles,e.size,n,this.locked,this.margin,s)}else{const r=i.fromJSON(e);"boolean"==typeof e.visible&&(null===(s=r.setVisible)||void 0===s||s.call(r,e.visible)),o=new X(r,t,n,e.size)}return o}get root(){return this._root}set root(e){const t=this._root;t&&(t.dispose(),this._maximizedNode=void 0,this.element.removeChild(t.element)),this._root=e,this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}normalize(){if(!this._root)return;if(1!==this._root.children.length)return;const e=this.root,t=e.children[0];if(t instanceof X)return;e.element.remove();const i=e.removeChild(0);e.dispose(),i.dispose(),this._root=K(t,t.size,t.orthogonalSize),this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}insertOrthogonalSplitviewAtRoot(){if(!this._root)return;const e=this.root;if(e.element.remove(),this._root=new Y(ie(e.orientation),this.proportionalLayout,this.styles,this.root.orthogonalSize,this.root.size,this.locked,this.margin),0===e.children.length);else if(1===e.children.length){const t=e.children[0];e.removeChild(0).dispose(),e.dispose(),this._root.addChild(Q(t,t.orthogonalSize,t.size),Z.Distribute,0)}else this._root.addChild(e,Z.Distribute,0);this.element.appendChild(this._root.element),this.disposable.value=this._root.onDidChange((e=>{this._onDidChange.fire(e)}))}next(e){return this.progmaticSelect(e)}previous(e){return this.progmaticSelect(e,!0)}getView(e){const t=e?this.getNode(e)[1]:this.root;return this._getViews(t,this.orientation)}_getViews(e,t,i){const n={height:e.height,width:e.width};if(e instanceof X)return{box:n,view:e.view,cachedVisibleSize:i};const s=[];for(let o=0;o-1;s--){const n=i[s],o=e[s]||0;if(t?o-1>-1:o+1h.getChildSize(t)));if(h.removeChild(d,t).dispose(),a instanceof Y){m.splice(d,1,...a.children.map((e=>e.size)));for(let e=0;e0;)a.removeChild(0)}else{const e=new X(a.view,ie(a.orientation),a.size),t=c?a.orthogonalSize:Z.Invisible(a.orthogonalSize);h.addChild(e,t,d)}a.dispose();for(let u=0;u=t.children.length)throw new Error("Invalid location");const o=t.children[n];return i.push(t),this.getNode(s,o,i)}}const oe=(()=>{const e={disableAutoResizing:void 0,proportionalLayout:void 0,orientation:void 0,hideBorders:void 0,className:void 0};return Object.keys(e)})();class re extends w{get element(){return this._element}get disableResizing(){return this._disableResizing}set disableResizing(e){this._disableResizing=e}constructor(e,t){void 0===t&&(t=!1),super(),this._disableResizing=t,this._element=e,this.addDisposables(b(this._element,(e=>{if(this.isDisposed)return;if(this.disableResizing)return;if(!this._element.offsetParent)return;if(!function(e){let t=e;for(;null==t?void 0:t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof DocumentFragment?t.parentNode.host:t.parentNode}return!1}(this._element))return;const{width:t,height:i}=e.contentRect;this.layout(t,i)})))}}const ae=R();function he(e){switch(e){case"left":return"left";case"right":return"right";case"above":return"top";case"below":return"bottom";default:return"center"}}class le extends re{get id(){return this._id}get size(){return this._groups.size}get groups(){return Array.from(this._groups.values()).map((e=>e.value))}get width(){return this.gridview.width}get height(){return this.gridview.height}get minimumHeight(){return this.gridview.minimumHeight}get maximumHeight(){return this.gridview.maximumHeight}get minimumWidth(){return this.gridview.minimumWidth}get maximumWidth(){return this.gridview.maximumWidth}get activeGroup(){return this._activeGroup}get locked(){return this.gridview.locked}set locked(e){this.gridview.locked=e}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=ae.next(),this._groups=new Map,this._onDidRemove=new v,this.onDidRemove=this._onDidRemove.event,this._onDidAdd=new v,this.onDidAdd=this._onDidAdd.event,this._onDidMaximizedChange=new v,this.onDidMaximizedChange=this._onDidMaximizedChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._bufferOnDidLayoutChange=new f,this.onDidLayoutChange=this._bufferOnDidLayoutChange.onEvent,this._onDidViewVisibilityChangeMicroTaskQueue=new f,this.onDidViewVisibilityChangeMicroTaskQueue=this._onDidViewVisibilityChangeMicroTaskQueue.onEvent,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new G(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this.gridview=new se(!!t.proportionalLayout,t.styles,t.orientation,t.locked,t.margin),this.gridview.locked=!!t.locked,this.element.appendChild(this.gridview.element),this.layout(0,0,!0),this.addDisposables(this.gridview.onDidMaximizedNodeChange((e=>{this._onDidMaximizedChange.fire({panel:e.view,isMaximized:e.isMaximized})})),this.gridview.onDidViewVisibilityChange((()=>this._onDidViewVisibilityChangeMicroTaskQueue.fire())),this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.layout(this.width,this.height,!0)})),d.from((()=>{var e;null===(e=this.element.parentElement)||void 0===e||e.removeChild(this.element)})),this.gridview.onDidChange((()=>{this._bufferOnDidLayoutChange.fire()})),l.any(this.onDidAdd,this.onDidRemove,this.onDidActiveChange)((()=>{this._bufferOnDidLayoutChange.fire()})),this._onDidMaximizedChange,this._onDidViewVisibilityChangeMicroTaskQueue,this._bufferOnDidLayoutChange)}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t),this._bufferOnDidLayoutChange.fire()}isVisible(e){return this.gridview.isViewVisible(ee(e.element))}updateOptions(e){var t,i,n,s;e.proportionalLayout,e.orientation&&(this.gridview.orientation=e.orientation),"disableResizing"in e&&(this.disableResizing=null!==(t=e.disableAutoResizing)&&void 0!==t&&t),"locked"in e&&(this.locked=null!==(i=e.locked)&&void 0!==i&&i),"margin"in e&&(this.gridview.margin=null!==(n=e.margin)&&void 0!==n?n:0),"className"in e&&this._classNames.setClassNames(null!==(s=e.className)&&void 0!==s?s:"")}maximizeGroup(e){this.gridview.maximizeView(e),this.doSetGroupActive(e)}isMaximizedGroup(e){return this.gridview.maximizedView()===e}exitMaximizedGroup(){this.gridview.exitMaximizedView()}hasMaximizedGroup(){return this.gridview.hasMaximizedView()}doAddGroup(e,t,i){void 0===t&&(t=[0]),this.gridview.addView(e,null!=i?i:Z.Distribute,t),this._onDidAdd.fire(e)}doRemoveGroup(e,t){if(!this._groups.has(e.id))throw new Error("invalid operation");const i=this._groups.get(e.id),n=this.gridview.remove(e,Z.Distribute);if(i&&!(null==t?void 0:t.skipDispose)&&(i.disposable.dispose(),i.value.dispose(),this._groups.delete(e.id),this._onDidRemove.fire(e)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupActive(e.length>0?e[0].value:void 0)}return n}getPanel(e){var t;return null===(t=this._groups.get(e))||void 0===t?void 0:t.value}doSetGroupActive(e){this._activeGroup!==e&&(this._activeGroup&&this._activeGroup.setActive(!1),e&&e.setActive(!0),this._activeGroup=e,this._onDidActiveChange.fire(e))}removeGroup(e){this.doRemoveGroup(e)}moveToNext(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}moveToPrevious(e){var t;if(e||(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;this.doSetGroupActive(n)}layout(e,t,i){(i||e!==this.width||t!==this.height)&&(this.gridview.element.style.height=`${t}px`,this.gridview.element.style.width=`${e}px`,this.gridview.layout(e,t))}dispose(){this._onDidActiveChange.dispose(),this._onDidAdd.dispose(),this._onDidRemove.dispose();for(const e of this.groups)e.dispose();this.gridview.dispose(),super.dispose()}}class de{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get length(){return this.component.length}get orientation(){return this.component.orientation}get panels(){return this.component.panels}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}constructor(e){this.component=e}removePanel(e,t){this.component.removePanel(e,t)}focus(){this.component.focus()}getPanel(e){return this.component.getPanel(e)}layout(e,t){return this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class pe{get minimumSize(){return this.component.minimumSize}get maximumSize(){return this.component.maximumSize}get width(){return this.component.width}get height(){return this.component.height}get panels(){return this.component.panels}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidAddView(){return this.component.onDidAddView}get onDidRemoveView(){return this.component.onDidRemoveView}get onDidDrop(){return this.component.onDidDrop}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}constructor(e){this.component=e}removePanel(e){this.component.removePanel(e)}getPanel(e){return this.component.getPanel(e)}movePanel(e,t){this.component.movePanel(e,t)}focus(){this.component.focus()}layout(e,t){this.component.layout(e,t)}addPanel(e){return this.component.addPanel(e)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ce{get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidAddPanel(){return this.component.onDidAddGroup}get onDidRemovePanel(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActiveGroupChange}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get panels(){return this.component.groups}get orientation(){return this.component.orientation}set orientation(e){this.component.updateOptions({orientation:e})}constructor(e){this.component=e}focus(){this.component.focus()}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e,t){this.component.removePanel(e,t)}movePanel(e,t){this.component.movePanel(e,t)}getPanel(e){return this.component.getPanel(e)}fromJSON(e){return this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class me{get id(){return this.component.id}get width(){return this.component.width}get height(){return this.component.height}get minimumHeight(){return this.component.minimumHeight}get maximumHeight(){return this.component.maximumHeight}get minimumWidth(){return this.component.minimumWidth}get maximumWidth(){return this.component.maximumWidth}get size(){return this.component.size}get totalPanels(){return this.component.totalPanels}get onDidActiveGroupChange(){return this.component.onDidActiveGroupChange}get onDidAddGroup(){return this.component.onDidAddGroup}get onDidRemoveGroup(){return this.component.onDidRemoveGroup}get onDidActivePanelChange(){return this.component.onDidActivePanelChange}get onDidAddPanel(){return this.component.onDidAddPanel}get onDidRemovePanel(){return this.component.onDidRemovePanel}get onDidMovePanel(){return this.component.onDidMovePanel}get onDidLayoutFromJSON(){return this.component.onDidLayoutFromJSON}get onDidLayoutChange(){return this.component.onDidLayoutChange}get onDidDrop(){return this.component.onDidDrop}get onWillDrop(){return this.component.onWillDrop}get onWillShowOverlay(){return this.component.onWillShowOverlay}get onWillDragGroup(){return this.component.onWillDragGroup}get onWillDragPanel(){return this.component.onWillDragPanel}get onUnhandledDragOverEvent(){return this.component.onUnhandledDragOverEvent}get onDidPopoutGroupSizeChange(){return this.component.onDidPopoutGroupSizeChange}get onDidPopoutGroupPositionChange(){return this.component.onDidPopoutGroupPositionChange}get onDidOpenPopoutWindowFail(){return this.component.onDidOpenPopoutWindowFail}get panels(){return this.component.panels}get groups(){return this.component.groups}get activePanel(){return this.component.activePanel}get activeGroup(){return this.component.activeGroup}constructor(e){this.component=e}focus(){this.component.focus()}getPanel(e){return this.component.getGroupPanel(e)}layout(e,t,i){void 0===i&&(i=!1),this.component.layout(e,t,i)}addPanel(e){return this.component.addPanel(e)}removePanel(e){this.component.removePanel(e)}addGroup(e){return this.component.addGroup(e)}closeAllGroups(){return this.component.closeAllGroups()}removeGroup(e){this.component.removeGroup(e)}getGroup(e){return this.component.getPanel(e)}addFloatingGroup(e,t){return this.component.addFloatingGroup(e,t)}fromJSON(e){this.component.fromJSON(e)}toJSON(){return this.component.toJSON()}clear(){this.component.clear()}moveToNext(e){this.component.moveToNext(e)}moveToPrevious(e){this.component.moveToPrevious(e)}maximizeGroup(e){this.component.maximizeGroup(e.group)}hasMaximizedGroup(){return this.component.hasMaximizedGroup()}exitMaximizedGroup(){this.component.exitMaximizedGroup()}get onDidMaximizedGroupChange(){return this.component.onDidMaximizedGroupChange}addPopoutGroup(e,t){return this.component.addPopoutGroup(e,t)}updateOptions(e){this.component.updateOptions(e)}dispose(){this.component.dispose()}}class ue extends w{constructor(e,t){super(),this.el=e,this.disabled=t,this.dataDisposable=new _,this.pointerEventsDisposable=new _,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this.addDisposables(this._onDragStart,this.dataDisposable,this.pointerEventsDisposable),this.configure()}setDisabled(e){this.disabled=e}isCancelled(e){return!1}configure(){this.addDisposables(this._onDragStart,g(this.el,"dragstart",(e=>{if(e.defaultPrevented||this.isCancelled(e)||this.disabled)return void e.preventDefault();const t=I();if(this.pointerEventsDisposable.value={dispose:()=>{t.release()}},this.el.classList.add("dv-dragged"),setTimeout((()=>this.el.classList.remove("dv-dragged")),0),this.dataDisposable.value=this.getData(e),this._onDragStart.fire(e),e.dataTransfer){e.dataTransfer.effectAllowed="move";e.dataTransfer.items.length>0||e.dataTransfer.setData("text/plain","")}})),g(this.el,"dragend",(()=>{this.pointerEventsDisposable.dispose(),setTimeout((()=>{this.dataDisposable.dispose()}),0)})))}}class ve extends w{constructor(e,t){super(),this.element=e,this.callbacks=t,this.target=null,this.registerListeners()}onDragEnter(e){this.target=e.target,this.callbacks.onDragEnter(e)}onDragOver(e){e.preventDefault(),this.callbacks.onDragOver&&this.callbacks.onDragOver(e)}onDragLeave(e){this.target===e.target&&(this.target=null,this.callbacks.onDragLeave(e))}onDragEnd(e){this.target=null,this.callbacks.onDragEnd(e)}onDrop(e){this.callbacks.onDrop(e)}registerListeners(){this.addDisposables(g(this.element,"dragenter",(e=>{this.onDragEnter(e)}),!0)),this.addDisposables(g(this.element,"dragover",(e=>{this.onDragOver(e)}),!0)),this.addDisposables(g(this.element,"dragleave",(e=>{this.onDragLeave(e)}))),this.addDisposables(g(this.element,"dragend",(e=>{this.onDragEnd(e)}))),this.addDisposables(g(this.element,"drop",(e=>{this.onDrop(e)})))}}class ge extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}constructor(e){super(),this.options=e}}function fe(e){switch(e){case"above":return"top";case"below":return"bottom";case"left":return"left";case"right":return"right";case"within":return"center";default:throw new Error(`invalid direction '${e}'`)}}function we(e){switch(e){case"top":return"above";case"bottom":return"below";case"left":return"left";case"right":return"right";case"center":return"within";default:throw new Error(`invalid position '${e}'`)}}const _e={value:20,type:"percentage"},De={value:50,type:"percentage"};class be extends w{get disabled(){return this._disabled}set disabled(e){this._disabled=e}get state(){return this._state}constructor(e,t){super(),this.element=e,this.options=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._disabled=!1,this._acceptedTargetZonesSet=new Set(this.options.acceptedTargetZones),this.dnd=new ve(this.element,{onDragEnter:()=>{var e,t,i;null===(i=null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||void 0===i||i.getElements()},onDragOver:e=>{var t,i,n,s,o,r,a;be.ACTUAL_TARGET=this;const h=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);if(0===this._acceptedTargetZonesSet.size){if(h)return;return void this.removeDropTarget()}const l=null!==(o=null===(s=(n=this.options).getOverlayOutline)||void 0===s?void 0:s.call(n))&&void 0!==o?o:this.element,d=l.offsetWidth,p=l.offsetHeight;if(0===d||0===p)return;const c=e.currentTarget.getBoundingClientRect(),m=(null!==(r=e.clientX)&&void 0!==r?r:0)-c.left,u=(null!==(a=e.clientY)&&void 0!==a?a:0)-c.top,v=this.calculateQuadrant(this._acceptedTargetZonesSet,m,u,d,p);if(this.isAlreadyUsed(e)||null===v)return void this.removeDropTarget();if(!this.options.canDisplayOverlay(e,v)){if(h)return;return void this.removeDropTarget()}const g=new ge({nativeEvent:e,position:v});this._onWillShowOverlay.fire(g),g.defaultPrevented?this.removeDropTarget():(this.markAsUsed(e),h||this.targetElement||(this.targetElement=document.createElement("div"),this.targetElement.className="dv-drop-target-dropzone",this.overlayElement=document.createElement("div"),this.overlayElement.className="dv-drop-target-selection",this._state="center",this.targetElement.appendChild(this.overlayElement),l.classList.add("dv-drop-target"),l.append(this.targetElement)),this.toggleClasses(v,d,p),this._state=v)},onDragLeave:()=>{var e,t;(null===(t=(e=this.options).getOverrideTarget)||void 0===t?void 0:t.call(e))||this.removeDropTarget()},onDragEnd:e=>{var t,i;const n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t);n&&be.ACTUAL_TARGET===this&&this._state&&(e.stopPropagation(),this._onDrop.fire({position:this._state,nativeEvent:e})),this.removeDropTarget(),null==n||n.clear()},onDrop:e=>{var t,i,n;e.preventDefault();const s=this._state;this.removeDropTarget(),null===(n=null===(i=(t=this.options).getOverrideTarget)||void 0===i?void 0:i.call(t))||void 0===n||n.clear(),s&&(e.stopPropagation(),this._onDrop.fire({position:s,nativeEvent:e}))}}),this.addDisposables(this._onDrop,this._onWillShowOverlay,this.dnd)}setTargetZones(e){this._acceptedTargetZonesSet=new Set(e)}setOverlayModel(e){this.options.overlayModel=e}dispose(){this.removeDropTarget(),super.dispose()}markAsUsed(e){e[be.USED_EVENT_ID]=!0}isAlreadyUsed(e){const t=e[be.USED_EVENT_ID];return"boolean"==typeof t&&t}toggleClasses(e,t,i){var n,s,o,r,a,h,l;const d=null===(s=(n=this.options).getOverrideTarget)||void 0===s?void 0:s.call(n);if(!d&&!this.overlayElement)return;const p=t<100,c=i<100,m="left"===e,u="right"===e,v="top"===e,g="bottom"===e,f=!p&&u,w=!p&&m,_=!c&&v,D=!c&&g;let b=1;const y=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.size)&&void 0!==r?r:De;if("percentage"===y.type?b=T(y.value,0,100)/100:((f||w)&&(b=T(0,y.value,t)/t),(_||D)&&(b=T(0,y.value,i)/i)),d){const n=null!==(l=null===(h=(a=this.options).getOverlayOutline)||void 0===h?void 0:h.call(a))&&void 0!==l?l:this.element,s=n.getBoundingClientRect(),o=d.getElements(void 0,n),r=o.root,c=o.overlay,y=r.getBoundingClientRect(),x=s.top-y.top,z=s.left-y.left,S={top:x,left:z,width:t,height:i};if(f?(S.left=z+t*(1-b),S.width=t*b):w?S.width=t*b:_?S.height=i*b:D&&(S.top=x+i*(1-b),S.height=i*b),p&&m&&(S.width=4),p&&u&&(S.left=z+t-4,S.width=4),!function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,l=`${Math.round(o)}px`;return e.style.top!==r||e.style.left!==a||e.style.width!==h||e.style.height!==l}(c,S))return;return function(e,t){const{top:i,left:n,width:s,height:o}=t,r=`${Math.round(i)}px`,a=`${Math.round(n)}px`,h=`${Math.round(s)}px`,l=`${Math.round(o)}px`;e.style.top=r,e.style.left=a,e.style.width=h,e.style.height=l,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(c,S),c.className="dv-drop-target-anchor"+(this.options.className?` ${this.options.className}`:""),C(c,"dv-drop-target-left",m),C(c,"dv-drop-target-right",u),C(c,"dv-drop-target-top",v),C(c,"dv-drop-target-bottom",g),C(c,"dv-drop-target-center","center"===e),void(o.changed&&(C(c,"dv-drop-target-anchor-container-changed",!0),setTimeout((()=>{C(c,"dv-drop-target-anchor-container-changed",!1)}),10)))}if(!this.overlayElement)return;const x={top:"0px",left:"0px",width:"100%",height:"100%"};f?(x.left=100*(1-b)+"%",x.width=100*b+"%"):w?x.width=100*b+"%":_?x.height=100*b+"%":D&&(x.top=100*(1-b)+"%",x.height=100*b+"%"),function(e,t){const{top:i,left:n,width:s,height:o}=t;e.style.top=i,e.style.left=n,e.style.width=s,e.style.height=o,e.style.visibility="visible",e.style.transform&&""!==e.style.transform||(e.style.transform="translate3d(0, 0, 0)")}(this.overlayElement,x),C(this.overlayElement,"dv-drop-target-small-vertical",c),C(this.overlayElement,"dv-drop-target-small-horizontal",p),C(this.overlayElement,"dv-drop-target-left",m),C(this.overlayElement,"dv-drop-target-right",u),C(this.overlayElement,"dv-drop-target-top",v),C(this.overlayElement,"dv-drop-target-bottom",g),C(this.overlayElement,"dv-drop-target-center","center"===e)}calculateQuadrant(e,t,i,n,s){var o,r;const a=null!==(r=null===(o=this.options.overlayModel)||void 0===o?void 0:o.activationSize)&&void 0!==r?r:_e;return"percentage"===a.type?function(e,t,i,n,s,o){const r=100*t/n,a=100*i/s;if(e.has("left")&&r100-o)return"right";if(e.has("top")&&a100-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value):function(e,t,i,n,s,o){if(e.has("left")&&tn-o)return"right";if(e.has("top")&&is-o)return"bottom";if(!e.has("center"))return null;return"center"}(e,t,i,n,s,a.value)}removeDropTarget(){var e;this.targetElement&&(this._state=void 0,null===(e=this.targetElement.parentElement)||void 0===e||e.classList.remove("dv-drop-target"),this.targetElement.remove(),this.targetElement=void 0,this.overlayElement=void 0)}}be.USED_EVENT_ID="__dockview_droptarget_event_is_used__";const ye=(()=>{const e={disableAutoResizing:void 0,disableDnd:void 0,className:void 0};return Object.keys(e)})();class xe extends c{constructor(e,t,i,n){super(),this.nativeEvent=e,this.position=t,this.getData=i,this.panel=n}}class Ce extends p{constructor(){super()}}class ze extends w{get isFocused(){return this._isFocused}get isActive(){return this._isActive}get isVisible(){return this._isVisible}get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.id=e,this.component=t,this._isFocused=!1,this._isActive=!1,this._isVisible=!0,this._width=0,this._height=0,this._parameters={},this.panelUpdatesDisposable=new _,this._onDidDimensionChange=new v,this.onDidDimensionsChange=this._onDidDimensionChange.event,this._onDidChangeFocus=new v,this.onDidFocusChange=this._onDidChangeFocus.event,this._onWillFocus=new v,this.onWillFocus=this._onWillFocus.event,this._onDidVisibilityChange=new v,this.onDidVisibilityChange=this._onDidVisibilityChange.event,this._onWillVisibilityChange=new v,this.onWillVisibilityChange=this._onWillVisibilityChange.event,this._onDidActiveChange=new v,this.onDidActiveChange=this._onDidActiveChange.event,this._onActiveChange=new v,this.onActiveChange=this._onActiveChange.event,this._onDidParametersChange=new v,this.onDidParametersChange=this._onDidParametersChange.event,this.addDisposables(this.onDidFocusChange((e=>{this._isFocused=e.isFocused})),this.onDidActiveChange((e=>{this._isActive=e.isActive})),this.onDidVisibilityChange((e=>{this._isVisible=e.isVisible})),this.onDidDimensionsChange((e=>{this._width=e.width,this._height=e.height})),this.panelUpdatesDisposable,this._onDidDimensionChange,this._onDidChangeFocus,this._onDidVisibilityChange,this._onDidActiveChange,this._onWillFocus,this._onActiveChange,this._onWillFocus,this._onWillVisibilityChange,this._onDidParametersChange)}getParameters(){return this._parameters}initialize(e){this.panelUpdatesDisposable.value=this._onDidParametersChange.event((t=>{this._parameters=t,e.update({params:t})}))}setVisible(e){this._onWillVisibilityChange.fire({isVisible:e})}setActive(){this._onActiveChange.fire()}updateParameters(e){this._onDidParametersChange.fire(e)}}class Se extends ze{constructor(e,t){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v({replay:!0}),this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Ae extends Se{set pane(e){this._pane=e}constructor(e,t){super(e,t),this._onDidExpansionChange=new v({replay:!0}),this.onDidExpansionChange=this._onDidExpansionChange.event,this._onMouseEnter=new v({}),this.onMouseEnter=this._onMouseEnter.event,this._onMouseLeave=new v({}),this.onMouseLeave=this._onMouseLeave.event,this.addDisposables(this._onDidExpansionChange,this._onMouseEnter,this._onMouseLeave)}setExpanded(e){var t;null===(t=this._pane)||void 0===t||t.setExpanded(e)}get isExpanded(){var e;return!!(null===(e=this._pane)||void 0===e?void 0:e.isExpanded())}}class Ee extends w{get element(){return this._element}get width(){return this._width}get height(){return this._height}get params(){var e;return null===(e=this._params)||void 0===e?void 0:e.params}constructor(e,t,i){super(),this.id=e,this.component=t,this.api=i,this._height=0,this._width=0,this._element=document.createElement("div"),this._element.tabIndex=-1,this._element.style.outline="none",this._element.style.height="100%",this._element.style.width="100%",this._element.style.overflow="hidden";const n=S(this._element);this.addDisposables(this.api,n.onDidFocus((()=>{this.api._onDidChangeFocus.fire({isFocused:!0})})),n.onDidBlur((()=>{this.api._onDidChangeFocus.fire({isFocused:!1})})),n)}focus(){const e=new Ce;this.api._onWillFocus.fire(e),e.defaultPrevented||this._element.focus()}layout(e,t){this._width=e,this._height=t,this.api._onDidDimensionChange.fire({width:e,height:t}),this.part&&this._params&&this.part.update(this._params.params)}init(e){this._params=e,this.part=this.getComponent()}update(e){var t,i;this._params=Object.assign(Object.assign({},this._params),{params:Object.assign(Object.assign({},null===(t=this._params)||void 0===t?void 0:t.params),e.params)});for(const n of Object.keys(e.params))void 0===e.params[n]&&delete this._params.params[n];null===(i=this.part)||void 0===i||i.update({params:this._params.params})}toJSON(){var e,t;const i=null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{};return{id:this.id,component:this.component,params:Object.keys(i).length>0?i:void 0}}dispose(){var e;this.api.dispose(),null===(e=this.part)||void 0===e||e.dispose(),super.dispose()}}class Pe extends Ee{set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){return this.headerSize+(this.isExpanded()?this._minimumBodySize:0)}get maximumSize(){return this.headerSize+(this.isExpanded()?this._maximumBodySize:0)}get size(){return this._size}get orthogonalSize(){return this._orthogonalSize}set orthogonalSize(e){this._orthogonalSize=e}get minimumBodySize(){return this._minimumBodySize}set minimumBodySize(e){this._minimumBodySize="number"==typeof e?e:0}get maximumBodySize(){return this._maximumBodySize}set maximumBodySize(e){this._maximumBodySize="number"==typeof e?e:Number.POSITIVE_INFINITY}get headerVisible(){return this._headerVisible}set headerVisible(e){this._headerVisible=e,this.header.style.display=e?"":"none"}constructor(e){super(e.id,e.component,new Ae(e.id,e.component)),this._onDidChangeExpansionState=new v({replay:!0}),this.onDidChangeExpansionState=this._onDidChangeExpansionState.event,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._orthogonalSize=0,this._size=0,this._isExpanded=!1,this.api.pane=this,this.api.initialize(this),this.headerSize=e.headerSize,this.headerComponent=e.headerComponent,this._minimumBodySize=e.minimumBodySize,this._maximumBodySize=e.maximumBodySize,this._isExpanded=e.isExpanded,this._headerVisible=e.isHeaderVisible,this._onDidChangeExpansionState.fire(this.isExpanded()),this._orientation=e.orientation,this.element.classList.add("dv-pane"),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})),g(this.element,"mouseenter",(e=>{this.api._onMouseEnter.fire(e)})),g(this.element,"mouseleave",(e=>{this.api._onMouseLeave.fire(e)}))),this.addDisposables(this._onDidChangeExpansionState,this.onDidChangeExpansionState((e=>{this.api._onDidExpansionChange.fire({isExpanded:e})})),this.api.onDidFocusChange((e=>{this.header&&(e.isFocused?x(this.header,"focused"):y(this.header,"focused"))}))),this.renderOnce()}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}isExpanded(){return this._isExpanded}setExpanded(e){this._isExpanded!==e&&(this._isExpanded=e,e?(this.animationTimer&&clearTimeout(this.animationTimer),this.body&&this.element.appendChild(this.body)):this.animationTimer=setTimeout((()=>{var e;null===(e=this.body)||void 0===e||e.remove()}),200),this._onDidChange.fire(e?{size:this.width}:{}),this._onDidChangeExpansionState.fire(e))}layout(e,t){this._size=e,this._orthogonalSize=t;const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){var t,i;super.init(e),"number"==typeof e.minimumBodySize&&(this.minimumBodySize=e.minimumBodySize),"number"==typeof e.maximumBodySize&&(this.maximumBodySize=e.maximumBodySize),this.bodyPart=this.getBodyComponent(),this.headerPart=this.getHeaderComponent(),this.bodyPart.init(Object.assign(Object.assign({},e),{api:this.api})),this.headerPart.init(Object.assign(Object.assign({},e),{api:this.api})),null===(t=this.body)||void 0===t||t.append(this.bodyPart.element),null===(i=this.header)||void 0===i||i.append(this.headerPart.element),"boolean"==typeof e.isExpanded&&this.setExpanded(e.isExpanded)}toJSON(){const e=this._params;return Object.assign(Object.assign({},super.toJSON()),{headerComponent:this.headerComponent,title:e.title})}renderOnce(){this.header=document.createElement("div"),this.header.tabIndex=0,this.header.className="dv-pane-header",this.header.style.height=`${this.headerSize}px`,this.header.style.lineHeight=`${this.headerSize}px`,this.header.style.minHeight=`${this.headerSize}px`,this.header.style.maxHeight=`${this.headerSize}px`,this.element.appendChild(this.header),this.body=document.createElement("div"),this.body.className="dv-pane-body",this.element.appendChild(this.body)}getComponent(){return{update:e=>{var t,i;null===(t=this.bodyPart)||void 0===t||t.update({params:e}),null===(i=this.headerPart)||void 0===i||i.update({params:e})},dispose:()=>{var e,t;null===(e=this.bodyPart)||void 0===e||e.dispose(),null===(t=this.headerPart)||void 0===t||t.dispose()}}}}class Oe extends Pe{constructor(e){super({id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,isHeaderVisible:!0,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.accessor=e.accessor,this.addDisposables(this._onDidDrop,this._onUnhandledDragOverEvent),e.disableDnd||this.initDragFeatures()}initDragFeatures(){if(!this.header)return;const e=this.id,t=this.accessor.id;this.header.draggable=!0,this.handler=new class extends ue{getData(){return r.getInstance().setData([new o(t,e)],o.prototype),{dispose:()=>{r.getInstance().clearData(o.prototype)}}}}(this.header),this.target=new be(this.element,{acceptedTargetZones:["top","bottom"],overlayModel:{activationSize:{type:"percentage",value:50}},canDisplayOverlay:(e,t)=>{const i=h();if(i&&i.paneId!==this.id&&i.viewId===this.accessor.id)return!0;const n=new xe(e,t,h,this);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}}),this.addDisposables(this._onDidDrop,this.handler,this.target,this.target.onDrop((e=>{this.onDrop(e)})))}onDrop(e){const t=h();if(!t||t.viewId!==this.accessor.id)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,api:new pe(this.accessor),getData:h}));const i=this._params.containerApi,n=t.paneId,s=i.getPanel(n);if(!s)return void this._onDidDrop.fire(Object.assign(Object.assign({},e),{panel:this,getData:h,api:new pe(this.accessor)}));const o=i.panels,r=o.indexOf(s);let a=i.panels.indexOf(this);"left"!==e.position&&"top"!==e.position||(a=Math.max(0,a-1)),"right"!==e.position&&"bottom"!==e.position||(r>a&&a++,a=Math.min(o.length-1,a)),i.movePanel(r,a)}}class Ie extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this.disposable=new _,this._onDidFocus=new v,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new v,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-content-container",this._element.tabIndex=-1,this.addDisposables(this._onDidFocus,this._onDidBlur);const i=t.dropTargetContainer;this.dropTarget=new be(this.element,{getOverlayOutline:()=>{var t;return"group"===(null===(t=e.options.theme)||void 0===t?void 0:t.dndPanelOverlay)?this.element.parentElement:null},className:"dv-drop-target-content",acceptedTargetZones:["top","bottom","left","right","center"],canDisplayOverlay:(e,t)=>{if("no-drop-target"===this.group.locked||this.group.locked&&"center"===t)return!1;const i=a();return!(!i&&e.shiftKey&&"floating"!==this.group.location.type)&&(!(!i||i.viewId!==this.accessor.id)||this.group.canDisplayOverlay(e,t,"content"))},getOverrideTarget:i?()=>i.model:void 0}),this.addDisposables(this.dropTarget)}show(){this.element.style.display=""}hide(){this.element.style.display="none"}renderPanel(e,t){void 0===t&&(t={asActive:!0});const i=t.asActive||this.panel&&this.group.isPanelActive(this.panel);let n;switch(this.panel&&this.panel.view.content.element.parentElement===this._element&&this._element.removeChild(this.panel.view.content.element),this.panel=e,e.api.renderer){case"onlyWhenVisible":this.group.renderContainer.detatch(e),this.panel&&i&&this._element.appendChild(this.panel.view.content.element),n=this._element;break;case"always":e.view.content.element.parentElement===this._element&&this._element.removeChild(e.view.content.element),n=this.group.renderContainer.attach({panel:e,referenceContainer:this});break;default:throw new Error(`dockview: invalid renderer type '${e.api.renderer}'`)}if(i){const e=S(n),t=new w;t.addDisposables(e,e.onDidFocus((()=>this._onDidFocus.fire())),e.onDidBlur((()=>this._onDidBlur.fire()))),this.disposable.value=t}}openPanel(e){this.panel!==e&&this.renderPanel(e)}layout(e,t){}closePanel(){var e;this.panel&&"onlyWhenVisible"===this.panel.api.renderer&&(null===(e=this.panel.view.content.element.parentElement)||void 0===e||e.removeChild(this.panel.view.content.element)),this.panel=void 0}dispose(){this.disposable.dispose(),super.dispose()}}function Ge(e,t,i){var n,s;x(t,"dv-dragged"),t.style.top="-9999px",document.body.appendChild(t),e.setDragImage(t,null!==(n=null==i?void 0:i.x)&&void 0!==n?n:0,null!==(s=null==i?void 0:i.y)&&void 0!==s?s:0),setTimeout((()=>{y(t,"dv-dragged"),t.remove()}),0)}class Me extends ue{constructor(e,t,i,n,s){super(e,s),this.accessor=t,this.group=i,this.panel=n,this.panelTransfer=r.getInstance()}getData(e){return this.panelTransfer.setData([new s(this.accessor.id,this.group.id,this.panel.id)],s.prototype),{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Ne extends w{get element(){return this._element}constructor(e,t,i){super(),this.panel=e,this.accessor=t,this.group=i,this.content=void 0,this._onPointDown=new v,this.onPointerDown=this._onPointDown.event,this._onDropped=new v,this.onDrop=this._onDropped.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-tab",this._element.tabIndex=0,this._element.draggable=!this.accessor.options.disableDnd,C(this.element,"dv-inactive-tab",!0),this.dragHandler=new Me(this._element,this.accessor,this.group,this.panel,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["left","right"],overlayModel:{activationSize:{value:50,type:"percentage"}},canDisplayOverlay:(e,t)=>{if(this.group.locked)return!1;const i=a();return!(!i||this.accessor.id!==i.viewId)||this.group.model.canDisplayOverlay(e,t,"tab")},getOverrideTarget:()=>{var e;return null===(e=i.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this._onPointDown,this._onDropped,this._onDragStart,this.dragHandler.onDragStart((e=>{if(e.dataTransfer){const t=getComputedStyle(this.element),i=this.element.cloneNode(!0);Array.from(t).forEach((e=>i.style.setProperty(e,t.getPropertyValue(e),t.getPropertyPriority(e)))),i.style.position="absolute",Ge(e.dataTransfer,i,{y:-10,x:30})}this._onDragStart.fire(e)})),this.dragHandler,g(this._element,"pointerdown",(e=>{this._onPointDown.fire(e)})),this.dropTarget.onDrop((e=>{this._onDropped.fire(e)})),this.dropTarget)}setActive(e){C(this.element,"dv-active-tab",e),C(this.element,"dv-inactive-tab",!e)}setContent(e){this.content&&this._element.removeChild(this.content.element),this.content=e,this._element.appendChild(this.content.element)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,this.dragHandler.setDisabled(!!this.accessor.options.disableDnd)}dispose(){super.dispose()}}class Ve{get kind(){return this.options.kind}get nativeEvent(){return this.event.nativeEvent}get position(){return this.event.position}get defaultPrevented(){return this.event.defaultPrevented}get panel(){return this.options.panel}get api(){return this.options.api}get group(){return this.options.group}preventDefault(){this.event.preventDefault()}getData(){return this.options.getData()}constructor(e,t){this.event=e,this.options=t}}class ke extends ue{constructor(e,t,i,n){super(e,n),this.accessor=t,this.group=i,this.panelTransfer=r.getInstance(),this.addDisposables(g(e,"pointerdown",(e=>{e.shiftKey&&(e[E]=!0)}),!0))}isCancelled(e){return"floating"===this.group.api.location.type&&!e.shiftKey}getData(e){const t=e.dataTransfer;this.panelTransfer.setData([new s(this.accessor.id,this.group.id,null)],s.prototype);const i=window.getComputedStyle(this.el),n=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-background-color"),o=i.getPropertyValue("--dv-activegroup-visiblepanel-tab-color");if(t){const e=document.createElement("div");e.style.backgroundColor=n,e.style.color=o,e.style.padding="2px 8px",e.style.height="24px",e.style.fontSize="11px",e.style.lineHeight="20px",e.style.borderRadius="12px",e.style.position="absolute",e.style.pointerEvents="none",e.style.top="-9999px",e.textContent=`Multiple Panels (${this.group.size})`,Ge(t,e,{y:-10,x:30})}return{dispose:()=>{this.panelTransfer.clearData(s.prototype)}}}}class Le extends w{get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onDragStart=new v,this.onDragStart=this._onDragStart.event,this._element=document.createElement("div"),this._element.className="dv-void-container",this._element.draggable=!this.accessor.options.disableDnd,C(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.addDisposables(this._onDrop,this._onDragStart,g(this._element,"pointerdown",(()=>{this.accessor.doSetGroupActive(this.group)}))),this.handler=new ke(this._element,e,t,!!this.accessor.options.disableDnd),this.dropTarget=new be(this._element,{acceptedTargetZones:["center"],canDisplayOverlay:(e,i)=>{const n=a();return!(!n||this.accessor.id!==n.viewId)||t.model.canDisplayOverlay(e,i,"header_space")},getOverrideTarget:()=>{var e;return null===(e=t.model.dropTargetContainer)||void 0===e?void 0:e.model}}),this.onWillShowOverlay=this.dropTarget.onWillShowOverlay,this.addDisposables(this.handler,this.handler.onDragStart((e=>{this._onDragStart.fire(e)})),this.dropTarget.onDrop((e=>{this._onDrop.fire(e)})),this.dropTarget)}updateDragAndDropState(){this._element.draggable=!this.accessor.options.disableDnd,C(this._element,"dv-draggable",!this.accessor.options.disableDnd),this.handler.setDisabled(!!this.accessor.options.disableDnd)}}class Te extends w{get element(){return this._element}constructor(e){super(),this.scrollableElement=e,this._scrollLeft=0,this._element=document.createElement("div"),this._element.className="dv-scrollable",this._horizontalScrollbar=document.createElement("div"),this._horizontalScrollbar.className="dv-scrollbar-horizontal",this.element.appendChild(e),this.element.appendChild(this._horizontalScrollbar),this.addDisposables(g(this.element,"wheel",(e=>{this._scrollLeft+=e.deltaY*Te.MouseWheelSpeed,this.calculateScrollbarStyles()})),g(this._horizontalScrollbar,"pointerdown",(e=>{e.preventDefault(),C(this.element,"dv-scrollable-scrolling",!0);const t=e.clientX,i=this._scrollLeft,n=e=>{const n=e.clientX-t,{clientWidth:s}=this.element,{scrollWidth:o}=this.scrollableElement,r=s/o;this._scrollLeft=i+n/r,this.calculateScrollbarStyles()},s=()=>{C(this.element,"dv-scrollable-scrolling",!1),document.removeEventListener("pointermove",n),document.removeEventListener("pointerup",s),document.removeEventListener("pointercancel",s)};document.addEventListener("pointermove",n),document.addEventListener("pointerup",s),document.addEventListener("pointercancel",s)})),g(this.element,"scroll",(()=>{this.calculateScrollbarStyles()})),g(this.scrollableElement,"scroll",(()=>{this._scrollLeft=this.scrollableElement.scrollLeft,this.calculateScrollbarStyles()})),b(this.element,(()=>{C(this.element,"dv-scrollable-resizing",!0),this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout((()=>{clearTimeout(this._animationTimer),C(this.element,"dv-scrollable-resizing",!1)}),500),this.calculateScrollbarStyles()})))}calculateScrollbarStyles(){const{clientWidth:e}=this.element,{scrollWidth:t}=this.scrollableElement;if(t>e){const i=e*(e/t);this._horizontalScrollbar.style.width=`${i}px`,this._scrollLeft=T(this._scrollLeft,0,this.scrollableElement.scrollWidth-e),this.scrollableElement.scrollLeft=this._scrollLeft;const n=this._scrollLeft/(t-e);this._horizontalScrollbar.style.left=(e-i)*n+"px"}else this._horizontalScrollbar.style.width="0px",this._horizontalScrollbar.style.left="0px",this._scrollLeft=0}}Te.MouseWheelSpeed=1;class Re extends w{get showTabsOverflowControl(){return this._showTabsOverflowControl}set showTabsOverflowControl(e){if(this._showTabsOverflowControl!=e&&(this._showTabsOverflowControl=e,e)){const e=new D(this._tabsList);this._observerDisposable.value=new w(e,e.onDidChange((e=>{const t=e.hasScrollX||e.hasScrollY;this.toggleDropdown({reset:!t})})),g(this._tabsList,"scroll",(()=>{this.toggleDropdown({reset:!1})})))}}get element(){return this._element}get panels(){return this._tabs.map((e=>e.value.panel.id))}get size(){return this._tabs.length}get tabs(){return this._tabs.map((e=>e.value))}constructor(e,t,i){if(super(),this.group=e,this.accessor=t,this._observerDisposable=new _,this._tabs=[],this.selectedIndex=-1,this._showTabsOverflowControl=!1,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onOverflowTabsChange=new v,this.onOverflowTabsChange=this._onOverflowTabsChange.event,this._tabsList=document.createElement("div"),this._tabsList.className="dv-tabs-container dv-horizontal",this.showTabsOverflowControl=i.showTabsOverflowControl,"native"===t.options.scrollbars)this._element=this._tabsList;else{const e=new Te(this._tabsList);this._element=e.element,this.addDisposables(e)}this.addDisposables(this._onOverflowTabsChange,this._observerDisposable,this._onWillShowOverlay,this._onDrop,this._onTabDragStart,g(this.element,"pointerdown",(e=>{if(e.defaultPrevented)return;0===e.button&&this.accessor.doSetGroupActive(this.group)})),d.from((()=>{for(const{value:e,disposable:t}of this._tabs)t.dispose(),e.dispose();this._tabs=[]})))}indexOf(e){return this._tabs.findIndex((t=>t.value.panel.id===e))}isActive(e){return this.selectedIndex>-1&&this._tabs[this.selectedIndex].value===e}setActivePanel(e){let t=0;for(const i of this._tabs){const n=e.id===i.value.panel.id;if(i.value.setActive(n),n){const e=i.value.element,n=e.parentElement;(tn.scrollLeft+n.clientWidth)&&(n.scrollLeft=t)}t+=i.value.element.clientWidth}}openPanel(e,t){if(void 0===t&&(t=this._tabs.length),this._tabs.find((t=>t.value.panel.id===e.id)))return;const i=new Ne(e,this.accessor,this.group);i.setContent(e.view.tab);const n=new w(i.onDragStart((t=>{this._onTabDragStart.fire({nativeEvent:t,panel:e})})),i.onPointerDown((t=>{if(t.defaultPrevented)return;const n=!this.accessor.options.disableFloatingGroups,s="floating"===this.group.api.location.type&&1===this.size;if(n&&!s&&t.shiftKey){t.preventDefault();const e=this.accessor.getGroupPanel(i.panel.id),{top:n,left:s}=i.element.getBoundingClientRect(),{top:o,left:r}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(e,{x:s-r,y:n-o,inDragMode:!0})}else if(0===t.button)this.group.activePanel!==e&&this.group.model.openPanel(e)})),i.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this._tabs.findIndex((e=>e.value===i))})})),i.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Ve(e,{kind:"tab",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))}))),s={value:i,disposable:n};this.addTab(s,t)}delete(e){const t=this.indexOf(e),i=this._tabs.splice(t,1)[0],{value:n,disposable:s}=i;s.dispose(),n.dispose(),n.element.remove()}addTab(e,t){if(void 0===t&&(t=this._tabs.length),t<0||t>this._tabs.length)throw new Error("invalid location");this._tabsList.insertBefore(e.value.element,this._tabsList.children[t]),this._tabs=[...this._tabs.slice(0,t),e,...this._tabs.slice(t)],this.selectedIndex<0&&(this.selectedIndex=t)}toggleDropdown(e){const t=e.reset?[]:this._tabs.filter((e=>!function(e,t){const i=O(e),n=O(t);return!(i.leftn.left+n.width)}(e.value.element,this._tabsList))).map((e=>e.value.panel.id));this._onOverflowTabsChange.fire({tabs:t,reset:e.reset})}updateDragAndDropState(){for(const e of this._tabs)e.value.updateDragAndDropState()}}const He=e=>{const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"height",e.height),t.setAttributeNS(null,"width",e.width),t.setAttributeNS(null,"viewBox",e.viewbox),t.setAttributeNS(null,"aria-hidden","false"),t.setAttributeNS(null,"focusable","false"),t.classList.add("dv-svg");const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d",e.path),t.appendChild(i),t},We=()=>He({width:"11",height:"11",viewbox:"0 0 15 25",path:"M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z"});class je extends w{get onTabDragStart(){return this.tabs.onTabDragStart}get panels(){return this.tabs.panels}get size(){return this.tabs.size}get hidden(){return this._hidden}set hidden(e){this._hidden=e,this.element.style.display=e?"none":""}get element(){return this._element}constructor(e,t){super(),this.accessor=e,this.group=t,this._hidden=!1,this.dropdownPart=null,this._overflowTabs=[],this._dropdownDisposable=new _,this._onDrop=new v,this.onDrop=this._onDrop.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._element=document.createElement("div"),this._element.className="dv-tabs-and-actions-container",C(this._element,"dv-full-width-single-tab","fullwidth"===this.accessor.options.singleTabMode),this.rightActionsContainer=document.createElement("div"),this.rightActionsContainer.className="dv-right-actions-container",this.leftActionsContainer=document.createElement("div"),this.leftActionsContainer.className="dv-left-actions-container",this.preActionsContainer=document.createElement("div"),this.preActionsContainer.className="dv-pre-actions-container",this.tabs=new Re(t,e,{showTabsOverflowControl:!e.options.disableTabsOverflowList}),this.voidContainer=new Le(this.accessor,this.group),this._element.appendChild(this.preActionsContainer),this._element.appendChild(this.tabs.element),this._element.appendChild(this.leftActionsContainer),this._element.appendChild(this.voidContainer.element),this._element.appendChild(this.rightActionsContainer),this.addDisposables(this.tabs.onDrop((e=>this._onDrop.fire(e))),this.tabs.onWillShowOverlay((e=>this._onWillShowOverlay.fire(e))),e.onDidOptionsChange((()=>{this.tabs.showTabsOverflowControl=!e.options.disableTabsOverflowList})),this.tabs.onOverflowTabsChange((e=>{this.toggleDropdown(e)})),this.tabs,this._onWillShowOverlay,this._onDrop,this._onGroupDragStart,this.voidContainer,this.voidContainer.onDragStart((e=>{this._onGroupDragStart.fire({nativeEvent:e,group:this.group})})),this.voidContainer.onDrop((e=>{this._onDrop.fire({event:e.nativeEvent,index:this.tabs.size})})),this.voidContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Ve(e,{kind:"header_space",panel:this.group.activePanel,api:this.accessor.api,group:this.group,getData:a}))})),g(this.voidContainer.element,"pointerdown",(e=>{if(e.defaultPrevented)return;if(!this.accessor.options.disableFloatingGroups&&e.shiftKey&&"floating"!==this.group.api.location.type){e.preventDefault();const{top:t,left:i}=this.element.getBoundingClientRect(),{top:n,left:s}=this.accessor.element.getBoundingClientRect();this.accessor.addFloatingGroup(this.group,{x:i-s+20,y:t-n+20,inDragMode:!0})}})))}show(){this.hidden||(this.element.style.display="")}hide(){this._element.style.display="none"}setRightActionsElement(e){this.rightActions!==e&&(this.rightActions&&(this.rightActions.remove(),this.rightActions=void 0),e&&(this.rightActionsContainer.appendChild(e),this.rightActions=e))}setLeftActionsElement(e){this.leftActions!==e&&(this.leftActions&&(this.leftActions.remove(),this.leftActions=void 0),e&&(this.leftActionsContainer.appendChild(e),this.leftActions=e))}setPrefixActionsElement(e){this.preActions!==e&&(this.preActions&&(this.preActions.remove(),this.preActions=void 0),e&&(this.preActionsContainer.appendChild(e),this.preActions=e))}isActive(e){return this.tabs.isActive(e)}indexOf(e){return this.tabs.indexOf(e)}setActive(e){}delete(e){this.tabs.delete(e),this.updateClassnames()}setActivePanel(e){this.tabs.setActivePanel(e)}openPanel(e,t){void 0===t&&(t=this.tabs.size),this.tabs.openPanel(e,t),this.updateClassnames()}closePanel(e){this.delete(e.id)}updateClassnames(){C(this._element,"dv-single-tab",1===this.size)}toggleDropdown(e){const t=e.reset?[]:e.tabs;if(this._overflowTabs=t,this._overflowTabs.length>0&&this.dropdownPart)return void this.dropdownPart.update({tabs:t.length});if(0===this._overflowTabs.length)return void this._dropdownDisposable.dispose();const i=document.createElement("div");i.className="dv-tabs-overflow-dropdown-root";const n=function(){const e=document.createElement("div");e.className="dv-tabs-overflow-dropdown-default";const t=document.createElement("span");t.textContent="";const i=We();return e.appendChild(i),e.appendChild(t),{element:e,update:e=>{t.textContent=`${e.tabs}`}}}();n.update({tabs:t.length}),this.dropdownPart=n,i.appendChild(n.element),this.rightActionsContainer.prepend(i),this._dropdownDisposable.value=new w(d.from((()=>{var e,t;i.remove(),null===(t=null===(e=this.dropdownPart)||void 0===e?void 0:e.dispose)||void 0===t||t.call(e),this.dropdownPart=null})),g(i,"pointerdown",(e=>{e.preventDefault()}),{capture:!0}),g(i,"click",(e=>{const t=document.createElement("div");t.style.overflow="auto",t.className="dv-tabs-overflow-container";for(const i of this.tabs.tabs.filter((e=>this._overflowTabs.includes(e.panel.id)))){const e=this.group.panels.find((e=>e===i.panel)),n=e.view.createTabRenderer("headerOverflow").element,s=document.createElement("div");C(s,"dv-tab",!0),C(s,"dv-active-tab",e.api.isActive),C(s,"dv-inactive-tab",!e.api.isActive),s.addEventListener("click",(e=>{this.accessor.popupService.close(),e.defaultPrevented||(i.element.scrollIntoView(),i.panel.api.setActive())})),s.appendChild(n),t.appendChild(s)}const n=function(e){let t=e;for(;t&&("auto"===t.style.zIndex||""===t.style.zIndex);)t=t.parentElement;return t}(i);this.accessor.popupService.openPopover(t,{x:e.clientX,y:e.clientY,zIndex:(null==n?void 0:n.style.zIndex)?`calc(${n.style.zIndex} * 2)`:void 0})})))}updateDragAndDropState(){this.tabs.updateDragAndDropState(),this.voidContainer.updateDragAndDropState()}}class Be extends c{constructor(e,t,i,n,s){super(),this.nativeEvent=e,this.target=t,this.position=i,this.getData=n,this.group=s}}const Fe=(()=>{const e={disableAutoResizing:void 0,hideBorders:void 0,singleTabMode:void 0,disableFloatingGroups:void 0,floatingGroupBounds:void 0,popoutUrl:void 0,defaultRenderer:void 0,debug:void 0,rootOverlayModel:void 0,locked:void 0,disableDnd:void 0,className:void 0,noPanelsOverlay:void 0,dndEdges:void 0,theme:void 0,disableTabsOverflowList:void 0,scrollbars:void 0};return Object.keys(e)})();class Ze extends p{get nativeEvent(){return this.options.nativeEvent}get position(){return this.options.position}get panel(){return this.options.panel}get group(){return this.options.group}get api(){return this.options.api}constructor(e){super(),this.options=e}getData(){return this.options.getData()}}class Je extends Ze{get kind(){return this._kind}constructor(e){super(e),this._kind=e.kind}}class Ue extends w{get element(){throw new Error("dockview: not supported")}get activePanel(){return this._activePanel}get locked(){return this._locked}set locked(e){this._locked=e,C(this.container,"dv-locked-groupview","no-drop-target"===e||e)}get isActive(){return this._isGroupActive}get panels(){return this._panels}get size(){return this._panels.length}get isEmpty(){return 0===this._panels.length}get hasWatermark(){return!(!this.watermark||!this.container.contains(this.watermark.element))}get header(){return this.tabsContainer}get isContentFocused(){return!!document.activeElement&&z(document.activeElement,this.contentContainer.element)}get location(){return this._location}set location(e){switch(this._location=e,C(this.container,"dv-groupview-floating",!1),C(this.container,"dv-groupview-popout",!1),e.type){case"grid":this.contentContainer.dropTarget.setTargetZones(["top","bottom","left","right","center"]);break;case"floating":this.contentContainer.dropTarget.setTargetZones(["center"]),this.contentContainer.dropTarget.setTargetZones(e?["center"]:["top","bottom","left","right","center"]),C(this.container,"dv-groupview-floating",!0);break;case"popout":this.contentContainer.dropTarget.setTargetZones(["center"]),C(this.container,"dv-groupview-popout",!0)}this.groupPanel.api._onDidLocationChange.fire({location:this.location})}constructor(e,t,i,n,s){var o;super(),this.container=e,this.accessor=t,this.id=i,this.options=n,this.groupPanel=s,this._isGroupActive=!1,this._locked=!1,this._location={type:"grid"},this.mostRecentlyUsed=[],this._overwriteRenderContainer=null,this._overwriteDropTargetContainer=null,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this._width=0,this._height=0,this._panels=[],this._panelDisposables=new Map,this._onMove=new v,this.onMove=this._onMove.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onTabDragStart=new v,this.onTabDragStart=this._onTabDragStart.event,this._onGroupDragStart=new v,this.onGroupDragStart=this._onGroupDragStart.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPanelTitleChange=new v,this.onDidPanelTitleChange=this._onDidPanelTitleChange.event,this._onDidPanelParametersChange=new v,this.onDidPanelParametersChange=this._onDidPanelParametersChange.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,C(this.container,"dv-groupview",!0),this._api=new me(this.accessor),this.tabsContainer=new je(this.accessor,this.groupPanel),this.contentContainer=new Ie(this.accessor,this),e.append(this.tabsContainer.element,this.contentContainer.element),this.header.hidden=!!n.hideHeader,this.locked=null!==(o=n.locked)&&void 0!==o&&o,this.addDisposables(this._onTabDragStart,this._onGroupDragStart,this._onWillShowOverlay,this.tabsContainer.onTabDragStart((e=>{this._onTabDragStart.fire(e)})),this.tabsContainer.onGroupDragStart((e=>{this._onGroupDragStart.fire(e)})),this.tabsContainer.onDrop((e=>{this.handleDropEvent("header",e.event,"center",e.index)})),this.contentContainer.onDidFocus((()=>{this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.onDidBlur((()=>{})),this.contentContainer.dropTarget.onDrop((e=>{this.handleDropEvent("content",e.nativeEvent,e.position)})),this.tabsContainer.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(e)})),this.contentContainer.dropTarget.onWillShowOverlay((e=>{this._onWillShowOverlay.fire(new Ve(e,{kind:"content",panel:this.activePanel,api:this._api,group:this.groupPanel,getData:a}))})),this._onMove,this._onDidChange,this._onDidDrop,this._onWillDrop,this._onDidAddPanel,this._onDidRemovePanel,this._onDidActivePanelChange,this._onUnhandledDragOverEvent,this._onDidPanelTitleChange,this._onDidPanelParametersChange)}focusContent(){this.contentContainer.element.focus()}set renderContainer(e){this.panels.forEach((e=>{this.renderContainer.detatch(e)})),this._overwriteRenderContainer=e,this.panels.forEach((e=>{this.rerender(e)}))}get renderContainer(){var e;return null!==(e=this._overwriteRenderContainer)&&void 0!==e?e:this.accessor.overlayRenderContainer}set dropTargetContainer(e){this._overwriteDropTargetContainer=e}get dropTargetContainer(){var e;return null!==(e=this._overwriteDropTargetContainer)&&void 0!==e?e:this.accessor.rootDropTargetContainer}initialize(){this.options.panels&&this.options.panels.forEach((e=>{this.doAddPanel(e)})),this.options.activePanel&&this.openPanel(this.options.activePanel),this.setActive(this.isActive,!0),this.updateContainer(),this.accessor.options.createRightHeaderActionComponent&&(this._rightHeaderActions=this.accessor.options.createRightHeaderActionComponent(this.groupPanel),this.addDisposables(this._rightHeaderActions),this._rightHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element)),this.accessor.options.createLeftHeaderActionComponent&&(this._leftHeaderActions=this.accessor.options.createLeftHeaderActionComponent(this.groupPanel),this.addDisposables(this._leftHeaderActions),this._leftHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element)),this.accessor.options.createPrefixHeaderActionComponent&&(this._prefixHeaderActions=this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel),this.addDisposables(this._prefixHeaderActions),this._prefixHeaderActions.init({containerApi:this._api,api:this.groupPanel.api,group:this.groupPanel}),this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element))}rerender(e){this.contentContainer.renderPanel(e,{asActive:!1})}indexOf(e){return this.tabsContainer.indexOf(e.id)}toJSON(){var e;const t={views:this.tabsContainer.panels,activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,id:this.id};return!1!==this.locked&&(t.locked=this.locked),this.header.hidden&&(t.hideHeader=!0),t}moveToNext(e){e||(e={}),e.panel||(e.panel=this.activePanel);const t=e.panel?this.panels.indexOf(e.panel):-1;let i;if(t0)i=t-1;else{if(e.suppressRoll)return;i=this.panels.length-1}this.openPanel(this.panels[i])}containsPanel(e){return this.panels.includes(e)}init(e){}update(e){}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}openPanel(e,t){void 0===t&&(t={}),("number"!=typeof t.index||t.index>this.panels.length)&&(t.index=this.panels.length);const i=!!t.skipSetActive;e.updateParentGroup(this.groupPanel,{skipSetActive:t.skipSetActive}),this.doAddPanel(e,t.index,{skipSetActive:i}),this._activePanel!==e?(i||this.doSetActivePanel(e),t.skipSetGroupActive||this.accessor.doSetGroupActive(this.groupPanel),t.skipSetActive||this.updateContainer()):this.contentContainer.renderPanel(e,{asActive:!0})}removePanel(e,t){void 0===t&&(t={skipSetActive:!1});const i="string"==typeof e?e:e.id,n=this._panels.find((e=>e.id===i));if(!n)throw new Error("invalid operation");return this._removePanel(n,t)}closeAllPanels(){if(this.panels.length>0){const e=[...this.panels];for(const t of e)this.doClose(t)}else this.accessor.removeGroup(this.groupPanel)}closePanel(e){this.doClose(e)}doClose(e){const t=1===this.panels.length&&1===this.accessor.groups.length;this.accessor.removePanel(e,t&&"emptyGroup"===this.accessor.options.noPanelsOverlay?{removeEmptyGroup:!1}:void 0)}isPanelActive(e){return this._activePanel===e}updateActions(e){this.tabsContainer.setRightActionsElement(e)}setActive(e,t){void 0===t&&(t=!1),(t||this.isActive!==e)&&(this._isGroupActive=e,C(this.container,"dv-active-group",e),C(this.container,"dv-inactive-group",!e),this.tabsContainer.setActive(this.isActive),!this._activePanel&&this.panels.length>0&&this.doSetActivePanel(this.panels[0]),this.updateContainer())}layout(e,t){var i;this._width=e,this._height=t,this.contentContainer.layout(this._width,this._height),(null===(i=this._activePanel)||void 0===i?void 0:i.layout)&&this._activePanel.layout(this._width,this._height)}_removePanel(e,t){const i=this._activePanel===e;if(this.doRemovePanel(e),i&&this.panels.length>0){const e=this.mostRecentlyUsed[0];this.openPanel(e,{skipSetActive:t.skipSetActive,skipSetGroupActive:t.skipSetActiveGroup})}return this._activePanel&&0===this.panels.length&&this.doSetActivePanel(void 0),t.skipSetActive||this.updateContainer(),e}doRemovePanel(e){const t=this.panels.indexOf(e);if(this._activePanel===e&&this.contentContainer.closePanel(),this.tabsContainer.delete(e.id),this._panels.splice(t,1),this.mostRecentlyUsed.includes(e)){const t=this.mostRecentlyUsed.indexOf(e);this.mostRecentlyUsed.splice(t,1)}const i=this._panelDisposables.get(e.id);i&&(i.dispose(),this._panelDisposables.delete(e.id)),this._onDidRemovePanel.fire({panel:e})}doAddPanel(e,t,i){void 0===t&&(t=this.panels.length),void 0===i&&(i={skipSetActive:!1});const n=this._panels.indexOf(e)>-1;this.tabsContainer.show(),this.contentContainer.show(),this.tabsContainer.openPanel(e,t),i.skipSetActive||this.contentContainer.openPanel(e),n||(this.updateMru(e),this.panels.splice(t,0,e),this._panelDisposables.set(e.id,new w(e.api.onDidTitleChange((e=>this._onDidPanelTitleChange.fire(e))),e.api.onDidParametersChange((e=>this._onDidPanelParametersChange.fire(e))))),this._onDidAddPanel.fire({panel:e}))}doSetActivePanel(e){this._activePanel!==e&&(this._activePanel=e,e&&(this.tabsContainer.setActivePanel(e),e.layout(this._width,this._height),this.updateMru(e),this._onDidActivePanelChange.fire({panel:e})))}updateMru(e){this.mostRecentlyUsed.includes(e)&&this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(e),1),this.mostRecentlyUsed=[e,...this.mostRecentlyUsed]}updateContainer(){var e,t;if(this.panels.forEach((e=>e.runEvents())),this.isEmpty&&!this.watermark){const e=this.accessor.createWatermarkComponent();e.init({containerApi:this._api,group:this.groupPanel}),this.watermark=e,g(this.watermark.element,"pointerdown",(()=>{this.isActive||this.accessor.doSetGroupActive(this.groupPanel)})),this.contentContainer.element.appendChild(this.watermark.element)}!this.isEmpty&&this.watermark&&(this.watermark.element.remove(),null===(t=(e=this.watermark).dispose)||void 0===t||t.call(e),this.watermark=void 0)}canDisplayOverlay(e,t,i){const n=new Be(e,i,t,a,this.accessor.getPanel(this.id));return this._onUnhandledDragOverEvent.fire(n),n.isAccepted}handleDropEvent(e,t,i,n){if("no-drop-target"===this.locked)return;const s="number"==typeof n?this.panels[n]:void 0,o=new Je({nativeEvent:t,position:i,panel:s,getData:()=>a(),kind:function(){switch(e){case"header":return"number"==typeof n?"tab":"header_space";case"content":return"content"}}(),group:this.groupPanel,api:this._api});if(this._onWillDrop.fire(o),o.defaultPrevented)return;const r=a();if(r&&r.viewId===this.accessor.id){if("content"===e&&r.groupId===this.id){if("center"===i)return;if(null===r.panelId)return}if("header"===e&&r.groupId===this.id&&null===r.panelId)return;if(null===r.panelId){const{groupId:e}=r;return void this._onMove.fire({target:i,groupId:e,index:n})}if(-1!==this.tabsContainer.indexOf(r.panelId)&&1===this.tabsContainer.size)return;const{groupId:t,panelId:s}=r;if(this.id===t&&!i){if(this.tabsContainer.indexOf(s)===n)return}this._onMove.fire({target:i,groupId:r.groupId,itemId:r.panelId,index:n})}else this._onDidDrop.fire(new Ze({nativeEvent:t,position:i,panel:s,getData:()=>a(),group:this.groupPanel,api:this._api}))}updateDragAndDropState(){this.tabsContainer.updateDragAndDropState()}dispose(){var e,t,i;super.dispose(),null===(e=this.watermark)||void 0===e||e.element.remove(),null===(i=null===(t=this.watermark)||void 0===t?void 0:t.dispose)||void 0===i||i.call(t),this.watermark=void 0;for(const n of this.panels)n.dispose();this.tabsContainer.dispose(),this.contentContainer.dispose()}}class $e extends ze{constructor(e,t,i){super(e,t),this._onDidConstraintsChangeInternal=new v,this.onDidConstraintsChangeInternal=this._onDidConstraintsChangeInternal.event,this._onDidConstraintsChange=new v,this.onDidConstraintsChange=this._onDidConstraintsChange.event,this._onDidSizeChange=new v,this.onDidSizeChange=this._onDidSizeChange.event,this.addDisposables(this._onDidConstraintsChangeInternal,this._onDidConstraintsChange,this._onDidSizeChange),i&&this.initialize(i)}setConstraints(e){this._onDidConstraintsChangeInternal.fire(e)}setSize(e){this._onDidSizeChange.fire(e)}}class Xe extends Ee{get priority(){return this._priority}get snap(){return this._snap}get minimumWidth(){return this.__minimumWidth()}get minimumHeight(){return this.__minimumHeight()}get maximumHeight(){return this.__maximumHeight()}get maximumWidth(){return this.__maximumWidth()}__minimumWidth(){const e="function"==typeof this._minimumWidth?this._minimumWidth():this._minimumWidth;return e!==this._evaluatedMinimumWidth&&(this._evaluatedMinimumWidth=e,this.updateConstraints()),e}__maximumWidth(){const e="function"==typeof this._maximumWidth?this._maximumWidth():this._maximumWidth;return e!==this._evaluatedMaximumWidth&&(this._evaluatedMaximumWidth=e,this.updateConstraints()),e}__minimumHeight(){const e="function"==typeof this._minimumHeight?this._minimumHeight():this._minimumHeight;return e!==this._evaluatedMinimumHeight&&(this._evaluatedMinimumHeight=e,this.updateConstraints()),e}__maximumHeight(){const e="function"==typeof this._maximumHeight?this._maximumHeight():this._maximumHeight;return e!==this._evaluatedMaximumHeight&&(this._evaluatedMaximumHeight=e,this.updateConstraints()),e}get isActive(){return this.api.isActive}get isVisible(){return this.api.isVisible}constructor(e,t,i,n){super(e,t,null!=n?n:new $e(e,t)),this._evaluatedMinimumWidth=0,this._evaluatedMaximumWidth=Number.MAX_SAFE_INTEGER,this._evaluatedMinimumHeight=0,this._evaluatedMaximumHeight=Number.MAX_SAFE_INTEGER,this._minimumWidth=0,this._minimumHeight=0,this._maximumWidth=Number.MAX_SAFE_INTEGER,this._maximumHeight=Number.MAX_SAFE_INTEGER,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,"number"==typeof(null==i?void 0:i.minimumWidth)&&(this._minimumWidth=i.minimumWidth),"number"==typeof(null==i?void 0:i.maximumWidth)&&(this._maximumWidth=i.maximumWidth),"number"==typeof(null==i?void 0:i.minimumHeight)&&(this._minimumHeight=i.minimumHeight),"number"==typeof(null==i?void 0:i.maximumHeight)&&(this._maximumHeight=i.maximumHeight),this.api.initialize(this),this.addDisposables(this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.doSetGroupActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumWidth&&"function"!=typeof e.minimumWidth||(this._minimumWidth=e.minimumWidth),"number"!=typeof e.minimumHeight&&"function"!=typeof e.minimumHeight||(this._minimumHeight=e.minimumHeight),"number"!=typeof e.maximumWidth&&"function"!=typeof e.maximumWidth||(this._maximumWidth=e.maximumWidth),"number"!=typeof e.maximumHeight&&"function"!=typeof e.maximumHeight||(this._maximumHeight=e.maximumHeight)})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({height:e.height,width:e.width})})),this._onDidChange)}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}init(e){e.maximumHeight&&(this._maximumHeight=e.maximumHeight),e.minimumHeight&&(this._minimumHeight=e.minimumHeight),e.maximumWidth&&(this._maximumWidth=e.maximumWidth),e.minimumWidth&&(this._minimumWidth=e.minimumWidth),this._priority=e.priority,this._snap=!!e.snap,super.init(e),"boolean"==typeof e.isVisible&&this.setVisible(e.isVisible)}updateConstraints(){this.api._onDidConstraintsChange.fire({minimumWidth:this._evaluatedMinimumWidth,maximumWidth:this._evaluatedMaximumWidth,minimumHeight:this._evaluatedMinimumHeight,maximumHeight:this._evaluatedMaximumHeight})}toJSON(){const e=super.toJSON(),t=e=>e===Number.MAX_SAFE_INTEGER?void 0:e,i=e=>e<=0?void 0:e;return Object.assign(Object.assign({},e),{minimumHeight:i(this.minimumHeight),maximumHeight:t(this.maximumHeight),minimumWidth:i(this.minimumWidth),maximumWidth:t(this.maximumWidth),snap:this.snap,priority:this.priority})}}const Ye="dockview: DockviewGroupPanelApiImpl not initialized";class qe extends $e{get location(){if(!this._group)throw new Error(Ye);return this._group.model.location}constructor(e,t){super(e,"__dockviewgroup__"),this.accessor=t,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this._onDidActivePanelChange=new v,this.onDidActivePanelChange=this._onDidActivePanelChange.event,this.addDisposables(this._onDidLocationChange,this._onDidActivePanelChange)}close(){if(this._group)return this.accessor.removeGroup(this._group)}getWindow(){return"popout"===this.location.type?this.location.getWindow():window}moveTo(e){var t,i,n,s;if(!this._group)throw new Error(Ye);const o=null!==(t=e.group)&&void 0!==t?t:this.accessor.addGroup({direction:we(null!==(i=e.position)&&void 0!==i?i:"right"),skipSetActive:null!==(n=e.skipSetActive)&&void 0!==n&&n});this.accessor.moveGroupOrPanel({from:{groupId:this._group.id},to:{group:o,position:e.group&&null!==(s=e.position)&&void 0!==s?s:"center",index:e.index},skipSetActive:e.skipSetActive})}maximize(){if(!this._group)throw new Error(Ye);"grid"===this.location.type&&this.accessor.maximizeGroup(this._group)}isMaximized(){if(!this._group)throw new Error(Ye);return this.accessor.isMaximizedGroup(this._group)}exitMaximized(){if(!this._group)throw new Error(Ye);this.isMaximized()&&this.accessor.exitMaximizedGroup()}initialize(e){this._group=e}}class Ke extends Xe{get minimumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumWidth;return"number"==typeof t?t:super.__minimumWidth()}get minimumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.minimumHeight;return"number"==typeof t?t:super.__minimumHeight()}get maximumWidth(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumWidth;return"number"==typeof t?t:super.__maximumWidth()}get maximumHeight(){var e;const t=null===(e=this.activePanel)||void 0===e?void 0:e.maximumHeight;return"number"==typeof t?t:super.__maximumHeight()}get panels(){return this._model.panels}get activePanel(){return this._model.activePanel}get size(){return this._model.size}get model(){return this._model}get locked(){return this._model.locked}set locked(e){this._model.locked=e}get header(){return this._model.header}constructor(e,t,i){var n,s,o,r,a,h;super(t,"groupview_default",{minimumHeight:null!==(s=null===(n=i.constraints)||void 0===n?void 0:n.minimumHeight)&&void 0!==s?s:100,minimumWidth:null!==(r=null===(o=i.constraints)||void 0===o?void 0:o.maximumHeight)&&void 0!==r?r:100,maximumHeight:null===(a=i.constraints)||void 0===a?void 0:a.maximumHeight,maximumWidth:null===(h=i.constraints)||void 0===h?void 0:h.maximumWidth},new qe(t,e)),this.api.initialize(this),this._model=new Ue(this.element,e,t,i,this),this.addDisposables(this.model.onDidActivePanelChange((e=>{this.api._onDidActivePanelChange.fire(e)})))}focus(){this.api.isActive||this.api.setActive(),super.focus()}initialize(){this._model.initialize()}setActive(e){super.setActive(e),this.model.setActive(e)}layout(e,t){super.layout(e,t),this.model.layout(e,t)}getComponent(){return this._model}toJSON(){return this.model.toJSON()}}const Qe={name:"dark",className:"dockview-theme-dark"},et={name:"light",className:"dockview-theme-light"},tt={name:"visualStudio",className:"dockview-theme-vs"},it={name:"abyss",className:"dockview-theme-abyss"},nt={name:"dracula",className:"dockview-theme-dracula"},st={name:"replit",className:"dockview-theme-replit",gap:10},ot={name:"abyssSpaced",className:"dockview-theme-abyss-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"},rt={name:"lightSpaced",className:"dockview-theme-light-spaced",gap:10,dndOverlayMounting:"absolute",dndPanelOverlay:"group"};class at extends $e{get location(){return this.group.api.location}get title(){return this.panel.title}get isGroupActive(){return this.group.isActive}get renderer(){return this.panel.renderer}set group(e){const t=this._group;this._group!==e&&(this._group=e,this._onDidGroupChange.fire({}),this.setupGroupEventListeners(t),this._onDidLocationChange.fire({location:this.group.api.location}))}get group(){return this._group}get tabComponent(){return this._tabComponent}constructor(e,t,i,n,s){super(e.id,n),this.panel=e,this.accessor=i,this._onDidTitleChange=new v,this.onDidTitleChange=this._onDidTitleChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._onDidGroupChange=new v,this.onDidGroupChange=this._onDidGroupChange.event,this._onDidRendererChange=new v,this.onDidRendererChange=this._onDidRendererChange.event,this._onDidLocationChange=new v,this.onDidLocationChange=this._onDidLocationChange.event,this.groupEventsDisposable=new _,this._tabComponent=s,this.initialize(e),this._group=t,this.setupGroupEventListeners(),this.addDisposables(this.groupEventsDisposable,this._onDidRendererChange,this._onDidTitleChange,this._onDidGroupChange,this._onDidActiveGroupChange,this._onDidLocationChange)}getWindow(){return this.group.api.getWindow()}moveTo(e){var t,i;this.accessor.moveGroupOrPanel({from:{groupId:this._group.id,panelId:this.panel.id},to:{group:null!==(t=e.group)&&void 0!==t?t:this._group,position:e.group&&null!==(i=e.position)&&void 0!==i?i:"center",index:e.index},skipSetActive:e.skipSetActive})}setTitle(e){this.panel.setTitle(e)}setRenderer(e){this.panel.setRenderer(e)}close(){this.group.model.closePanel(this.panel)}maximize(){this.group.api.maximize()}isMaximized(){return this.group.api.isMaximized()}exitMaximized(){this.group.api.exitMaximized()}setupGroupEventListeners(e){var t;let i=null!==(t=null==e?void 0:e.isActive)&&void 0!==t&&t;this.groupEventsDisposable.value=new w(this.group.api.onDidVisibilityChange((e=>{const t=!e.isVisible&&this.isVisible,i=e.isVisible&&!this.isVisible,n=this.group.model.isPanelActive(this.panel);(t||i&&n)&&this._onDidVisibilityChange.fire(e)})),this.group.api.onDidLocationChange((e=>{this.group===this.panel.group&&this._onDidLocationChange.fire(e)})),this.group.api.onDidActiveChange((()=>{this.group===this.panel.group&&i!==this.isGroupActive&&(i=this.isGroupActive,this._onDidActiveGroupChange.fire({isActive:this.isGroupActive}))})))}}class ht extends w{get params(){return this._params}get title(){return this._title}get group(){return this._group}get renderer(){var e;return null!==(e=this._renderer)&&void 0!==e?e:this.accessor.renderer}get minimumWidth(){return this._minimumWidth}get minimumHeight(){return this._minimumHeight}get maximumWidth(){return this._maximumWidth}get maximumHeight(){return this._maximumHeight}constructor(e,t,i,n,s,o,r,a){super(),this.id=e,this.accessor=n,this.containerApi=s,this.view=r,this._renderer=a.renderer,this._group=o,this._minimumWidth=a.minimumWidth,this._minimumHeight=a.minimumHeight,this._maximumWidth=a.maximumWidth,this._maximumHeight=a.maximumHeight,this.api=new at(this,this._group,n,t,i),this.addDisposables(this.api.onActiveChange((()=>{n.setActivePanel(this)})),this.api.onDidSizeChange((e=>{this.group.api.setSize(e)})),this.api.onDidRendererChange((()=>{this.group.model.rerender(this)})))}init(e){this._params=e.params,this.view.init(Object.assign(Object.assign({},e),{api:this.api,containerApi:this.containerApi})),this.setTitle(e.title)}focus(){const e=new Ce;this.api._onWillFocus.fire(e),e.defaultPrevented||this.api.isActive||this.api.setActive()}toJSON(){return{id:this.id,contentComponent:this.view.contentComponent,tabComponent:this.view.tabComponent,params:Object.keys(this._params||{}).length>0?this._params:void 0,title:this.title,renderer:this._renderer,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,minimumWidth:this._minimumWidth,maximumWidth:this._maximumWidth}}setTitle(e){e!==this.title&&(this._title=e,this.api._onDidTitleChange.fire({title:e}))}setRenderer(e){e!==this.renderer&&(this._renderer=e,this.api._onDidRendererChange.fire({renderer:e}))}update(e){var t;this._params=Object.assign(Object.assign({},null!==(t=this._params)&&void 0!==t?t:{}),e.params);for(const i of Object.keys(e.params))void 0===e.params[i]&&delete this._params[i];this.view.update({params:this._params})}updateParentGroup(e,t){this._group=e,this.api.group=this._group;const i=this._group.model.isPanelActive(this),n=this.group.api.isActive&&i;(null==t?void 0:t.skipSetActive)||this.api.isActive!==n&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&i}),this.api.isVisible!==i&&this.api._onDidVisibilityChange.fire({isVisible:i})}runEvents(){const e=this._group.model.isPanelActive(this),t=this.group.api.isActive&&e;this.api.isActive!==t&&this.api._onDidActiveChange.fire({isActive:this.group.api.isActive&&e}),this.api.isVisible!==e&&this.api._onDidVisibilityChange.fire({isVisible:e})}layout(e,t){this.api._onDidDimensionChange.fire({width:e,height:t}),this.view.layout(e,t)}dispose(){this.api.dispose(),this.view.dispose()}}class lt extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-default-tab",this._content=document.createElement("div"),this._content.className="dv-default-tab-content",this.action=document.createElement("div"),this.action.className="dv-default-tab-action",this.action.appendChild(He({width:"11",height:"11",viewbox:"0 0 28 28",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"})),this._element.appendChild(this._content),this._element.appendChild(this.action),this.render()}init(e){this._title=e.title,this.addDisposables(e.api.onDidTitleChange((e=>{this._title=e.title,this.render()})),g(this.action,"pointerdown",(e=>{e.preventDefault()})),g(this.action,"click",(t=>{t.defaultPrevented||(t.preventDefault(),e.api.close())}))),this.render()}render(){var e;this._content.textContent!==this._title&&(this._content.textContent=null!==(e=this._title)&&void 0!==e?e:"")}}class dt{get content(){return this._content}get tab(){return this._tab}constructor(e,t,i,n){this.accessor=e,this.id=t,this.contentComponent=i,this.tabComponent=n,this._content=this.createContentComponent(this.id,i),this._tab=this.createTabComponent(this.id,n)}createTabRenderer(e){var t;const i=this.createTabComponent(this.id,this.tabComponent);return this._params&&i.init(Object.assign(Object.assign({},this._params),{tabLocation:e})),this._updateEvent&&(null===(t=i.update)||void 0===t||t.call(i,this._updateEvent)),i}init(e){this._params=e,this.content.init(e),this.tab.init(Object.assign(Object.assign({},e),{tabLocation:"header"}))}layout(e,t){var i,n;null===(n=(i=this.content).layout)||void 0===n||n.call(i,e,t)}update(e){var t,i,n,s;this._updateEvent=e,null===(i=(t=this.content).update)||void 0===i||i.call(t,e),null===(s=(n=this.tab).update)||void 0===s||s.call(n,e)}dispose(){var e,t,i,n;null===(t=(e=this.content).dispose)||void 0===t||t.call(e),null===(n=(i=this.tab).dispose)||void 0===n||n.call(i)}createContentComponent(e,t){return this.accessor.options.createComponent({id:e,name:t})}createTabComponent(e,t){const i=null!=t?t:this.accessor.options.defaultTabComponent;if(i){if(this.accessor.options.createTabComponent){const t=this.accessor.options.createTabComponent({id:e,name:i});return t||new lt}console.warn(`dockview: tabComponent '${t}' was not found. falling back to the default tab.`)}return new lt}}class pt{constructor(e){this.accessor=e}fromJSON(e,t){var i,n;const s=e.id,o=e.params,r=e.title,a=e.view,h=a?a.content.id:null!==(i=e.contentComponent)&&void 0!==i?i:"unknown",l=a?null===(n=a.tab)||void 0===n?void 0:n.id:e.tabComponent,d=new dt(this.accessor,s,h,l),p=new ht(s,h,l,this.accessor,new me(this.accessor),t,d,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return p.init({title:null!=r?r:s,params:null!=o?o:{}}),p}}class ct extends w{get element(){return this._element}constructor(){super(),this._element=document.createElement("div"),this._element.className="dv-watermark"}init(e){}}const mt=new class{constructor(){this._orderedList=[]}push(e){this._orderedList=[...this._orderedList.filter((t=>t!==e)),e],this.update()}destroy(e){this._orderedList=this._orderedList.filter((t=>t!==e)),this.update()}update(){for(let e=0;e{let e=null;const t=I();i.value=new w({dispose:()=>{t.release()}},g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),n=t.clientX-i.left,s=t.clientY-i.top;C(this._element,"dv-resize-container-dragging",!0);const o=this._element.getBoundingClientRect();null===e&&(e={x:t.clientX-o.left,y:t.clientY-o.top});const r=Math.max(0,this.getMinimumWidth(o.width)),a=Math.max(0,this.getMinimumHeight(o.height)),h=T(s-e.y,-a,Math.max(0,i.height-o.height+a)),l=T(e.y-s+i.height-o.height,-a,Math.max(0,i.height-o.height+a)),d=T(n-e.x,-r,Math.max(0,i.width-o.width+r)),p=T(e.x-n+i.width-o.width,-r,Math.max(0,i.width-o.width+r)),c={};h<=l?c.top=h:c.bottom=l,d<=p?c.left=d:c.right=p,this.setBounds(c)})),g(window,"pointerup",(()=>{C(this._element,"dv-resize-container-dragging",!1),i.dispose(),this._onDidChangeEnd.fire()})))};this.addDisposables(i,g(e,"pointerdown",(e=>{e.defaultPrevented?e.preventDefault():P(e)||n()})),g(this.options.content,"pointerdown",(e=>{e.defaultPrevented||P(e)||e.shiftKey&&n()})),g(this.options.content,"pointerdown",(()=>{mt.push(this._element)}),!0)),t.inDragMode&&n()}setupResize(e){const t=document.createElement("div");t.className=`dv-resize-handle-${e}`,this._element.appendChild(t);const i=new _;this.addDisposables(i,g(t,"pointerdown",(t=>{t.preventDefault();let n=null;const s=I();i.value=new w(g(window,"pointermove",(t=>{const i=this.options.container.getBoundingClientRect(),s=this._element.getBoundingClientRect(),o=t.clientY-i.top,r=t.clientX-i.left;let a,h,l,d,p,c;null===n&&(n={originalY:o,originalHeight:s.height,originalX:r,originalWidth:s.width});const m=()=>{a=T(o,-Number.MAX_VALUE,n.originalY+n.originalHeight>i.height?this.getMinimumHeight(i.height):Math.max(0,n.originalY+n.originalHeight-ut.MINIMUM_HEIGHT)),l=n.originalY+n.originalHeight-a,h=i.height-a-l},u=()=>{a=n.originalY-n.originalHeight,l=T(o-a,a<0&&"number"==typeof this.options.minimumInViewportHeight?-a+this.options.minimumInViewportHeight:ut.MINIMUM_HEIGHT,Number.MAX_VALUE),h=i.height-a-l},v=()=>{d=T(r,-Number.MAX_VALUE,n.originalX+n.originalWidth>i.width?this.getMinimumWidth(i.width):Math.max(0,n.originalX+n.originalWidth-ut.MINIMUM_WIDTH)),c=n.originalX+n.originalWidth-d,p=i.width-d-c},g=()=>{d=n.originalX-n.originalWidth,c=T(r-d,d<0&&"number"==typeof this.options.minimumInViewportWidth?-d+this.options.minimumInViewportWidth:ut.MINIMUM_WIDTH,Number.MAX_VALUE),p=i.width-d-c};switch(e){case"top":m();break;case"bottom":u();break;case"left":v();break;case"right":g();break;case"topleft":m(),v();break;case"topright":m(),g();break;case"bottomleft":u(),v();break;case"bottomright":u(),g()}const f={};a<=h?f.top=a:f.bottom=h,d<=p?f.left=d:f.right=p,f.height=l,f.width=c,this.setBounds(f)})),{dispose:()=>{s.release()}},g(window,"pointerup",(()=>{i.dispose(),this._onDidChangeEnd.fire()})))})))}getMinimumWidth(e){return"number"==typeof this.options.minimumInViewportWidth?e-this.options.minimumInViewportWidth:0}getMinimumHeight(e){return"number"==typeof this.options.minimumInViewportHeight?e-this.options.minimumInViewportHeight:0}dispose(){mt.destroy(this._element),this._element.remove(),super.dispose()}}ut.MINIMUM_HEIGHT=20,ut.MINIMUM_WIDTH=20;class vt extends w{constructor(e,t){super(),this.group=e,this.overlay=t,this.addDisposables(t)}position(e){this.overlay.setBounds(e)}}const gt=100,ft=100,wt=100,_t=300,Dt=300;class bt{constructor(){this.cache=new Map,this.currentFrameId=0,this.rafId=null}getPosition(e){const t=this.cache.get(e);if(t&&t.frameId===this.currentFrameId)return t.rect;this.scheduleFrameUpdate();const i=O(e);return this.cache.set(e,{rect:i,frameId:this.currentFrameId}),i}invalidate(){this.currentFrameId++}scheduleFrameUpdate(){this.rafId||(this.rafId=requestAnimationFrame((()=>{this.currentFrameId++,this.rafId=null})))}}class yt extends w{constructor(e,t){super(),this.element=e,this.accessor=t,this.map={},this._disposed=!1,this.positionCache=new bt,this.pendingUpdates=new Set,this.addDisposables(d.from((()=>{for(const e of Object.values(this.map))e.disposable.dispose(),e.destroy.dispose();this._disposed=!0})))}updateAllPositions(){if(!this._disposed){this.positionCache.invalidate();for(const e of Object.values(this.map))e.panel.api.isVisible&&e.resize&&e.resize()}}detatch(e){if(this.map[e.api.id]){const{disposable:t,destroy:i}=this.map[e.api.id];return t.dispose(),i.dispose(),delete this.map[e.api.id],!0}return!1}attach(e){const{panel:t,referenceContainer:i}=e;if(!this.map[t.api.id]){const e=function(){const e=document.createElement("div");return e.tabIndex=-1,e}();e.className="dv-render-overlay",this.map[t.api.id]={panel:t,disposable:d.NONE,destroy:d.NONE,element:e}}const n=this.map[t.api.id].element;t.view.content.element.parentElement!==n&&n.appendChild(t.view.content.element),n.parentElement!==this.element&&this.element.appendChild(n);const s=()=>{const e=t.api.id;this.pendingUpdates.has(e)||(this.pendingUpdates.add(e),requestAnimationFrame((()=>{if(this.pendingUpdates.delete(e),this.isDisposed||!this.map[e])return;const s=this.positionCache.getPosition(i.element),o=this.positionCache.getPosition(this.element),r=s.left-o.left,a=s.top-o.top,h=s.width,l=s.height;n.style.left=`${r}px`,n.style.top=`${a}px`,n.style.width=`${h}px`,n.style.height=`${l}px`,C(n,"dv-render-overlay-float","floating"===t.group.api.location.type)})))},o=()=>{t.api.isVisible&&(this.positionCache.invalidate(),s()),n.style.display=t.api.isVisible?"":"none"},r=new _,a=()=>{"floating"===t.api.location.type?queueMicrotask((()=>{const e=this.accessor.floatingGroups.find((e=>e.group===t.api.group));if(!e)return;const i=e.overlay.element,s=()=>{const e=Number(i.getAttribute("aria-level"));n.style.zIndex=`calc(var(--dv-overlay-z-index, 999) + ${2*e+1})`},o=new MutationObserver((()=>{s()}));r.value=d.from((()=>o.disconnect())),o.observe(i,{attributeFilter:["aria-level"],attributes:!0}),s()})):n.style.zIndex=""},h=new w(r,new ve(n,{onDragEnd:e=>{i.dropTarget.dnd.onDragEnd(e)},onDragEnter:e=>{i.dropTarget.dnd.onDragEnter(e)},onDragLeave:e=>{i.dropTarget.dnd.onDragLeave(e)},onDrop:e=>{i.dropTarget.dnd.onDrop(e)},onDragOver:e=>{i.dropTarget.dnd.onDragOver(e)}}),t.api.onDidVisibilityChange((()=>{o()})),t.api.onDidDimensionsChange((()=>{t.api.isVisible&&s()})),t.api.onDidLocationChange((()=>{a()})));return this.map[t.api.id].destroy=d.from((()=>{var e;t.view.content.element.parentElement===n&&n.removeChild(t.view.content.element),null===(e=n.parentElement)||void 0===e||e.removeChild(n)})),a(),queueMicrotask((()=>{this.isDisposed||o()})),this.map[t.api.id].disposable.dispose(),this.map[t.api.id].disposable=h,this.map[t.api.id].resize=s,n}}var xt=function(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{h(n.next(e))}catch(t){o(t)}}function a(e){try{h(n.throw(e))}catch(t){o(t)}}function h(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}h((n=n.apply(e,t||[])).next())}))};class Ct extends w{get window(){var e,t;return null!==(t=null===(e=this._window)||void 0===e?void 0:e.value)&&void 0!==t?t:null}constructor(e,t,i){super(),this.target=e,this.className=t,this.options=i,this._onWillClose=new v,this.onWillClose=this._onWillClose.event,this._onDidClose=new v,this.onDidClose=this._onDidClose.event,this._window=null,this.addDisposables(this._onWillClose,this._onDidClose,{dispose:()=>{this.close()}})}dimensions(){if(!this._window)return null;const e=this._window.value.screenX;return{top:this._window.value.screenY,left:e,width:this._window.value.innerWidth,height:this._window.value.innerHeight}}close(){var e,t;this._window&&(this._onWillClose.fire(),null===(t=(e=this.options).onWillClose)||void 0===t||t.call(e,{id:this.target,window:this._window.value}),this._window.disposable.dispose(),this._window=null,this._onDidClose.fire())}open(){var e,t;return xt(this,void 0,void 0,(function*(){if(this._window)throw new Error("instance of popout window is already open");const i=`${this.options.url}`,n=Object.entries({top:this.options.top,left:this.options.left,width:this.options.width,height:this.options.height}).map((e=>{let[t,i]=e;return`${t}=${i}`})).join(","),s=window.open(i,this.target,n);if(!s)return null;const o=new w;this._window={value:s,disposable:o},o.addDisposables(d.from((()=>{s.close()})),g(window,"beforeunload",(()=>{this.close()})));const r=this.createPopoutWindowContainer();return this.className&&r.classList.add(this.className),null===(t=(e=this.options).onDidOpen)||void 0===t||t.call(e,{id:this.target,window:s}),new Promise(((e,t)=>{s.addEventListener("unload",(e=>{})),s.addEventListener("load",(()=>{try{const t=s.document;t.title=document.title,t.body.appendChild(r),function(e,t){const i=Array.from(t);for(const s of i){if(s.href){const t=e.createElement("link");t.href=s.href,t.type=s.type,t.rel="stylesheet",e.head.appendChild(t)}let t=[];try{s.cssRules&&(t=Array.from(s.cssRules).map((e=>e.cssText)))}catch(n){}for(const i of t){const t=e.createElement("style");t.appendChild(e.createTextNode(i)),e.head.appendChild(t)}}}(t,window.document.styleSheets),g(s,"beforeunload",(()=>{this.close()})),e(r)}catch(i){t(i)}}))}))}))}createPopoutWindowContainer(){const e=document.createElement("div");return e.classList.add("dv-popout-window"),e.id="dv-popout-window",e.style.position="absolute",e.style.width="100%",e.style.height="100%",e.style.top="0px",e.style.left="0px",e}}class zt extends w{constructor(e){super(),this.accessor=e,this.init()}init(){const e=new Set,t=new Set;this.addDisposables(this.accessor.onDidAddPanel((t=>{if(e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${t.api.id} but panel already exists`);e.add(t.api.id)})),this.accessor.onDidRemovePanel((t=>{if(!e.has(t.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${t.api.id} but panel does not exists`);e.delete(t.api.id)})),this.accessor.onDidAddGroup((e=>{if(t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${e.api.id} but group already exists`);t.add(e.api.id)})),this.accessor.onDidRemoveGroup((e=>{if(!t.has(e.api.id))throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${e.api.id} but group does not exists`);t.delete(e.api.id)})))}}class St extends w{constructor(e){super(),this.root=e,this._active=null,this._activeDisposable=new _,this._element=document.createElement("div"),this._element.className="dv-popover-anchor",this._element.style.position="relative",this.root.prepend(this._element),this.addDisposables(d.from((()=>{this.close()})),this._activeDisposable)}openPopover(e,t){var i;this.close();const n=document.createElement("div");n.style.position="absolute",n.style.zIndex=null!==(i=t.zIndex)&&void 0!==i?i:"var(--dv-overlay-z-index)",n.appendChild(e);const s=this._element.getBoundingClientRect(),o=s.left,r=s.top;n.style.top=t.y-r+"px",n.style.left=t.x-o+"px",this._element.appendChild(n),this._active=n,this._activeDisposable.value=new w(g(window,"pointerdown",(e=>{var t;const i=e.target;if(!(i instanceof HTMLElement))return;let s=i;for(;s&&s!==n;)s=null!==(t=null==s?void 0:s.parentElement)&&void 0!==t?t:null;s||this.close()}))),requestAnimationFrame((()=>{!function(e,t,i){void 0===i&&(i={buffer:10});const n=i.buffer,s=e.getBoundingClientRect(),o=t.getBoundingClientRect();let r=0,a=0;const h=s.left-o.left,l=s.top-o.top,d=s.bottom-o.bottom,p=s.right-o.right;hn&&(r=-n-p),ln&&(a=-d-n),0===r&&0===a||(e.style.transform=`translate(${r}px, ${a}px)`)}(n,this.root)}))}close(){this._active&&(this._active.remove(),this._activeDisposable.dispose(),this._active=null)}}class At extends w{get disabled(){return this._disabled}set disabled(e){var t;this.disabled!==e&&(this._disabled=e,e&&(null===(t=this.model)||void 0===t||t.clear()))}get model(){if(!this.disabled)return{clear:()=>{var e;this._model&&(null===(e=this._model.root.parentElement)||void 0===e||e.removeChild(this._model.root)),this._model=void 0},exists:()=>!!this._model,getElements:(e,t)=>{const i=this._outline!==t;if(this._outline=t,this._model)return this._model.changed=i,this._model;const n=this.createContainer(),s=this.createAnchor();if(this._model={root:n,overlay:s,changed:i},n.appendChild(s),this.element.appendChild(n),(null==e?void 0:e.target)instanceof HTMLElement){const t=e.target.getBoundingClientRect(),i=this.element.getBoundingClientRect();s.style.left=t.left-i.left+"px",s.style.top=t.top-i.top+"px"}return this._model}}}constructor(e,t){super(),this.element=e,this._disabled=!1,this._disabled=t.disabled,this.addDisposables(d.from((()=>{var e;null===(e=this.model)||void 0===e||e.clear()})))}createContainer(){const e=document.createElement("div");return e.className="dv-drop-target-container",e}createAnchor(){const e=document.createElement("div");return e.className="dv-drop-target-anchor",e.style.visibility="hidden",e}}const Et={activationSize:{type:"pixels",value:10},size:{type:"pixels",value:20}};function Pt(e){const t=e.from.activePanel;[...e.from.panels].map((t=>{const i=e.from.model.removePanel(t);return e.from.model.renderContainer.detatch(t),i})).forEach((i=>{e.to.model.openPanel(i,{skipSetActive:t!==i,skipSetGroupActive:!0})}))}class Ot extends le{get orientation(){return this.gridview.orientation}get totalPanels(){return this.panels.length}get panels(){return this.groups.flatMap((e=>e.panels))}get options(){return this._options}get activePanel(){const e=this.activeGroup;if(e)return e.activePanel}get renderer(){var e;return null!==(e=this.options.defaultRenderer)&&void 0!==e?e:"onlyWhenVisible"}get api(){return this._api}get floatingGroups(){return this._floatingGroups}get popoutRestorationPromise(){return this._popoutRestorationPromise}constructor(e,t){var i,n,s;super(e,{proportionalLayout:!0,orientation:j.HORIZONTAL,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,locked:t.locked,margin:null!==(n=null===(i=t.theme)||void 0===i?void 0:i.gap)&&void 0!==n?n:0,className:t.className}),this.nextGroupId=R(),this._deserializer=new pt(this),this._watermark=null,this._onWillDragPanel=new v,this.onWillDragPanel=this._onWillDragPanel.event,this._onWillDragGroup=new v,this.onWillDragGroup=this._onWillDragGroup.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onWillDrop=new v,this.onWillDrop=this._onWillDrop.event,this._onWillShowOverlay=new v,this.onWillShowOverlay=this._onWillShowOverlay.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this._onDidRemovePanel=new v,this.onDidRemovePanel=this._onDidRemovePanel.event,this._onDidAddPanel=new v,this.onDidAddPanel=this._onDidAddPanel.event,this._onDidPopoutGroupSizeChange=new v,this.onDidPopoutGroupSizeChange=this._onDidPopoutGroupSizeChange.event,this._onDidPopoutGroupPositionChange=new v,this.onDidPopoutGroupPositionChange=this._onDidPopoutGroupPositionChange.event,this._onDidOpenPopoutWindowFail=new v,this.onDidOpenPopoutWindowFail=this._onDidOpenPopoutWindowFail.event,this._onDidLayoutFromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutFromJSON.event,this._onDidActivePanelChange=new v({replay:!0}),this.onDidActivePanelChange=this._onDidActivePanelChange.event,this._onDidMovePanel=new v,this.onDidMovePanel=this._onDidMovePanel.event,this._onDidMaximizedGroupChange=new v,this.onDidMaximizedGroupChange=this._onDidMaximizedGroupChange.event,this._floatingGroups=[],this._popoutGroups=[],this._popoutRestorationPromise=Promise.resolve(),this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidOptionsChange=new v,this.onDidOptionsChange=this._onDidOptionsChange.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._moving=!1,this._options=t,this.popupService=new St(this.element),this._themeClassnames=new G(this.element),this._api=new me(this),this.rootDropTargetContainer=new At(this.element,{disabled:!0}),this.overlayRenderContainer=new yt(this.gridview.element,this),this._rootDropTarget=new be(this.element,{className:"dv-drop-target-edge",canDisplayOverlay:(e,t)=>{const i=a();if(i)return i.viewId===this.id&&("center"!==t||0===this.gridview.length);if("center"===t&&0!==this.gridview.length)return!1;const n=new Be(e,"edge",t,a);return this._onUnhandledDragOverEvent.fire(n),n.isAccepted},acceptedTargetZones:["top","bottom","left","right","center"],overlayModel:null!==(s=t.rootOverlayModel)&&void 0!==s?s:Et,getOverrideTarget:()=>{var e;return null===(e=this.rootDropTargetContainer)||void 0===e?void 0:e.model}}),this.updateDropTargetModel(t),C(this.gridview.element,"dv-dockview",!0),C(this.element,"dv-debug",!!t.debug),this.updateTheme(),this.updateWatermark(),t.debug&&this.addDisposables(new zt(this)),this.addDisposables(this.rootDropTargetContainer,this.overlayRenderContainer,this._onWillDragPanel,this._onWillDragGroup,this._onWillShowOverlay,this._onDidActivePanelChange,this._onDidAddPanel,this._onDidRemovePanel,this._onDidLayoutFromJSON,this._onDidDrop,this._onWillDrop,this._onDidMovePanel,this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this._onUnhandledDragOverEvent,this._onDidMaximizedGroupChange,this._onDidOptionsChange,this._onDidPopoutGroupSizeChange,this._onDidPopoutGroupPositionChange,this._onDidOpenPopoutWindowFail,this.onDidViewVisibilityChangeMicroTaskQueue((()=>{this.updateWatermark()})),this.onDidAdd((e=>{this._moving||this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._moving||this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._moving||this._onDidActiveGroupChange.fire(e)})),this.onDidMaximizedChange((e=>{this._onDidMaximizedGroupChange.fire({group:e.panel,isMaximized:e.isMaximized})})),l.any(this.onDidAdd,this.onDidRemove)((()=>{this.updateWatermark()})),l.any(this.onDidAddPanel,this.onDidRemovePanel,this.onDidAddGroup,this.onDidRemove,this.onDidMovePanel,this.onDidActivePanelChange,this.onDidPopoutGroupPositionChange,this.onDidPopoutGroupSizeChange)((()=>{this._bufferOnDidLayoutChange.fire()})),d.from((()=>{for(const e of[...this._floatingGroups])e.dispose();for(const e of[...this._popoutGroups])e.disposable.dispose()})),this._rootDropTarget,this._rootDropTarget.onWillShowOverlay((e=>{this.gridview.length>0&&"center"===e.position||this._onWillShowOverlay.fire(new Ve(e,{kind:"edge",panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget.onDrop((e=>{var t;const i=new Je({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a,kind:"edge"});if(this._onWillDrop.fire(i),i.defaultPrevented)return;const n=a();n?this.moveGroupOrPanel({from:{groupId:n.groupId,panelId:null!==(t=n.panelId)&&void 0!==t?t:void 0},to:{group:this.orthogonalize(e.position),position:"center"}}):this._onDidDrop.fire(new Ze({nativeEvent:e.nativeEvent,position:e.position,panel:void 0,api:this._api,group:void 0,getData:a}))})),this._rootDropTarget)}setVisible(e,t){switch(e.api.location.type){case"grid":super.setVisible(e,t);break;case"floating":{const i=this.floatingGroups.find((t=>t.group===e));i&&(i.overlay.setVisible(t),e.api._onDidVisibilityChange.fire({isVisible:t}));break}case"popout":console.warn("dockview: You cannot hide a group that is in a popout window")}}addPopoutGroup(e,t){var i,n,s,o,r;if(e instanceof ht&&1===e.group.size)return this.addPopoutGroup(e.group,t);const a=function(e){function t(e){const t=[];for(let i=0;ie.startsWith("dockview-theme-"))),"string"!=typeof i);)n=n.parentElement;return i}(this.gridview.element),h=this.element;const l=(null==t?void 0:t.position)?t.position:e instanceof Ke?e.element.getBoundingClientRect():e.group?e.group.element.getBoundingClientRect():h.getBoundingClientRect(),p=null!==(n=null===(i=null==t?void 0:t.overridePopoutGroup)||void 0===i?void 0:i.id)&&void 0!==n?n:this.getNextGroupId(),c=new Ct(`${this.id}-${p}`,null!=a?a:"",{url:null!==(r=null!==(s=null==t?void 0:t.popoutUrl)&&void 0!==s?s:null===(o=this.options)||void 0===o?void 0:o.popoutUrl)&&void 0!==r?r:"/popout.html",left:window.screenX+l.left,top:window.screenY+l.top,width:l.width,height:l.height,onDidOpen:null==t?void 0:t.onDidOpen,onWillClose:null==t?void 0:t.onWillClose}),m=new w(c,c.onDidClose((()=>{m.dispose()})));return c.open().then((i=>{var n;if(c.isDisposed)return!1;const s=(null==t?void 0:t.referenceGroup)?t.referenceGroup:e instanceof ht?e.group:e,o=e.api.location.type,r=null!==s.element.parentElement;let a;if(r?(null==t?void 0:t.overridePopoutGroup)?a=t.overridePopoutGroup:(a=this.createGroup({id:p}),i&&this._onDidAddGroup.fire(a)):a=s,null===i)return console.error("dockview: failed to create popout. perhaps you need to allow pop-ups for this website"),m.dispose(),this._onDidOpenPopoutWindowFail.fire(),this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),!1;const h=document.createElement("div");h.className="dv-overlay-render-container";const l=new yt(h,this);let u;if(a.model.renderContainer=l,a.layout(c.window.innerWidth,c.window.innerHeight),!(null==t?void 0:t.overridePopoutGroup)&&r)if(e instanceof ht)this.movingLock((()=>{const t=s.model.removePanel(e);a.model.openPanel(t)}));else switch(this.movingLock((()=>Pt({from:s,to:a}))),o){case"grid":s.api.setVisible(!1);break;case"floating":case"popout":u=null===(n=this._floatingGroups.find((t=>t.group.api.id===e.api.id)))||void 0===n?void 0:n.overlay.toJSON(),this.removeGroup(s)}i.classList.add("dv-dockview"),i.style.overflow="hidden",i.appendChild(h),i.appendChild(a.element);const f=document.createElement("div"),_=new At(f,{disabled:this.rootDropTargetContainer.disabled});let D;i.appendChild(f),a.model.dropTargetContainer=_,a.model.location={type:"popout",getWindow:()=>c.window,popoutUrl:null==t?void 0:t.popoutUrl},r&&"grid"===e.api.location.type&&e.api.setVisible(!1),this.doSetGroupAndPanelActive(a),m.addDisposables(a.api.onDidActiveChange((e=>{var t;e.isActive&&(null===(t=c.window)||void 0===t||t.focus())})),a.api.onWillFocus((()=>{var e;null===(e=c.window)||void 0===e||e.focus()})));const b=r&&s&&this.getPanel(s.id),y={window:c,popoutGroup:a,referenceGroup:b?s.id:void 0,disposable:{dispose:()=>(m.dispose(),D)}},x=function(e){const t=new v;let i,n=e.screenX,s=e.screenY;const o=()=>{if(e.closed)return;const r=e.screenX,a=e.screenY;r===n&&a===s||(clearTimeout(i),i=setTimeout((()=>{t.fire()}),100),n=r,s=a),requestAnimationFrame(o)};return o(),t}(c.window);return m.addDisposables(x,function(e,t){let i;return new w(g(e,"resize",(()=>{clearTimeout(i),i=setTimeout((()=>{t()}),100)})))}(c.window,(()=>{this._onDidPopoutGroupSizeChange.fire({width:c.window.innerWidth,height:c.window.innerHeight,group:a})})),x.event((()=>{this._onDidPopoutGroupPositionChange.fire({screenX:c.window.screenX,screenY:c.window.screenX,group:a})})),g(c.window,"resize",(()=>{a.layout(c.window.innerWidth,c.window.innerHeight)})),l,d.from((()=>{if(!this.isDisposed)if(r&&this.getPanel(s.id))this.movingLock((()=>Pt({from:a,to:s}))),s.api.isVisible||s.api.setVisible(!0),this.getPanel(a.id)&&this.doRemoveGroup(a,{skipPopoutAssociated:!0});else if(this.getPanel(a.id)){a.model.renderContainer=this.overlayRenderContainer,a.model.dropTargetContainer=this.rootDropTargetContainer,D=a;if(!this._popoutGroups.find((e=>e.popoutGroup===a)))return;u?this.addFloatingGroup(a,{height:u.height,width:u.width,position:u}):(this.doRemoveGroup(a,{skipDispose:!0,skipActive:!0,skipPopoutReturn:!0}),a.model.location={type:"grid"},this.movingLock((()=>{this.doAddGroup(a,[0])}))),this.doSetGroupAndPanelActive(a)}}))),this._popoutGroups.push(y),this.updateWatermark(),!0})).catch((e=>(console.error("dockview: failed to create popout.",e),!1)))}addFloatingGroup(e,t){var i,n,s,o,r;let a;if(e instanceof ht)a=this.createGroup(),this._onDidAddGroup.fire(a),this.movingLock((()=>this.removePanel(e,{removeEmptyGroup:!0,skipDispose:!0,skipSetActiveGroup:!0}))),this.movingLock((()=>a.model.openPanel(e,{skipSetGroupActive:!0})));else{a=e;const n=null===(i=this._popoutGroups.find((e=>e.popoutGroup===a)))||void 0===i?void 0:i.referenceGroup,s=n?this.getPanel(n):void 0;"boolean"==typeof(null==t?void 0:t.skipRemoveGroup)&&t.skipRemoveGroup||(s?(this.movingLock((()=>Pt({from:e,to:s}))),this.doRemoveGroup(e,{skipPopoutReturn:!0,skipPopoutAssociated:!0}),this.doRemoveGroup(s,{skipDispose:!0}),a=s):this.doRemoveGroup(e,{skipDispose:!0,skipPopoutReturn:!0,skipPopoutAssociated:!1}))}const h=function(){if(null==t?void 0:t.position){const e={};return"left"in t.position?e.left=Math.max(t.position.left,0):"right"in t.position?e.right=Math.max(t.position.right,0):e.left=ft,"top"in t.position?e.top=Math.max(t.position.top,0):"bottom"in t.position?e.bottom=Math.max(t.position.bottom,0):e.top=wt,"number"==typeof t.width?e.width=Math.max(t.width,0):e.width=_t,"number"==typeof t.height?e.height=Math.max(t.height,0):e.height=Dt,e}return{left:"number"==typeof(null==t?void 0:t.x)?Math.max(t.x,0):ft,top:"number"==typeof(null==t?void 0:t.y)?Math.max(t.y,0):wt,width:"number"==typeof(null==t?void 0:t.width)?Math.max(t.width,0):_t,height:"number"==typeof(null==t?void 0:t.height)?Math.max(t.height,0):Dt}}(),l=new ut(Object.assign(Object.assign({container:this.gridview.element,content:a.element},h),{minimumInViewportWidth:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(s=null===(n=this.options.floatingGroupBounds)||void 0===n?void 0:n.minimumWidthWithinViewport)&&void 0!==s?s:gt,minimumInViewportHeight:"boundedWithinViewport"===this.options.floatingGroupBounds?void 0:null!==(r=null===(o=this.options.floatingGroupBounds)||void 0===o?void 0:o.minimumHeightWithinViewport)&&void 0!==r?r:gt})),d=a.element.querySelector(".dv-void-container");if(!d)throw new Error("failed to find drag handle");l.setupDrag(d,{inDragMode:"boolean"==typeof(null==t?void 0:t.inDragMode)&&t.inDragMode});const p=new vt(a,l),c=new w(a.api.onDidActiveChange((e=>{e.isActive&&l.bringToFront()})),b(a.element,(e=>{const{width:t,height:i}=e.contentRect;a.layout(t,i)})));p.addDisposables(l.onDidChange((()=>{a.layout(a.width,a.height)})),l.onDidChangeEnd((()=>{this._bufferOnDidLayoutChange.fire()})),a.onDidChange((e=>{l.setBounds({height:null==e?void 0:e.height,width:null==e?void 0:e.width})})),{dispose:()=>{c.dispose(),L(this._floatingGroups,p),a.model.location={type:"grid"},this.updateWatermark()}}),this._floatingGroups.push(p),a.model.location={type:"floating"},(null==t?void 0:t.skipActiveGroup)||this.doSetGroupAndPanelActive(a),this.updateWatermark()}orthogonalize(e,t){switch(this.gridview.normalize(),e){case"top":case"bottom":this.gridview.orientation===j.HORIZONTAL&&this.gridview.insertOrthogonalSplitviewAtRoot();break;case"left":case"right":this.gridview.orientation===j.VERTICAL&&this.gridview.insertOrthogonalSplitviewAtRoot()}switch(e){case"top":case"left":case"center":return this.createGroupAtLocation([0],void 0,t);case"bottom":case"right":return this.createGroupAtLocation([this.gridview.length],void 0,t);default:throw new Error(`unsupported position ${e}`)}}updateOptions(e){var t,i;if(super.updateOptions(e),"floatingGroupBounds"in e)for(const s of this._floatingGroups){switch(e.floatingGroupBounds){case"boundedWithinViewport":s.overlay.minimumInViewportHeight=void 0,s.overlay.minimumInViewportWidth=void 0;break;case void 0:s.overlay.minimumInViewportHeight=gt,s.overlay.minimumInViewportWidth=gt;break;default:s.overlay.minimumInViewportHeight=null===(t=e.floatingGroupBounds)||void 0===t?void 0:t.minimumHeightWithinViewport,s.overlay.minimumInViewportWidth=null===(i=e.floatingGroupBounds)||void 0===i?void 0:i.minimumWidthWithinViewport}s.overlay.setBounds()}this.updateDropTargetModel(e);const n=this.options.disableDnd;this._options=Object.assign(Object.assign({},this.options),e);n!==this.options.disableDnd&&this.updateDragAndDropState(),"theme"in e&&this.updateTheme(),this.layout(this.gridview.width,this.gridview.height,!0)}layout(e,t,i){if(super.layout(e,t,i),this._floatingGroups)for(const n of this._floatingGroups)n.overlay.setBounds()}updateDragAndDropState(){for(const e of this.groups)e.model.updateDragAndDropState()}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}getGroupPanel(e){return this.panels.find((t=>t.id===e))}setActivePanel(e){e.group.model.openPanel(e),this.doSetGroupAndPanelActive(e.group)}moveToNext(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[e.group.panels.length-1])return void e.group.model.moveToNext({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.next(i))||void 0===t?void 0:t.view;this.doSetGroupAndPanelActive(n)}moveToPrevious(e){var t;if(void 0===e&&(e={}),!e.group){if(!this.activeGroup)return;e.group=this.activeGroup}if(e.includePanel&&e.group&&e.group.activePanel!==e.group.panels[0])return void e.group.model.moveToPrevious({suppressRoll:!0});const i=ee(e.group.element),n=null===(t=this.gridview.previous(i))||void 0===t?void 0:t.view;n&&this.doSetGroupAndPanelActive(n)}toJSON(){var e;const t=this.gridview.serialize(),i=this.panels.reduce(((e,t)=>(e[t.id]=t.toJSON(),e)),{}),n=this._floatingGroups.map((e=>({data:e.group.toJSON(),position:e.overlay.toJSON()}))),s=this._popoutGroups.map((e=>({data:e.popoutGroup.toJSON(),gridReferenceGroup:e.referenceGroup,position:e.window.dimensions(),url:"popout"===e.popoutGroup.api.location.type?e.popoutGroup.api.location.popoutUrl:void 0}))),o={grid:t,panels:i,activeGroup:null===(e=this.activeGroup)||void 0===e?void 0:e.id};return n.length>0&&(o.floatingGroups=n),s.length>0&&(o.popoutGroups=s),o}fromJSON(e){var t,i;if(this.clear(),"object"!=typeof e||null===e)throw new Error("serialized layout must be a non-null object");const{grid:n,panels:s,activeGroup:o}=e;if("branch"!==n.root.type||!Array.isArray(n.root.data))throw new Error("root must be of type branch");try{const r=this.width,a=this.height,h=e=>{const{id:t,locked:i,hideHeader:n,views:o,activeView:r}=e;if("string"!=typeof t)throw new Error("group id must be of type string");const a=this.createGroup({id:t,locked:!!i,hideHeader:!!n});this._onDidAddGroup.fire(a);const h=[];for(const l of o){const e=this._deserializer.fromJSON(s[l],a);h.push(e)}for(let s=0;s0&&a.model.openPanel(a.panels[a.panels.length-1],{skipSetGroupActive:!0}),a};this.gridview.deserialize(n,{fromJSON:e=>h(e.data)}),this.layout(r,a,!0);const l=null!==(t=e.floatingGroups)&&void 0!==t?t:[];for(const e of l){const{data:t,position:i}=e,n=h(t);this.addFloatingGroup(n,{position:i,width:i.width,height:i.height,skipRemoveGroup:!0,inDragMode:!1})}const d=null!==(i=e.popoutGroups)&&void 0!==i?i:[],p=[];d.forEach(((e,t)=>{const{data:i,position:n,gridReferenceGroup:s,url:o}=e,r=h(i),a=new Promise((e=>{setTimeout((()=>{this.addPopoutGroup(r,{position:null!=n?n:void 0,overridePopoutGroup:s?r:void 0,referenceGroup:s?this.getPanel(s):void 0,popoutUrl:o}),e()}),100*t)}));p.push(a)})),this._popoutRestorationPromise=Promise.all(p).then((()=>{}));for(const e of this._floatingGroups)e.overlay.setBounds();if("string"==typeof o){const e=this.getPanel(o);e&&this.doSetGroupAndPanelActive(e)}}catch(r){console.error("dockview: failed to deserialize layout. Reverting changes",r);for(const e of this.groups)for(const t of e.panels)this.removePanel(t,{removeEmptyGroup:!1,skipDispose:!1});for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);for(const e of[...this._floatingGroups])e.dispose();throw this.clear(),r}this.updateWatermark(),requestAnimationFrame((()=>{this.overlayRenderContainer.updateAllPositions()})),this._onDidLayoutFromJSON.fire()}clear(){const e=Array.from(this._groups.values()).map((e=>e.value)),t=!!this.activeGroup;for(const i of e)this.removeGroup(i,{skipActive:!0});t&&this.doSetGroupAndPanelActive(void 0),this.gridview.clear()}closeAllGroups(){for(const e of this._groups.entries()){const[t,i]=e;i.value.model.closeAllPanels()}}addPanel(e){var t,i;if(this.panels.find((t=>t.id===e.id)))throw new Error(`panel with id ${e.id} already exists`);let n;if(e.position&&e.floating)throw new Error("you can only provide one of: position, floating as arguments to .addPanel(...)");const s={width:e.initialWidth,height:e.initialHeight};let o;if(e.position)if(e.position.referencePanel){const t="string"==typeof e.position.referencePanel?this.getGroupPanel(e.position.referencePanel):e.position.referencePanel;if(o=e.position.index,!t)throw new Error(`referencePanel '${e.position.referencePanel}' does not exist`);n=this.findGroup(t)}else{if(!function(e){return!!e.referenceGroup}(e.position)){const t=this.orthogonalize(fe(e.position.direction)),i=this.createPanel(e,t);return t.model.openPanel(i,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t),t.api.setSize({height:null==s?void 0:s.height,width:null==s?void 0:s.width}),i}if(n="string"==typeof e.position.referenceGroup?null===(t=this._groups.get(e.position.referenceGroup))||void 0===t?void 0:t.value:e.position.referenceGroup,o=e.position.index,!n)throw new Error(`referenceGroup '${e.position.referenceGroup}' does not exist`)}else n=this.activeGroup;let r;if(n){const t=he((null===(i=e.position)||void 0===i?void 0:i.direction)||"within");if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else if("floating"===n.api.location.type||"center"===t)r=this.createPanel(e,n),n.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),n.api.setSize({width:null==s?void 0:s.width,height:null==s?void 0:s.height}),e.inactive||this.doSetGroupAndPanelActive(n);else{const i=ee(n.element),a=te(this.gridview.orientation,i,t),h=this.createGroupAtLocation(a,this.orientationAtLocation(a)===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,h),h.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(h)}}else if(e.floating){const t=this.createGroup();this._onDidAddGroup.fire(t);const i="object"==typeof e.floating&&null!==e.floating?e.floating:{};this.addFloatingGroup(t,Object.assign(Object.assign({},i),{inDragMode:!1,skipRemoveGroup:!0,skipActiveGroup:!0})),r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o})}else{const t=this.createGroupAtLocation([0],this.gridview.orientation===j.VERTICAL?null==s?void 0:s.height:null==s?void 0:s.width);r=this.createPanel(e,t),t.model.openPanel(r,{skipSetActive:e.inactive,skipSetGroupActive:e.inactive,index:o}),e.inactive||this.doSetGroupAndPanelActive(t)}return r}removePanel(e,t){void 0===t&&(t={removeEmptyGroup:!0});const i=e.group;if(!i)throw new Error(`cannot remove panel ${e.id}. it's missing a group.`);i.model.removePanel(e,{skipSetActiveGroup:t.skipSetActiveGroup}),t.skipDispose||(e.group.model.renderContainer.detatch(e),e.dispose()),0===i.size&&t.removeEmptyGroup&&this.removeGroup(i,{skipActive:t.skipSetActiveGroup})}createWatermarkComponent(){return this.options.createWatermarkComponent?this.options.createWatermarkComponent():new ct}updateWatermark(){var e,t,i;if(0===this.groups.filter((e=>"grid"===e.api.location.type&&e.api.isVisible)).length){if(!this._watermark){this._watermark=this.createWatermarkComponent(),this._watermark.init({containerApi:new me(this)});const e=document.createElement("div");e.className="dv-watermark-container",i="watermark-component",e.setAttribute("data-testid",i),e.appendChild(this._watermark.element),this.gridview.element.appendChild(e)}}else this._watermark&&(this._watermark.element.parentElement.remove(),null===(t=(e=this._watermark).dispose)||void 0===t||t.call(e),this._watermark=null)}addGroup(e){var t;if(e){let i;if(e.referencePanel){const t="string"==typeof e.referencePanel?this.panels.find((t=>t.id===e.referencePanel)):e.referencePanel;if(!t)throw new Error(`reference panel ${e.referencePanel} does not exist`);if(i=this.findGroup(t),!i)throw new Error(`reference group for reference panel ${e.referencePanel} does not exist`)}else{if(!function(e){return!!e.referenceGroup}(e)){const t=this.orthogonalize(fe(e.direction),e);return e.skipSetActive||this.doSetGroupAndPanelActive(t),t}if(i="string"==typeof e.referenceGroup?null===(t=this._groups.get(e.referenceGroup))||void 0===t?void 0:t.value:e.referenceGroup,!i)throw new Error(`reference group ${e.referenceGroup} does not exist`)}const n=he(e.direction||"within"),s=ee(i.element),o=te(this.gridview.orientation,s,n),r=this.createGroup(e),a=this.getLocationOrientation(o)===j.VERTICAL?e.initialHeight:e.initialWidth;return this.doAddGroup(r,o,a),e.skipSetActive||this.doSetGroupAndPanelActive(r),r}{const t=this.createGroup(e);return this.doAddGroup(t),this.doSetGroupAndPanelActive(t),t}}getLocationOrientation(e){return e.length%2==0&&this.gridview.orientation===j.HORIZONTAL?j.HORIZONTAL:j.VERTICAL}removeGroup(e,t){this.doRemoveGroup(e,t)}doRemoveGroup(e,t){var i;const n=[...e.panels];if(!(null==t?void 0:t.skipDispose))for(const r of n)this.removePanel(r,{removeEmptyGroup:!1,skipDispose:null!==(i=null==t?void 0:t.skipDispose)&&void 0!==i&&i});const s=this.activePanel;if("floating"===e.api.location.type){const i=this._floatingGroups.find((t=>t.group===e));if(i){if((null==t?void 0:t.skipDispose)||(i.group.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)),L(this._floatingGroups,i),i.dispose(),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return i.group}throw new Error("failed to find floating group")}if("popout"===e.api.location.type){const i=this._popoutGroups.find((t=>t.popoutGroup===e));if(i){if(!(null==t?void 0:t.skipDispose)){if(!(null==t?void 0:t.skipPopoutAssociated)){const e=i.referenceGroup?this.getPanel(i.referenceGroup):void 0;e&&0===e.panels.length&&this.removeGroup(e)}i.popoutGroup.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e)}L(this._popoutGroups,i);const n=i.disposable.dispose();if(!(null==t?void 0:t.skipPopoutReturn)&&n&&(this.doAddGroup(n,[0]),this.doSetGroupAndPanelActive(n)),!(null==t?void 0:t.skipActive)&&this._activeGroup===e){const e=Array.from(this._groups.values());this.doSetGroupAndPanelActive(e.length>0?e[0].value:void 0)}return this.updateWatermark(),i.popoutGroup}throw new Error("failed to find popout group")}const o=super.doRemoveGroup(e,t);return(null==t?void 0:t.skipActive)||this.activePanel!==s&&this._onDidActivePanelChange.fire(this.activePanel),o}movingLock(e){const t=this._moving;try{return this._moving=!0,e()}finally{this._moving=t}}moveGroupOrPanel(e){var t;const i=e.to.group,n=e.from.groupId,s=e.from.panelId,o=e.to.position,r=e.to.index,a=n?null===(t=this._groups.get(n))||void 0===t?void 0:t.value:void 0;if(!a)throw new Error(`Failed to find group id ${n}`);if(void 0!==s)if(o&&"center"!==o){const e=ee(i.element),t=te(this.gridview.orientation,e,o);if(a.size<2){const[e,n]=M(t);if("grid"===a.api.location.type){const t=ee(a.element),[i,o]=M(t);if(N(i,e))return this.gridview.moveView(i,o,n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}if("popout"===a.api.location.type){const e=this._popoutGroups.find((e=>e.popoutGroup===a)),i=this.movingLock((()=>e.popoutGroup.model.removePanel(e.popoutGroup.panels[0],{skipSetActive:!0,skipSetActiveGroup:!0})));this.doRemoveGroup(a,{skipActive:!0});const n=this.createGroupAtLocation(t);return this.movingLock((()=>n.model.openPanel(i))),this.doSetGroupAndPanelActive(n),void this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}const r=this.movingLock((()=>this.doRemoveGroup(a,{skipActive:!0,skipDispose:!0}))),h=ee(i.element),l=te(this.gridview.orientation,h,o);this.movingLock((()=>this.doAddGroup(r,l))),this.doSetGroupAndPanelActive(r),this._onDidMovePanel.fire({panel:this.getGroupPanel(s),from:a})}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);const i=te(this.gridview.orientation,e,o),n=this.createGroupAtLocation(i);this.movingLock((()=>n.model.openPanel(t,{skipSetGroupActive:!0}))),this.doSetGroupAndPanelActive(n),this._onDidMovePanel.fire({panel:t,from:a})}}else{const t=this.movingLock((()=>a.model.removePanel(s,{skipSetActive:!1,skipSetActiveGroup:!0})));if(!t)throw new Error(`No panel with id ${s}`);0===a.model.size&&this.doRemoveGroup(a,{skipActive:!0});const n=0===i.model.size;this.movingLock((()=>{var s;return i.model.openPanel(t,{index:r,skipSetActive:null!==(s=e.skipSetActive)&&void 0!==s&&s&&!n,skipSetGroupActive:!0})})),e.skipSetActive||this.doSetGroupAndPanelActive(i),this._onDidMovePanel.fire({panel:t,from:a})}else this.moveGroup({from:{group:a},to:{group:i,position:o},skipSetActive:e.skipSetActive})}moveGroup(e){const t=e.from.group,i=e.to.group,n=e.to.position;if("center"===n){const n=t.activePanel,s=this.movingLock((()=>[...t.panels].map((e=>t.model.removePanel(e.id,{skipSetActive:!0})))));0===(null==t?void 0:t.model.size)&&this.doRemoveGroup(t,{skipActive:!0}),this.movingLock((()=>{for(const e of s)i.model.openPanel(e,{skipSetActive:e!==n,skipSetGroupActive:!0})})),!0!==e.skipSetActive?this.doSetGroupAndPanelActive(i):this.activePanel||this.doSetGroupAndPanelActive(i)}else{switch(t.api.location.type){case"grid":this.gridview.removeView(ee(t.element));break;case"floating":{const e=this._floatingGroups.find((e=>e.group===t));if(!e)throw new Error("failed to find floating group");e.dispose();break}case"popout":{const e=this._popoutGroups.find((e=>e.popoutGroup===t));if(!e)throw new Error("failed to find popout group");const n=this._popoutGroups.indexOf(e);if(n>=0&&this._popoutGroups.splice(n,1),e.referenceGroup){const t=this.getPanel(e.referenceGroup);t&&!t.api.isVisible&&this.doRemoveGroup(t,{skipActive:!0})}e.window.dispose(),"grid"===i.api.location.type?(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"grid"}):"floating"===i.api.location.type&&(t.model.renderContainer=this.overlayRenderContainer,t.model.dropTargetContainer=this.rootDropTargetContainer,t.model.location={type:"floating"});break}}if("grid"===i.api.location.type){const e=ee(i.element),s=te(this.gridview.orientation,e,n);let o;switch(this.gridview.orientation){case j.VERTICAL:o=e.length%2==0?t.api.width:t.api.height;break;case j.HORIZONTAL:o=e.length%2==0?t.api.height:t.api.width}this.gridview.addView(t,o,s)}else if("floating"===i.api.location.type){const e=this._floatingGroups.find((e=>e.group===i));if(e){const i=e.overlay.toJSON();let n,s;n="left"in i?i.left+50:"right"in i?Math.max(0,i.right-i.width-50):50,s="top"in i?i.top+50:"bottom"in i?Math.max(0,i.bottom-i.height-50):50,this.addFloatingGroup(t,{height:i.height,width:i.width,position:{left:n,top:s}})}}}if(t.panels.forEach((e=>{this._onDidMovePanel.fire({panel:e,from:t})})),!1===e.skipSetActive){const e=null!=i?i:t;this.doSetGroupAndPanelActive(e)}}doSetGroupActive(e){super.doSetGroupActive(e);const t=this.activePanel;this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}doSetGroupAndPanelActive(e){super.doSetGroupActive(e);const t=this.activePanel;e&&this.hasMaximizedGroup()&&!this.isMaximizedGroup(e)&&this.exitMaximizedGroup(),this._moving||t===this._onDidActivePanelChange.value||this._onDidActivePanelChange.fire(t)}getNextGroupId(){let e=this.nextGroupId.next();for(;this._groups.has(e);)e=this.nextGroupId.next();return e}createGroup(e){e||(e={});let t=null==e?void 0:e.id;if(t&&this._groups.has(e.id)&&(console.warn(`dockview: Duplicate group id ${null==e?void 0:e.id}. reassigning group id to avoid errors`),t=void 0),!t)for(t=this.nextGroupId.next();this._groups.has(t);)t=this.nextGroupId.next();const i=new Ke(this,t,e);if(i.init({params:{},accessor:this}),!this._groups.has(i.id)){const e=new w(i.model.onTabDragStart((e=>{this._onWillDragPanel.fire(e)})),i.model.onGroupDragStart((e=>{this._onWillDragGroup.fire(e)})),i.model.onMove((e=>{const{groupId:t,itemId:n,target:s,index:o}=e;this.moveGroupOrPanel({from:{groupId:t,panelId:n},to:{group:i,position:s,index:o}})})),i.model.onDidDrop((e=>{this._onDidDrop.fire(e)})),i.model.onWillDrop((e=>{this._onWillDrop.fire(e)})),i.model.onWillShowOverlay((e=>{this.options.disableDnd?e.preventDefault():this._onWillShowOverlay.fire(e)})),i.model.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})),i.model.onDidAddPanel((e=>{this._moving||this._onDidAddPanel.fire(e.panel)})),i.model.onDidRemovePanel((e=>{this._moving||this._onDidRemovePanel.fire(e.panel)})),i.model.onDidActivePanelChange((e=>{this._moving||e.panel===this.activePanel&&this._onDidActivePanelChange.value!==e.panel&&this._onDidActivePanelChange.fire(e.panel)})),l.any(i.model.onDidPanelTitleChange,i.model.onDidPanelParametersChange)((()=>{this._bufferOnDidLayoutChange.fire()})));this._groups.set(i.id,{value:i,disposable:e})}return i.initialize(),i}createPanel(e,t){var i,n,s;const o=e.component,r=null!==(i=e.tabComponent)&&void 0!==i?i:this.options.defaultTabComponent,a=new dt(this,e.id,o,r),h=new ht(e.id,o,r,this,this._api,t,a,{renderer:e.renderer,minimumWidth:e.minimumWidth,minimumHeight:e.minimumHeight,maximumWidth:e.maximumWidth,maximumHeight:e.maximumHeight});return h.init({title:null!==(n=e.title)&&void 0!==n?n:e.id,params:null!==(s=null==e?void 0:e.params)&&void 0!==s?s:{}}),h}createGroupAtLocation(e,t,i){const n=this.createGroup(i);return this.doAddGroup(n,e,t),n}findGroup(e){var t;return null===(t=Array.from(this._groups.values()).find((t=>t.value.model.containsPanel(e))))||void 0===t?void 0:t.value}orientationAtLocation(e){const t=this.gridview.orientation;return e.length%2==1?t:ie(t)}updateDropTargetModel(e){"dndEdges"in e&&(this._rootDropTarget.disabled="boolean"==typeof e.dndEdges&&!1===e.dndEdges,"object"==typeof e.dndEdges&&null!==e.dndEdges?this._rootDropTarget.setOverlayModel(e.dndEdges):this._rootDropTarget.setOverlayModel(Et)),"rootOverlayModel"in e&&this.updateDropTargetModel({dndEdges:e.dndEdges})}updateTheme(){var e,t;const i=null!==(e=this._options.theme)&&void 0!==e?e:it;if(this._themeClassnames.setClassNames(i.className),this.gridview.margin=null!==(t=i.gap)&&void 0!==t?t:0,"absolute"===i.dndOverlayMounting)this.rootDropTargetContainer.disabled=!1;else this.rootDropTargetContainer.disabled=!0}}class It extends le{get orientation(){return this.gridview.orientation}set orientation(e){this.gridview.orientation=e}get options(){return this._options}get deserializer(){return this._deserializer}set deserializer(e){this._deserializer=e}constructor(e,t){var i;super(e,{proportionalLayout:null===(i=t.proportionalLayout)||void 0===i||i,orientation:t.orientation,styles:t.hideBorders?{separatorBorder:"transparent"}:void 0,disableAutoResizing:t.disableAutoResizing,className:t.className}),this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidRemoveGroup=new v,this.onDidRemoveGroup=this._onDidRemoveGroup.event,this._onDidAddGroup=new v,this.onDidAddGroup=this._onDidAddGroup.event,this._onDidActiveGroupChange=new v,this.onDidActiveGroupChange=this._onDidActiveGroupChange.event,this._options=t,this.addDisposables(this._onDidAddGroup,this._onDidRemoveGroup,this._onDidActiveGroupChange,this.onDidAdd((e=>{this._onDidAddGroup.fire(e)})),this.onDidRemove((e=>{this._onDidRemoveGroup.fire(e)})),this.onDidActiveChange((e=>{this._onDidActiveGroupChange.fire(e)})))}updateOptions(e){super.updateOptions(e);const t="string"==typeof e.orientation&&this.gridview.orientation!==e.orientation;this._options=Object.assign(Object.assign({},this.options),e),t&&(this.gridview.orientation=e.orientation),this.layout(this.gridview.width,this.gridview.height,!0)}removePanel(e){this.removeGroup(e)}toJSON(){var e;return{grid:this.gridview.serialize(),activePanel:null===(e=this.activeGroup)||void 0===e?void 0:e.id}}setVisible(e,t){this.gridview.setViewVisible(ee(e.element),t)}setActive(e){this._groups.forEach(((t,i)=>{t.value.setActive(e===t.value)}))}focus(){var e;null===(e=this.activeGroup)||void 0===e||e.focus()}fromJSON(e){this.clear();const{grid:t,activePanel:i}=e;try{const e=[],n=this.width,s=this.height;if(this.gridview.deserialize(t,{fromJSON:t=>{const{data:i}=t,n=this.options.createComponent({id:i.id,name:i.component});return e.push((()=>n.init({params:i.params,minimumWidth:i.minimumWidth,maximumWidth:i.maximumWidth,minimumHeight:i.minimumHeight,maximumHeight:i.maximumHeight,priority:i.priority,snap:!!i.snap,accessor:this,isVisible:t.visible}))),this._onDidAddGroup.fire(n),this.registerPanel(n),n}}),this.layout(n,s,!0),e.forEach((e=>e())),"string"==typeof i){const e=this.getPanel(i);e&&this.doSetGroupActive(e)}}catch(n){for(const e of this.groups)e.dispose(),this._groups.delete(e.id),this._onDidRemoveGroup.fire(e);throw this.clear(),n}this._onDidLayoutfromJSON.fire()}clear(){const e=this.activeGroup,t=Array.from(this._groups.values());for(const i of t)i.disposable.dispose(),this.doRemoveGroup(i.value,{skipActive:!0});e&&this.doSetGroupActive(void 0),this.gridview.clear()}movePanel(e,t){var i;let n;const s=this.gridview.remove(e),o=null===(i=this._groups.get(t.reference))||void 0===i?void 0:i.value;if(!o)throw new Error(`reference group ${t.reference} does not exist`);const r=he(t.direction);if("center"===r)throw new Error(`${r} not supported as an option`);{const e=ee(o.element);n=te(this.gridview.orientation,e,r)}this.doAddGroup(s,n,t.size)}addPanel(e){var t,i,n,s;let o=null!==(t=e.location)&&void 0!==t?t:[0];if(null===(i=e.position)||void 0===i?void 0:i.referencePanel){const t=null===(n=this._groups.get(e.position.referencePanel))||void 0===n?void 0:n.value;if(!t)throw new Error(`reference group ${e.position.referencePanel} does not exist`);const i=he(e.position.direction);if("center"===i)throw new Error(`${i} not supported as an option`);{const e=ee(t.element);o=te(this.gridview.orientation,e,i)}}const r=this.options.createComponent({id:e.id,name:e.component});return r.init({params:null!==(s=e.params)&&void 0!==s?s:{},minimumWidth:e.minimumWidth,maximumWidth:e.maximumWidth,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,priority:e.priority,snap:!!e.snap,accessor:this,isVisible:!0}),this.doAddGroup(r,o,e.size),this.registerPanel(r),this.doSetGroupActive(r),r}registerPanel(e){const t=new w(e.api.onDidFocusChange((t=>{t.isFocused&&this._groups.forEach((t=>{const i=t.value;i!==e?i.setActive(!1):i.setActive(!0)}))})));this._groups.set(e.id,{value:e,disposable:t})}moveGroup(e,t,i){const n=this.getPanel(t);if(!n)throw new Error("invalid operation");const s=ee(e.element),o=te(this.gridview.orientation,s,i),[r,a]=M(o),h=ee(n.element),[l,d]=M(h);if(N(l,r))return void this.gridview.moveView(l,d,a);const p=this.doRemoveGroup(n,{skipActive:!0,skipDispose:!0}),c=ee(e.element),m=te(this.gridview.orientation,c,i);this.doAddGroup(p,m)}removeGroup(e){super.removeGroup(e)}dispose(){super.dispose(),this._onDidLayoutfromJSON.dispose()}}class Gt extends re{get panels(){return this.splitview.getViews()}get options(){return this._options}get length(){return this._panels.size}get orientation(){return this.splitview.orientation}get splitview(){return this._splitview}set splitview(e){this._splitview&&this._splitview.dispose(),this._splitview=e,this._splitviewChangeDisposable.value=new w(this._splitview.onDidSashEnd((()=>{this._onDidLayoutChange.fire(void 0)})),this._splitview.onDidAddView((e=>this._onDidAddView.fire(e))),this._splitview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get minimumSize(){return this.splitview.minimumSize}get maximumSize(){return this.splitview.maximumSize}get height(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.orthogonalSize:this.splitview.size}get width(){return this.splitview.orientation===j.HORIZONTAL?this.splitview.size:this.splitview.orthogonalSize}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._splitviewChangeDisposable=new _,this._panels=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this.element.style.height="100%",this.element.style.width="100%",this._classNames=new G(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.splitview=new J(this.element,t),this.addDisposables(this._onDidAddView,this._onDidLayoutfromJSON,this._onDidRemoveView,this._onDidLayoutChange)}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),"string"==typeof e.orientation&&(this.splitview.orientation=e.orientation),this._options=Object.assign(Object.assign({},this.options),e),this.splitview.layout(this.splitview.size,this.splitview.orthogonalSize)}focus(){var e;null===(e=this._activePanel)||void 0===e||e.focus()}movePanel(e,t){this.splitview.moveView(e,t)}setVisible(e,t){const i=this.panels.indexOf(e);this.splitview.setViewVisible(i,t)}setActive(e,t){this._activePanel=e,this.panels.filter((t=>t!==e)).forEach((e=>{e.api._onDidActiveChange.fire({isActive:!1}),t||e.focus()})),e.api._onDidActiveChange.fire({isActive:!0}),t||e.focus()}removePanel(e,t){const i=this._panels.get(e.id);if(!i)throw new Error(`unknown splitview panel ${e.id}`);i.dispose(),this._panels.delete(e.id);const n=this.panels.findIndex((t=>t===e));this.splitview.removeView(n,t).dispose();const s=this.panels;s.length>0&&this.setActive(s[s.length-1])}getPanel(e){return this.panels.find((t=>t.id===e))}addPanel(e){var t;if(this._panels.has(e.id))throw new Error(`panel ${e.id} already exists`);const i=this.options.createComponent({id:e.id,name:e.component});i.orientation=this.splitview.orientation,i.init({params:null!==(t=e.params)&&void 0!==t?t:{},minimumSize:e.minimumSize,maximumSize:e.maximumSize,snap:e.snap,priority:e.priority,accessor:this});const n="number"==typeof e.size?e.size:Z.Distribute,s="number"==typeof e.index?e.index:void 0;return this.splitview.addView(i,n,s),this.doAddView(i),this.setActive(i),i}layout(e,t){const[i,n]=this.splitview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.splitview.layout(i,n)}doAddView(e){const t=e.api.onDidFocusChange((t=>{t.isFocused&&this.setActive(e,!0)}));this._panels.set(e.id,t)}toJSON(){var e;return{views:this.splitview.getViews().map(((e,t)=>({size:this.splitview.getViewSize(t),data:e.toJSON(),snap:!!e.snap,priority:e.priority}))),activeView:null===(e=this._activePanel)||void 0===e?void 0:e.id,size:this.splitview.size,orientation:this.splitview.orientation}}fromJSON(e){this.clear();const{views:t,orientation:i,size:n,activeView:s}=e,o=[],r=this.width,a=this.height;if(this.splitview=new J(this.element,{orientation:i,proportionalLayout:this.options.proportionalLayout,descriptor:{size:n,views:t.map((e=>{const t=e.data;if(this._panels.has(t.id))throw new Error(`panel ${t.id} already exists`);const n=this.options.createComponent({id:t.id,name:t.component});return o.push((()=>{var i;n.init({params:null!==(i=t.params)&&void 0!==i?i:{},minimumSize:t.minimumSize,maximumSize:t.maximumSize,snap:e.snap,priority:e.priority,accessor:this})})),n.orientation=i,this.doAddView(n),setTimeout((()=>{this._onDidAddView.fire(n)}),0),{size:e.size,view:n}}))}}),this.layout(r,a),o.forEach((e=>e())),"string"==typeof s){const e=this.getPanel(s);e&&this.setActive(e)}this._onDidLayoutfromJSON.fire()}clear(){for(const e of this._panels.values())e.dispose();for(this._panels.clear();this.splitview.length>0;){this.splitview.removeView(0,Z.Distribute,!0).dispose()}}dispose(){for(const t of this._panels.values())t.dispose();this._panels.clear();const e=this.splitview.getViews();this._splitviewChangeDisposable.dispose(),this.splitview.dispose();for(const t of e)t.dispose();this.element.remove(),super.dispose()}}class Mt extends w{get element(){return this._element}constructor(){super(),this._expandedIcon=He({width:"11",height:"11",viewbox:"0 0 24 15",path:"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z"}),this._collapsedIcon=We(),this.disposable=new _,this.apiRef={api:null},this._element=document.createElement("div"),this.element.className="dv-default-header",this._content=document.createElement("span"),this._expander=document.createElement("div"),this._expander.className="dv-pane-header-icon",this.element.appendChild(this._expander),this.element.appendChild(this._content),this.addDisposables(g(this._element,"click",(()=>{var e;null===(e=this.apiRef.api)||void 0===e||e.setExpanded(!this.apiRef.api.isExpanded)})))}init(e){this.apiRef.api=e.api,this._content.textContent=e.title,this.updateIcon(),this.disposable.value=e.api.onDidExpansionChange((()=>{this.updateIcon()}))}updateIcon(){var e;const t=!!(null===(e=this.apiRef.api)||void 0===e?void 0:e.isExpanded);C(this._expander,"collapsed",!t),t?(this._expander.contains(this._collapsedIcon)&&this._collapsedIcon.remove(),this._expander.contains(this._expandedIcon)||this._expander.appendChild(this._expandedIcon)):(this._expander.contains(this._expandedIcon)&&this._expandedIcon.remove(),this._expander.contains(this._collapsedIcon)||this._expander.appendChild(this._collapsedIcon))}update(e){}dispose(){this.disposable.dispose(),super.dispose()}}const Nt=R(),Vt=Number.MAX_SAFE_INTEGER;class kt extends Oe{constructor(e){super({accessor:e.accessor,id:e.id,component:e.component,headerComponent:e.headerComponent,orientation:e.orientation,isExpanded:e.isExpanded,disableDnd:e.disableDnd,headerSize:e.headerSize,minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize}),this.options=e}getBodyComponent(){return this.options.body}getHeaderComponent(){return this.options.header}}class Lt extends re{get id(){return this._id}get panels(){return this.paneview.getPanes()}set paneview(e){this._paneview=e,this._disposable.value=new w(this._paneview.onDidChange((()=>{this._onDidLayoutChange.fire(void 0)})),this._paneview.onDidAddView((e=>this._onDidAddView.fire(e))),this._paneview.onDidRemoveView((e=>this._onDidRemoveView.fire(e))))}get paneview(){return this._paneview}get minimumSize(){return this.paneview.minimumSize}get maximumSize(){return this.paneview.maximumSize}get height(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.orthogonalSize:this.paneview.size}get width(){return this.paneview.orientation===j.HORIZONTAL?this.paneview.size:this.paneview.orthogonalSize}get options(){return this._options}constructor(e,t){var i;super(document.createElement("div"),t.disableAutoResizing),this._id=Nt.next(),this._disposable=new _,this._viewDisposables=new Map,this._onDidLayoutfromJSON=new v,this.onDidLayoutFromJSON=this._onDidLayoutfromJSON.event,this._onDidLayoutChange=new v,this.onDidLayoutChange=this._onDidLayoutChange.event,this._onDidDrop=new v,this.onDidDrop=this._onDidDrop.event,this._onDidAddView=new v,this.onDidAddView=this._onDidAddView.event,this._onDidRemoveView=new v,this.onDidRemoveView=this._onDidRemoveView.event,this._onUnhandledDragOverEvent=new v,this.onUnhandledDragOverEvent=this._onUnhandledDragOverEvent.event,this.element.style.height="100%",this.element.style.width="100%",this.addDisposables(this._onDidLayoutChange,this._onDidLayoutfromJSON,this._onDidDrop,this._onDidAddView,this._onDidRemoveView,this._onUnhandledDragOverEvent),this._classNames=new G(this.element),this._classNames.setClassNames(null!==(i=t.className)&&void 0!==i?i:""),e.appendChild(this.element),this._options=t,this.paneview=new $(this.element,{orientation:j.VERTICAL}),this.addDisposables(this._disposable)}setVisible(e,t){const i=this.panels.indexOf(e);this.paneview.setViewVisible(i,t)}focus(){}updateOptions(e){var t,i;"className"in e&&this._classNames.setClassNames(null!==(t=e.className)&&void 0!==t?t:""),"disableResizing"in e&&(this.disableResizing=null!==(i=e.disableAutoResizing)&&void 0!==i&&i),this._options=Object.assign(Object.assign({},this.options),e)}addPanel(e){var t,i;const n=this.options.createComponent({id:e.id,name:e.component});let s;e.headerComponent&&this.options.createHeaderComponent&&(s=this.options.createHeaderComponent({id:e.id,name:e.headerComponent})),s||(s=new Mt);const o=new kt({id:e.id,component:e.component,headerComponent:e.headerComponent,header:s,body:n,orientation:j.VERTICAL,isExpanded:!!e.isExpanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:0,maximumBodySize:Vt});this.doAddPanel(o);const r="number"==typeof e.size?e.size:Z.Distribute,a="number"==typeof e.index?e.index:void 0;return o.init({params:null!==(i=e.params)&&void 0!==i?i:{},minimumBodySize:e.minimumBodySize,maximumBodySize:e.maximumBodySize,isExpanded:e.isExpanded,title:e.title,containerApi:new pe(this),accessor:this}),this.paneview.addPane(o,r,a),o.orientation=this.paneview.orientation,o}removePanel(e){const t=this.panels.findIndex((t=>t===e));this.paneview.removePane(t),this.doRemovePanel(e)}movePanel(e,t){this.paneview.moveView(e,t)}getPanel(e){return this.panels.find((t=>t.id===e))}layout(e,t){const[i,n]=this.paneview.orientation===j.HORIZONTAL?[e,t]:[t,e];this.paneview.layout(i,n)}toJSON(){const e=e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e;return{views:this.paneview.getPanes().map(((t,i)=>{return{size:this.paneview.getViewSize(i),data:t.toJSON(),minimumSize:(n=t.minimumBodySize,n<=0?void 0:n),maximumSize:e(t.maximumBodySize),headerSize:t.headerSize,expanded:t.isExpanded()};var n})),size:this.paneview.size}}fromJSON(e){this.clear();const{views:t,size:i}=e,n=[],s=this.width,o=this.height;this.paneview=new $(this.element,{orientation:j.VERTICAL,descriptor:{size:i,views:t.map((e=>{var t,i,s;const o=e.data,r=this.options.createComponent({id:o.id,name:o.component});let a;o.headerComponent&&this.options.createHeaderComponent&&(a=this.options.createHeaderComponent({id:o.id,name:o.headerComponent})),a||(a=new Mt);const h=new kt({id:o.id,component:o.component,headerComponent:o.headerComponent,header:a,body:r,orientation:j.VERTICAL,isExpanded:!!e.expanded,disableDnd:!!this.options.disableDnd,accessor:this,headerSize:null!==(t=e.headerSize)&&void 0!==t?t:22,minimumBodySize:null!==(i=e.minimumSize)&&void 0!==i?i:0,maximumBodySize:null!==(s=e.maximumSize)&&void 0!==s?s:Vt});return this.doAddPanel(h),n.push((()=>{var t;h.init({params:null!==(t=o.params)&&void 0!==t?t:{},minimumBodySize:e.minimumSize,maximumBodySize:e.maximumSize,title:o.title,isExpanded:!!e.expanded,containerApi:new pe(this),accessor:this}),h.orientation=this.paneview.orientation})),setTimeout((()=>{this._onDidAddView.fire(h)}),0),{size:e.size,view:h}}))}}),this.layout(s,o),n.forEach((e=>e())),this._onDidLayoutfromJSON.fire()}clear(){for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.paneview.dispose()}doAddPanel(e){const t=new w(e.onDidDrop((e=>{this._onDidDrop.fire(e)})),e.onUnhandledDragOverEvent((e=>{this._onUnhandledDragOverEvent.fire(e)})));this._viewDisposables.set(e.id,t)}doRemovePanel(e){const t=this._viewDisposables.get(e.id);t&&(t.dispose(),this._viewDisposables.delete(e.id))}dispose(){super.dispose();for(const[e,t]of this._viewDisposables.entries())t.dispose();this._viewDisposables.clear(),this.element.remove(),this.paneview.dispose()}}class Tt extends Ee{get priority(){return this._priority}set orientation(e){this._orientation=e}get orientation(){return this._orientation}get minimumSize(){const e="function"==typeof this._minimumSize?this._minimumSize():this._minimumSize;return e!==this._evaluatedMinimumSize&&(this._evaluatedMinimumSize=e,this.updateConstraints()),e}get maximumSize(){const e="function"==typeof this._maximumSize?this._maximumSize():this._maximumSize;return e!==this._evaluatedMaximumSize&&(this._evaluatedMaximumSize=e,this.updateConstraints()),e}get snap(){return this._snap}constructor(e,t){super(e,t,new Se(e,t)),this._evaluatedMinimumSize=0,this._evaluatedMaximumSize=Number.POSITIVE_INFINITY,this._minimumSize=0,this._maximumSize=Number.POSITIVE_INFINITY,this._snap=!1,this._onDidChange=new v,this.onDidChange=this._onDidChange.event,this.api.initialize(this),this.addDisposables(this._onDidChange,this.api.onWillVisibilityChange((e=>{const{isVisible:t}=e,{accessor:i}=this._params;i.setVisible(this,t)})),this.api.onActiveChange((()=>{const{accessor:e}=this._params;e.setActive(this)})),this.api.onDidConstraintsChangeInternal((e=>{"number"!=typeof e.minimumSize&&"function"!=typeof e.minimumSize||(this._minimumSize=e.minimumSize),"number"!=typeof e.maximumSize&&"function"!=typeof e.maximumSize||(this._maximumSize=e.maximumSize),this.updateConstraints()})),this.api.onDidSizeChange((e=>{this._onDidChange.fire({size:e.size})})))}setVisible(e){this.api._onDidVisibilityChange.fire({isVisible:e})}setActive(e){this.api._onDidActiveChange.fire({isActive:e})}layout(e,t){const[i,n]=this.orientation===j.HORIZONTAL?[e,t]:[t,e];super.layout(i,n)}init(e){super.init(e),this._priority=e.priority,e.minimumSize&&(this._minimumSize=e.minimumSize),e.maximumSize&&(this._maximumSize=e.maximumSize),e.snap&&(this._snap=e.snap)}toJSON(){return Object.assign(Object.assign({},super.toJSON()),{minimumSize:(e=this.minimumSize,e<=0?void 0:e),maximumSize:(e=>e===Number.MAX_SAFE_INTEGER||e===Number.POSITIVE_INFINITY?void 0:e)(this.maximumSize)});var e}updateConstraints(){this.api._onDidConstraintsChange.fire({maximumSize:this._evaluatedMaximumSize,minimumSize:this._evaluatedMinimumSize})}}function Rt(e,t){return new Ot(e,t).api}function Ht(e,t){const i=new Gt(e,t);return new de(i)}function Wt(e,t){const i=new It(e,t);return new ce(i)}function jt(e,t){const i=new Lt(e,t);return new pe(i)}},6376:(e,t,i)=>{i.d(t,{Pg:()=>D,O4:()=>n.O4,tu:()=>f,$R:()=>C,g1:()=>n.g1,i5:()=>n.i5,Vm:()=>S,TU:()=>y,M:()=>n.M,UM:()=>n.UM,Zc:()=>n.Zc,Hx:()=>n.Hx,MV:()=>n.MV,Qp:()=>n.Qp,Lt:()=>n.Lt,TR:()=>n.TR,ZS:()=>n.ZS});var n=i(5399),s=i(6204),o=i(2457);const r=(e,t)=>{const[i,n]=s.useState(),o=s.useRef(e.componentProps);return s.useImperativeHandle(t,(()=>({update:e=>{o.current=Object.assign(Object.assign({},o.current),e),n(Date.now())}})),[]),s.createElement(e.component,o.current)};r.displayName="DockviewReactJsBridge";const a=(()=>{let e=1;return{next:()=>`dockview_react_portal_key_${(e++).toString()}`}})(),h=s.createContext({});class l{constructor(e,t,i,n,s){this.parent=e,this.portalStore=t,this.component=i,this.parameters=n,this.context=s,this._initialProps={},this.disposed=!1,this.createPortal()}update(e){if(this.disposed)throw new Error("invalid operation: resource is already disposed");this.componentInstance?this.componentInstance.update(e):this._initialProps=Object.assign(Object.assign({},this._initialProps),e)}createPortal(){if(this.disposed)throw new Error("invalid operation: resource is already disposed");if("function"!=typeof(e=this.component)&&!(null==e?void 0:e.$$typeof))throw new Error("Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components");var e;const t=s.createElement(s.forwardRef(r),{component:this.component,componentProps:this.parameters,ref:e=>{this.componentInstance=e,Object.keys(this._initialProps).length>0&&(this.componentInstance.update(this._initialProps),this._initialProps={})}}),i=this.context?s.createElement(h.Provider,{value:this.context},t):t,n=o.createPortal(i,this.parent,a.next());this.ref={portal:n,disposable:this.portalStore.addPortal(n)}}dispose(){var e;null===(e=this.ref)||void 0===e||e.disposable.dispose(),this.disposed=!0}}const d=()=>{const[e,t]=s.useState([]);s.useDebugValue(`Portal count: ${e.length}`);return[e,s.useCallback((e=>{t((t=>[...t,e]));let i=!1;return n.GW.from((()=>{if(i)throw new Error("invalid operation: resource already disposed");i=!0,t((t=>t.filter((t=>t!==e))))}))}),[])]};class p{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._onDidFocus=new n.O4,this.onDidFocus=this._onDidFocus.event,this._onDidBlur=new n.O4,this.onDidBlur=this._onDidBlur.event,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;this._onDidFocus.dispose(),this._onDidBlur.dispose(),null===(e=this.part)||void 0===e||e.dispose()}}class c{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}focus(){}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,containerApi:e.containerApi,tabLocation:e.tabLocation})}update(e){var t;null===(t=this.part)||void 0===t||t.update({params:e.params})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class m{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{group:e.group,containerApi:e.containerApi})}focus(){}update(e){var t,i,n;this.parameters&&(this.parameters.params=e.params),null===(t=this.part)||void 0===t||t.update({params:null!==(n=null===(i=this.parameters)||void 0===i?void 0:i.params)&&void 0!==n?n:{}})}layout(e,t){}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}class u{get element(){return this._element}get part(){return this._part}constructor(e,t,i){this.component=e,this.reactPortalStore=t,this._group=i,this.mutableDisposable=new n.Gi,this._element=document.createElement("div"),this._element.className="dv-react-part",this._element.style.height="100%",this._element.style.width="100%"}init(e){this.mutableDisposable.value=new n.KU(this._group.model.onDidAddPanel((()=>{this.updatePanels()})),this._group.model.onDidRemovePanel((()=>{this.updatePanels()})),this._group.model.onDidActivePanelChange((()=>{this.updateActivePanel()})),e.api.onDidActiveChange((()=>{this.updateGroupActive()}))),this._part=new l(this.element,this.reactPortalStore,this.component,{api:e.api,containerApi:e.containerApi,panels:this._group.model.panels,activePanel:this._group.model.activePanel,isGroupActive:this._group.api.isActive,group:this._group})}dispose(){var e;this.mutableDisposable.dispose(),null===(e=this._part)||void 0===e||e.dispose()}update(e){var t;null===(t=this._part)||void 0===t||t.update(e.params)}updatePanels(){this.update({params:{panels:this._group.model.panels}})}updateActivePanel(){this.update({params:{activePanel:this._group.model.activePanel}})}updateGroupActive(){this.update({params:{isGroupActive:this._group.api.isActive}})}}function v(e,t){return e?i=>new u(e,t,i):void 0}const g="props.defaultTabComponent";const f=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.gq.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.gq.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return;const s=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(s[g]=e.defaultTabComponent);const r={createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a}),createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a}),createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a}),createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a}),createTabComponent:e=>new c(e.id,s[e.name],{addPortal:a}),createWatermarkComponent:e.watermarkComponent?()=>new m("watermark",e.watermarkComponent,{addPortal:a}):void 0,defaultTabComponent:e.defaultTabComponent?g:void 0},h=(0,n.lT)(i.current,Object.assign(Object.assign({},function(e){return n.gq.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:l,clientHeight:d}=i.current;return h.layout(l,d),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onWillDrop((t=>{e.onWillDrop&&e.onWillDrop(t)}));return()=>{t.dispose()}}),[e.onWillDrop]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new p(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.tabComponents)&&void 0!==t?t:{};e.defaultTabComponent&&(i[g]=e.defaultTabComponent),o.current.updateOptions({defaultTabComponent:e.defaultTabComponent?g:void 0,createTabComponent:e=>new c(e.id,i[e.name],{addPortal:a})})}),[e.tabComponents,e.defaultTabComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createWatermarkComponent:e.watermarkComponent?()=>new m("watermark",e.watermarkComponent,{addPortal:a}):void 0})}),[e.watermarkComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createRightHeaderActionComponent:v(e.rightHeaderActionsComponent,{addPortal:a})})}),[e.rightHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createLeftHeaderActionComponent:v(e.leftHeaderActionsComponent,{addPortal:a})})}),[e.leftHeaderActionsComponent]),s.useEffect((()=>{o.current&&o.current.updateOptions({createPrefixHeaderActionComponent:v(e.prefixHeaderActionsComponent,{addPortal:a})})}),[e.prefixHeaderActionsComponent]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));f.displayName="DockviewComponent";const w=()=>s.createElement("svg",{height:"11",width:"11",viewBox:"0 0 28 28","aria-hidden":"false",focusable:!1,className:"dv-svg"},s.createElement("path",{d:"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"}));var _=function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s{var{api:t,containerApi:i,params:n,hideClose:o,closeActionOverride:r,onPointerDown:a,onPointerUp:h,onPointerLeave:l,tabLocation:d}=e,p=_(e,["api","containerApi","params","hideClose","closeActionOverride","onPointerDown","onPointerUp","onPointerLeave","tabLocation"]);const c=function(e){const[t,i]=s.useState(e.title);return s.useEffect((()=>{const n=e.onDidTitleChange((e=>{i(e.title)}));return t!==e.title&&i(e.title),()=>{n.dispose()}}),[e]),t}(t),m=s.useRef(!1),u=s.useCallback((e=>{e.preventDefault(),r?r():t.close()}),[t,r]),v=s.useCallback((e=>{e.preventDefault()}),[]),g=s.useCallback((e=>{m.current=1===e.button,null==a||a(e)}),[a]),f=s.useCallback((e=>{m&&1===e.button&&!o&&(m.current=!1,u(e)),null==h||h(e)}),[h,u,o]),D=s.useCallback((e=>{m.current=!1,null==l||l(e)}),[l]);return s.createElement("div",Object.assign({"data-testid":"dockview-dv-default-tab"},p,{onPointerDown:g,onPointerUp:f,onPointerLeave:D,className:"dv-default-tab"}),s.createElement("span",{className:"dv-default-tab-content"},c),!o&&s.createElement("div",{className:"dv-default-tab-action",onPointerDown:v,onClick:u},s.createElement(w,null)))};class b extends n.hJ{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new l(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.fX(this._params.accessor)})}}const y=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.mH.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.mH.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.cO)(i.current,Object.assign(Object.assign({},function(e){return n.mH.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new b(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));y.displayName="SplitviewComponent";class x extends n.Tg{constructor(e,t,i,n){super(e,t),this.reactComponent=i,this.reactPortalStore=n}getComponent(){var e,t;return new l(this.element,this.reactPortalStore,this.reactComponent,{params:null!==(t=null===(e=this._params)||void 0===e?void 0:e.params)&&void 0!==t?t:{},api:this.api,containerApi:new n.Tn(this._params.accessor)})}}const C=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.kQ.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.kQ.map((t=>e[t]))),s.useEffect((()=>{if(!i.current)return()=>{};const t={createComponent:t=>new x(t.id,t.name,e.components[t.name],{addPortal:a})},s=(0,n.rc)(i.current,Object.assign(Object.assign({},function(e){return n.kQ.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),t)),{clientWidth:r,clientHeight:h}=i.current;return s.layout(r,h),e.onReady&&e.onReady({api:s}),o.current=s,()=>{o.current=void 0,s.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new x(t.id,t.name,e.components[t.name],{addPortal:a})})}),[e.components]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));C.displayName="GridviewComponent";class z{get element(){return this._element}constructor(e,t,i){this.id=e,this.component=t,this.reactPortalStore=i,this._element=document.createElement("div"),this._element.style.height="100%",this._element.style.width="100%"}init(e){this.part=new l(this.element,this.reactPortalStore,this.component,{params:e.params,api:e.api,title:e.title,containerApi:e.containerApi})}toJSON(){return{id:this.id}}update(e){var t;null===(t=this.part)||void 0===t||t.update(e.params)}dispose(){var e;null===(e=this.part)||void 0===e||e.dispose()}}const S=s.forwardRef(((e,t)=>{const i=s.useRef(null),o=s.useRef(),[r,a]=d();s.useImperativeHandle(t,(()=>i.current),[]);const h=s.useRef({});return s.useEffect((()=>{const t={};n.jl.forEach((i=>{const n=i,s=e[n];n in e&&s!==h.current[n]&&(t[n]=s)})),o.current&&o.current.updateOptions(t),h.current=e}),n.jl.map((t=>e[t]))),s.useEffect((()=>{var t;if(!i.current)return()=>{};const s=null!==(t=e.headerComponents)&&void 0!==t?t:{},r={createComponent:t=>new z(t.id,e.components[t.name],{addPortal:a}),createHeaderComponent:e=>new z(e.id,s[e.name],{addPortal:a})},h=(0,n.iz)(i.current,Object.assign(Object.assign({},function(e){return n.jl.reduce(((t,i)=>(i in e&&(t[i]=e[i]),t)),{})}(e)),r)),{clientWidth:l,clientHeight:d}=i.current;return h.layout(l,d),e.onReady&&e.onReady({api:h}),o.current=h,()=>{o.current=void 0,h.dispose()}}),[]),s.useEffect((()=>{o.current&&o.current.updateOptions({createComponent:t=>new z(t.id,e.components[t.name],{addPortal:a})})}),[e.components]),s.useEffect((()=>{var t;if(!o.current)return;const i=null!==(t=e.headerComponents)&&void 0!==t?t:{};o.current.updateOptions({createHeaderComponent:e=>new z(e.id,i[e.name],{addPortal:a})})}),[e.headerComponents]),s.useEffect((()=>{if(!o.current)return()=>{};const t=o.current.onDidDrop((t=>{e.onDidDrop&&e.onDidDrop(t)}));return()=>{t.dispose()}}),[e.onDidDrop]),s.createElement("div",{style:{height:"100%",width:"100%"},ref:i},r)}));S.displayName="PaneviewComponent"},4537:(e,t,i)=>{i.d(t,{M:()=>a});var n=i(6204),s=i(5186),o=i(3188);const r=()=>{return e={width:"16",height:"16",viewbox:"0 0 50 58",path:"M22.5581 50.9938V30.1717L4.65116 19.869V31.7386L12.8536 36.4939V45.4198L22.5581 50.9938ZM27.2093 51.1162L37.0931 45.4226V36.2851L45.3488 31.501V19.7801L27.2093 30.2529V51.1162ZM42.9633 15.7867L33.4288 10.2615L25.0571 15.1193L16.6219 10.2567L7.00237 15.8557L24.9542 26.1842L42.9633 15.7867ZM0 43.4008V14.5498L24.9974 0L50 14.4887V43.3552L24.9969 57.7584L0 43.4008Z"},(0,o.jsx)("svg",{height:e.height,width:e.width,viewBox:e.viewbox,focusable:!1,className:"dv-svg",children:(0,o.jsx)("path",{d:e.path})});var e},a=e=>{const t=n.useMemo((()=>e.id?`https://codesandbox.io/s/github/mathuo/dockview/tree/master/packages/docs/sandboxes/${e.id}`:""),[e.id]);return(0,o.jsxs)(o.Fragment,{children:[!e.hideThemePicker&&(0,o.jsx)(s.JE,{}),(0,o.jsxs)("span",{className:"codesandbox-button",style:{display:"flex",alignItems:"center"},children:[(0,o.jsx)("span",{className:"codesandbox-button-pretext",children:"Open in "}),(0,o.jsxs)("a",{href:t,target:"_blank",rel:"noopener",className:"codesandbox-button-content",children:[(0,o.jsx)("span",{style:{fontWeight:"bold",paddingRight:"4px"},children:"CodeSandbox"}),(0,o.jsx)(r,{})]})]})]})}},5186:(e,t,i)=>{i.d(t,{Qj:()=>v,JE:()=>m});var n=i(6204),s=i(4537),o=i(6261),r=i(3188);const a=()=>(0,r.jsxs)("div",{className:"lds-ellipsis",children:[(0,r.jsx)("div",{}),(0,r.jsx)("div",{}),(0,r.jsx)("div",{}),(0,r.jsx)("div",{})]});var h=i(4940);const l=e=>(0,r.jsx)("img",{style:{marginRight:"0px 4px"},height:e.height,width:e.width,src:(0,o.Z)("img/react-icon.svg")}),d=e=>(0,r.jsx)("img",{style:{marginRight:"0px 4px"},height:e.height,width:e.width,src:(0,o.Z)("img/js-icon.svg")}),p=["dockview-theme-abyss","dockview-theme-dark","dockview-theme-light","dockview-theme-vs","dockview-theme-dracula","dockview-theme-replit","dockview-theme-kraken"];function c(e,t){const[i,s]=n.useState(localStorage.getItem(e));return n.useEffect((()=>{const t=t=>{s(localStorage.getItem(e))};return window.addEventListener("storage",t),s(localStorage.getItem(e)),()=>{window.removeEventListener("storage",t)}}),[e]),null===i?t:i}const m=()=>{const[e,t]=n.useState(localStorage.getItem("dv-theme-class-name")||p[0]);return n.useEffect((()=>{localStorage.setItem("dv-theme-class-name",e),window.dispatchEvent(new StorageEvent("storage"))}),[e]),(0,r.jsxs)("div",{style:{height:"20px",display:"flex",alignItems:"center",padding:"0px 0px 0px 4px"},children:[(0,r.jsx)("span",{style:{paddingRight:"4px"},children:"Theme: "}),(0,r.jsx)("select",{style:{backgroundColor:"inherit",color:"inherit"},onChange:e=>t(e.target.value),value:e,children:p.map((e=>(0,r.jsx)("option",{value:e,children:e},e)))})]})};const u=e=>{const t=n.useRef(null),[i,o]=n.useState("React"),[h,p]=n.useState(!1),m=c("dv-theme-class-name","dockview-theme-abyss");n.useEffect((()=>{p(!0),setTimeout((()=>{p(!1)}),500)}),[i]),n.useEffect((()=>{if(t.current&&"Javascript"===i){const i=e.typescript(t.current);return()=>{i.dispose()}}}),[e.typescript,i]);const u=n.useMemo((()=>"Javascript"===i?`javascript/${e.sandboxId}`:e.sandboxId),[e.sandboxId,i]);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{ref:t,style:{position:"relative",height:e.height?`${e.height}px`:"300px"},children:[h&&(0,r.jsx)("div",{style:{background:"rgba(30,30,30)",position:"absolute",zIndex:9999,top:0,left:0,width:"100%",height:"100%",display:"flex",justifyContent:"center",alignItems:"center"},children:(0,r.jsx)(a,{})}),"React"===i&&(0,r.jsx)(e.react,{theme:m})]}),(0,r.jsxs)("div",{style:{margin:"2px 0px",padding:"2px 0px",display:"flex",alignItems:"center",fontSize:"14px",height:"24px"},children:[(0,r.jsxs)("div",{className:"framework-button",style:{display:"flex",alignItems:"center",cursor:"pointer"},children:[e.typescript&&("React"===i?(0,r.jsx)(l,{height:16,width:16}):(0,r.jsx)(d,{height:16,width:16})),e.typescript&&(0,r.jsxs)("select",{style:{border:"none",fontWeight:"bold",backgroundColor:"inherit",cursor:"inherit",color:"inherit",height:"24px"},onChange:e=>{const t=e.target;o(t.value)},children:[(0,r.jsx)("option",{value:"React",children:"React"}),(0,r.jsx)("option",{value:"Javascript",children:"Javascript"})]})]}),(0,r.jsx)("span",{style:{flexGrow:1}}),(0,r.jsx)(s.M,{id:u,hideThemePicker:e.hideThemePicker})]})]})},v=e=>(0,r.jsx)(h.Z,{children:()=>(0,r.jsx)(u,{...e})})},8854:(e,t,i)=>{i.r(t),i.d(t,{default:()=>_});i(6204);var n=i(6223),s=i(1210),o=i(5136),r=i(6261);const a={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var h=i(3188);const l=[{title:"",Svg:i(9368).Z,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Serializable Layouts"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Add and remove panels using the provided api or use the serialziation methods to persist layouts."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Customizable Theme"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Adjust a number of provided CSS Properties for a simple change or target specific classes for a more customized approach."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Choose Your Control"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Choose from a simple splitview, gridview, collapsable panes or a full docking solution. Combine multiple for complex layouts."})]})]})},{title:"",Svg:i(7885).Z,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Rich Feature Control"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Customize header features to add additional icons and more as well as custom tab rendering."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Floating and Popout Groups"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Built-in support for floating groups and groups in new windows with a supporting api for progmatic control."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Drag And Drop"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Drag and Drop tab to position your layout as well as interacting with external drag events."})]})]})},{title:"",Svg:i(2614).Z,description:(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Zero Dependencies"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Zero dependencies, that's all."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"Code Quality and Transparency"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"All of the code is run through Sonarcloud Code Analysis, which along with the source code and high test coverage can be viewed from the Github page."})]}),(0,h.jsxs)("div",{className:"feature-banner",children:[(0,h.jsx)("h3",{className:"feature-banner-header",children:"React or Vanilla TypeScript"}),(0,h.jsx)("p",{className:"feature-banner-content",children:"Exposes native support for both ReactJS components and Vanilla TypeScript."})]})]})}];function d(e){let{title:t,Svg:i,description:n}=e;return(0,h.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",margin:"auto",justifyContent:"center"},className:"dockview-feature",children:[(0,h.jsx)(i,{className:a.featureSvg,role:"img"}),(0,h.jsxs)("div",{style:{maxWidth:"400px",padding:"0px 20px"},children:[(0,h.jsx)("h3",{children:t}),n]})]})}function p(){return(0,h.jsx)("section",{className:a.features,children:(0,h.jsx)("div",{className:"container",children:(0,h.jsx)("div",{className:"row",children:l.map(((e,t)=>(0,h.jsx)(d,{...e},t)))})})})}const c=()=>(0,h.jsxs)("div",{style:{height:"30px",borderBottom:"1px solid #BABABA",backgroundColor:"#DCDCDC",borderTopLeftRadius:"15px",borderTopRightRadius:"15px",padding:"0px 15px",display:"flex",alignItems:"center"},children:[(0,h.jsx)("div",{style:{height:"14px",width:"14px",borderRadius:"100%",backgroundColor:"#FD605E",marginRight:7}}),(0,h.jsx)("div",{style:{height:"14px",width:"14px",borderRadius:"100%",backgroundColor:"#FBBC3F",marginRight:7}}),(0,h.jsx)("div",{style:{height:"14px",width:"14px",borderRadius:"100%",backgroundColor:"#34C942",marginRight:7}})]});var m=i(5186),u=i(6376);const v={default:e=>(0,h.jsx)("div",{style:{height:"100%",padding:"20px",background:"var(--dv-group-view-background-color)"},children:e.params.title})},g={default:e=>(0,h.jsx)("div",{style:{height:"100%",padding:"20px",background:"var(--dv-group-view-background-color)"},children:e.params.title}),panes:e=>(0,h.jsx)(u.Vm,{onReady:e=>{e.api.addPanel({id:"pane_1",component:"default",title:"Pane 1",isExpanded:!1}),e.api.addPanel({id:"pane_2",component:"default",title:"Pane 2",isExpanded:!0}),e.api.addPanel({id:"pane_3",component:"default",title:"Pane 3",isExpanded:!0}),e.api.addPanel({id:"pane_4",component:"default",title:"Pane 4",isExpanded:!1})},components:v})},f=e=>(0,h.jsx)(u.$R,{onReady:e=>{e.api.addPanel({id:"panes",component:"panes",minimumHeight:100,minimumWidth:100}),e.api.addPanel({id:"panel_1",component:"default",position:{referencePanel:"panes",direction:"right"},minimumHeight:100,minimumWidth:100}),e.api.addPanel({id:"panel_2",component:"default",position:{referencePanel:"panel_1",direction:"below"},minimumHeight:100,minimumWidth:100}),e.api.addPanel({id:"panel_3",component:"default",position:{referencePanel:"panel_2",direction:"below"},minimumHeight:100,minimumWidth:100})},components:g,className:`${e.theme||"dockview-theme-abyss"}`}),w=()=>(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(p,{}),(0,h.jsxs)("div",{id:"live-demo",style:{height:"30px",display:"flex",alignItems:"center",fontSize:"1.5em",fontWeight:"bold"},children:[(0,h.jsx)("img",{src:(0,r.Z)("/img/dockview_logo.svg"),height:30}),(0,h.jsx)("span",{style:{paddingLeft:"8px"},children:"Dockview Live Demos"})]}),(0,h.jsxs)("div",{style:{padding:"20px"},children:[(0,h.jsx)(c,{}),(0,h.jsx)(m.Qj,{height:500,react:f,sandboxId:"dockview-app"})]})]});function _(){const{siteConfig:e}=(0,o.Z)();return(0,h.jsx)(n.Z,{title:`${e.tagline}`,children:(0,h.jsx)("div",{className:"home-page",children:(0,h.jsxs)("main",{children:[(0,h.jsx)("div",{className:"container",children:(0,h.jsxs)("div",{className:"splashscreen",children:[(0,h.jsxs)("div",{className:"splashscreen-title",children:[(0,h.jsx)("h1",{children:"Fully Featured Docking Layout Manager"}),(0,h.jsx)("h2",{children:"Zero dependency layout management and docking controls"})]}),(0,h.jsxs)("div",{className:"splashscreen-video",children:[(0,h.jsx)("img",{src:(0,r.Z)("/img/Animation.gif")}),(0,h.jsx)(s.Z,{to:"/demo",children:(0,h.jsx)("button",{children:"Go To Live Demo"})})]})]})}),(0,h.jsx)("div",{style:{backgroundColor:"#020c18",padding:"20px 0px"},children:(0,h.jsx)("div",{className:"container"})}),(0,h.jsx)("div",{className:"container",children:(0,h.jsx)(w,{})})]})})})}},9368:(e,t,i)=>{i.d(t,{Z:()=>ee});var n,s,o,r,a,h,l,d,p,c,m,u,v,g,f,w,_,D,b,y,x,C,z,S,A,E,P,O,I,G,M,N,V,k,L,T,R,H,W,j,B,F,Z,J,U,$,X,Y,q,K=i(6204);function Q(){return Q=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:i,...ee}=e;return K.createElement("svg",Q({xmlns:"http://www.w3.org/2000/svg",width:312,height:200,fill:"none",viewBox:"0 0 312 200","aria-labelledby":i},ee),t?K.createElement("title",{id:i},t):null,n||(n=K.createElement("rect",{width:311.504,height:200,fill:"#fff",rx:5})),s||(s=K.createElement("path",{fill:"#DCDCDC",d:"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z"})),o||(o=K.createElement("path",{fill:"#BABABA",d:"M0 10h312v1H0z"})),r||(r=K.createElement("path",{fill:"#A8A8A8",d:"M0 11h156v189H0z"})),a||(a=K.createElement("path",{fill:"#000C18",d:"M156 11h156v91H156zM234 102h78v98h-78zM156 102h78v98h-78zM0 24h156v176H0z"})),h||(h=K.createElement("path",{fill:"#2B2B4A",d:"M157 102h155v1H157zM157 11h-1v189h1zM234 103h-1v97h1v-97Z"})),l||(l=K.createElement("path",{fill:"#1C1C2A",d:"M0 11h156v14H0z"})),d||(d=K.createElement("path",{fill:"#10192C",d:"M0 11h30v14H0zM31 11h30v14H31z"})),p||(p=K.createElement("path",{fill:"#000C18",d:"M62 11h30v14H62z"})),c||(c=K.createElement("path",{fill:"#2B2B4A",d:"M30 11h1v14h-1zM61 11h1v14h-1zM92 11h1v14h-1z"})),m||(m=K.createElement("path",{fill:"#1C1C2A",d:"M157 11h155v14H157z"})),u||(u=K.createElement("path",{fill:"#10192C",d:"M157 11h30v14h-30z"})),v||(v=K.createElement("path",{fill:"#000C18",d:"M188 11h30v14h-30z"})),g||(g=K.createElement("path",{fill:"#2B2B4A",d:"M187 11h1v14h-1zM218 11h1v14h-1z"})),f||(f=K.createElement("path",{fill:"#1C1C2A",d:"M234 103h78v14h-78z"})),w||(w=K.createElement("path",{fill:"#10192C",d:"M234 103h24v14h-24z"})),_||(_=K.createElement("path",{fill:"#000C18",d:"M258 103h24v14h-24z"})),D||(D=K.createElement("path",{fill:"#2B2B4A",d:"M258 103h.503v14H258zM282 103h.503v14H282z"})),b||(b=K.createElement("rect",{width:7,height:4,x:66,y:16,fill:"#fff",rx:2})),y||(y=K.createElement("rect",{width:12,height:4,x:76,y:16,fill:"#fff",rx:2})),x||(x=K.createElement("rect",{width:12,height:4,x:191,y:16,fill:"#777",rx:2})),C||(C=K.createElement("rect",{width:7,height:4,x:260,y:108,fill:"#777",rx:2})),z||(z=K.createElement("rect",{width:11,height:4,x:268,y:108,fill:"#777",rx:2})),S||(S=K.createElement("rect",{width:4,height:4,x:206,y:16,fill:"#777",rx:2})),A||(A=K.createElement("rect",{width:5,height:4,x:160,y:16,fill:"#282828",rx:2})),E||(E=K.createElement("rect",{width:16,height:4,x:166,y:16,fill:"#282828",rx:2})),P||(P=K.createElement("rect",{width:16,height:4,x:237,y:108,fill:"#282828",rx:2})),O||(O=K.createElement("rect",{width:15,height:4,x:33,y:16,fill:"#777",rx:2})),I||(I=K.createElement("rect",{width:4,height:4,x:4,y:3,fill:"#FD605E",rx:2})),G||(G=K.createElement("rect",{width:4,height:4,x:10,y:3,fill:"#FBBC3F",rx:2})),M||(M=K.createElement("rect",{width:4,height:4,x:16,y:3,fill:"#34C942",rx:2})),N||(N=K.createElement("rect",{width:6,height:4,x:2,y:16,fill:"#777",rx:2})),V||(V=K.createElement("rect",{width:18,height:4,x:10,y:16,fill:"#777",rx:2})),k||(k=K.createElement("path",{fill:"#E1E1E1",fillOpacity:.25,d:"M297 11h15v189h-15z"})),L||(L=K.createElement("path",{fill:"#000C18",stroke:"#2B2B4A",d:"M90.5 18.5h48v13h-48z"})),T||(T=K.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M140.344 22.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),R||(R=K.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M139.5 23.5h4v2h-4z"})),H||(H=K.createElement("path",{fill:"#fff",d:"M97.33 23.09h.421l.989 2.416h.034l.989-2.415h.42V26h-.33v-2.21h-.028L98.916 26h-.318l-.91-2.21h-.028V26h-.33v-2.91Zm4.889 2.018v-1.29h.335V26h-.335v-.37h-.023a.713.713 0 0 1-.238.283.692.692 0 0 1-.41.115.727.727 0 0 1-.363-.09.623.623 0 0 1-.25-.272 1.03 1.03 0 0 1-.091-.462v-1.386h.335v1.364c0 .159.045.286.134.38.09.095.204.142.343.142a.571.571 0 0 0 .563-.596Zm1.284-2.017V26h-.335v-2.91h.335Zm1.563.727v.284h-1.13v-.284h1.13Zm-.801-.523h.335v2.08c0 .095.014.166.042.213a.212.212 0 0 0 .107.094.438.438 0 0 0 .141.023.598.598 0 0 0 .091-.006l.057-.012.068.302a.7.7 0 0 1-.528-.021.556.556 0 0 1-.225-.187.532.532 0 0 1-.088-.315v-2.17ZM105.57 26v-2.182h.336V26h-.336Zm.171-2.546a.238.238 0 0 1-.169-.066.216.216 0 0 1-.07-.16c0-.063.024-.117.07-.161a.238.238 0 0 1 .169-.067c.065 0 .121.022.168.067a.214.214 0 0 1 .071.16.214.214 0 0 1-.071.16.236.236 0 0 1-.168.067Zm.779 3.364v-3h.324v.347h.039c.025-.038.059-.086.103-.145a.596.596 0 0 1 .19-.16.683.683 0 0 1 .338-.07c.184 0 .346.046.486.138a.92.92 0 0 1 .328.39c.079.169.118.368.118.597 0 .23-.039.431-.118.6a.935.935 0 0 1-.327.393.852.852 0 0 1-.481.137.7.7 0 0 1-.337-.07.636.636 0 0 1-.195-.16c-.045-.06-.08-.11-.105-.15h-.028v1.153h-.335Zm.329-1.909c0 .165.024.31.073.436a.661.661 0 0 0 .211.294.55.55 0 0 0 .341.105.55.55 0 0 0 .351-.11.672.672 0 0 0 .213-.302c.048-.127.073-.268.073-.423 0-.153-.024-.292-.071-.415a.644.644 0 0 0-.212-.294.56.56 0 0 0-.354-.11.556.556 0 0 0-.343.105.627.627 0 0 0-.211.287 1.187 1.187 0 0 0-.071.427Zm2.443-1.818V26h-.335v-2.91h.335Zm1.529 2.954c-.21 0-.391-.046-.544-.139a.942.942 0 0 1-.351-.392 1.343 1.343 0 0 1-.122-.588c0-.223.041-.42.122-.59a.967.967 0 0 1 .344-.401.924.924 0 0 1 .517-.145c.114 0 .226.019.337.057.111.037.211.099.302.184a.884.884 0 0 1 .218.335c.054.14.081.311.081.515v.142h-1.682v-.29h1.341a.718.718 0 0 0-.074-.33.556.556 0 0 0-.523-.312.6.6 0 0 0-.346.1.65.65 0 0 0-.223.255.74.74 0 0 0-.079.338v.193c0 .165.029.305.086.42.057.113.137.2.24.26a.701.701 0 0 0 .356.087.728.728 0 0 0 .239-.037.511.511 0 0 0 .186-.113.526.526 0 0 0 .121-.19l.324.09a.734.734 0 0 1-.172.29.84.84 0 0 1-.299.193 1.104 1.104 0 0 1-.399.069Zm2.539.773v-3h.323v.347h.04a3.76 3.76 0 0 1 .102-.145.6.6 0 0 1 .191-.16.683.683 0 0 1 .338-.07c.184 0 .346.046.486.138a.92.92 0 0 1 .328.39c.078.169.118.368.118.597 0 .23-.04.431-.118.6a.935.935 0 0 1-.327.393.854.854 0 0 1-.481.137.697.697 0 0 1-.337-.07.636.636 0 0 1-.195-.16c-.045-.06-.08-.11-.105-.15h-.028v1.153h-.335Zm.329-1.909c0 .165.024.31.073.436a.653.653 0 0 0 .211.294.55.55 0 0 0 .341.105.55.55 0 0 0 .351-.11.672.672 0 0 0 .213-.302c.048-.127.072-.268.072-.423 0-.153-.023-.292-.071-.415a.642.642 0 0 0-.211-.294.56.56 0 0 0-.354-.11.561.561 0 0 0-.344.105.625.625 0 0 0-.21.287 1.187 1.187 0 0 0-.071.427Zm2.75 1.142a.883.883 0 0 1-.376-.078.643.643 0 0 1-.269-.229.647.647 0 0 1-.099-.363c0-.125.024-.227.074-.304a.522.522 0 0 1 .197-.185c.082-.044.173-.078.273-.1.1-.022.201-.04.302-.053.133-.017.24-.03.323-.039a.5.5 0 0 0 .182-.047c.038-.021.058-.06.058-.113v-.012a.444.444 0 0 0-.115-.326c-.076-.078-.191-.117-.345-.117a.605.605 0 0 0-.377.105.622.622 0 0 0-.192.225l-.318-.114a.764.764 0 0 1 .228-.31.843.843 0 0 1 .312-.156c.114-.03.225-.045.335-.045.07 0 .151.008.242.025.092.016.18.05.265.101a.59.59 0 0 1 .215.232.86.86 0 0 1 .085.415V26h-.335v-.296h-.017a.653.653 0 0 1-.325.29.82.82 0 0 1-.323.057Zm.051-.301a.66.66 0 0 0 .335-.078.537.537 0 0 0 .279-.462v-.307c-.014.018-.046.033-.094.047a1.55 1.55 0 0 1-.165.036 6.889 6.889 0 0 1-.321.042c-.087.012-.168.03-.244.056a.424.424 0 0 0-.182.112.288.288 0 0 0-.068.202.3.3 0 0 0 .129.264.581.581 0 0 0 .331.088Zm1.896-1.063V26h-.335v-2.182h.324v.341h.028c.051-.11.129-.2.233-.267a.726.726 0 0 1 .404-.102c.147 0 .277.03.387.09.111.06.197.151.259.273.061.122.092.275.092.46V26h-.335v-1.364c0-.171-.045-.305-.134-.4a.473.473 0 0 0-.366-.145.585.585 0 0 0-.287.07.497.497 0 0 0-.197.203.663.663 0 0 0-.073.323Zm2.92 1.358c-.211 0-.392-.046-.544-.139a.929.929 0 0 1-.351-.392 1.33 1.33 0 0 1-.122-.588c0-.223.04-.42.122-.59a.964.964 0 0 1 .343-.401.926.926 0 0 1 .517-.145c.114 0 .226.019.337.057a.835.835 0 0 1 .52.52c.054.139.081.31.081.514v.142h-1.682v-.29h1.341a.718.718 0 0 0-.074-.33.554.554 0 0 0-.523-.312.6.6 0 0 0-.346.1.65.65 0 0 0-.223.255.752.752 0 0 0-.078.338v.193c0 .165.028.305.085.42.058.113.138.2.24.26a.702.702 0 0 0 .357.087.722.722 0 0 0 .238-.037.511.511 0 0 0 .186-.113.513.513 0 0 0 .121-.19l.324.09a.711.711 0 0 1-.172.29.835.835 0 0 1-.298.193 1.112 1.112 0 0 1-.399.069Zm1.748-2.954V26h-.335v-2.91h.335Zm2.16 1.216-.302.085a.53.53 0 0 0-.083-.146.413.413 0 0 0-.148-.12.54.54 0 0 0-.24-.047.572.572 0 0 0-.334.093c-.088.06-.132.138-.132.231 0 .084.03.15.091.198.06.048.155.088.284.12l.324.08c.195.048.34.12.436.218a.507.507 0 0 1 .143.373.554.554 0 0 1-.108.335.713.713 0 0 1-.298.233 1.089 1.089 0 0 1-.446.085.978.978 0 0 1-.552-.144.639.639 0 0 1-.277-.424l.318-.08c.03.118.087.206.172.265a.575.575 0 0 0 .333.088.625.625 0 0 0 .373-.1c.092-.067.139-.147.139-.24a.254.254 0 0 0-.08-.191.505.505 0 0 0-.244-.117l-.364-.085c-.2-.047-.346-.12-.44-.22a.532.532 0 0 1-.139-.377.54.54 0 0 1 .103-.326.716.716 0 0 1 .286-.223c.121-.054.258-.081.412-.081.216 0 .385.047.508.142.124.095.213.22.265.375Zm1.788.239c0-.358.047-.688.14-.988.093-.3.227-.578.4-.83h.296a1.75 1.75 0 0 0-.192.346 4.068 4.068 0 0 0-.26.956 3.627 3.627 0 0 0 .028 1.201c.044.232.103.448.176.647.074.199.157.36.248.486h-.296a3.068 3.068 0 0 1-.4-.83 3.337 3.337 0 0 1-.14-.988Zm2.307 1.494c-.187 0-.354-.032-.501-.097a.857.857 0 0 1-.348-.268.719.719 0 0 1-.139-.402h.358c.007.093.04.174.096.243.057.067.132.119.223.156a.815.815 0 0 0 .306.055.796.796 0 0 0 .332-.065.536.536 0 0 0 .227-.182.455.455 0 0 0 .083-.27.507.507 0 0 0-.313-.476.903.903 0 0 0-.375-.07h-.233v-.312h.233c.116 0 .217-.02.304-.062a.474.474 0 0 0 .282-.443.488.488 0 0 0-.066-.258.446.446 0 0 0-.184-.17.602.602 0 0 0-.279-.061c-.1 0-.195.018-.284.055a.53.53 0 0 0-.216.158.412.412 0 0 0-.091.247h-.341a.696.696 0 0 1 .138-.4.868.868 0 0 1 .338-.27c.14-.065.294-.097.462-.097.18 0 .334.037.463.11a.748.748 0 0 1 .4.669.653.653 0 0 1-.477.66v.021c.184.03.327.109.431.235.103.125.154.28.154.464 0 .158-.043.3-.129.426a.88.88 0 0 1-.349.296 1.139 1.139 0 0 1-.505.108Zm2.286-1.494c0 .357-.047.687-.141.988-.092.3-.225.577-.399.83h-.295a1.8 1.8 0 0 0 .19-.347c.06-.136.112-.286.156-.449a4.123 4.123 0 0 0 .142-1.023c0-.225-.021-.454-.065-.686a3.876 3.876 0 0 0-.176-.646 2.031 2.031 0 0 0-.247-.486h.295c.174.253.307.53.399.831.094.3.141.63.141.988Z"})),W||(W=K.createElement("path",{fill:"#000C18",stroke:"#2B2B4A",d:"M279.5 46.5h29v13h-29z"})),j||(j=K.createElement("rect",{width:7,height:4,x:283,y:51,fill:"#fff",rx:2})),B||(B=K.createElement("rect",{width:12,height:4,x:294,y:51,fill:"#fff",rx:2})),F||(F=K.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M305.344 61.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),Z||(Z=K.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M304.5 62.5h4v2h-4z"})),J||(J=K.createElement("path",{fill:"#E1E1E1",fillOpacity:.25,d:"M157 153h76v47h-76z"})),U||(U=K.createElement("path",{fill:"#000C18",stroke:"#2B2B4A",d:"M180.5 163.5h29v13h-29z"})),$||($=K.createElement("rect",{width:7,height:4,x:184,y:168,fill:"#fff",rx:2})),X||(X=K.createElement("rect",{width:12,height:4,x:195,y:168,fill:"#fff",rx:2})),Y||(Y=K.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M194.344 176.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),q||(q=K.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M193.5 177.5h4v2h-4z"})))}},7885:(e,t,i)=>{i.d(t,{Z:()=>ge});var n,s,o,r,a,h,l,d,p,c,m,u,v,g,f,w,_,D,b,y,x,C,z,S,A,E,P,O,I,G,M,N,V,k,L,T,R,H,W,j,B,F,Z,J,U,$,X,Y,q,K,Q,ee,te,ie,ne,se,oe,re,ae,he,le,de,pe,ce,me,ue=i(6204);function ve(){return ve=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:i,...ge}=e;return ue.createElement("svg",ve({xmlns:"http://www.w3.org/2000/svg",width:312,height:200,fill:"none",viewBox:"0 0 312 200","aria-labelledby":i},ge),t?ue.createElement("title",{id:i},t):null,n||(n=ue.createElement("rect",{width:311.504,height:200,fill:"#fff",rx:5})),s||(s=ue.createElement("path",{fill:"#DCDCDC",d:"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z"})),o||(o=ue.createElement("path",{fill:"#BABABA",d:"M0 10h312v1H0z"})),r||(r=ue.createElement("path",{fill:"#A8A8A8",d:"M0 11h156v189H0z"})),a||(a=ue.createElement("path",{fill:"#000C18",d:"M188 11h124v91H188zM188 102h124v98H188zM0 24h187v176H0z"})),h||(h=ue.createElement("path",{fill:"#2B2B4A",d:"M188 102h124v1H188zM188 11h-1v189h1z"})),l||(l=ue.createElement("path",{fill:"#1C1C2A",d:"M0 11h187v14H0z"})),d||(d=ue.createElement("path",{fill:"#10192C",d:"M0 11h35.962v14H0zM37.16 11h35.962v14H37.16z"})),p||(p=ue.createElement("path",{fill:"#000C18",d:"M74.32 11h35.962v14H74.32z"})),c||(c=ue.createElement("path",{fill:"#2B2B4A",d:"M35.962 11h1.199v14h-1.199zM73.122 11h1.199v14h-1.199zM110.282 11h1.199v14h-1.199z"})),m||(m=ue.createElement("path",{fill:"#1C1C2A",d:"M188 11h124v14H188z"})),u||(u=ue.createElement("path",{fill:"#10192C",d:"M188 11h30v14h-30z"})),v||(v=ue.createElement("path",{fill:"#000C18",d:"M219 11h30v14h-30z"})),g||(g=ue.createElement("path",{fill:"#2B2B4A",d:"M218 11h1v14h-1zM249 11h1v14h-1z"})),f||(f=ue.createElement("path",{fill:"#1C1C2A",d:"M188 103h124v14H188z"})),w||(w=ue.createElement("path",{fill:"#10192C",d:"M188 103h24v14h-24z"})),_||(_=ue.createElement("path",{fill:"#000C18",d:"M212 103h24v14h-24z"})),D||(D=ue.createElement("path",{fill:"#2B2B4A",d:"M212 103h.503v14H212zM236 103h.503v14H236z"})),b||(b=ue.createElement("path",{fill:"#fff",d:"M76 18a2 2 0 0 1 2-2h3a2 2 0 1 1 0 4h-3a2 2 0 0 1-2-2Z"})),y||(y=ue.createElement("rect",{width:12,height:4,x:85,y:16,fill:"#fff",rx:2})),x||(x=ue.createElement("rect",{width:12,height:4,x:222,y:16,fill:"#777",rx:2})),C||(C=ue.createElement("rect",{width:7,height:4,x:214,y:108,fill:"#777",rx:2})),z||(z=ue.createElement("rect",{width:11,height:4,x:222,y:108,fill:"#777",rx:2})),S||(S=ue.createElement("rect",{width:4,height:4,x:237,y:16,fill:"#777",rx:2})),A||(A=ue.createElement("rect",{width:5,height:4,x:191,y:16,fill:"#282828",rx:2})),E||(E=ue.createElement("rect",{width:16,height:4,x:197,y:16,fill:"#282828",rx:2})),P||(P=ue.createElement("rect",{width:16,height:4,x:191,y:108,fill:"#282828",rx:2})),O||(O=ue.createElement("path",{fill:"#777",d:"M39 18a2 2 0 0 1 2-2h11a2 2 0 1 1 0 4H41a2 2 0 0 1-2-2Z"})),I||(I=ue.createElement("rect",{width:4,height:4,x:4,y:3,fill:"#FD605E",rx:2})),G||(G=ue.createElement("rect",{width:4,height:4,x:10,y:3,fill:"#FBBC3F",rx:2})),M||(M=ue.createElement("rect",{width:4,height:4,x:16,y:3,fill:"#34C942",rx:2})),N||(N=ue.createElement("rect",{width:6,height:4,x:2,y:16,fill:"#777",rx:2})),V||(V=ue.createElement("rect",{width:18,height:4,x:10,y:16,fill:"#777",rx:2})),k||(k=ue.createElement("path",{fill:"#10192C",d:"M173 11h14v14h-14z"})),L||(L=ue.createElement("circle",{cx:176,cy:18,r:1,fill:"#fff",transform:"rotate(-90 176 18)"})),T||(T=ue.createElement("circle",{cx:184,cy:18,r:1,fill:"#fff",transform:"rotate(-90 184 18)"})),R||(R=ue.createElement("circle",{cx:180,cy:18,r:1,fill:"#fff",transform:"rotate(-90 180 18)"})),H||(H=ue.createElement("path",{fill:"#10192C",d:"M298 11h14v14h-14z"})),W||(W=ue.createElement("circle",{cx:301,cy:18,r:1,fill:"#fff",transform:"rotate(-90 301 18)"})),j||(j=ue.createElement("circle",{cx:309,cy:18,r:1,fill:"#fff",transform:"rotate(-90 309 18)"})),B||(B=ue.createElement("circle",{cx:305,cy:18,r:1,fill:"#fff",transform:"rotate(-90 305 18)"})),F||(F=ue.createElement("path",{fill:"#10192C",d:"M111 11h14v14h-14z"})),Z||(Z=ue.createElement("rect",{width:1.333,height:8,x:117.333,y:14,fill:"#fff",rx:.667})),J||(J=ue.createElement("rect",{width:1.333,height:8,x:114,y:18.666,fill:"#fff",rx:.667,transform:"rotate(-90 114 18.666)"})),U||(U=ue.createElement("path",{fill:"#10192C",d:"M298 103h14v14h-14z"})),$||($=ue.createElement("circle",{cx:301,cy:110,r:1,fill:"#fff",transform:"rotate(-90 301 110)"})),X||(X=ue.createElement("circle",{cx:309,cy:110,r:1,fill:"#fff",transform:"rotate(-90 309 110)"})),Y||(Y=ue.createElement("circle",{cx:305,cy:110,r:1,fill:"#fff",transform:"rotate(-90 305 110)"})),q||(q=ue.createElement("path",{fill:"#10192C",d:"M285 103h14v14h-14z"})),K||(K=ue.createElement("rect",{width:7,height:7,x:288.5,y:106.5,stroke:"#fff",rx:1.5})),Q||(Q=ue.createElement("path",{fill:"#fff",d:"M288 109h8v2h-8z"})),ee||(ee=ue.createElement("g",{opacity:.35},ue.createElement("path",{fill:"#000C18",d:"M40 45h128.769v91H40z"}),ue.createElement("path",{fill:"#2B2B4A",d:"M40 136h128.769v1H40z"}),ue.createElement("path",{fill:"#1C1C2A",d:"M40 45h128.769v14H40z"}),ue.createElement("path",{fill:"#10192C",d:"M40 45h31.154v14H40z"}),ue.createElement("path",{fill:"#000C18",d:"M72.192 45h31.154v14H72.192z"}),ue.createElement("path",{fill:"#2B2B4A",d:"M71.154 45h1.038v14h-1.038zM40 45h1v92h-1zM168 45h1v92h-1zM103.346 45h1.038v14h-1.038z"}),ue.createElement("rect",{width:12.461,height:4,x:75.308,y:50,fill:"#777",rx:2}),ue.createElement("rect",{width:4.154,height:4,x:90.885,y:50,fill:"#777",rx:2}),ue.createElement("rect",{width:5.192,height:4,x:43.115,y:50,fill:"#282828",rx:2}),ue.createElement("rect",{width:16.615,height:4,x:49.346,y:50,fill:"#282828",rx:2}),ue.createElement("path",{fill:"#2B2B4A",d:"M40 45h128.769v1H40z"}))),te||(te=ue.createElement("path",{fill:"#000C18",d:"M29 54h128.769v91H29z"})),ie||(ie=ue.createElement("path",{fill:"#2B2B4A",d:"M29 145h128.769v1H29z"})),ne||(ne=ue.createElement("path",{fill:"#1C1C2A",d:"M29 54h128.769v14H29z"})),se||(se=ue.createElement("path",{fill:"#10192C",d:"M29 54h31.154v14H29z"})),oe||(oe=ue.createElement("path",{fill:"#000C18",d:"M61.192 54h31.154v14H61.192z"})),re||(re=ue.createElement("path",{fill:"#2B2B4A",d:"M60.154 54h1.038v14h-1.038zM29 54h1v92h-1zM157 54h1v92h-1zM92.346 54h1.038v14h-1.038z"})),ae||(ae=ue.createElement("rect",{width:12.461,height:4,x:64.308,y:59,fill:"#777",rx:2})),he||(he=ue.createElement("rect",{width:4.154,height:4,x:79.885,y:59,fill:"#777",rx:2})),le||(le=ue.createElement("rect",{width:5.192,height:4,x:32.115,y:59,fill:"#282828",rx:2})),de||(de=ue.createElement("rect",{width:16.615,height:4,x:38.346,y:59,fill:"#282828",rx:2})),pe||(pe=ue.createElement("path",{fill:"#2B2B4A",d:"M29 54h128.769v1H29z"})),ce||(ce=ue.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M128.344 61.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z",clipRule:"evenodd"})),me||(me=ue.createElement("path",{stroke:"#fff",strokeDasharray:".25 .25",d:"M127.5 62.5h4v2h-4z"})))}},2614:(e,t,i)=>{i.d(t,{Z:()=>T});var n,s,o,r,a,h,l,d,p,c,m,u,v,g,f,w,_,D,b,y,x,C,z,S,A,E,P,O,I,G,M,N,V,k=i(6204);function L(){return L=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:i,...T}=e;return k.createElement("svg",L({xmlns:"http://www.w3.org/2000/svg",width:312,height:200,fill:"none",viewBox:"0 0 312 200","aria-labelledby":i},T),t?k.createElement("title",{id:i},t):null,n||(n=k.createElement("path",{fill:"#DCDCDC",d:"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z"})),s||(s=k.createElement("path",{fill:"#BABABA",d:"M0 10h312v1H0z"})),o||(o=k.createElement("rect",{width:4,height:4,x:4,y:3,fill:"#FD605E",rx:2})),r||(r=k.createElement("rect",{width:4,height:4,x:10,y:3,fill:"#FBBC3F",rx:2})),a||(a=k.createElement("rect",{width:4,height:4,x:16,y:3,fill:"#34C942",rx:2})),h||(h=k.createElement("path",{fill:"#D9D9D9",d:"M0 11h312v189H0z"})),l||(l=k.createElement("path",{fill:"#000C18",d:"M0 11h166v189H0zM167 11h145v189H167z"})),d||(d=k.createElement("path",{fill:"#2B2B4A",d:"M166 11h1v189h-1zM167 56h145v1H167zM167 112h145v1H167z"})),p||(p=k.createElement("path",{fill:"#1C1C2A",d:"M0 11h166v10H0zM0 22h166v10H0zM0 94h166v10H0zM0 190h166v10H0z"})),c||(c=k.createElement("path",{fill:"#2B2B4A",d:"M0 21h166v1H0z"})),m||(m=k.createElement("rect",{width:21,height:4,x:11,y:14,fill:"#fff",rx:2})),u||(u=k.createElement("rect",{width:11,height:4,x:34,y:14,fill:"#fff",rx:2})),v||(v=k.createElement("rect",{width:6,height:4,x:11,y:25,fill:"#fff",rx:2})),g||(g=k.createElement("rect",{width:11,height:4,x:19,y:25,fill:"#fff",rx:2})),f||(f=k.createElement("rect",{width:16,height:4,x:11,y:97,fill:"#fff",rx:2})),w||(w=k.createElement("rect",{width:5,height:4,x:29,y:97,fill:"#fff",rx:2})),_||(_=k.createElement("rect",{width:14,height:4,x:11,y:193,fill:"#fff",rx:2})),D||(D=k.createElement("path",{fill:"#fff",d:"m5 29-3-3.392.538-.608L5 27.799l2.463-2.785.537.608L5 29ZM5 101l-3-3.392.538-.608L5 99.799l2.463-2.785.537.608L5 101ZM6 16l-3.392 3L2 18.462 4.799 16l-2.785-2.463.608-.537L6 16ZM6 195l-3.392 3-.608-.537L4.799 195l-2.785-2.462.608-.538L6 195Z"})),b||(b=k.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M212.674 111c.236 0 .394-.221.297-.416l-2.174-4.409c-.115-.233-.479-.233-.594 0l-2.174 4.409c-.097.195.061.416.297.416h.889a.327.327 0 0 0 .297-.175l.691-1.401c.115-.233.479-.233.594 0l.691 1.401a.327.327 0 0 0 .297.175h.889ZM208.326 114c-.236 0-.394.221-.297.416l2.174 4.409c.115.233.479.233.594 0l2.174-4.409c.097-.195-.061-.416-.297-.416h-.889a.327.327 0 0 0-.297.175l-.691 1.401c-.115.233-.479.233-.594 0l-.691-1.401a.327.327 0 0 0-.297-.175h-.889Z",clipRule:"evenodd"})),y||(y=k.createElement("path",{stroke:"#fff",d:"M210.5 116v-7"})),x||(x=k.createElement("rect",{width:20,height:19,x:175,y:18,fill:"#777",rx:2})),C||(C=k.createElement("rect",{width:5,height:5,x:198,y:18,fill:"#777",rx:2})),z||(z=k.createElement("rect",{width:26,height:5,x:206,y:18,fill:"#777",rx:2})),S||(S=k.createElement("rect",{width:44,height:5,x:203,y:71,fill:"#777",rx:2})),A||(A=k.createElement("rect",{width:44,height:14,x:228,y:78,fill:"#777",rx:2})),E||(E=k.createElement("rect",{width:22,height:5,x:250,y:71,fill:"#777",rx:2})),P||(P=k.createElement("rect",{width:33,height:5,x:239,y:95,fill:"#777",rx:2})),O||(O=k.createElement("rect",{width:33,height:5,x:272,y:117,fill:"#777",rx:2})),I||(I=k.createElement("rect",{width:7,height:5,x:259,y:117,fill:"#777",rx:2})),G||(G=k.createElement("rect",{width:23,height:5,x:213,y:95,fill:"#777",rx:2})),M||(M=k.createElement("rect",{width:8,height:5,x:203,y:95,fill:"#777",rx:2})),N||(N=k.createElement("rect",{width:15,height:5,x:198,y:25,fill:"#777",rx:2})),V||(V=k.createElement("rect",{width:18,height:5,x:215,y:25,fill:"#777",rx:2})))}}}]); +//# sourceMappingURL=1df93b7f.52f669bc.js.map \ No newline at end of file diff --git a/assets/js/1df93b7f.0e9879a7.js.map b/assets/js/1df93b7f.52f669bc.js.map similarity index 99% rename from assets/js/1df93b7f.0e9879a7.js.map rename to assets/js/1df93b7f.52f669bc.js.map index 40d357e7b..d057d1f79 100644 --- a/assets/js/1df93b7f.0e9879a7.js.map +++ b/assets/js/1df93b7f.52f669bc.js.map @@ -1 +1 @@ -{"version":3,"file":"assets/js/1df93b7f.0e9879a7.js","mappings":"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","sources":["webpack://dockview-docs/../../node_modules/@docusaurus/core/lib/client/exports/BrowserOnly.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dataTransfer.js","webpack://dockview-docs/../dockview-core/dist/esm/events.js","webpack://dockview-docs/../dockview-core/dist/esm/lifecycle.js","webpack://dockview-docs/../dockview-core/dist/esm/dom.js","webpack://dockview-docs/../dockview-core/dist/esm/array.js","webpack://dockview-docs/../dockview-core/dist/esm/math.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/viewItem.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/leafNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/branchNode.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/resizable.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/baseComponentGridview.js","webpack://dockview-docs/../dockview-core/dist/esm/api/component.api.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/abstractDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dnd.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/droptarget.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/api/panelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/splitviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/api/paneviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/basePanelView.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/panel/content.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/ghost.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/tab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/events.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/groupDragHandler.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/scrollbar.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabs.js","webpack://dockview-docs/../dockview-core/dist/esm/svg.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/titlebar/tabOverflowControl.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/options.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/gridviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewGroupPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/theme.js","webpack://dockview-docs/../dockview-core/dist/esm/api/dockviewPanelApi.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/tab/defaultTab.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewPanelModel.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/deserializer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/watermark/watermark.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlay.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/constants.js","webpack://dockview-docs/../dockview-core/dist/esm/overlay/overlayRenderContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/popoutWindow.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/strictEventsSequencing.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/components/popupService.js","webpack://dockview-docs/../dockview-core/dist/esm/dnd/dropTargetAnchorContainer.js","webpack://dockview-docs/../dockview-core/dist/esm/dockview/dockviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/gridview/gridviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","webpack://dockview-docs/../dockview-core/dist/esm/paneview/paneviewComponent.js","webpack://dockview-docs/../dockview-core/dist/esm/splitview/splitviewPanel.js","webpack://dockview-docs/../dockview-core/dist/esm/api/entryPoints.js","webpack://dockview-docs/../dockview/dist/esm/react.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactContentPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactHeaderPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/reactWatermarkPart.js","webpack://dockview-docs/../dockview/dist/esm/dockview/headerActionsRenderer.js","webpack://dockview-docs/../dockview/dist/esm/dockview/dockview.js","webpack://dockview-docs/../dockview/dist/esm/svg.js","webpack://dockview-docs/../dockview/dist/esm/dockview/defaultTab.js","webpack://dockview-docs/../dockview/dist/esm/splitview/view.js","webpack://dockview-docs/../dockview/dist/esm/splitview/splitview.js","webpack://dockview-docs/../dockview/dist/esm/gridview/view.js","webpack://dockview-docs/../dockview/dist/esm/gridview/gridview.js","webpack://dockview-docs/../dockview/dist/esm/paneview/view.js","webpack://dockview-docs/../dockview/dist/esm/paneview/paneview.js","webpack://dockview-docs/./src/components/ui/codeSandboxButton.tsx","webpack://dockview-docs/./src/components/ui/spinner.tsx","webpack://dockview-docs/./src/components/ui/container.tsx","webpack://dockview-docs/./src/components/HomepageFeatures/styles.module.css","webpack://dockview-docs/./src/components/HomepageFeatures/index.tsx","webpack://dockview-docs/./src/components/ui/browserHeader.tsx","webpack://dockview-docs/./sandboxes/dockview-app/src/app.tsx","webpack://dockview-docs/./src/components/HomepageFeatures/introduction.tsx","webpack://dockview-docs/./src/pages/index.tsx","webpack://dockview-docs/./static/img/dockview_grid_3.svg","webpack://dockview-docs/./static/img/dockview_grid_4.svg","webpack://dockview-docs/./static/img/dockview_splash_2.svg"],"sourcesContent":["/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport React, { isValidElement } from 'react';\nimport useIsBrowser from '@docusaurus/useIsBrowser';\n// Similar comp to the one described here:\n// https://www.joshwcomeau.com/react/the-perils-of-rehydration/#abstractions\nexport default function BrowserOnly({ children, fallback, }) {\n const isBrowser = useIsBrowser();\n if (isBrowser) {\n if (typeof children !== 'function' &&\n process.env.NODE_ENV === 'development') {\n throw new Error(`Docusaurus error: The children of must be a \"render function\", e.g. {() => {window.location.href}}.\nCurrent type: ${isValidElement(children) ? 'React element' : typeof children}`);\n }\n return <>{children?.()};\n }\n return fallback ?? null;\n}\n","class TransferObject {\n}\nexport class PanelTransfer extends TransferObject {\n constructor(viewId, groupId, panelId) {\n super();\n this.viewId = viewId;\n this.groupId = groupId;\n this.panelId = panelId;\n }\n}\nexport class PaneTransfer extends TransferObject {\n constructor(viewId, paneId) {\n super();\n this.viewId = viewId;\n this.paneId = paneId;\n }\n}\n/**\n * A singleton to store transfer data during drag & drop operations that are only valid within the application.\n */\nexport class LocalSelectionTransfer {\n constructor() {\n // protect against external instantiation\n }\n static getInstance() {\n return LocalSelectionTransfer.INSTANCE;\n }\n hasData(proto) {\n return proto && proto === this.proto;\n }\n clearData(proto) {\n if (this.hasData(proto)) {\n this.proto = undefined;\n this.data = undefined;\n }\n }\n getData(proto) {\n if (this.hasData(proto)) {\n return this.data;\n }\n return undefined;\n }\n setData(data, proto) {\n if (proto) {\n this.data = data;\n this.proto = proto;\n }\n }\n}\nLocalSelectionTransfer.INSTANCE = new LocalSelectionTransfer();\nexport function getPanelData() {\n const panelTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = panelTransfer.hasData(PanelTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return panelTransfer.getData(PanelTransfer.prototype)[0];\n}\nexport function getPaneData() {\n const paneTransfer = LocalSelectionTransfer.getInstance();\n const isPanelEvent = paneTransfer.hasData(PaneTransfer.prototype);\n if (!isPanelEvent) {\n return undefined;\n }\n return paneTransfer.getData(PaneTransfer.prototype)[0];\n}\n","export var Event;\n(function (Event) {\n Event.any = (...children) => {\n return (listener) => {\n const disposables = children.map((child) => child(listener));\n return {\n dispose: () => {\n disposables.forEach((d) => {\n d.dispose();\n });\n },\n };\n };\n };\n})(Event || (Event = {}));\nexport class DockviewEvent {\n constructor() {\n this._defaultPrevented = false;\n }\n get defaultPrevented() {\n return this._defaultPrevented;\n }\n preventDefault() {\n this._defaultPrevented = true;\n }\n}\nexport class AcceptableEvent {\n constructor() {\n this._isAccepted = false;\n }\n get isAccepted() {\n return this._isAccepted;\n }\n accept() {\n this._isAccepted = true;\n }\n}\nclass LeakageMonitor {\n constructor() {\n this.events = new Map();\n }\n get size() {\n return this.events.size;\n }\n add(event, stacktrace) {\n this.events.set(event, stacktrace);\n }\n delete(event) {\n this.events.delete(event);\n }\n clear() {\n this.events.clear();\n }\n}\nclass Stacktrace {\n static create() {\n var _a;\n return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : '');\n }\n constructor(value) {\n this.value = value;\n }\n print() {\n console.warn('dockview: stacktrace', this.value);\n }\n}\nclass Listener {\n constructor(callback, stacktrace) {\n this.callback = callback;\n this.stacktrace = stacktrace;\n }\n}\n// relatively simple event emitter taken from https://github.com/microsoft/vscode/blob/master/src/vs/base/common/event.ts\nexport class Emitter {\n static setLeakageMonitorEnabled(isEnabled) {\n if (isEnabled !== Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.clear();\n }\n Emitter.ENABLE_TRACKING = isEnabled;\n }\n get value() {\n return this._last;\n }\n constructor(options) {\n this.options = options;\n this._listeners = [];\n this._disposed = false;\n }\n get event() {\n if (!this._event) {\n this._event = (callback) => {\n var _a;\n if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) && this._last !== undefined) {\n callback(this._last);\n }\n const listener = new Listener(callback, Emitter.ENABLE_TRACKING ? Stacktrace.create() : undefined);\n this._listeners.push(listener);\n return {\n dispose: () => {\n const index = this._listeners.indexOf(listener);\n if (index > -1) {\n this._listeners.splice(index, 1);\n }\n else if (Emitter.ENABLE_TRACKING) {\n // console.warn(\n // `dockview: listener already disposed`,\n // Stacktrace.create().print()\n // );\n }\n },\n };\n };\n if (Emitter.ENABLE_TRACKING) {\n Emitter.MEMORY_LEAK_WATCHER.add(this._event, Stacktrace.create());\n }\n }\n return this._event;\n }\n fire(e) {\n var _a;\n if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.replay) {\n this._last = e;\n }\n for (const listener of this._listeners) {\n listener.callback(e);\n }\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this._listeners.length > 0) {\n if (Emitter.ENABLE_TRACKING) {\n queueMicrotask(() => {\n var _a;\n // don't check until stack of execution is completed to allow for out-of-order disposals within the same execution block\n for (const listener of this._listeners) {\n console.warn('dockview: stacktrace', (_a = listener.stacktrace) === null || _a === void 0 ? void 0 : _a.print());\n }\n });\n }\n this._listeners = [];\n }\n if (Emitter.ENABLE_TRACKING && this._event) {\n Emitter.MEMORY_LEAK_WATCHER.delete(this._event);\n }\n }\n }\n}\nEmitter.ENABLE_TRACKING = false;\nEmitter.MEMORY_LEAK_WATCHER = new LeakageMonitor();\nexport function addDisposableListener(element, type, listener, options) {\n element.addEventListener(type, listener, options);\n return {\n dispose: () => {\n element.removeEventListener(type, listener, options);\n },\n };\n}\n/**\n *\n * Event Emitter that fires events from a Microtask callback, only one event will fire per event-loop cycle.\n *\n * It's kind of like using an `asapScheduler` in RxJs with additional logic to only fire once per event-loop cycle.\n * This implementation exists to avoid external dependencies.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/queueMicrotask\n * @see https://rxjs.dev/api/index/const/asapScheduler\n */\nexport class AsapEvent {\n constructor() {\n this._onFired = new Emitter();\n this._currentFireCount = 0;\n this._queued = false;\n this.onEvent = (e) => {\n /**\n * when the event is first subscribed to take note of the current fire count\n */\n const fireCountAtTimeOfEventSubscription = this._currentFireCount;\n return this._onFired.event(() => {\n /**\n * if the current fire count is greater than the fire count at event subscription\n * then the event has been fired since we subscribed and it's ok to \"on_next\" the event.\n *\n * if the count is not greater then what we are recieving is an event from the microtask\n * queue that was triggered before we actually subscribed and therfore we should ignore it.\n */\n if (this._currentFireCount > fireCountAtTimeOfEventSubscription) {\n e();\n }\n });\n };\n }\n fire() {\n this._currentFireCount++;\n if (this._queued) {\n return;\n }\n this._queued = true;\n queueMicrotask(() => {\n this._queued = false;\n this._onFired.fire();\n });\n }\n dispose() {\n this._onFired.dispose();\n }\n}\n","export var Disposable;\n(function (Disposable) {\n Disposable.NONE = {\n dispose: () => {\n // noop\n },\n };\n function from(func) {\n return {\n dispose: () => {\n func();\n },\n };\n }\n Disposable.from = from;\n})(Disposable || (Disposable = {}));\nexport class CompositeDisposable {\n get isDisposed() {\n return this._isDisposed;\n }\n constructor(...args) {\n this._isDisposed = false;\n this._disposables = args;\n }\n addDisposables(...args) {\n args.forEach((arg) => this._disposables.push(arg));\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._isDisposed = true;\n this._disposables.forEach((arg) => arg.dispose());\n this._disposables = [];\n }\n}\nexport class MutableDisposable {\n constructor() {\n this._disposable = Disposable.NONE;\n }\n set value(disposable) {\n if (this._disposable) {\n this._disposable.dispose();\n }\n this._disposable = disposable;\n }\n dispose() {\n if (this._disposable) {\n this._disposable.dispose();\n this._disposable = Disposable.NONE;\n }\n }\n}\n","import { Emitter, addDisposableListener, } from './events';\nimport { CompositeDisposable } from './lifecycle';\nexport class OverflowObserver extends CompositeDisposable {\n constructor(el) {\n super();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._value = null;\n this.addDisposables(this._onDidChange, watchElementResize(el, (entry) => {\n const hasScrollX = entry.target.scrollWidth > entry.target.clientWidth;\n const hasScrollY = entry.target.scrollHeight > entry.target.clientHeight;\n this._value = { hasScrollX, hasScrollY };\n this._onDidChange.fire(this._value);\n }));\n }\n}\nexport function watchElementResize(element, cb) {\n const observer = new ResizeObserver((entires) => {\n /**\n * Fast browser window resize produces Error: ResizeObserver loop limit exceeded.\n * The error isn't visible in browser console, doesn't affect functionality, but degrades performance.\n * See https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded/58701523#58701523\n */\n requestAnimationFrame(() => {\n const firstEntry = entires[0];\n cb(firstEntry);\n });\n });\n observer.observe(element);\n return {\n dispose: () => {\n observer.unobserve(element);\n observer.disconnect();\n },\n };\n}\nexport const removeClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (element.classList.contains(classname)) {\n element.classList.remove(classname);\n }\n }\n};\nexport const addClasses = (element, ...classes) => {\n for (const classname of classes) {\n if (!element.classList.contains(classname)) {\n element.classList.add(classname);\n }\n }\n};\nexport const toggleClass = (element, className, isToggled) => {\n const hasClass = element.classList.contains(className);\n if (isToggled && !hasClass) {\n element.classList.add(className);\n }\n if (!isToggled && hasClass) {\n element.classList.remove(className);\n }\n};\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function getElementsByTagName(tag, document) {\n return Array.prototype.slice.call(document.querySelectorAll(tag), 0);\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\n/**\n * Track focus on an element. Ensure tabIndex is set when an HTMLElement is not focusable by default\n */\nclass FocusTracker extends CompositeDisposable {\n constructor(element) {\n super();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n let hasFocus = isAncestor(document.activeElement, element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = isAncestor(document.activeElement, element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this.addDisposables(addDisposableListener(element, 'focus', onFocus, true));\n this.addDisposables(addDisposableListener(element, 'blur', onBlur, true));\n }\n refreshState() {\n this._refreshStateHandler();\n }\n}\n// quasi: apparently, but not really; seemingly\nconst QUASI_PREVENT_DEFAULT_KEY = 'dv-quasiPreventDefault';\n// mark an event directly for other listeners to check\nexport function quasiPreventDefault(event) {\n event[QUASI_PREVENT_DEFAULT_KEY] = true;\n}\n// check if this event has been marked\nexport function quasiDefaultPrevented(event) {\n return event[QUASI_PREVENT_DEFAULT_KEY];\n}\nexport function addStyles(document, styleSheetList) {\n const styleSheets = Array.from(styleSheetList);\n for (const styleSheet of styleSheets) {\n if (styleSheet.href) {\n const link = document.createElement('link');\n link.href = styleSheet.href;\n link.type = styleSheet.type;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n }\n let cssTexts = [];\n try {\n if (styleSheet.cssRules) {\n cssTexts = Array.from(styleSheet.cssRules).map((rule) => rule.cssText);\n }\n }\n catch (err) {\n // security errors (lack of permissions), ignore\n }\n for (const rule of cssTexts) {\n const style = document.createElement('style');\n style.appendChild(document.createTextNode(rule));\n document.head.appendChild(style);\n }\n }\n}\nexport function getDomNodePagePosition(domNode) {\n const { left, top, width, height } = domNode.getBoundingClientRect();\n return {\n left: left + window.scrollX,\n top: top + window.scrollY,\n width: width,\n height: height,\n };\n}\n/**\n * Check whether an element is in the DOM (including the Shadow DOM)\n * @see https://terodox.tech/how-to-tell-if-an-element-is-in-the-dom-including-the-shadow-dom/\n */\nexport function isInDocument(element) {\n let currentElement = element;\n while (currentElement === null || currentElement === void 0 ? void 0 : currentElement.parentNode) {\n if (currentElement.parentNode === document) {\n return true;\n }\n else if (currentElement.parentNode instanceof DocumentFragment) {\n // handle shadow DOMs\n currentElement = currentElement.parentNode.host;\n }\n else {\n currentElement = currentElement.parentNode;\n }\n }\n return false;\n}\nexport function addTestId(element, id) {\n element.setAttribute('data-testid', id);\n}\n/**\n * Should be more efficient than element.querySelectorAll(\"*\") since there\n * is no need to store every element in-memory using this approach\n */\nfunction allTagsNamesInclusiveOfShadowDoms(tagNames) {\n const iframes = [];\n function findIframesInNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (tagNames.includes(node.tagName)) {\n iframes.push(node);\n }\n if (node.shadowRoot) {\n findIframesInNode(node.shadowRoot);\n }\n for (const child of node.children) {\n findIframesInNode(child);\n }\n }\n }\n findIframesInNode(document.documentElement);\n return iframes;\n}\nexport function disableIframePointEvents(rootNode = document) {\n const iframes = allTagsNamesInclusiveOfShadowDoms(['IFRAME', 'WEBVIEW']);\n const original = new WeakMap(); // don't hold onto HTMLElement references longer than required\n for (const iframe of iframes) {\n original.set(iframe, iframe.style.pointerEvents);\n iframe.style.pointerEvents = 'none';\n }\n return {\n release: () => {\n var _a;\n for (const iframe of iframes) {\n iframe.style.pointerEvents = (_a = original.get(iframe)) !== null && _a !== void 0 ? _a : 'auto';\n }\n iframes.splice(0, iframes.length); // don't hold onto HTMLElement references longer than required\n },\n };\n}\nexport function getDockviewTheme(element) {\n function toClassList(element) {\n const list = [];\n for (let i = 0; i < element.classList.length; i++) {\n list.push(element.classList.item(i));\n }\n return list;\n }\n let theme = undefined;\n let parent = element;\n while (parent !== null) {\n theme = toClassList(parent).find((cls) => cls.startsWith('dockview-theme-'));\n if (typeof theme === 'string') {\n break;\n }\n parent = parent.parentElement;\n }\n return theme;\n}\nexport class Classnames {\n constructor(element) {\n this.element = element;\n this._classNames = [];\n }\n setClassNames(classNames) {\n for (const className of this._classNames) {\n toggleClass(this.element, className, false);\n }\n this._classNames = classNames\n .split(' ')\n .filter((v) => v.trim().length > 0);\n for (const className of this._classNames) {\n toggleClass(this.element, className, true);\n }\n }\n}\nconst DEBOUCE_DELAY = 100;\nexport function isChildEntirelyVisibleWithinParent(child, parent) {\n //\n const childPosition = getDomNodePagePosition(child);\n const parentPosition = getDomNodePagePosition(parent);\n if (childPosition.left < parentPosition.left) {\n return false;\n }\n if (childPosition.left + childPosition.width >\n parentPosition.left + parentPosition.width) {\n return false;\n }\n return true;\n}\nexport function onDidWindowMoveEnd(window) {\n const emitter = new Emitter();\n let previousScreenX = window.screenX;\n let previousScreenY = window.screenY;\n let timeout;\n const checkMovement = () => {\n if (window.closed) {\n return;\n }\n const currentScreenX = window.screenX;\n const currentScreenY = window.screenY;\n if (currentScreenX !== previousScreenX ||\n currentScreenY !== previousScreenY) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n emitter.fire();\n }, DEBOUCE_DELAY);\n previousScreenX = currentScreenX;\n previousScreenY = currentScreenY;\n }\n requestAnimationFrame(checkMovement);\n };\n checkMovement();\n return emitter;\n}\nexport function onDidWindowResizeEnd(element, cb) {\n let resizeTimeout;\n const disposable = new CompositeDisposable(addDisposableListener(element, 'resize', () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n cb();\n }, DEBOUCE_DELAY);\n }));\n return disposable;\n}\nexport function shiftAbsoluteElementIntoView(element, root, options = { buffer: 10 }) {\n const buffer = options.buffer;\n const rect = element.getBoundingClientRect();\n const rootRect = root.getBoundingClientRect();\n let translateX = 0;\n let translateY = 0;\n const left = rect.left - rootRect.left;\n const top = rect.top - rootRect.top;\n const bottom = rect.bottom - rootRect.bottom;\n const right = rect.right - rootRect.right;\n // Check horizontal overflow\n if (left < buffer) {\n translateX = buffer - left;\n }\n else if (right > buffer) {\n translateX = -buffer - right;\n }\n // Check vertical overflow\n if (top < buffer) {\n translateY = buffer - top;\n }\n else if (bottom > buffer) {\n translateY = -bottom - buffer;\n }\n // Apply the translation if needed\n if (translateX !== 0 || translateY !== 0) {\n element.style.transform = `translate(${translateX}px, ${translateY}px)`;\n }\n}\nexport function findRelativeZIndexParent(el) {\n let tmp = el;\n while (tmp && (tmp.style.zIndex === 'auto' || tmp.style.zIndex === '')) {\n tmp = tmp.parentElement;\n }\n return tmp;\n}\n","export function tail(arr) {\n if (arr.length === 0) {\n throw new Error('Invalid tail call');\n }\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\n}\nexport function last(arr) {\n return arr.length > 0 ? arr[arr.length - 1] : undefined;\n}\nexport function sequenceEquals(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Pushes an element to the start of the array, if found.\n */\nexport function pushToStart(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.unshift(value);\n }\n}\n/**\n * Pushes an element to the end of the array, if found.\n */\nexport function pushToEnd(arr, value) {\n const index = arr.indexOf(value);\n if (index > -1) {\n arr.splice(index, 1);\n arr.push(value);\n }\n}\nexport function firstIndex(array, fn) {\n for (let i = 0; i < array.length; i++) {\n const element = array[i];\n if (fn(element)) {\n return i;\n }\n }\n return -1;\n}\nexport function remove(array, value) {\n const index = array.findIndex((t) => t === value);\n if (index > -1) {\n array.splice(index, 1);\n return true;\n }\n return false;\n}\n","export const clamp = (value, min, max) => {\n if (min > max) {\n /**\n * caveat: an error should be thrown here if this was a proper `clamp` function but we need to handle\n * cases where `min` > `max` and in those cases return `min`.\n */\n return min;\n }\n return Math.min(max, Math.max(value, min));\n};\nexport const sequentialNumberGenerator = () => {\n let value = 1;\n return { next: () => (value++).toString() };\n};\nexport const range = (from, to) => {\n const result = [];\n if (typeof to !== 'number') {\n to = from;\n from = 0;\n }\n if (from <= to) {\n for (let i = from; i < to; i++) {\n result.push(i);\n }\n }\n else {\n for (let i = from; i > to; i--) {\n result.push(i);\n }\n }\n return result;\n};\n","import { clamp } from '../math';\nexport class ViewItem {\n set size(size) {\n this._size = size;\n }\n get size() {\n return this._size;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return typeof this._cachedVisibleSize === 'undefined';\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n set enabled(enabled) {\n this.container.style.pointerEvents = enabled ? '' : 'none';\n }\n constructor(container, view, size, disposable) {\n this.container = container;\n this.view = view;\n this.disposable = disposable;\n this._cachedVisibleSize = undefined;\n if (typeof size === 'number') {\n this._size = size;\n this._cachedVisibleSize = undefined;\n container.classList.add('visible');\n }\n else {\n this._size = 0;\n this._cachedVisibleSize = size.cachedVisibleSize;\n }\n }\n setVisible(visible, size) {\n var _a;\n if (visible === this.visible) {\n return;\n }\n if (visible) {\n this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);\n this._cachedVisibleSize = undefined;\n }\n else {\n this._cachedVisibleSize =\n typeof size === 'number' ? size : this.size;\n this.size = 0;\n }\n this.container.classList.toggle('visible', visible);\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n dispose() {\n this.disposable.dispose();\n return this.view;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/splitview\n *--------------------------------------------------------------------------------------------*/\nimport { removeClasses, addClasses, toggleClass, disableIframePointEvents, } from '../dom';\nimport { Emitter } from '../events';\nimport { pushToStart, pushToEnd, firstIndex } from '../array';\nimport { range, clamp } from '../math';\nimport { ViewItem } from './viewItem';\nexport var Orientation;\n(function (Orientation) {\n Orientation[\"HORIZONTAL\"] = \"HORIZONTAL\";\n Orientation[\"VERTICAL\"] = \"VERTICAL\";\n})(Orientation || (Orientation = {}));\nexport var SashState;\n(function (SashState) {\n SashState[SashState[\"MAXIMUM\"] = 0] = \"MAXIMUM\";\n SashState[SashState[\"MINIMUM\"] = 1] = \"MINIMUM\";\n SashState[SashState[\"DISABLED\"] = 2] = \"DISABLED\";\n SashState[SashState[\"ENABLED\"] = 3] = \"ENABLED\";\n})(SashState || (SashState = {}));\nexport var LayoutPriority;\n(function (LayoutPriority) {\n LayoutPriority[\"Low\"] = \"low\";\n LayoutPriority[\"High\"] = \"high\";\n LayoutPriority[\"Normal\"] = \"normal\";\n})(LayoutPriority || (LayoutPriority = {}));\nexport var Sizing;\n(function (Sizing) {\n Sizing.Distribute = { type: 'distribute' };\n function Split(index) {\n return { type: 'split', index };\n }\n Sizing.Split = Split;\n function Invisible(cachedVisibleSize) {\n return { type: 'invisible', cachedVisibleSize };\n }\n Sizing.Invisible = Invisible;\n})(Sizing || (Sizing = {}));\nexport class Splitview {\n get contentSize() {\n return this._contentSize;\n }\n get size() {\n return this._size;\n }\n set size(value) {\n this._size = value;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(value) {\n this._orthogonalSize = value;\n }\n get length() {\n return this.viewItems.length;\n }\n get proportions() {\n return this._proportions ? [...this._proportions] : undefined;\n }\n get orientation() {\n return this._orientation;\n }\n set orientation(value) {\n this._orientation = value;\n const tmp = this.size;\n this.size = this.orthogonalSize;\n this.orthogonalSize = tmp;\n removeClasses(this.element, 'dv-horizontal', 'dv-vertical');\n this.element.classList.add(this.orientation == Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical');\n }\n get minimumSize() {\n return this.viewItems.reduce((r, item) => r + item.minimumSize, 0);\n }\n get maximumSize() {\n return this.length === 0\n ? Number.POSITIVE_INFINITY\n : this.viewItems.reduce((r, item) => r + item.maximumSize, 0);\n }\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(startSnappingEnabled) {\n if (this._startSnappingEnabled === startSnappingEnabled) {\n return;\n }\n this._startSnappingEnabled = startSnappingEnabled;\n this.updateSashEnablement();\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(endSnappingEnabled) {\n if (this._endSnappingEnabled === endSnappingEnabled) {\n return;\n }\n this._endSnappingEnabled = endSnappingEnabled;\n this.updateSashEnablement();\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n toggleClass(this.element, 'dv-splitview-disabled', value);\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n toggleClass(this.element, 'dv-splitview-has-margin', value !== 0);\n }\n constructor(container, options) {\n var _a, _b;\n this.container = container;\n this.viewItems = [];\n this.sashes = [];\n this._size = 0;\n this._orthogonalSize = 0;\n this._contentSize = 0;\n this._proportions = undefined;\n this._startSnappingEnabled = true;\n this._endSnappingEnabled = true;\n this._disabled = false;\n this._margin = 0;\n this._onDidSashEnd = new Emitter();\n this.onDidSashEnd = this._onDidSashEnd.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this.resize = (index, delta, sizes = this.viewItems.map((x) => x.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) => {\n if (index < 0 || index > this.viewItems.length) {\n return 0;\n }\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n //\n if (highPriorityIndexes) {\n for (const i of highPriorityIndexes) {\n pushToStart(upIndexes, i);\n pushToStart(downIndexes, i);\n }\n }\n if (lowPriorityIndexes) {\n for (const i of lowPriorityIndexes) {\n pushToEnd(upIndexes, i);\n pushToEnd(downIndexes, i);\n }\n }\n //\n const upItems = upIndexes.map((i) => this.viewItems[i]);\n const upSizes = upIndexes.map((i) => sizes[i]);\n //\n const downItems = downIndexes.map((i) => this.viewItems[i]);\n const downSizes = downIndexes.map((i) => sizes[i]);\n //\n const minDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].minimumSize - sizes[i], 0);\n const maxDeltaUp = upIndexes.reduce((_, i) => _ + this.viewItems[i].maximumSize - sizes[i], 0);\n //\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].minimumSize, 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((_, i) => _ + sizes[i] - this.viewItems[i].maximumSize, 0);\n //\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n //\n let snapped = false;\n if (snapBefore) {\n const snapView = this.viewItems[snapBefore.index];\n const visible = delta >= snapBefore.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapBefore.size);\n }\n if (!snapped && snapAfter) {\n const snapView = this.viewItems[snapAfter.index];\n const visible = delta < snapAfter.limitDelta;\n snapped = visible !== snapView.visible;\n snapView.setVisible(visible, snapAfter.size);\n }\n if (snapped) {\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\n }\n //\n const tentativeDelta = clamp(delta, minDelta, maxDelta);\n let actualDelta = 0;\n //\n let deltaUp = tentativeDelta;\n for (let i = 0; i < upItems.length; i++) {\n const item = upItems[i];\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\n const viewDelta = size - upSizes[i];\n actualDelta += viewDelta;\n deltaUp -= viewDelta;\n item.size = size;\n }\n //\n let deltaDown = actualDelta;\n for (let i = 0; i < downItems.length; i++) {\n const item = downItems[i];\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\n const viewDelta = size - downSizes[i];\n deltaDown += viewDelta;\n item.size = size;\n }\n //\n return delta;\n };\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = this.createContainer();\n this.margin = (_b = options.margin) !== null && _b !== void 0 ? _b : 0;\n this.proportionalLayout =\n options.proportionalLayout === undefined\n ? true\n : !!options.proportionalLayout;\n this.viewContainer = this.createViewContainer();\n this.sashContainer = this.createSashContainer();\n this.element.appendChild(this.sashContainer);\n this.element.appendChild(this.viewContainer);\n this.container.appendChild(this.element);\n this.style(options.styles);\n // We have an existing set of view, add them now\n if (options.descriptor) {\n this._size = options.descriptor.size;\n options.descriptor.views.forEach((viewDescriptor, index) => {\n const sizing = viewDescriptor.visible === undefined ||\n viewDescriptor.visible\n ? viewDescriptor.size\n : {\n type: 'invisible',\n cachedVisibleSize: viewDescriptor.size,\n };\n const view = viewDescriptor.view;\n this.addView(view, sizing, index, true\n // true skip layout\n );\n });\n // Initialize content size and proportions for first layout\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.saveProportions();\n }\n }\n style(styles) {\n if ((styles === null || styles === void 0 ? void 0 : styles.separatorBorder) === 'transparent') {\n removeClasses(this.element, 'dv-separator-border');\n this.element.style.removeProperty('--dv-separator-border');\n }\n else {\n addClasses(this.element, 'dv-separator-border');\n if (styles === null || styles === void 0 ? void 0 : styles.separatorBorder) {\n this.element.style.setProperty('--dv-separator-border', styles.separatorBorder);\n }\n }\n }\n isViewVisible(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.visible;\n }\n setViewVisible(index, visible) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n viewItem.setVisible(visible, viewItem.size);\n this.distributeEmptySpace(index);\n this.layoutViews();\n this.saveProportions();\n }\n getViewSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n return -1;\n }\n return this.viewItems[index].size;\n }\n resizeView(index, size) {\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n const item = this.viewItems[index];\n size = Math.round(size);\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this._size));\n item.size = size;\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n getViews() {\n return this.viewItems.map((x) => x.view);\n }\n onDidChange(item, size) {\n const index = this.viewItems.indexOf(item);\n if (index < 0 || index >= this.viewItems.length) {\n return;\n }\n size = typeof size === 'number' ? size : item.size;\n size = clamp(size, item.minimumSize, item.maximumSize);\n item.size = size;\n const indexes = range(this.viewItems.length).filter((i) => i !== index);\n const lowPriorityIndexes = [\n ...indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low),\n index,\n ];\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n /**\n * add this view we are changing to the low-index list since we have determined the size\n * here and don't want it changed\n */\n this.relayout([...lowPriorityIndexes, index], highPriorityIndexes);\n }\n addView(view, size = { type: 'distribute' }, index = this.viewItems.length, skipLayout) {\n const container = document.createElement('div');\n container.className = 'dv-view';\n container.appendChild(view.element);\n let viewSize;\n if (typeof size === 'number') {\n viewSize = size;\n }\n else if (size.type === 'split') {\n viewSize = this.getViewSize(size.index) / 2;\n }\n else if (size.type === 'invisible') {\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\n }\n else {\n viewSize = view.minimumSize;\n }\n const disposable = view.onDidChange((newSize) => this.onDidChange(viewItem, newSize.size));\n const viewItem = new ViewItem(container, view, viewSize, {\n dispose: () => {\n disposable.dispose();\n this.viewContainer.removeChild(container);\n },\n });\n if (index === this.viewItems.length) {\n this.viewContainer.appendChild(container);\n }\n else {\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\n }\n this.viewItems.splice(index, 0, viewItem);\n if (this.viewItems.length > 1) {\n //add sash\n const sash = document.createElement('div');\n sash.className = 'dv-sash';\n const onPointerStart = (event) => {\n for (const item of this.viewItems) {\n item.enabled = false;\n }\n const iframes = disableIframePointEvents();\n const start = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const sashIndex = firstIndex(this.sashes, (s) => s.container === sash);\n //\n const sizes = this.viewItems.map((x) => x.size);\n //\n let snapBefore;\n let snapAfter;\n const upIndexes = range(sashIndex, -1);\n const downIndexes = range(sashIndex + 1, this.viewItems.length);\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\n const maxDeltaDown = downIndexes.length === 0\n ? Number.POSITIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] - this.viewItems[i].minimumSize), 0);\n const minDeltaDown = downIndexes.length === 0\n ? Number.NEGATIVE_INFINITY\n : downIndexes.reduce((r, i) => r +\n (sizes[i] -\n this.viewItems[i].viewMaximumSize), 0);\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n if (typeof snapBeforeIndex === 'number') {\n const snappedViewItem = this.viewItems[snapBeforeIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapBefore = {\n index: snapBeforeIndex,\n limitDelta: snappedViewItem.visible\n ? minDelta - halfSize\n : minDelta + halfSize,\n size: snappedViewItem.size,\n };\n }\n if (typeof snapAfterIndex === 'number') {\n const snappedViewItem = this.viewItems[snapAfterIndex];\n const halfSize = Math.floor(snappedViewItem.viewMinimumSize / 2);\n snapAfter = {\n index: snapAfterIndex,\n limitDelta: snappedViewItem.visible\n ? maxDelta + halfSize\n : maxDelta - halfSize,\n size: snappedViewItem.size,\n };\n }\n const onPointerMove = (event) => {\n const current = this._orientation === Orientation.HORIZONTAL\n ? event.clientX\n : event.clientY;\n const delta = current - start;\n this.resize(sashIndex, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\n this.distributeEmptySpace();\n this.layoutViews();\n };\n const end = () => {\n for (const item of this.viewItems) {\n item.enabled = true;\n }\n iframes.release();\n this.saveProportions();\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', end);\n document.removeEventListener('pointercancel', end);\n this._onDidSashEnd.fire(undefined);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', end);\n document.addEventListener('pointercancel', end);\n };\n sash.addEventListener('pointerdown', onPointerStart);\n const sashItem = {\n container: sash,\n disposable: () => {\n sash.removeEventListener('pointerdown', onPointerStart);\n this.sashContainer.removeChild(sash);\n },\n };\n this.sashContainer.appendChild(sash);\n this.sashes.push(sashItem);\n }\n if (!skipLayout) {\n this.relayout([index]);\n }\n if (!skipLayout &&\n typeof size !== 'number' &&\n size.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidAddView.fire(view);\n }\n distributeViewSizes() {\n const flexibleViewItems = [];\n let flexibleSize = 0;\n for (const item of this.viewItems) {\n if (item.maximumSize - item.minimumSize > 0) {\n flexibleViewItems.push(item);\n flexibleSize += item.size;\n }\n }\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\n for (const item of flexibleViewItems) {\n item.size = clamp(size, item.minimumSize, item.maximumSize);\n }\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\n }\n removeView(index, sizing, skipLayout = false) {\n // Remove view\n const viewItem = this.viewItems.splice(index, 1)[0];\n viewItem.dispose();\n // Remove sash\n if (this.viewItems.length >= 1) {\n const sashIndex = Math.max(index - 1, 0);\n const sashItem = this.sashes.splice(sashIndex, 1)[0];\n sashItem.disposable();\n }\n if (!skipLayout) {\n this.relayout();\n }\n if (sizing && sizing.type === 'distribute') {\n this.distributeViewSizes();\n }\n this._onDidRemoveView.fire(viewItem.view);\n return viewItem.view;\n }\n getViewCachedVisibleSize(index) {\n if (index < 0 || index >= this.viewItems.length) {\n throw new Error('Index out of bounds');\n }\n const viewItem = this.viewItems[index];\n return viewItem.cachedVisibleSize;\n }\n moveView(from, to) {\n const cachedVisibleSize = this.getViewCachedVisibleSize(from);\n const sizing = typeof cachedVisibleSize === 'undefined'\n ? this.getViewSize(from)\n : Sizing.Invisible(cachedVisibleSize);\n const view = this.removeView(from, undefined, true);\n this.addView(view, sizing, to);\n }\n layout(size, orthogonalSize) {\n const previousSize = Math.max(this.size, this._contentSize);\n this.size = size;\n this.orthogonalSize = orthogonalSize;\n if (!this.proportions) {\n const indexes = range(this.viewItems.length);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n }\n else {\n let total = 0;\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number') {\n total += proportion;\n }\n else {\n size -= item.size;\n }\n }\n for (let i = 0; i < this.viewItems.length; i++) {\n const item = this.viewItems[i];\n const proportion = this.proportions[i];\n if (typeof proportion === 'number' && total > 0) {\n item.size = clamp(Math.round((proportion * size) / total), item.minimumSize, item.maximumSize);\n }\n }\n }\n this.distributeEmptySpace();\n this.layoutViews();\n }\n relayout(lowPriorityIndexes, highPriorityIndexes) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.resize(this.viewItems.length - 1, this._size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\n this.distributeEmptySpace();\n this.layoutViews();\n this.saveProportions();\n }\n distributeEmptySpace(lowPriorityIndex) {\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n let emptyDelta = this.size - contentSize;\n const indexes = range(this.viewItems.length - 1, -1);\n const lowPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.Low);\n const highPriorityIndexes = indexes.filter((i) => this.viewItems[i].priority === LayoutPriority.High);\n for (const index of highPriorityIndexes) {\n pushToStart(indexes, index);\n }\n for (const index of lowPriorityIndexes) {\n pushToEnd(indexes, index);\n }\n if (typeof lowPriorityIndex === 'number') {\n pushToEnd(indexes, lowPriorityIndex);\n }\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\n const item = this.viewItems[indexes[i]];\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\n const viewDelta = size - item.size;\n emptyDelta -= viewDelta;\n item.size = size;\n }\n }\n saveProportions() {\n if (this.proportionalLayout && this._contentSize > 0) {\n this._proportions = this.viewItems.map((i) => i.visible ? i.size / this._contentSize : undefined);\n }\n }\n /**\n * Margin explain:\n *\n * For `n` views in a splitview there will be `n-1` margins `m`.\n *\n * To fit the margins each view must reduce in size by `(m * (n - 1)) / n`.\n *\n * For each view `i` the offet must be adjusted by `m * i/(n - 1)`.\n */\n layoutViews() {\n this._contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\n this.updateSashEnablement();\n if (this.viewItems.length === 0) {\n return;\n }\n const visibleViewItems = this.viewItems.filter((i) => i.visible);\n const sashCount = Math.max(0, visibleViewItems.length - 1);\n const marginReducedSize = (this.margin * sashCount) / Math.max(1, visibleViewItems.length);\n let totalLeftOffset = 0;\n const viewLeftOffsets = [];\n const sashWidth = 4; // hardcoded in css\n const runningVisiblePanelCount = this.viewItems.reduce((arr, viewItem, i) => {\n const flag = viewItem.visible ? 1 : 0;\n if (i === 0) {\n arr.push(flag);\n }\n else {\n arr.push(arr[i - 1] + flag);\n }\n return arr;\n }, []);\n // calculate both view and cash positions\n this.viewItems.forEach((view, i) => {\n totalLeftOffset += this.viewItems[i].size;\n viewLeftOffsets.push(totalLeftOffset);\n const size = view.visible ? view.size - marginReducedSize : 0;\n const visiblePanelsBeforeThisView = Math.max(0, runningVisiblePanelCount[i] - 1);\n const offset = i === 0 || visiblePanelsBeforeThisView === 0\n ? 0\n : viewLeftOffsets[i - 1] +\n (visiblePanelsBeforeThisView / sashCount) *\n marginReducedSize;\n if (i < this.viewItems.length - 1) {\n // calculate sash position\n const newSize = view.visible\n ? offset + size - sashWidth / 2 + this.margin / 2\n : offset;\n if (this._orientation === Orientation.HORIZONTAL) {\n this.sashes[i].container.style.left = `${newSize}px`;\n this.sashes[i].container.style.top = `0px`;\n }\n if (this._orientation === Orientation.VERTICAL) {\n this.sashes[i].container.style.left = `0px`;\n this.sashes[i].container.style.top = `${newSize}px`;\n }\n }\n // calculate view position\n if (this._orientation === Orientation.HORIZONTAL) {\n view.container.style.width = `${size}px`;\n view.container.style.left = `${offset}px`;\n view.container.style.top = '';\n view.container.style.height = '';\n }\n if (this._orientation === Orientation.VERTICAL) {\n view.container.style.height = `${size}px`;\n view.container.style.top = `${offset}px`;\n view.container.style.width = '';\n view.container.style.left = '';\n }\n view.view.layout(view.size - marginReducedSize, this._orthogonalSize);\n });\n }\n findFirstSnapIndex(indexes) {\n // visible views first\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (!viewItem.visible) {\n continue;\n }\n if (viewItem.snap) {\n return index;\n }\n }\n // then, hidden views\n for (const index of indexes) {\n const viewItem = this.viewItems[index];\n if (viewItem.visible &&\n viewItem.maximumSize - viewItem.minimumSize > 0) {\n return undefined;\n }\n if (!viewItem.visible && viewItem.snap) {\n return index;\n }\n }\n return undefined;\n }\n updateSashEnablement() {\n let previous = false;\n const collapsesDown = this.viewItems.map((i) => (previous = i.size - i.minimumSize > 0 || previous));\n previous = false;\n const expandsDown = this.viewItems.map((i) => (previous = i.maximumSize - i.size > 0 || previous));\n const reverseViews = [...this.viewItems].reverse();\n previous = false;\n const collapsesUp = reverseViews\n .map((i) => (previous = i.size - i.minimumSize > 0 || previous))\n .reverse();\n previous = false;\n const expandsUp = reverseViews\n .map((i) => (previous = i.maximumSize - i.size > 0 || previous))\n .reverse();\n let position = 0;\n for (let index = 0; index < this.sashes.length; index++) {\n const sash = this.sashes[index];\n const viewItem = this.viewItems[index];\n position += viewItem.size;\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\n if (min && max) {\n const upIndexes = range(index, -1);\n const downIndexes = range(index + 1, this.viewItems.length);\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\n const snappedBefore = typeof snapBeforeIndex === 'number' &&\n !this.viewItems[snapBeforeIndex].visible;\n const snappedAfter = typeof snapAfterIndex === 'number' &&\n !this.viewItems[snapAfterIndex].visible;\n if (snappedBefore &&\n collapsesUp[index] &&\n (position > 0 || this.startSnappingEnabled)) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (snappedAfter &&\n collapsesDown[index] &&\n (position < this._contentSize || this.endSnappingEnabled)) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.DISABLED);\n }\n }\n else if (min && !max) {\n this.updateSash(sash, SashState.MINIMUM);\n }\n else if (!min && max) {\n this.updateSash(sash, SashState.MAXIMUM);\n }\n else {\n this.updateSash(sash, SashState.ENABLED);\n }\n }\n }\n updateSash(sash, state) {\n toggleClass(sash.container, 'dv-disabled', state === SashState.DISABLED);\n toggleClass(sash.container, 'dv-enabled', state === SashState.ENABLED);\n toggleClass(sash.container, 'dv-maximum', state === SashState.MAXIMUM);\n toggleClass(sash.container, 'dv-minimum', state === SashState.MINIMUM);\n }\n createViewContainer() {\n const element = document.createElement('div');\n element.className = 'dv-view-container';\n return element;\n }\n createSashContainer() {\n const element = document.createElement('div');\n element.className = 'dv-sash-container';\n return element;\n }\n createContainer() {\n const element = document.createElement('div');\n const orientationClassname = this._orientation === Orientation.HORIZONTAL\n ? 'dv-horizontal'\n : 'dv-vertical';\n element.className = `dv-split-view-container ${orientationClassname}`;\n return element;\n }\n dispose() {\n this._onDidSashEnd.dispose();\n this._onDidAddView.dispose();\n this._onDidRemoveView.dispose();\n for (let i = 0; i < this.element.children.length; i++) {\n if (this.element.children.item(i) === this.element) {\n this.element.removeChild(this.element);\n break;\n }\n }\n for (const viewItem of this.viewItems) {\n viewItem.dispose();\n }\n this.element.remove();\n }\n}\n","export const PROPERTY_KEYS_SPLITVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n orientation: undefined,\n descriptor: undefined,\n proportionalLayout: undefined,\n styles: undefined,\n margin: undefined,\n disableAutoResizing: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { Splitview, Orientation, } from '../splitview/splitview';\nimport { CompositeDisposable } from '../lifecycle';\nimport { Emitter } from '../events';\nimport { addClasses, removeClasses } from '../dom';\nexport class Paneview extends CompositeDisposable {\n get onDidAddView() {\n return this.splitview.onDidAddView;\n }\n get onDidRemoveView() {\n return this.splitview.onDidRemoveView;\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get size() {\n return this.splitview.size;\n }\n get orthogonalSize() {\n return this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super();\n this.paneItems = [];\n this.skipAnimation = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orientation = (_a = options.orientation) !== null && _a !== void 0 ? _a : Orientation.VERTICAL;\n this.element = document.createElement('div');\n this.element.className = 'dv-pane-container';\n container.appendChild(this.element);\n this.splitview = new Splitview(this.element, {\n orientation: this._orientation,\n proportionalLayout: false,\n descriptor: options.descriptor,\n });\n // if we've added views from the descriptor we need to\n // add the panes to our Pane array and setup animation\n this.getPanes().forEach((pane) => {\n const disposable = new CompositeDisposable(pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n }));\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.push(paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n });\n this.addDisposables(this._onDidChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire(undefined);\n }), this.splitview.onDidAddView(() => {\n this._onDidChange.fire();\n }), this.splitview.onDidRemoveView(() => {\n this._onDidChange.fire();\n }));\n }\n setViewVisible(index, visible) {\n this.splitview.setViewVisible(index, visible);\n }\n addPane(pane, size, index = this.splitview.length, skipLayout = false) {\n const disposable = pane.onDidChangeExpansionState(() => {\n this.setupAnimation();\n this._onDidChange.fire(undefined);\n });\n const paneItem = {\n pane,\n disposable: {\n dispose: () => {\n disposable.dispose();\n },\n },\n };\n this.paneItems.splice(index, 0, paneItem);\n pane.orthogonalSize = this.splitview.orthogonalSize;\n this.splitview.addView(pane, size, index, skipLayout);\n }\n getViewSize(index) {\n return this.splitview.getViewSize(index);\n }\n getPanes() {\n return this.splitview.getViews();\n }\n removePane(index, options = { skipDispose: false }) {\n const paneItem = this.paneItems.splice(index, 1)[0];\n this.splitview.removeView(index);\n if (!options.skipDispose) {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n }\n return paneItem;\n }\n moveView(from, to) {\n if (from === to) {\n return;\n }\n const view = this.removePane(from, { skipDispose: true });\n this.skipAnimation = true;\n try {\n this.addPane(view.pane, view.pane.size, to, false);\n }\n finally {\n this.skipAnimation = false;\n }\n }\n layout(size, orthogonalSize) {\n this.splitview.layout(size, orthogonalSize);\n }\n setupAnimation() {\n if (this.skipAnimation) {\n return;\n }\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n addClasses(this.element, 'dv-animated');\n this.animationTimer = setTimeout(() => {\n this.animationTimer = undefined;\n removeClasses(this.element, 'dv-animated');\n }, 200);\n }\n dispose() {\n super.dispose();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n this.animationTimer = undefined;\n }\n this.paneItems.forEach((paneItem) => {\n paneItem.disposable.dispose();\n paneItem.pane.dispose();\n });\n this.paneItems = [];\n this.splitview.dispose();\n this.element.remove();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation } from '../splitview/splitview';\nimport { Emitter } from '../events';\nexport class LeafNode {\n get minimumWidth() {\n return this.view.minimumWidth;\n }\n get maximumWidth() {\n return this.view.maximumWidth;\n }\n get minimumHeight() {\n return this.view.minimumHeight;\n }\n get maximumHeight() {\n return this.view.maximumHeight;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return this.view.snap;\n }\n get minimumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumHeight\n : this.minimumWidth;\n }\n get maximumSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumHeight\n : this.maximumWidth;\n }\n get minimumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumWidth\n : this.minimumHeight;\n }\n get maximumOrthogonalSize() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumWidth\n : this.maximumHeight;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get element() {\n return this.view.element;\n }\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n constructor(view, orientation, orthogonalSize, size = 0) {\n this.view = view;\n this.orientation = orientation;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this._disposable = this.view.onDidChange((event) => {\n if (event) {\n this._onDidChange.fire({\n size: this.orientation === Orientation.VERTICAL\n ? event.width\n : event.height,\n orthogonalSize: this.orientation === Orientation.VERTICAL\n ? event.height\n : event.width,\n });\n }\n else {\n this._onDidChange.fire({});\n }\n });\n }\n setVisible(visible) {\n if (this.view.setVisible) {\n this.view.setVisible(visible);\n }\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n this.view.layout(this.width, this.height);\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposable.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Splitview, Orientation, LayoutPriority, } from '../splitview/splitview';\nimport { Emitter, Event } from '../events';\nimport { LeafNode } from './leafNode';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nexport class BranchNode extends CompositeDisposable {\n get width() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.size\n : this.orthogonalSize;\n }\n get height() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.orthogonalSize\n : this.size;\n }\n get minimumSize() {\n return this.children.length === 0\n ? 0\n : Math.max(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.minimumOrthogonalSize\n : 0));\n }\n get maximumSize() {\n return Math.min(...this.children.map((c, index) => this.splitview.isViewVisible(index)\n ? c.maximumOrthogonalSize\n : Number.POSITIVE_INFINITY));\n }\n get minimumOrthogonalSize() {\n return this.splitview.minimumSize;\n }\n get maximumOrthogonalSize() {\n return this.splitview.maximumSize;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n get size() {\n return this._size;\n }\n get minimumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumOrthogonalSize\n : this.minimumSize;\n }\n get minimumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.minimumSize\n : this.minimumOrthogonalSize;\n }\n get maximumWidth() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumOrthogonalSize\n : this.maximumSize;\n }\n get maximumHeight() {\n return this.orientation === Orientation.HORIZONTAL\n ? this.maximumSize\n : this.maximumOrthogonalSize;\n }\n get priority() {\n if (this.children.length === 0) {\n return LayoutPriority.Normal;\n }\n const priorities = this.children.map((c) => typeof c.priority === 'undefined'\n ? LayoutPriority.Normal\n : c.priority);\n if (priorities.some((p) => p === LayoutPriority.High)) {\n return LayoutPriority.High;\n }\n else if (priorities.some((p) => p === LayoutPriority.Low)) {\n return LayoutPriority.Low;\n }\n return LayoutPriority.Normal;\n }\n get disabled() {\n return this.splitview.disabled;\n }\n set disabled(value) {\n this.splitview.disabled = value;\n }\n get margin() {\n return this.splitview.margin;\n }\n set margin(value) {\n this.splitview.margin = value;\n this.children.forEach((child) => {\n if (child instanceof BranchNode) {\n child.margin = value;\n }\n });\n }\n constructor(orientation, proportionalLayout, styles, size, orthogonalSize, disabled, margin, childDescriptors) {\n super();\n this.orientation = orientation;\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._childrenDisposable = Disposable.NONE;\n this.children = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._orthogonalSize = orthogonalSize;\n this._size = size;\n this.element = document.createElement('div');\n this.element.className = 'dv-branch-node';\n if (!childDescriptors) {\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n proportionalLayout,\n styles,\n margin,\n });\n this.splitview.layout(this.size, this.orthogonalSize);\n }\n else {\n const descriptor = {\n views: childDescriptors.map((childDescriptor) => {\n return {\n view: childDescriptor.node,\n size: childDescriptor.node.size,\n visible: childDescriptor.node instanceof LeafNode &&\n childDescriptor.visible !== undefined\n ? childDescriptor.visible\n : true,\n };\n }),\n size: this.orthogonalSize,\n };\n this.children = childDescriptors.map((c) => c.node);\n this.splitview = new Splitview(this.element, {\n orientation: this.orientation,\n descriptor,\n proportionalLayout,\n styles,\n margin,\n });\n }\n this.disabled = disabled;\n this.addDisposables(this._onDidChange, this._onDidVisibilityChange, this.splitview.onDidSashEnd(() => {\n this._onDidChange.fire({});\n }));\n this.setupChildrenEvents();\n }\n setVisible(_visible) {\n // noop\n }\n isChildVisible(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.isViewVisible(index);\n }\n setChildVisible(index, visible) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n if (this.splitview.isViewVisible(index) === visible) {\n return;\n }\n const wereAllChildrenHidden = this.splitview.contentSize === 0;\n this.splitview.setViewVisible(index, visible);\n // }\n const areAllChildrenHidden = this.splitview.contentSize === 0;\n // If all children are hidden then the parent should hide the entire splitview\n // If the entire splitview is hidden then the parent should show the splitview when a child is shown\n if ((visible && wereAllChildrenHidden) ||\n (!visible && areAllChildrenHidden)) {\n this._onDidVisibilityChange.fire({ visible });\n }\n }\n moveChild(from, to) {\n if (from === to) {\n return;\n }\n if (from < 0 || from >= this.children.length) {\n throw new Error('Invalid from index');\n }\n if (from < to) {\n to--;\n }\n this.splitview.moveView(from, to);\n const child = this._removeChild(from);\n this._addChild(child, to);\n }\n getChildSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewSize(index);\n }\n resizeChild(index, size) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.resizeView(index, size);\n }\n layout(size, orthogonalSize) {\n this._size = orthogonalSize;\n this._orthogonalSize = size;\n this.splitview.layout(orthogonalSize, size);\n }\n addChild(node, size, index, skipLayout) {\n if (index < 0 || index > this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.addView(node, size, index, skipLayout);\n this._addChild(node, index);\n }\n getChildCachedVisibleSize(index) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n return this.splitview.getViewCachedVisibleSize(index);\n }\n removeChild(index, sizing) {\n if (index < 0 || index >= this.children.length) {\n throw new Error('Invalid index');\n }\n this.splitview.removeView(index, sizing);\n return this._removeChild(index);\n }\n _addChild(node, index) {\n this.children.splice(index, 0, node);\n this.setupChildrenEvents();\n }\n _removeChild(index) {\n const [child] = this.children.splice(index, 1);\n this.setupChildrenEvents();\n return child;\n }\n setupChildrenEvents() {\n this._childrenDisposable.dispose();\n this._childrenDisposable = new CompositeDisposable(Event.any(...this.children.map((c) => c.onDidChange))((e) => {\n /**\n * indicate a change has occured to allows any re-rendering but don't bubble\n * event because that was specific to this branch\n */\n this._onDidChange.fire({ size: e.orthogonalSize });\n }), ...this.children.map((c, i) => {\n if (c instanceof BranchNode) {\n return c.onDidVisibilityChange(({ visible }) => {\n this.setChildVisible(i, visible);\n });\n }\n return Disposable.NONE;\n }));\n }\n dispose() {\n this._childrenDisposable.dispose();\n this.splitview.dispose();\n this.children.forEach((child) => child.dispose());\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:\n * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid\n *--------------------------------------------------------------------------------------------*/\nimport { Orientation, Sizing, } from '../splitview/splitview';\nimport { tail } from '../array';\nimport { LeafNode } from './leafNode';\nimport { BranchNode } from './branchNode';\nimport { Emitter } from '../events';\nimport { MutableDisposable } from '../lifecycle';\nfunction findLeaf(candiateNode, last) {\n if (candiateNode instanceof LeafNode) {\n return candiateNode;\n }\n if (candiateNode instanceof BranchNode) {\n return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);\n }\n throw new Error('invalid node');\n}\nfunction cloneNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(node.orientation, node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n result.addChild(cloneNode(child, child.size, child.orthogonalSize), child.size, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, node.orientation, orthogonalSize);\n }\n}\nfunction flipNode(node, size, orthogonalSize) {\n if (node instanceof BranchNode) {\n const result = new BranchNode(orthogonal(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize, node.disabled, node.margin);\n let totalSize = 0;\n for (let i = node.children.length - 1; i >= 0; i--) {\n const child = node.children[i];\n const childSize = child instanceof BranchNode ? child.orthogonalSize : child.size;\n let newSize = node.size === 0\n ? 0\n : Math.round((size * childSize) / node.size);\n totalSize += newSize;\n // The last view to add should adjust to rounding errors\n if (i === 0) {\n newSize += size - totalSize;\n }\n result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);\n }\n return result;\n }\n else {\n return new LeafNode(node.view, orthogonal(node.orientation), orthogonalSize);\n }\n}\nexport function indexInParent(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n let el = parentElement.firstElementChild;\n let index = 0;\n while (el !== element && el !== parentElement.lastElementChild && el) {\n el = el.nextElementSibling;\n index++;\n }\n return index;\n}\n/**\n * Find the grid location of a specific DOM element by traversing the parent\n * chain and finding each child index on the way.\n *\n * This will break as soon as DOM structures of the Splitview or Gridview change.\n */\nexport function getGridLocation(element) {\n const parentElement = element.parentElement;\n if (!parentElement) {\n throw new Error('Invalid grid element');\n }\n if (/\\bdv-grid-view\\b/.test(parentElement.className)) {\n return [];\n }\n const index = indexInParent(parentElement);\n const ancestor = parentElement.parentElement.parentElement.parentElement;\n return [...getGridLocation(ancestor), index];\n}\nexport function getRelativeLocation(rootOrientation, location, direction) {\n const orientation = getLocationOrientation(rootOrientation, location);\n const directionOrientation = getDirectionOrientation(direction);\n if (orientation === directionOrientation) {\n const [rest, _index] = tail(location);\n let index = _index;\n if (direction === 'right' || direction === 'bottom') {\n index += 1;\n }\n return [...rest, index];\n }\n else {\n const index = direction === 'right' || direction === 'bottom' ? 1 : 0;\n return [...location, index];\n }\n}\nexport function getDirectionOrientation(direction) {\n return direction === 'top' || direction === 'bottom'\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\n}\nexport function getLocationOrientation(rootOrientation, location) {\n return location.length % 2 === 0\n ? orthogonal(rootOrientation)\n : rootOrientation;\n}\nexport const orthogonal = (orientation) => orientation === Orientation.HORIZONTAL\n ? Orientation.VERTICAL\n : Orientation.HORIZONTAL;\nexport function isGridBranchNode(node) {\n return !!node.children;\n}\nconst serializeBranchNode = (node, orientation) => {\n const size = orientation === Orientation.VERTICAL ? node.box.width : node.box.height;\n if (!isGridBranchNode(node)) {\n if (typeof node.cachedVisibleSize === 'number') {\n return {\n type: 'leaf',\n data: node.view.toJSON(),\n size: node.cachedVisibleSize,\n visible: false,\n };\n }\n return { type: 'leaf', data: node.view.toJSON(), size };\n }\n return {\n type: 'branch',\n data: node.children.map((c) => serializeBranchNode(c, orthogonal(orientation))),\n size,\n };\n};\nexport class Gridview {\n get length() {\n return this._root ? this._root.children.length : 0;\n }\n get orientation() {\n return this.root.orientation;\n }\n set orientation(orientation) {\n if (this.root.orientation === orientation) {\n return;\n }\n const { size, orthogonalSize } = this.root;\n this.root = flipNode(this.root, orthogonalSize, size);\n this.root.layout(size, orthogonalSize);\n }\n get width() {\n return this.root.width;\n }\n get height() {\n return this.root.height;\n }\n get minimumWidth() {\n return this.root.minimumWidth;\n }\n get minimumHeight() {\n return this.root.minimumHeight;\n }\n get maximumWidth() {\n return this.root.maximumHeight;\n }\n get maximumHeight() {\n return this.root.maximumHeight;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n const branch = [this.root];\n /**\n * simple depth-first-search to cover all nodes\n *\n * @see https://en.wikipedia.org/wiki/Depth-first_search\n */\n while (branch.length > 0) {\n const node = branch.pop();\n if (node instanceof BranchNode) {\n node.disabled = value;\n branch.push(...node.children);\n }\n }\n }\n get margin() {\n return this._margin;\n }\n set margin(value) {\n this._margin = value;\n this.root.margin = value;\n }\n maximizedView() {\n var _a;\n return (_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf.view;\n }\n hasMaximizedView() {\n return this._maximizedNode !== undefined;\n }\n maximizeView(view) {\n var _a;\n const location = getGridLocation(view.element);\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n if (((_a = this._maximizedNode) === null || _a === void 0 ? void 0 : _a.leaf) === node) {\n return;\n }\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n serializeBranchNode(this.getView(), this.orientation);\n const hiddenOnMaximize = [];\n function hideAllViewsBut(parent, exclude) {\n for (let i = 0; i < parent.children.length; i++) {\n const child = parent.children[i];\n if (child instanceof LeafNode) {\n if (child !== exclude) {\n if (parent.isChildVisible(i)) {\n parent.setChildVisible(i, false);\n }\n else {\n hiddenOnMaximize.push(child);\n }\n }\n }\n else {\n hideAllViewsBut(child, exclude);\n }\n }\n }\n hideAllViewsBut(this.root, node);\n this._maximizedNode = { leaf: node, hiddenOnMaximize };\n this._onDidMaximizedNodeChange.fire({\n view: node.view,\n isMaximized: true,\n });\n }\n exitMaximizedView() {\n if (!this._maximizedNode) {\n return;\n }\n const hiddenOnMaximize = this._maximizedNode.hiddenOnMaximize;\n function showViewsInReverseOrder(parent) {\n for (let index = parent.children.length - 1; index >= 0; index--) {\n const child = parent.children[index];\n if (child instanceof LeafNode) {\n if (!hiddenOnMaximize.includes(child)) {\n parent.setChildVisible(index, true);\n }\n }\n else {\n showViewsInReverseOrder(child);\n }\n }\n }\n showViewsInReverseOrder(this.root);\n const tmp = this._maximizedNode.leaf;\n this._maximizedNode = undefined;\n this._onDidMaximizedNodeChange.fire({\n view: tmp.view,\n isMaximized: false,\n });\n }\n serialize() {\n const maximizedView = this.maximizedView();\n let maxmizedViewLocation;\n if (maximizedView) {\n /**\n * The minimum information we can get away with in order to serialize a maxmized view is it's location within the grid\n * which is represented as a branch of indices\n */\n maxmizedViewLocation = getGridLocation(maximizedView.element);\n }\n if (this.hasMaximizedView()) {\n /**\n * the saved layout cannot be in its maxmized state otherwise all of the underlying\n * view dimensions will be wrong\n *\n * To counteract this we temporaily remove the maximized view to compute the serialized output\n * of the grid before adding back the maxmized view as to not alter the layout from the users\n * perspective when `.toJSON()` is called\n */\n this.exitMaximizedView();\n }\n const root = serializeBranchNode(this.getView(), this.orientation);\n const resullt = {\n root,\n width: this.width,\n height: this.height,\n orientation: this.orientation,\n };\n if (maxmizedViewLocation) {\n resullt.maximizedNode = {\n location: maxmizedViewLocation,\n };\n }\n if (maximizedView) {\n // replace any maximzied view that was removed for serialization purposes\n this.maximizeView(maximizedView);\n }\n return resullt;\n }\n dispose() {\n this.disposable.dispose();\n this._onDidChange.dispose();\n this._onDidMaximizedNodeChange.dispose();\n this._onDidViewVisibilityChange.dispose();\n this.root.dispose();\n this._maximizedNode = undefined;\n this.element.remove();\n }\n clear() {\n const orientation = this.root.orientation;\n this.root = new BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize, this.locked, this.margin);\n }\n deserialize(json, deserializer) {\n const orientation = json.orientation;\n const height = orientation === Orientation.VERTICAL ? json.height : json.width;\n this._deserialize(json.root, orientation, deserializer, height);\n /**\n * The deserialied layout must be positioned through this.layout(...)\n * before any maximizedNode can be positioned\n */\n this.layout(json.width, json.height);\n if (json.maximizedNode) {\n const location = json.maximizedNode.location;\n const [_, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n return;\n }\n this.maximizeView(node.view);\n }\n }\n _deserialize(root, orientation, deserializer, orthogonalSize) {\n this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize);\n }\n _deserializeNode(node, orientation, deserializer, orthogonalSize) {\n var _a;\n let result;\n if (node.type === 'branch') {\n const serializedChildren = node.data;\n const children = serializedChildren.map((serializedChild) => {\n return {\n node: this._deserializeNode(serializedChild, orthogonal(orientation), deserializer, node.size),\n visible: serializedChild.visible,\n };\n });\n result = new BranchNode(orientation, this.proportionalLayout, this.styles, node.size, // <- orthogonal size - flips at each depth\n orthogonalSize, // <- size - flips at each depth,\n this.locked, this.margin, children);\n }\n else {\n const view = deserializer.fromJSON(node);\n if (typeof node.visible === 'boolean') {\n (_a = view.setVisible) === null || _a === void 0 ? void 0 : _a.call(view, node.visible);\n }\n result = new LeafNode(view, orientation, orthogonalSize, node.size);\n }\n return result;\n }\n get root() {\n return this._root;\n }\n set root(root) {\n const oldRoot = this._root;\n if (oldRoot) {\n oldRoot.dispose();\n this._maximizedNode = undefined;\n this.element.removeChild(oldRoot.element);\n }\n this._root = root;\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n normalize() {\n if (!this._root) {\n return;\n }\n if (this._root.children.length !== 1) {\n return;\n }\n const oldRoot = this.root;\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n if (childReference instanceof LeafNode) {\n return;\n }\n oldRoot.element.remove();\n const child = oldRoot.removeChild(0); // Remove child to prevent double disposal\n oldRoot.dispose(); // Dispose old root (won't dispose removed child)\n child.dispose(); // Dispose the removed child\n this._root = cloneNode(childReference, childReference.size, childReference.orthogonalSize);\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n /**\n * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node\n * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node\n */\n insertOrthogonalSplitviewAtRoot() {\n if (!this._root) {\n return;\n }\n const oldRoot = this.root;\n oldRoot.element.remove();\n this._root = new BranchNode(orthogonal(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size, this.locked, this.margin);\n if (oldRoot.children.length === 0) {\n // no data so no need to add anything back in\n }\n else if (oldRoot.children.length === 1) {\n // can remove one level of redundant branching if there is only a single child\n const childReference = oldRoot.children[0];\n const child = oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root\n child.dispose();\n oldRoot.dispose();\n this._root.addChild(\n /**\n * the child node will have the same orientation as the new root since\n * we are removing the inbetween node.\n * the entire 'tree' must be flipped recursively to ensure that the orientation\n * flips at each level\n */\n flipNode(childReference, childReference.orthogonalSize, childReference.size), Sizing.Distribute, 0);\n }\n else {\n this._root.addChild(oldRoot, Sizing.Distribute, 0);\n }\n this.element.appendChild(this._root.element);\n this.disposable.value = this._root.onDidChange((e) => {\n this._onDidChange.fire(e);\n });\n }\n next(location) {\n return this.progmaticSelect(location);\n }\n previous(location) {\n return this.progmaticSelect(location, true);\n }\n getView(location) {\n const node = location ? this.getNode(location)[1] : this.root;\n return this._getViews(node, this.orientation);\n }\n _getViews(node, orientation, cachedVisibleSize) {\n const box = { height: node.height, width: node.width };\n if (node instanceof LeafNode) {\n return { box, view: node.view, cachedVisibleSize };\n }\n const children = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);\n children.push(this._getViews(child, orthogonal(orientation), nodeCachedVisibleSize));\n }\n return { box, children };\n }\n progmaticSelect(location, reverse = false) {\n const [path, node] = this.getNode(location);\n if (!(node instanceof LeafNode)) {\n throw new Error('invalid location');\n }\n for (let i = path.length - 1; i > -1; i--) {\n const n = path[i];\n const l = location[i] || 0;\n const canProgressInCurrentLevel = reverse\n ? l - 1 > -1\n : l + 1 < n.children.length;\n if (canProgressInCurrentLevel) {\n return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);\n }\n }\n return findLeaf(this.root, reverse);\n }\n constructor(proportionalLayout, styles, orientation, locked, margin) {\n this.proportionalLayout = proportionalLayout;\n this.styles = styles;\n this._locked = false;\n this._margin = 0;\n this._maximizedNode = undefined;\n this.disposable = new MutableDisposable();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidViewVisibilityChange = new Emitter();\n this.onDidViewVisibilityChange = this._onDidViewVisibilityChange.event;\n this._onDidMaximizedNodeChange = new Emitter();\n this.onDidMaximizedNodeChange = this._onDidMaximizedNodeChange.event;\n this.element = document.createElement('div');\n this.element.className = 'dv-grid-view';\n this._locked = locked !== null && locked !== void 0 ? locked : false;\n this._margin = margin !== null && margin !== void 0 ? margin : 0;\n this.root = new BranchNode(orientation, proportionalLayout, styles, 0, 0, this.locked, this.margin);\n }\n isViewVisible(location) {\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n return parent.isChildVisible(index);\n }\n setViewVisible(location, visible) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid from location');\n }\n this._onDidViewVisibilityChange.fire();\n parent.setChildVisible(index, visible);\n }\n moveView(parentLocation, from, to) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [, parent] = this.getNode(parentLocation);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n parent.moveChild(from, to);\n }\n addView(view, size, location) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (parent instanceof BranchNode) {\n const node = new LeafNode(view, orthogonal(parent.orientation), parent.orthogonalSize);\n parent.addChild(node, size, index);\n }\n else {\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n let newSiblingSize = 0;\n const newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);\n if (typeof newSiblingCachedVisibleSize === 'number') {\n newSiblingSize = Sizing.Invisible(newSiblingCachedVisibleSize);\n }\n const child = grandParent.removeChild(parentIndex);\n child.dispose();\n const newParent = new BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize, this.locked, this.margin);\n grandParent.addChild(newParent, parent.size, parentIndex);\n const newSibling = new LeafNode(parent.view, grandParent.orientation, parent.size);\n newParent.addChild(newSibling, newSiblingSize, 0);\n if (typeof size !== 'number' && size.type === 'split') {\n size = { type: 'split', index: 0 };\n }\n const node = new LeafNode(view, grandParent.orientation, parent.size);\n newParent.addChild(node, size, index);\n }\n }\n remove(view, sizing) {\n const location = getGridLocation(view.element);\n return this.removeView(location, sizing);\n }\n removeView(location, sizing) {\n if (this.hasMaximizedView()) {\n this.exitMaximizedView();\n }\n const [rest, index] = tail(location);\n const [pathToParent, parent] = this.getNode(rest);\n if (!(parent instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const nodeToRemove = parent.children[index];\n if (!(nodeToRemove instanceof LeafNode)) {\n throw new Error('Invalid location');\n }\n parent.removeChild(index, sizing);\n nodeToRemove.dispose();\n if (parent.children.length !== 1) {\n return nodeToRemove.view;\n }\n // if the parent has only one child and we know the parent is a BranchNode we can make the tree\n // more efficiently spaced by replacing the parent BranchNode with the child.\n // if that child is a LeafNode then we simply replace the BranchNode with the child otherwise if the child\n // is a BranchNode too we should spread it's children into the grandparent.\n // refer to the remaining child as the sibling\n const sibling = parent.children[0];\n if (pathToParent.length === 0) {\n // if the parent is root\n if (sibling instanceof LeafNode) {\n // if the sibling is a leaf node no action is required\n return nodeToRemove.view;\n }\n // otherwise the sibling is a branch node. since the parent is the root and the root has only one child\n // which is a branch node we can just set this branch node to be the new root node\n // for good housekeeping we'll removing the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // and set that sibling node to be root\n this.root = sibling;\n return nodeToRemove.view;\n }\n // otherwise the parent is apart of a large sub-tree\n const [grandParent, ..._] = [...pathToParent].reverse();\n const [parentIndex, ...__] = [...rest].reverse();\n const isSiblingVisible = parent.isChildVisible(0);\n // either way we need to remove the sibling from it's existing tree\n parent.removeChild(0, sizing);\n // note the sizes of all of the grandparents children\n const sizes = grandParent.children.map((_size, i) => grandParent.getChildSize(i));\n // remove the parent from the grandparent since we are moving the sibling to take the parents place\n // this parent is no longer used and can be disposed of\n grandParent.removeChild(parentIndex, sizing).dispose();\n if (sibling instanceof BranchNode) {\n // replace the parent with the siblings children\n sizes.splice(parentIndex, 1, ...sibling.children.map((c) => c.size));\n // and add those siblings to the grandparent\n for (let i = 0; i < sibling.children.length; i++) {\n const child = sibling.children[i];\n grandParent.addChild(child, child.size, parentIndex + i);\n }\n /**\n * clean down the branch node since we need to dipose of it and\n * when .dispose() it called on a branch it will dispose of any\n * views it is holding onto.\n */\n while (sibling.children.length > 0) {\n sibling.removeChild(0);\n }\n }\n else {\n // otherwise create a new leaf node and add that to the grandparent\n const newSibling = new LeafNode(sibling.view, orthogonal(sibling.orientation), sibling.size);\n const siblingSizing = isSiblingVisible\n ? sibling.orthogonalSize\n : Sizing.Invisible(sibling.orthogonalSize);\n grandParent.addChild(newSibling, siblingSizing, parentIndex);\n }\n // the containing node of the sibling is no longer required and can be disposed of\n sibling.dispose();\n // resize everything\n for (let i = 0; i < sizes.length; i++) {\n grandParent.resizeChild(i, sizes[i]);\n }\n return nodeToRemove.view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.root.orientation === Orientation.HORIZONTAL\n ? [height, width]\n : [width, height];\n this.root.layout(size, orthogonalSize);\n }\n getNode(location, node = this.root, path = []) {\n if (location.length === 0) {\n return [path, node];\n }\n if (!(node instanceof BranchNode)) {\n throw new Error('Invalid location');\n }\n const [index, ...rest] = location;\n if (index < 0 || index >= node.children.length) {\n throw new Error('Invalid location');\n }\n const child = node.children[index];\n path.push(node);\n return this.getNode(rest, child, path);\n }\n}\n","export const PROPERTY_KEYS_GRIDVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n proportionalLayout: undefined,\n orientation: undefined,\n hideBorders: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\n","import { isInDocument, watchElementResize } from './dom';\nimport { CompositeDisposable } from './lifecycle';\nexport class Resizable extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get disableResizing() {\n return this._disableResizing;\n }\n set disableResizing(value) {\n this._disableResizing = value;\n }\n constructor(parentElement, disableResizing = false) {\n super();\n this._disableResizing = disableResizing;\n this._element = parentElement;\n this.addDisposables(watchElementResize(this._element, (entry) => {\n if (this.isDisposed) {\n /**\n * resize is delayed through requestAnimationFrame so there is a small chance\n * the component has already been disposed of\n */\n return;\n }\n if (this.disableResizing) {\n return;\n }\n if (!this._element.offsetParent) {\n /**\n * offsetParent === null is equivalent to display: none being set on the element or one\n * of it's parents. In the display: none case the size will become (0, 0) which we do\n * not want to propagate.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent\n *\n * You could use checkVisibility() but at the time of writing it's not supported across\n * all Browsers\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility\n */\n return;\n }\n if (!isInDocument(this._element)) {\n /**\n * since the event is dispatched through requestAnimationFrame there is a small chance\n * the component is no longer attached to the DOM, if that is the case the dimensions\n * are mostly likely all zero and meaningless. we should skip this case.\n */\n return;\n }\n const { width, height } = entry.contentRect;\n this.layout(width, height);\n }));\n }\n}\n","import { Emitter, Event, AsapEvent } from '../events';\nimport { getGridLocation, Gridview } from './gridview';\nimport { Disposable } from '../lifecycle';\nimport { sequentialNumberGenerator } from '../math';\nimport { Sizing } from '../splitview/splitview';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nexport function toTarget(direction) {\n switch (direction) {\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'within':\n default:\n return 'center';\n }\n}\nexport class BaseGrid extends Resizable {\n get id() {\n return this._id;\n }\n get size() {\n return this._groups.size;\n }\n get groups() {\n return Array.from(this._groups.values()).map((_) => _.value);\n }\n get width() {\n return this.gridview.width;\n }\n get height() {\n return this.gridview.height;\n }\n get minimumHeight() {\n return this.gridview.minimumHeight;\n }\n get maximumHeight() {\n return this.gridview.maximumHeight;\n }\n get minimumWidth() {\n return this.gridview.minimumWidth;\n }\n get maximumWidth() {\n return this.gridview.maximumWidth;\n }\n get activeGroup() {\n return this._activeGroup;\n }\n get locked() {\n return this.gridview.locked;\n }\n set locked(value) {\n this.gridview.locked = value;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._groups = new Map();\n this._onDidRemove = new Emitter();\n this.onDidRemove = this._onDidRemove.event;\n this._onDidAdd = new Emitter();\n this.onDidAdd = this._onDidAdd.event;\n this._onDidMaximizedChange = new Emitter();\n this.onDidMaximizedChange = this._onDidMaximizedChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._bufferOnDidLayoutChange = new AsapEvent();\n this.onDidLayoutChange = this._bufferOnDidLayoutChange.onEvent;\n this._onDidViewVisibilityChangeMicroTaskQueue = new AsapEvent();\n this.onDidViewVisibilityChangeMicroTaskQueue = this._onDidViewVisibilityChangeMicroTaskQueue.onEvent;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this.gridview = new Gridview(!!options.proportionalLayout, options.styles, options.orientation, options.locked, options.margin);\n this.gridview.locked = !!options.locked;\n this.element.appendChild(this.gridview.element);\n this.layout(0, 0, true); // set some elements height/widths\n this.addDisposables(this.gridview.onDidMaximizedNodeChange((event) => {\n this._onDidMaximizedChange.fire({\n panel: event.view,\n isMaximized: event.isMaximized,\n });\n }), this.gridview.onDidViewVisibilityChange(() => this._onDidViewVisibilityChangeMicroTaskQueue.fire()), this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.layout(this.width, this.height, true);\n }), Disposable.from(() => {\n var _a;\n (_a = this.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.element);\n }), this.gridview.onDidChange(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Event.any(this.onDidAdd, this.onDidRemove, this.onDidActiveChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), this._onDidMaximizedChange, this._onDidViewVisibilityChangeMicroTaskQueue, this._bufferOnDidLayoutChange);\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n this._bufferOnDidLayoutChange.fire();\n }\n isVisible(panel) {\n return this.gridview.isViewVisible(getGridLocation(panel.element));\n }\n updateOptions(options) {\n var _a, _b, _c, _d;\n if (typeof options.proportionalLayout === 'boolean') {\n // this.gridview.proportionalLayout = options.proportionalLayout; // not supported\n }\n if (options.orientation) {\n this.gridview.orientation = options.orientation;\n }\n if ('styles' in options) {\n // this.gridview.styles = options.styles; // not supported\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_a = options.disableAutoResizing) !== null && _a !== void 0 ? _a : false;\n }\n if ('locked' in options) {\n this.locked = (_b = options.locked) !== null && _b !== void 0 ? _b : false;\n }\n if ('margin' in options) {\n this.gridview.margin = (_c = options.margin) !== null && _c !== void 0 ? _c : 0;\n }\n if ('className' in options) {\n this._classNames.setClassNames((_d = options.className) !== null && _d !== void 0 ? _d : '');\n }\n }\n maximizeGroup(panel) {\n this.gridview.maximizeView(panel);\n this.doSetGroupActive(panel);\n }\n isMaximizedGroup(panel) {\n return this.gridview.maximizedView() === panel;\n }\n exitMaximizedGroup() {\n this.gridview.exitMaximizedView();\n }\n hasMaximizedGroup() {\n return this.gridview.hasMaximizedView();\n }\n doAddGroup(group, location = [0], size) {\n this.gridview.addView(group, size !== null && size !== void 0 ? size : Sizing.Distribute, location);\n this._onDidAdd.fire(group);\n }\n doRemoveGroup(group, options) {\n if (!this._groups.has(group.id)) {\n throw new Error('invalid operation');\n }\n const item = this._groups.get(group.id);\n const view = this.gridview.remove(group, Sizing.Distribute);\n if (item && !(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n item.disposable.dispose();\n item.value.dispose();\n this._groups.delete(group.id);\n this._onDidRemove.fire(group);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return view;\n }\n getPanel(id) {\n var _a;\n return (_a = this._groups.get(id)) === null || _a === void 0 ? void 0 : _a.value;\n }\n doSetGroupActive(group) {\n if (this._activeGroup === group) {\n return;\n }\n if (this._activeGroup) {\n this._activeGroup.setActive(false);\n }\n if (group) {\n group.setActive(true);\n }\n this._activeGroup = group;\n this._onDidActiveChange.fire(group);\n }\n removeGroup(group) {\n this.doRemoveGroup(group);\n }\n moveToNext(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n moveToPrevious(options) {\n var _a;\n if (!options) {\n options = {};\n }\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupActive(next);\n }\n layout(width, height, forceResize) {\n const different = forceResize || width !== this.width || height !== this.height;\n if (!different) {\n return;\n }\n this.gridview.element.style.height = `${height}px`;\n this.gridview.element.style.width = `${width}px`;\n this.gridview.layout(width, height);\n }\n dispose() {\n this._onDidActiveChange.dispose();\n this._onDidAdd.dispose();\n this._onDidRemove.dispose();\n for (const group of this.groups) {\n group.dispose();\n }\n this.gridview.dispose();\n super.dispose();\n }\n}\n","export class SplitviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * The current number of panels.\n */\n get length() {\n return this.component.length;\n }\n /**\n * The current orientation of the component.\n */\n get orientation() {\n return this.component.orientation;\n }\n /**\n * The list of current panels.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked after a layout is loaded through the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked whenever any aspect of the layout changes.\n * If listening to this event it may be worth debouncing ouputs.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a view is added.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a view is removed.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Removes an existing panel and optionally provide a `Sizing` method\n * for the subsequent resize.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Focus the component.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get the reference to a panel given it's `string` id.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Layout the panel with a width and height.\n */\n layout(width, height) {\n return this.component.layout(width, height);\n }\n /**\n * Add a new panel and return the created instance.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Deserialize a layout to built a splitivew.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /** Serialize a layout */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Remove all panels and clear the component.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class PaneviewApi {\n /**\n * The minimum size the component can reach where size is measured in the direction of orientation provided.\n */\n get minimumSize() {\n return this.component.minimumSize;\n }\n /**\n * The maximum size the component can reach where size is measured in the direction of orientation provided.\n */\n get maximumSize() {\n return this.component.maximumSize;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddView() {\n return this.component.onDidAddView;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemoveView() {\n return this.component.onDidRemoveView;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Move a panel given it's current and desired index.\n */\n movePanel(from, to) {\n this.component.movePanel(from, to);\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height) {\n this.component.layout(width, height);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Update configuratable options.\n */\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class GridviewApi {\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.groups;\n }\n /**\n * Current orientation. Can be changed after initialization.\n */\n get orientation() {\n return this.component.orientation;\n }\n set orientation(value) {\n this.component.updateOptions({ orientation: value });\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel, sizing) {\n this.component.removePanel(panel, sizing);\n }\n /**\n * Move a panel in a particular direction relative to another panel.\n */\n movePanel(panel, options) {\n this.component.movePanel(panel, options);\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getPanel(id);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n return this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\nexport class DockviewApi {\n /**\n * The unique identifier for this instance. Used to manage scope of Drag'n'Drop events.\n */\n get id() {\n return this.component.id;\n }\n /**\n * Width of the component.\n */\n get width() {\n return this.component.width;\n }\n /**\n * Height of the component.\n */\n get height() {\n return this.component.height;\n }\n /**\n * Minimum height of the component.\n */\n get minimumHeight() {\n return this.component.minimumHeight;\n }\n /**\n * Maximum height of the component.\n */\n get maximumHeight() {\n return this.component.maximumHeight;\n }\n /**\n * Minimum width of the component.\n */\n get minimumWidth() {\n return this.component.minimumWidth;\n }\n /**\n * Maximum width of the component.\n */\n get maximumWidth() {\n return this.component.maximumWidth;\n }\n /**\n * Total number of groups.\n */\n get size() {\n return this.component.size;\n }\n /**\n * Total number of panels.\n */\n get totalPanels() {\n return this.component.totalPanels;\n }\n /**\n * Invoked when the active group changes. May be undefined if no group is active.\n */\n get onDidActiveGroupChange() {\n return this.component.onDidActiveGroupChange;\n }\n /**\n * Invoked when a group is added. May be called multiple times when moving groups.\n */\n get onDidAddGroup() {\n return this.component.onDidAddGroup;\n }\n /**\n * Invoked when a group is removed. May be called multiple times when moving groups.\n */\n get onDidRemoveGroup() {\n return this.component.onDidRemoveGroup;\n }\n /**\n * Invoked when the active panel changes. May be undefined if no panel is active.\n */\n get onDidActivePanelChange() {\n return this.component.onDidActivePanelChange;\n }\n /**\n * Invoked when a panel is added. May be called multiple times when moving panels.\n */\n get onDidAddPanel() {\n return this.component.onDidAddPanel;\n }\n /**\n * Invoked when a panel is removed. May be called multiple times when moving panels.\n */\n get onDidRemovePanel() {\n return this.component.onDidRemovePanel;\n }\n get onDidMovePanel() {\n return this.component.onDidMovePanel;\n }\n /**\n * Invoked after a layout is deserialzied using the `fromJSON` method.\n */\n get onDidLayoutFromJSON() {\n return this.component.onDidLayoutFromJSON;\n }\n /**\n * Invoked when any layout change occures, an aggregation of many events.\n */\n get onDidLayoutChange() {\n return this.component.onDidLayoutChange;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs that the component was unable to handle. Exposed for custom Drag'n'Drop functionality.\n */\n get onDidDrop() {\n return this.component.onDidDrop;\n }\n /**\n * Invoked when a Drag'n'Drop event occurs but before dockview handles it giving the user an opportunity to intecept and\n * prevent the event from occuring using the standard `preventDefault()` syntax.\n *\n * Preventing certain events may causes unexpected behaviours, use carefully.\n */\n get onWillDrop() {\n return this.component.onWillDrop;\n }\n /**\n * Invoked before an overlay is shown indicating a drop target.\n *\n * Calling `event.preventDefault()` will prevent the overlay being shown and prevent\n * the any subsequent drop event.\n */\n get onWillShowOverlay() {\n return this.component.onWillShowOverlay;\n }\n /**\n * Invoked before a group is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the group drag starting.\n *\n */\n get onWillDragGroup() {\n return this.component.onWillDragGroup;\n }\n /**\n * Invoked before a panel is dragged.\n *\n * Calling `event.nativeEvent.preventDefault()` will prevent the panel drag starting.\n */\n get onWillDragPanel() {\n return this.component.onWillDragPanel;\n }\n get onUnhandledDragOverEvent() {\n return this.component.onUnhandledDragOverEvent;\n }\n get onDidPopoutGroupSizeChange() {\n return this.component.onDidPopoutGroupSizeChange;\n }\n get onDidPopoutGroupPositionChange() {\n return this.component.onDidPopoutGroupPositionChange;\n }\n get onDidOpenPopoutWindowFail() {\n return this.component.onDidOpenPopoutWindowFail;\n }\n /**\n * All panel objects.\n */\n get panels() {\n return this.component.panels;\n }\n /**\n * All group objects.\n */\n get groups() {\n return this.component.groups;\n }\n /**\n * Active panel object.\n */\n get activePanel() {\n return this.component.activePanel;\n }\n /**\n * Active group object.\n */\n get activeGroup() {\n return this.component.activeGroup;\n }\n constructor(component) {\n this.component = component;\n }\n /**\n * Focus the component. Will try to focus an active panel if one exists.\n */\n focus() {\n this.component.focus();\n }\n /**\n * Get a panel object given a `string` id. May return `undefined`.\n */\n getPanel(id) {\n return this.component.getGroupPanel(id);\n }\n /**\n * Force resize the component to an exact width and height. Read about auto-resizing before using.\n */\n layout(width, height, force = false) {\n this.component.layout(width, height, force);\n }\n /**\n * Add a panel and return the created object.\n */\n addPanel(options) {\n return this.component.addPanel(options);\n }\n /**\n * Remove a panel given the panel object.\n */\n removePanel(panel) {\n this.component.removePanel(panel);\n }\n /**\n * Add a group and return the created object.\n */\n addGroup(options) {\n return this.component.addGroup(options);\n }\n /**\n * Close all groups and panels.\n */\n closeAllGroups() {\n return this.component.closeAllGroups();\n }\n /**\n * Remove a group and any panels within the group.\n */\n removeGroup(group) {\n this.component.removeGroup(group);\n }\n /**\n * Get a group object given a `string` id. May return undefined.\n */\n getGroup(id) {\n return this.component.getPanel(id);\n }\n /**\n * Add a floating group\n */\n addFloatingGroup(item, options) {\n return this.component.addFloatingGroup(item, options);\n }\n /**\n * Create a component from a serialized object.\n */\n fromJSON(data) {\n this.component.fromJSON(data);\n }\n /**\n * Create a serialized object of the current component.\n */\n toJSON() {\n return this.component.toJSON();\n }\n /**\n * Reset the component back to an empty and default state.\n */\n clear() {\n this.component.clear();\n }\n /**\n * Move the focus progmatically to the next panel or group.\n */\n moveToNext(options) {\n this.component.moveToNext(options);\n }\n /**\n * Move the focus progmatically to the previous panel or group.\n */\n moveToPrevious(options) {\n this.component.moveToPrevious(options);\n }\n maximizeGroup(panel) {\n this.component.maximizeGroup(panel.group);\n }\n hasMaximizedGroup() {\n return this.component.hasMaximizedGroup();\n }\n exitMaximizedGroup() {\n this.component.exitMaximizedGroup();\n }\n get onDidMaximizedGroupChange() {\n return this.component.onDidMaximizedGroupChange;\n }\n /**\n * Add a popout group in a new Window\n */\n addPopoutGroup(item, options) {\n return this.component.addPopoutGroup(item, options);\n }\n updateOptions(options) {\n this.component.updateOptions(options);\n }\n /**\n * Release resources and teardown component. Do not call when using framework versions of dockview.\n */\n dispose() {\n this.component.dispose();\n }\n}\n","import { disableIframePointEvents } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nexport class DragHandler extends CompositeDisposable {\n constructor(el, disabled) {\n super();\n this.el = el;\n this.disabled = disabled;\n this.dataDisposable = new MutableDisposable();\n this.pointerEventsDisposable = new MutableDisposable();\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this.addDisposables(this._onDragStart, this.dataDisposable, this.pointerEventsDisposable);\n this.configure();\n }\n setDisabled(disabled) {\n this.disabled = disabled;\n }\n isCancelled(_event) {\n return false;\n }\n configure() {\n this.addDisposables(this._onDragStart, addDisposableListener(this.el, 'dragstart', (event) => {\n if (event.defaultPrevented || this.isCancelled(event) || this.disabled) {\n event.preventDefault();\n return;\n }\n const iframes = disableIframePointEvents();\n this.pointerEventsDisposable.value = {\n dispose: () => {\n iframes.release();\n },\n };\n this.el.classList.add('dv-dragged');\n setTimeout(() => this.el.classList.remove('dv-dragged'), 0);\n this.dataDisposable.value = this.getData(event);\n this._onDragStart.fire(event);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n const hasData = event.dataTransfer.items.length > 0;\n if (!hasData) {\n /**\n * Although this is not used by dockview many third party dnd libraries will check\n * dataTransfer.types to determine valid drag events.\n *\n * For example: in react-dnd if dataTransfer.types is not set then the dragStart event will be cancelled\n * through .preventDefault(). Since this is applied globally to all drag events this would break dockviews\n * dnd logic. You can see the code at\n P * https://github.com/react-dnd/react-dnd/blob/main/packages/backend-html5/src/HTML5BackendImpl.ts#L542\n */\n event.dataTransfer.setData('text/plain', '');\n }\n }\n }), addDisposableListener(this.el, 'dragend', () => {\n this.pointerEventsDisposable.dispose();\n setTimeout(() => {\n this.dataDisposable.dispose(); // allow the data to be read by other handlers before disposing\n }, 0);\n }));\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nexport class DragAndDropObserver extends CompositeDisposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n this.target = null;\n this.registerListeners();\n }\n onDragEnter(e) {\n this.target = e.target;\n this.callbacks.onDragEnter(e);\n }\n onDragOver(e) {\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n if (this.callbacks.onDragOver) {\n this.callbacks.onDragOver(e);\n }\n }\n onDragLeave(e) {\n if (this.target === e.target) {\n this.target = null;\n this.callbacks.onDragLeave(e);\n }\n }\n onDragEnd(e) {\n this.target = null;\n this.callbacks.onDragEnd(e);\n }\n onDrop(e) {\n this.callbacks.onDrop(e);\n }\n registerListeners() {\n this.addDisposables(addDisposableListener(this.element, 'dragenter', (e) => {\n this.onDragEnter(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragover', (e) => {\n this.onDragOver(e);\n }, true));\n this.addDisposables(addDisposableListener(this.element, 'dragleave', (e) => {\n this.onDragLeave(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'dragend', (e) => {\n this.onDragEnd(e);\n }));\n this.addDisposables(addDisposableListener(this.element, 'drop', (e) => {\n this.onDrop(e);\n }));\n }\n}\n","import { toggleClass } from '../dom';\nimport { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { DragAndDropObserver } from './dnd';\nimport { clamp } from '../math';\nfunction setGPUOptimizedBounds(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Use traditional positioning but maintain GPU layer\n element.style.top = topPx;\n element.style.left = leftPx;\n element.style.width = widthPx;\n element.style.height = heightPx;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction setGPUOptimizedBoundsFromStrings(element, bounds) {\n const { top, left, width, height } = bounds;\n // Use traditional positioning but maintain GPU layer\n element.style.top = top;\n element.style.left = left;\n element.style.width = width;\n element.style.height = height;\n element.style.visibility = 'visible';\n // Ensure GPU layer is maintained\n if (!element.style.transform || element.style.transform === '') {\n element.style.transform = 'translate3d(0, 0, 0)';\n }\n}\nfunction checkBoundsChanged(element, bounds) {\n const { top, left, width, height } = bounds;\n const topPx = `${Math.round(top)}px`;\n const leftPx = `${Math.round(left)}px`;\n const widthPx = `${Math.round(width)}px`;\n const heightPx = `${Math.round(height)}px`;\n // Check if position or size changed (back to traditional method)\n return element.style.top !== topPx ||\n element.style.left !== leftPx ||\n element.style.width !== widthPx ||\n element.style.height !== heightPx;\n}\nexport class WillShowOverlayEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n}\nexport function directionToPosition(direction) {\n switch (direction) {\n case 'above':\n return 'top';\n case 'below':\n return 'bottom';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'within':\n return 'center';\n default:\n throw new Error(`invalid direction '${direction}'`);\n }\n}\nexport function positionToDirection(position) {\n switch (position) {\n case 'top':\n return 'above';\n case 'bottom':\n return 'below';\n case 'left':\n return 'left';\n case 'right':\n return 'right';\n case 'center':\n return 'within';\n default:\n throw new Error(`invalid position '${position}'`);\n }\n}\nconst DEFAULT_ACTIVATION_SIZE = {\n value: 20,\n type: 'percentage',\n};\nconst DEFAULT_SIZE = {\n value: 50,\n type: 'percentage',\n};\nconst SMALL_WIDTH_BOUNDARY = 100;\nconst SMALL_HEIGHT_BOUNDARY = 100;\nexport class Droptarget extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n get state() {\n return this._state;\n }\n constructor(element, options) {\n super();\n this.element = element;\n this.options = options;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._disabled = false;\n // use a set to take advantage of #.has\n this._acceptedTargetZonesSet = new Set(this.options.acceptedTargetZones);\n this.dnd = new DragAndDropObserver(this.element, {\n onDragEnter: () => {\n var _a, _b, _c;\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.getElements();\n },\n onDragOver: (e) => {\n var _a, _b, _c, _d, _e, _f, _g;\n Droptarget.ACTUAL_TARGET = this;\n const overrideTarget = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this._acceptedTargetZonesSet.size === 0) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const target = (_e = (_d = (_c = this.options).getOverlayOutline) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : this.element;\n const width = target.offsetWidth;\n const height = target.offsetHeight;\n if (width === 0 || height === 0) {\n return; // avoid div!0\n }\n const rect = e.currentTarget.getBoundingClientRect();\n const x = ((_f = e.clientX) !== null && _f !== void 0 ? _f : 0) - rect.left;\n const y = ((_g = e.clientY) !== null && _g !== void 0 ? _g : 0) - rect.top;\n const quadrant = this.calculateQuadrant(this._acceptedTargetZonesSet, x, y, width, height);\n /**\n * If the event has already been used by another DropTarget instance\n * then don't show a second drop target, only one target should be\n * active at any one time\n */\n if (this.isAlreadyUsed(e) || quadrant === null) {\n // no drop target should be displayed\n this.removeDropTarget();\n return;\n }\n if (!this.options.canDisplayOverlay(e, quadrant)) {\n if (overrideTarget) {\n return;\n }\n this.removeDropTarget();\n return;\n }\n const willShowOverlayEvent = new WillShowOverlayEvent({\n nativeEvent: e,\n position: quadrant,\n });\n /**\n * Provide an opportunity to prevent the overlay appearing and in turn\n * any dnd behaviours\n */\n this._onWillShowOverlay.fire(willShowOverlayEvent);\n if (willShowOverlayEvent.defaultPrevented) {\n this.removeDropTarget();\n return;\n }\n this.markAsUsed(e);\n if (overrideTarget) {\n //\n }\n else if (!this.targetElement) {\n this.targetElement = document.createElement('div');\n this.targetElement.className = 'dv-drop-target-dropzone';\n this.overlayElement = document.createElement('div');\n this.overlayElement.className = 'dv-drop-target-selection';\n this._state = 'center';\n this.targetElement.appendChild(this.overlayElement);\n target.classList.add('dv-drop-target');\n target.append(this.targetElement);\n // this.overlayElement.style.opacity = '0';\n // requestAnimationFrame(() => {\n // if (this.overlayElement) {\n // this.overlayElement.style.opacity = '';\n // }\n // });\n }\n this.toggleClasses(quadrant, width, height);\n this._state = quadrant;\n },\n onDragLeave: () => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target) {\n return;\n }\n this.removeDropTarget();\n },\n onDragEnd: (e) => {\n var _a, _b;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (target && Droptarget.ACTUAL_TARGET === this) {\n if (this._state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({\n position: this._state,\n nativeEvent: e,\n });\n }\n }\n this.removeDropTarget();\n target === null || target === void 0 ? void 0 : target.clear();\n },\n onDrop: (e) => {\n var _a, _b, _c;\n e.preventDefault();\n const state = this._state;\n this.removeDropTarget();\n (_c = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a)) === null || _c === void 0 ? void 0 : _c.clear();\n if (state) {\n // only stop the propagation of the event if we are dealing with it\n // which is only when the target has state\n e.stopPropagation();\n this._onDrop.fire({ position: state, nativeEvent: e });\n }\n },\n });\n this.addDisposables(this._onDrop, this._onWillShowOverlay, this.dnd);\n }\n setTargetZones(acceptedTargetZones) {\n this._acceptedTargetZonesSet = new Set(acceptedTargetZones);\n }\n setOverlayModel(model) {\n this.options.overlayModel = model;\n }\n dispose() {\n this.removeDropTarget();\n super.dispose();\n }\n /**\n * Add a property to the event object for other potential listeners to check\n */\n markAsUsed(event) {\n event[Droptarget.USED_EVENT_ID] = true;\n }\n /**\n * Check is the event has already been used by another instance of DropTarget\n */\n isAlreadyUsed(event) {\n const value = event[Droptarget.USED_EVENT_ID];\n return typeof value === 'boolean' && value;\n }\n toggleClasses(quadrant, width, height) {\n var _a, _b, _c, _d, _e, _f, _g;\n const target = (_b = (_a = this.options).getOverrideTarget) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (!target && !this.overlayElement) {\n return;\n }\n const isSmallX = width < SMALL_WIDTH_BOUNDARY;\n const isSmallY = height < SMALL_HEIGHT_BOUNDARY;\n const isLeft = quadrant === 'left';\n const isRight = quadrant === 'right';\n const isTop = quadrant === 'top';\n const isBottom = quadrant === 'bottom';\n const rightClass = !isSmallX && isRight;\n const leftClass = !isSmallX && isLeft;\n const topClass = !isSmallY && isTop;\n const bottomClass = !isSmallY && isBottom;\n let size = 1;\n const sizeOptions = (_d = (_c = this.options.overlayModel) === null || _c === void 0 ? void 0 : _c.size) !== null && _d !== void 0 ? _d : DEFAULT_SIZE;\n if (sizeOptions.type === 'percentage') {\n size = clamp(sizeOptions.value, 0, 100) / 100;\n }\n else {\n if (rightClass || leftClass) {\n size = clamp(0, sizeOptions.value, width) / width;\n }\n if (topClass || bottomClass) {\n size = clamp(0, sizeOptions.value, height) / height;\n }\n }\n if (target) {\n const outlineEl = (_g = (_f = (_e = this.options).getOverlayOutline) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : this.element;\n const elBox = outlineEl.getBoundingClientRect();\n const ta = target.getElements(undefined, outlineEl);\n const el = ta.root;\n const overlay = ta.overlay;\n const bigbox = el.getBoundingClientRect();\n const rootTop = elBox.top - bigbox.top;\n const rootLeft = elBox.left - bigbox.left;\n const box = {\n top: rootTop,\n left: rootLeft,\n width: width,\n height: height,\n };\n if (rightClass) {\n box.left = rootLeft + width * (1 - size);\n box.width = width * size;\n }\n else if (leftClass) {\n box.width = width * size;\n }\n else if (topClass) {\n box.height = height * size;\n }\n else if (bottomClass) {\n box.top = rootTop + height * (1 - size);\n box.height = height * size;\n }\n if (isSmallX && isLeft) {\n box.width = 4;\n }\n if (isSmallX && isRight) {\n box.left = rootLeft + width - 4;\n box.width = 4;\n }\n // Use GPU-optimized bounds checking and setting\n if (!checkBoundsChanged(overlay, box)) {\n return;\n }\n setGPUOptimizedBounds(overlay, box);\n overlay.className = `dv-drop-target-anchor${this.options.className ? ` ${this.options.className}` : ''}`;\n toggleClass(overlay, 'dv-drop-target-left', isLeft);\n toggleClass(overlay, 'dv-drop-target-right', isRight);\n toggleClass(overlay, 'dv-drop-target-top', isTop);\n toggleClass(overlay, 'dv-drop-target-bottom', isBottom);\n toggleClass(overlay, 'dv-drop-target-center', quadrant === 'center');\n if (ta.changed) {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', true);\n setTimeout(() => {\n toggleClass(overlay, 'dv-drop-target-anchor-container-changed', false);\n }, 10);\n }\n return;\n }\n if (!this.overlayElement) {\n return;\n }\n const box = { top: '0px', left: '0px', width: '100%', height: '100%' };\n /**\n * You can also achieve the overlay placement using the transform CSS property\n * to translate and scale the element however this has the undesired effect of\n * 'skewing' the element. Comment left here for anybody that ever revisits this.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/transform\n *\n * right\n * translateX(${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * left\n * translateX(-${100 * (1 - size) / 2}%) scaleX(${scale})\n *\n * top\n * translateY(-${100 * (1 - size) / 2}%) scaleY(${scale})\n *\n * bottom\n * translateY(${100 * (1 - size) / 2}%) scaleY(${scale})\n */\n if (rightClass) {\n box.left = `${100 * (1 - size)}%`;\n box.width = `${100 * size}%`;\n }\n else if (leftClass) {\n box.width = `${100 * size}%`;\n }\n else if (topClass) {\n box.height = `${100 * size}%`;\n }\n else if (bottomClass) {\n box.top = `${100 * (1 - size)}%`;\n box.height = `${100 * size}%`;\n }\n setGPUOptimizedBoundsFromStrings(this.overlayElement, box);\n toggleClass(this.overlayElement, 'dv-drop-target-small-vertical', isSmallY);\n toggleClass(this.overlayElement, 'dv-drop-target-small-horizontal', isSmallX);\n toggleClass(this.overlayElement, 'dv-drop-target-left', isLeft);\n toggleClass(this.overlayElement, 'dv-drop-target-right', isRight);\n toggleClass(this.overlayElement, 'dv-drop-target-top', isTop);\n toggleClass(this.overlayElement, 'dv-drop-target-bottom', isBottom);\n toggleClass(this.overlayElement, 'dv-drop-target-center', quadrant === 'center');\n }\n calculateQuadrant(overlayType, x, y, width, height) {\n var _a, _b;\n const activationSizeOptions = (_b = (_a = this.options.overlayModel) === null || _a === void 0 ? void 0 : _a.activationSize) !== null && _b !== void 0 ? _b : DEFAULT_ACTIVATION_SIZE;\n const isPercentage = activationSizeOptions.type === 'percentage';\n if (isPercentage) {\n return calculateQuadrantAsPercentage(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n return calculateQuadrantAsPixels(overlayType, x, y, width, height, activationSizeOptions.value);\n }\n removeDropTarget() {\n var _a;\n if (this.targetElement) {\n this._state = undefined;\n (_a = this.targetElement.parentElement) === null || _a === void 0 ? void 0 : _a.classList.remove('dv-drop-target');\n this.targetElement.remove();\n this.targetElement = undefined;\n this.overlayElement = undefined;\n }\n }\n}\nDroptarget.USED_EVENT_ID = '__dockview_droptarget_event_is_used__';\nexport function calculateQuadrantAsPercentage(overlayType, x, y, width, height, threshold) {\n const xp = (100 * x) / width;\n const yp = (100 * y) / height;\n if (overlayType.has('left') && xp < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && xp > 100 - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && yp < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && yp > 100 - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\nexport function calculateQuadrantAsPixels(overlayType, x, y, width, height, threshold) {\n if (overlayType.has('left') && x < threshold) {\n return 'left';\n }\n if (overlayType.has('right') && x > width - threshold) {\n return 'right';\n }\n if (overlayType.has('top') && y < threshold) {\n return 'top';\n }\n if (overlayType.has('bottom') && y > height - threshold) {\n return 'bottom';\n }\n if (!overlayType.has('center')) {\n return null;\n }\n return 'center';\n}\n","import { AcceptableEvent } from '../events';\nexport const PROPERTY_KEYS_PANEVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n disableDnd: undefined,\n className: undefined,\n };\n return Object.keys(properties);\n})();\nexport class PaneviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, position, getData, panel) {\n super();\n this.nativeEvent = nativeEvent;\n this.position = position;\n this.getData = getData;\n this.panel = panel;\n }\n}\n","import { DockviewEvent, Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class WillFocusEvent extends DockviewEvent {\n constructor() {\n super();\n }\n}\n/**\n * A core api implementation that should be used across all panel-like objects\n */\nexport class PanelApiImpl extends CompositeDisposable {\n get isFocused() {\n return this._isFocused;\n }\n get isActive() {\n return this._isActive;\n }\n get isVisible() {\n return this._isVisible;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n constructor(id, component) {\n super();\n this.id = id;\n this.component = component;\n this._isFocused = false;\n this._isActive = false;\n this._isVisible = true;\n this._width = 0;\n this._height = 0;\n this._parameters = {};\n this.panelUpdatesDisposable = new MutableDisposable();\n this._onDidDimensionChange = new Emitter();\n this.onDidDimensionsChange = this._onDidDimensionChange.event;\n this._onDidChangeFocus = new Emitter();\n this.onDidFocusChange = this._onDidChangeFocus.event;\n //\n this._onWillFocus = new Emitter();\n this.onWillFocus = this._onWillFocus.event;\n //\n this._onDidVisibilityChange = new Emitter();\n this.onDidVisibilityChange = this._onDidVisibilityChange.event;\n this._onWillVisibilityChange = new Emitter();\n this.onWillVisibilityChange = this._onWillVisibilityChange.event;\n this._onDidActiveChange = new Emitter();\n this.onDidActiveChange = this._onDidActiveChange.event;\n this._onActiveChange = new Emitter();\n this.onActiveChange = this._onActiveChange.event;\n this._onDidParametersChange = new Emitter();\n this.onDidParametersChange = this._onDidParametersChange.event;\n this.addDisposables(this.onDidFocusChange((event) => {\n this._isFocused = event.isFocused;\n }), this.onDidActiveChange((event) => {\n this._isActive = event.isActive;\n }), this.onDidVisibilityChange((event) => {\n this._isVisible = event.isVisible;\n }), this.onDidDimensionsChange((event) => {\n this._width = event.width;\n this._height = event.height;\n }), this.panelUpdatesDisposable, this._onDidDimensionChange, this._onDidChangeFocus, this._onDidVisibilityChange, this._onDidActiveChange, this._onWillFocus, this._onActiveChange, this._onWillFocus, this._onWillVisibilityChange, this._onDidParametersChange);\n }\n getParameters() {\n return this._parameters;\n }\n initialize(panel) {\n this.panelUpdatesDisposable.value = this._onDidParametersChange.event((parameters) => {\n this._parameters = parameters;\n panel.update({\n params: parameters,\n });\n });\n }\n setVisible(isVisible) {\n this._onWillVisibilityChange.fire({ isVisible });\n }\n setActive() {\n this._onActiveChange.fire();\n }\n updateParameters(parameters) {\n this._onDidParametersChange.fire(parameters);\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class SplitviewPanelApiImpl extends PanelApiImpl {\n //\n constructor(id, component) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n //\n this._onDidConstraintsChange = new Emitter({\n replay: true,\n });\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n //\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { Emitter } from '../events';\nimport { SplitviewPanelApiImpl } from './splitviewPanelApi';\nexport class PaneviewPanelApiImpl extends SplitviewPanelApiImpl {\n set pane(pane) {\n this._pane = pane;\n }\n constructor(id, component) {\n super(id, component);\n this._onDidExpansionChange = new Emitter({\n replay: true,\n });\n this.onDidExpansionChange = this._onDidExpansionChange.event;\n this._onMouseEnter = new Emitter({});\n this.onMouseEnter = this._onMouseEnter.event;\n this._onMouseLeave = new Emitter({});\n this.onMouseLeave = this._onMouseLeave.event;\n this.addDisposables(this._onDidExpansionChange, this._onMouseEnter, this._onMouseLeave);\n }\n setExpanded(isExpanded) {\n var _a;\n (_a = this._pane) === null || _a === void 0 ? void 0 : _a.setExpanded(isExpanded);\n }\n get isExpanded() {\n var _a;\n return !!((_a = this._pane) === null || _a === void 0 ? void 0 : _a.isExpanded());\n }\n}\n","import { trackFocus } from '../dom';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class BasePanelView extends CompositeDisposable {\n get element() {\n return this._element;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get params() {\n var _a;\n return (_a = this._params) === null || _a === void 0 ? void 0 : _a.params;\n }\n constructor(id, component, api) {\n super();\n this.id = id;\n this.component = component;\n this.api = api;\n this._height = 0;\n this._width = 0;\n this._element = document.createElement('div');\n this._element.tabIndex = -1;\n this._element.style.outline = 'none';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n this._element.style.overflow = 'hidden';\n const focusTracker = trackFocus(this._element);\n this.addDisposables(this.api, focusTracker.onDidFocus(() => {\n this.api._onDidChangeFocus.fire({ isFocused: true });\n }), focusTracker.onDidBlur(() => {\n this.api._onDidChangeFocus.fire({ isFocused: false });\n }), focusTracker);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n this._element.focus();\n }\n layout(width, height) {\n this._width = width;\n this._height = height;\n this.api._onDidDimensionChange.fire({ width, height });\n if (this.part) {\n if (this._params) {\n this.part.update(this._params.params);\n }\n }\n }\n init(parameters) {\n this._params = parameters;\n this.part = this.getComponent();\n }\n update(event) {\n var _a, _b;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, this._params), { params: Object.assign(Object.assign({}, (_a = this._params) === null || _a === void 0 ? void 0 : _a.params), event.params) });\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params.params[key];\n }\n }\n // update the view with the updated props\n (_b = this.part) === null || _b === void 0 ? void 0 : _b.update({ params: this._params.params });\n }\n toJSON() {\n var _a, _b;\n const params = (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {};\n return {\n id: this.id,\n component: this.component,\n params: Object.keys(params).length > 0 ? params : undefined,\n };\n }\n dispose() {\n var _a;\n this.api.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n}\n","import { PaneviewPanelApiImpl } from '../api/paneviewPanelApi';\nimport { addClasses, removeClasses } from '../dom';\nimport { addDisposableListener, Emitter } from '../events';\nimport { BasePanelView, } from '../gridview/basePanelView';\nimport { Orientation } from '../splitview/splitview';\nexport class PaneviewPanel extends BasePanelView {\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const minimumBodySize = expanded ? this._minimumBodySize : 0;\n return headerSize + minimumBodySize;\n }\n get maximumSize() {\n const headerSize = this.headerSize;\n const expanded = this.isExpanded();\n const maximumBodySize = expanded ? this._maximumBodySize : 0;\n return headerSize + maximumBodySize;\n }\n get size() {\n return this._size;\n }\n get orthogonalSize() {\n return this._orthogonalSize;\n }\n set orthogonalSize(size) {\n this._orthogonalSize = size;\n }\n get minimumBodySize() {\n return this._minimumBodySize;\n }\n set minimumBodySize(value) {\n this._minimumBodySize = typeof value === 'number' ? value : 0;\n }\n get maximumBodySize() {\n return this._maximumBodySize;\n }\n set maximumBodySize(value) {\n this._maximumBodySize =\n typeof value === 'number' ? value : Number.POSITIVE_INFINITY;\n }\n get headerVisible() {\n return this._headerVisible;\n }\n set headerVisible(value) {\n this._headerVisible = value;\n this.header.style.display = value ? '' : 'none';\n }\n constructor(options) {\n super(options.id, options.component, new PaneviewPanelApiImpl(options.id, options.component));\n this._onDidChangeExpansionState = new Emitter({ replay: true });\n this.onDidChangeExpansionState = this._onDidChangeExpansionState.event;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._orthogonalSize = 0;\n this._size = 0;\n this._isExpanded = false;\n this.api.pane = this; // TODO cannot use 'this' before 'super'\n this.api.initialize(this);\n this.headerSize = options.headerSize;\n this.headerComponent = options.headerComponent;\n this._minimumBodySize = options.minimumBodySize;\n this._maximumBodySize = options.maximumBodySize;\n this._isExpanded = options.isExpanded;\n this._headerVisible = options.isHeaderVisible;\n this._onDidChangeExpansionState.fire(this.isExpanded()); // initialize value\n this._orientation = options.orientation;\n this.element.classList.add('dv-pane');\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }), addDisposableListener(this.element, 'mouseenter', (ev) => {\n this.api._onMouseEnter.fire(ev);\n }), addDisposableListener(this.element, 'mouseleave', (ev) => {\n this.api._onMouseLeave.fire(ev);\n }));\n this.addDisposables(this._onDidChangeExpansionState, this.onDidChangeExpansionState((isPanelExpanded) => {\n this.api._onDidExpansionChange.fire({\n isExpanded: isPanelExpanded,\n });\n }), this.api.onDidFocusChange((e) => {\n if (!this.header) {\n return;\n }\n if (e.isFocused) {\n addClasses(this.header, 'focused');\n }\n else {\n removeClasses(this.header, 'focused');\n }\n }));\n this.renderOnce();\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n isExpanded() {\n return this._isExpanded;\n }\n setExpanded(expanded) {\n if (this._isExpanded === expanded) {\n return;\n }\n this._isExpanded = expanded;\n if (expanded) {\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n if (this.body) {\n this.element.appendChild(this.body);\n }\n }\n else {\n this.animationTimer = setTimeout(() => {\n var _a;\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.remove();\n }, 200);\n }\n this._onDidChange.fire(expanded ? { size: this.width } : {});\n this._onDidChangeExpansionState.fire(expanded);\n }\n layout(size, orthogonalSize) {\n this._size = size;\n this._orthogonalSize = orthogonalSize;\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n var _a, _b;\n super.init(parameters);\n if (typeof parameters.minimumBodySize === 'number') {\n this.minimumBodySize = parameters.minimumBodySize;\n }\n if (typeof parameters.maximumBodySize === 'number') {\n this.maximumBodySize = parameters.maximumBodySize;\n }\n this.bodyPart = this.getBodyComponent();\n this.headerPart = this.getHeaderComponent();\n this.bodyPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n this.headerPart.init(Object.assign(Object.assign({}, parameters), { api: this.api }));\n (_a = this.body) === null || _a === void 0 ? void 0 : _a.append(this.bodyPart.element);\n (_b = this.header) === null || _b === void 0 ? void 0 : _b.append(this.headerPart.element);\n if (typeof parameters.isExpanded === 'boolean') {\n this.setExpanded(parameters.isExpanded);\n }\n }\n toJSON() {\n const params = this._params;\n return Object.assign(Object.assign({}, super.toJSON()), { headerComponent: this.headerComponent, title: params.title });\n }\n renderOnce() {\n this.header = document.createElement('div');\n this.header.tabIndex = 0;\n this.header.className = 'dv-pane-header';\n this.header.style.height = `${this.headerSize}px`;\n this.header.style.lineHeight = `${this.headerSize}px`;\n this.header.style.minHeight = `${this.headerSize}px`;\n this.header.style.maxHeight = `${this.headerSize}px`;\n this.element.appendChild(this.header);\n this.body = document.createElement('div');\n this.body.className = 'dv-pane-body';\n this.element.appendChild(this.body);\n }\n // TODO slightly hacky by-pass of the component to create a body and header component\n getComponent() {\n return {\n update: (params) => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.update({ params });\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.update({ params });\n },\n dispose: () => {\n var _a, _b;\n (_a = this.bodyPart) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this.headerPart) === null || _b === void 0 ? void 0 : _b.dispose();\n },\n };\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { DragHandler } from '../dnd/abstractDragHandler';\nimport { getPaneData, LocalSelectionTransfer, PaneTransfer, } from '../dnd/dataTransfer';\nimport { Droptarget } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { PaneviewUnhandledDragOverEvent, } from './options';\nimport { PaneviewPanel, } from './paneviewPanel';\nexport class DraggablePaneviewPanel extends PaneviewPanel {\n constructor(options) {\n super({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n isHeaderVisible: true,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.accessor = options.accessor;\n this.addDisposables(this._onDidDrop, this._onUnhandledDragOverEvent);\n if (!options.disableDnd) {\n this.initDragFeatures();\n }\n }\n initDragFeatures() {\n if (!this.header) {\n return;\n }\n const id = this.id;\n const accessorId = this.accessor.id;\n this.header.draggable = true;\n this.handler = new (class PaneDragHandler extends DragHandler {\n getData() {\n LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);\n return {\n dispose: () => {\n LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);\n },\n };\n }\n })(this.header);\n this.target = new Droptarget(this.element, {\n acceptedTargetZones: ['top', 'bottom'],\n overlayModel: {\n activationSize: { type: 'percentage', value: 50 },\n },\n canDisplayOverlay: (event, position) => {\n const data = getPaneData();\n if (data) {\n if (data.paneId !== this.id &&\n data.viewId === this.accessor.id) {\n return true;\n }\n }\n const firedEvent = new PaneviewUnhandledDragOverEvent(event, position, getPaneData, this);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n });\n this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {\n this.onDrop(event);\n }));\n }\n onDrop(event) {\n const data = getPaneData();\n if (!data || data.viewId !== this.accessor.id) {\n // if there is no local drag event for this panel\n // or if the drag event was creating by another Paneview instance\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, api: new PaneviewApi(this.accessor), getData: getPaneData }));\n return;\n }\n const containerApi = this._params\n .containerApi;\n const panelId = data.paneId;\n const existingPanel = containerApi.getPanel(panelId);\n if (!existingPanel) {\n // if the panel doesn't exist\n this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData, api: new PaneviewApi(this.accessor) }));\n return;\n }\n const allPanels = containerApi.panels;\n const fromIndex = allPanels.indexOf(existingPanel);\n let toIndex = containerApi.panels.indexOf(this);\n if (event.position === 'left' || event.position === 'top') {\n toIndex = Math.max(0, toIndex - 1);\n }\n if (event.position === 'right' || event.position === 'bottom') {\n if (fromIndex > toIndex) {\n toIndex++;\n }\n toIndex = Math.min(allPanels.length - 1, toIndex);\n }\n containerApi.movePanel(fromIndex, toIndex);\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../../../lifecycle';\nimport { Emitter } from '../../../events';\nimport { trackFocus } from '../../../dom';\nimport { Droptarget } from '../../../dnd/droptarget';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nexport class ContentContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this.disposable = new MutableDisposable();\n this._onDidFocus = new Emitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new Emitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-content-container';\n this._element.tabIndex = -1;\n this.addDisposables(this._onDidFocus, this._onDidBlur);\n const target = group.dropTargetContainer;\n this.dropTarget = new Droptarget(this.element, {\n getOverlayOutline: () => {\n var _a;\n return ((_a = accessor.options.theme) === null || _a === void 0 ? void 0 : _a.dndPanelOverlay) === 'group'\n ? this.element.parentElement\n : null;\n },\n className: 'dv-drop-target-content',\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n canDisplayOverlay: (event, position) => {\n if (this.group.locked === 'no-drop-target' ||\n (this.group.locked && position === 'center')) {\n return false;\n }\n const data = getPanelData();\n if (!data &&\n event.shiftKey &&\n this.group.location.type !== 'floating') {\n return false;\n }\n if (data && data.viewId === this.accessor.id) {\n return true;\n }\n return this.group.canDisplayOverlay(event, position, 'content');\n },\n getOverrideTarget: target ? () => target.model : undefined,\n });\n this.addDisposables(this.dropTarget);\n }\n show() {\n this.element.style.display = '';\n }\n hide() {\n this.element.style.display = 'none';\n }\n renderPanel(panel, options = { asActive: true }) {\n const doRender = options.asActive ||\n (this.panel && this.group.isPanelActive(this.panel));\n if (this.panel &&\n this.panel.view.content.element.parentElement === this._element) {\n /**\n * If the currently attached panel is mounted directly to the content then remove it\n */\n this._element.removeChild(this.panel.view.content.element);\n }\n this.panel = panel;\n let container;\n switch (panel.api.renderer) {\n case 'onlyWhenVisible':\n this.group.renderContainer.detatch(panel);\n if (this.panel) {\n if (doRender) {\n this._element.appendChild(this.panel.view.content.element);\n }\n }\n container = this._element;\n break;\n case 'always':\n if (panel.view.content.element.parentElement === this._element) {\n this._element.removeChild(panel.view.content.element);\n }\n container = this.group.renderContainer.attach({\n panel,\n referenceContainer: this,\n });\n break;\n default:\n throw new Error(`dockview: invalid renderer type '${panel.api.renderer}'`);\n }\n if (doRender) {\n const focusTracker = trackFocus(container);\n const disposable = new CompositeDisposable();\n disposable.addDisposables(focusTracker, focusTracker.onDidFocus(() => this._onDidFocus.fire()), focusTracker.onDidBlur(() => this._onDidBlur.fire()));\n this.disposable.value = disposable;\n }\n }\n openPanel(panel) {\n if (this.panel === panel) {\n return;\n }\n this.renderPanel(panel);\n }\n layout(_width, _height) {\n // noop\n }\n closePanel() {\n var _a;\n if (this.panel) {\n if (this.panel.api.renderer === 'onlyWhenVisible') {\n (_a = this.panel.view.content.element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.panel.view.content.element);\n }\n }\n this.panel = undefined;\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { addClasses, removeClasses } from '../dom';\nexport function addGhostImage(dataTransfer, ghostElement, options) {\n var _a, _b;\n // class dockview provides to force ghost image to be drawn on a different layer and prevent weird rendering issues\n addClasses(ghostElement, 'dv-dragged');\n // move the element off-screen initially otherwise it may in some cases be rendered at (0,0) momentarily\n ghostElement.style.top = '-9999px';\n document.body.appendChild(ghostElement);\n dataTransfer.setDragImage(ghostElement, (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0, (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0);\n setTimeout(() => {\n removeClasses(ghostElement, 'dv-dragged');\n ghostElement.remove();\n }, 0);\n}\n","import { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { getPanelData, LocalSelectionTransfer, PanelTransfer, } from '../../../dnd/dataTransfer';\nimport { toggleClass } from '../../../dom';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { DragHandler } from '../../../dnd/abstractDragHandler';\nimport { addGhostImage } from '../../../dnd/ghost';\nclass TabDragHandler extends DragHandler {\n constructor(element, accessor, group, panel, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panel = panel;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n }\n getData(event) {\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, this.panel.id)], PanelTransfer.prototype);\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\nexport class Tab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(panel, accessor, group) {\n super();\n this.panel = panel;\n this.accessor = accessor;\n this.group = group;\n this.content = undefined;\n this._onPointDown = new Emitter();\n this.onPointerDown = this._onPointDown.event;\n this._onDropped = new Emitter();\n this.onDrop = this._onDropped.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tab';\n this._element.tabIndex = 0;\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this.element, 'dv-inactive-tab', true);\n this.dragHandler = new TabDragHandler(this._element, this.accessor, this.group, this.panel, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['left', 'right'],\n overlayModel: { activationSize: { value: 50, type: 'percentage' } },\n canDisplayOverlay: (event, position) => {\n if (this.group.locked) {\n return false;\n }\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return this.group.model.canDisplayOverlay(event, position, 'tab');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this._onPointDown, this._onDropped, this._onDragStart, this.dragHandler.onDragStart((event) => {\n if (event.dataTransfer) {\n const style = getComputedStyle(this.element);\n const newNode = this.element.cloneNode(true);\n Array.from(style).forEach((key) => newNode.style.setProperty(key, style.getPropertyValue(key), style.getPropertyPriority(key)));\n newNode.style.position = 'absolute';\n addGhostImage(event.dataTransfer, newNode, {\n y: -10,\n x: 30,\n });\n }\n this._onDragStart.fire(event);\n }), this.dragHandler, addDisposableListener(this._element, 'pointerdown', (event) => {\n this._onPointDown.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDropped.fire(event);\n }), this.dropTarget);\n }\n setActive(isActive) {\n toggleClass(this.element, 'dv-active-tab', isActive);\n toggleClass(this.element, 'dv-inactive-tab', !isActive);\n }\n setContent(part) {\n if (this.content) {\n this._element.removeChild(this.content.element);\n }\n this.content = part;\n this._element.appendChild(this.content.element);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n this.dragHandler.setDisabled(!!this.accessor.options.disableDnd);\n }\n dispose() {\n super.dispose();\n }\n}\n","export class WillShowOverlayLocationEvent {\n get kind() {\n return this.options.kind;\n }\n get nativeEvent() {\n return this.event.nativeEvent;\n }\n get position() {\n return this.event.position;\n }\n get defaultPrevented() {\n return this.event.defaultPrevented;\n }\n get panel() {\n return this.options.panel;\n }\n get api() {\n return this.options.api;\n }\n get group() {\n return this.options.group;\n }\n preventDefault() {\n this.event.preventDefault();\n }\n getData() {\n return this.options.getData();\n }\n constructor(event, options) {\n this.event = event;\n this.options = options;\n }\n}\n","import { quasiPreventDefault } from '../dom';\nimport { addDisposableListener } from '../events';\nimport { DragHandler } from './abstractDragHandler';\nimport { LocalSelectionTransfer, PanelTransfer } from './dataTransfer';\nimport { addGhostImage } from './ghost';\nexport class GroupDragHandler extends DragHandler {\n constructor(element, accessor, group, disabled) {\n super(element, disabled);\n this.accessor = accessor;\n this.group = group;\n this.panelTransfer = LocalSelectionTransfer.getInstance();\n this.addDisposables(addDisposableListener(element, 'pointerdown', (e) => {\n if (e.shiftKey) {\n /**\n * You cannot call e.preventDefault() because that will prevent drag events from firing\n * but we also need to stop any group overlay drag events from occuring\n * Use a custom event marker that can be checked by the overlay drag events\n */\n quasiPreventDefault(e);\n }\n }, true));\n }\n isCancelled(_event) {\n if (this.group.api.location.type === 'floating' && !_event.shiftKey) {\n return true;\n }\n return false;\n }\n getData(dragEvent) {\n const dataTransfer = dragEvent.dataTransfer;\n this.panelTransfer.setData([new PanelTransfer(this.accessor.id, this.group.id, null)], PanelTransfer.prototype);\n const style = window.getComputedStyle(this.el);\n const bgColor = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-background-color');\n const color = style.getPropertyValue('--dv-activegroup-visiblepanel-tab-color');\n if (dataTransfer) {\n const ghostElement = document.createElement('div');\n ghostElement.style.backgroundColor = bgColor;\n ghostElement.style.color = color;\n ghostElement.style.padding = '2px 8px';\n ghostElement.style.height = '24px';\n ghostElement.style.fontSize = '11px';\n ghostElement.style.lineHeight = '20px';\n ghostElement.style.borderRadius = '12px';\n ghostElement.style.position = 'absolute';\n ghostElement.style.pointerEvents = 'none';\n ghostElement.style.top = '-9999px';\n ghostElement.textContent = `Multiple Panels (${this.group.size})`;\n addGhostImage(dataTransfer, ghostElement, { y: -10, x: 30 });\n }\n return {\n dispose: () => {\n this.panelTransfer.clearData(PanelTransfer.prototype);\n },\n };\n }\n}\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { Droptarget, } from '../../../dnd/droptarget';\nimport { GroupDragHandler } from '../../../dnd/groupDragHandler';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable } from '../../../lifecycle';\nimport { toggleClass } from '../../../dom';\nexport class VoidContainer extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onDragStart = new Emitter();\n this.onDragStart = this._onDragStart.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-void-container';\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.addDisposables(this._onDrop, this._onDragStart, addDisposableListener(this._element, 'pointerdown', () => {\n this.accessor.doSetGroupActive(this.group);\n }));\n this.handler = new GroupDragHandler(this._element, accessor, group, !!this.accessor.options.disableDnd);\n this.dropTarget = new Droptarget(this._element, {\n acceptedTargetZones: ['center'],\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data && this.accessor.id === data.viewId) {\n return true;\n }\n return group.model.canDisplayOverlay(event, position, 'header_space');\n },\n getOverrideTarget: () => { var _a; return (_a = group.model.dropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.onWillShowOverlay = this.dropTarget.onWillShowOverlay;\n this.addDisposables(this.handler, this.handler.onDragStart((event) => {\n this._onDragStart.fire(event);\n }), this.dropTarget.onDrop((event) => {\n this._onDrop.fire(event);\n }), this.dropTarget);\n }\n updateDragAndDropState() {\n this._element.draggable = !this.accessor.options.disableDnd;\n toggleClass(this._element, 'dv-draggable', !this.accessor.options.disableDnd);\n this.handler.setDisabled(!!this.accessor.options.disableDnd);\n }\n}\n","import { toggleClass, watchElementResize } from './dom';\nimport { addDisposableListener } from './events';\nimport { CompositeDisposable } from './lifecycle';\nimport { clamp } from './math';\nexport class Scrollbar extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor(scrollableElement) {\n super();\n this.scrollableElement = scrollableElement;\n this._scrollLeft = 0;\n this._element = document.createElement('div');\n this._element.className = 'dv-scrollable';\n this._horizontalScrollbar = document.createElement('div');\n this._horizontalScrollbar.className = 'dv-scrollbar-horizontal';\n this.element.appendChild(scrollableElement);\n this.element.appendChild(this._horizontalScrollbar);\n this.addDisposables(addDisposableListener(this.element, 'wheel', (event) => {\n this._scrollLeft += event.deltaY * Scrollbar.MouseWheelSpeed;\n this.calculateScrollbarStyles();\n }), addDisposableListener(this._horizontalScrollbar, 'pointerdown', (event) => {\n event.preventDefault();\n toggleClass(this.element, 'dv-scrollable-scrolling', true);\n const originalClientX = event.clientX;\n const originalScrollLeft = this._scrollLeft;\n const onPointerMove = (event) => {\n const deltaX = event.clientX - originalClientX;\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const p = clientWidth / scrollWidth;\n this._scrollLeft = originalScrollLeft + deltaX / p;\n this.calculateScrollbarStyles();\n };\n const onEnd = () => {\n toggleClass(this.element, 'dv-scrollable-scrolling', false);\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onEnd);\n document.removeEventListener('pointercancel', onEnd);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onEnd);\n document.addEventListener('pointercancel', onEnd);\n }), addDisposableListener(this.element, 'scroll', () => {\n this.calculateScrollbarStyles();\n }), addDisposableListener(this.scrollableElement, 'scroll', () => {\n this._scrollLeft = this.scrollableElement.scrollLeft;\n this.calculateScrollbarStyles();\n }), watchElementResize(this.element, () => {\n toggleClass(this.element, 'dv-scrollable-resizing', true);\n if (this._animationTimer) {\n clearTimeout(this._animationTimer);\n }\n this._animationTimer = setTimeout(() => {\n clearTimeout(this._animationTimer);\n toggleClass(this.element, 'dv-scrollable-resizing', false);\n }, 500);\n this.calculateScrollbarStyles();\n }));\n }\n calculateScrollbarStyles() {\n const { clientWidth } = this.element;\n const { scrollWidth } = this.scrollableElement;\n const hasScrollbar = scrollWidth > clientWidth;\n if (hasScrollbar) {\n const px = clientWidth * (clientWidth / scrollWidth);\n this._horizontalScrollbar.style.width = `${px}px`;\n this._scrollLeft = clamp(this._scrollLeft, 0, this.scrollableElement.scrollWidth - clientWidth);\n this.scrollableElement.scrollLeft = this._scrollLeft;\n const percentageComplete = this._scrollLeft / (scrollWidth - clientWidth);\n this._horizontalScrollbar.style.left = `${(clientWidth - px) * percentageComplete}px`;\n }\n else {\n this._horizontalScrollbar.style.width = `0px`;\n this._horizontalScrollbar.style.left = `0px`;\n this._scrollLeft = 0;\n }\n }\n}\nScrollbar.MouseWheelSpeed = 1;\n","import { getPanelData } from '../../../dnd/dataTransfer';\nimport { isChildEntirelyVisibleWithinParent, OverflowObserver, } from '../../../dom';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { Scrollbar } from '../../../scrollbar';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { Tab } from '../tab/tab';\nexport class Tabs extends CompositeDisposable {\n get showTabsOverflowControl() {\n return this._showTabsOverflowControl;\n }\n set showTabsOverflowControl(value) {\n if (this._showTabsOverflowControl == value) {\n return;\n }\n this._showTabsOverflowControl = value;\n if (value) {\n const observer = new OverflowObserver(this._tabsList);\n this._observerDisposable.value = new CompositeDisposable(observer, observer.onDidChange((event) => {\n const hasOverflow = event.hasScrollX || event.hasScrollY;\n this.toggleDropdown({ reset: !hasOverflow });\n }), addDisposableListener(this._tabsList, 'scroll', () => {\n this.toggleDropdown({ reset: false });\n }));\n }\n }\n get element() {\n return this._element;\n }\n get panels() {\n return this._tabs.map((_) => _.value.panel.id);\n }\n get size() {\n return this._tabs.length;\n }\n get tabs() {\n return this._tabs.map((_) => _.value);\n }\n constructor(group, accessor, options) {\n super();\n this.group = group;\n this.accessor = accessor;\n this._observerDisposable = new MutableDisposable();\n this._tabs = [];\n this.selectedIndex = -1;\n this._showTabsOverflowControl = false;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onOverflowTabsChange = new Emitter();\n this.onOverflowTabsChange = this._onOverflowTabsChange.event;\n this._tabsList = document.createElement('div');\n this._tabsList.className = 'dv-tabs-container dv-horizontal';\n this.showTabsOverflowControl = options.showTabsOverflowControl;\n if (accessor.options.scrollbars === 'native') {\n this._element = this._tabsList;\n }\n else {\n const scrollbar = new Scrollbar(this._tabsList);\n this._element = scrollbar.element;\n this.addDisposables(scrollbar);\n }\n this.addDisposables(this._onOverflowTabsChange, this._observerDisposable, this._onWillShowOverlay, this._onDrop, this._onTabDragStart, addDisposableListener(this.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isLeftClick = event.button === 0;\n if (isLeftClick) {\n this.accessor.doSetGroupActive(this.group);\n }\n }), Disposable.from(() => {\n for (const { value, disposable } of this._tabs) {\n disposable.dispose();\n value.dispose();\n }\n this._tabs = [];\n }));\n }\n indexOf(id) {\n return this._tabs.findIndex((tab) => tab.value.panel.id === id);\n }\n isActive(tab) {\n return (this.selectedIndex > -1 &&\n this._tabs[this.selectedIndex].value === tab);\n }\n setActivePanel(panel) {\n let runningWidth = 0;\n for (const tab of this._tabs) {\n const isActivePanel = panel.id === tab.value.panel.id;\n tab.value.setActive(isActivePanel);\n if (isActivePanel) {\n const element = tab.value.element;\n const parentElement = element.parentElement;\n if (runningWidth < parentElement.scrollLeft ||\n runningWidth + element.clientWidth >\n parentElement.scrollLeft + parentElement.clientWidth) {\n parentElement.scrollLeft = runningWidth;\n }\n }\n runningWidth += tab.value.element.clientWidth;\n }\n }\n openPanel(panel, index = this._tabs.length) {\n if (this._tabs.find((tab) => tab.value.panel.id === panel.id)) {\n return;\n }\n const tab = new Tab(panel, this.accessor, this.group);\n tab.setContent(panel.view.tab);\n const disposable = new CompositeDisposable(tab.onDragStart((event) => {\n this._onTabDragStart.fire({ nativeEvent: event, panel });\n }), tab.onPointerDown((event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n const isFloatingWithOnePanel = this.group.api.location.type === 'floating' &&\n this.size === 1;\n if (isFloatingGroupsEnabled &&\n !isFloatingWithOnePanel &&\n event.shiftKey) {\n event.preventDefault();\n const panel = this.accessor.getGroupPanel(tab.panel.id);\n const { top, left } = tab.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(panel, {\n x: left - rootLeft,\n y: top - rootTop,\n inDragMode: true,\n });\n return;\n }\n switch (event.button) {\n case 0: // left click or touch\n if (this.group.activePanel !== panel) {\n this.group.model.openPanel(panel);\n }\n break;\n }\n }), tab.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this._tabs.findIndex((x) => x.value === tab),\n });\n }), tab.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'tab',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }));\n const value = { value: tab, disposable };\n this.addTab(value, index);\n }\n delete(id) {\n const index = this.indexOf(id);\n const tabToRemove = this._tabs.splice(index, 1)[0];\n const { value, disposable } = tabToRemove;\n disposable.dispose();\n value.dispose();\n value.element.remove();\n }\n addTab(tab, index = this._tabs.length) {\n if (index < 0 || index > this._tabs.length) {\n throw new Error('invalid location');\n }\n this._tabsList.insertBefore(tab.value.element, this._tabsList.children[index]);\n this._tabs = [\n ...this._tabs.slice(0, index),\n tab,\n ...this._tabs.slice(index),\n ];\n if (this.selectedIndex < 0) {\n this.selectedIndex = index;\n }\n }\n toggleDropdown(options) {\n const tabs = options.reset\n ? []\n : this._tabs\n .filter((tab) => !isChildEntirelyVisibleWithinParent(tab.value.element, this._tabsList))\n .map((x) => x.value.panel.id);\n this._onOverflowTabsChange.fire({ tabs, reset: options.reset });\n }\n updateDragAndDropState() {\n for (const tab of this._tabs) {\n tab.value.updateDragAndDropState();\n }\n }\n}\n","const createSvgElementFromPath = (params) => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttributeNS(null, 'height', params.height);\n svg.setAttributeNS(null, 'width', params.width);\n svg.setAttributeNS(null, 'viewBox', params.viewbox);\n svg.setAttributeNS(null, 'aria-hidden', 'false');\n svg.setAttributeNS(null, 'focusable', 'false');\n svg.classList.add('dv-svg');\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttributeNS(null, 'd', params.path);\n svg.appendChild(path);\n return svg;\n};\nexport const createCloseButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 28 28',\n path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',\n});\nexport const createExpandMoreButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 24 15',\n path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',\n});\nexport const createChevronRightButton = () => createSvgElementFromPath({\n width: '11',\n height: '11',\n viewbox: '0 0 15 25',\n path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',\n});\n","import { CompositeDisposable, Disposable, MutableDisposable, } from '../../../lifecycle';\nimport { addDisposableListener, Emitter } from '../../../events';\nimport { VoidContainer } from './voidContainer';\nimport { findRelativeZIndexParent, toggleClass } from '../../../dom';\nimport { WillShowOverlayLocationEvent } from '../../events';\nimport { getPanelData } from '../../../dnd/dataTransfer';\nimport { Tabs } from './tabs';\nimport { createDropdownElementHandle, } from './tabOverflowControl';\nexport class TabsContainer extends CompositeDisposable {\n get onTabDragStart() {\n return this.tabs.onTabDragStart;\n }\n get panels() {\n return this.tabs.panels;\n }\n get size() {\n return this.tabs.size;\n }\n get hidden() {\n return this._hidden;\n }\n set hidden(value) {\n this._hidden = value;\n this.element.style.display = value ? 'none' : '';\n }\n get element() {\n return this._element;\n }\n constructor(accessor, group) {\n super();\n this.accessor = accessor;\n this.group = group;\n this._hidden = false;\n this.dropdownPart = null;\n this._overflowTabs = [];\n this._dropdownDisposable = new MutableDisposable();\n this._onDrop = new Emitter();\n this.onDrop = this._onDrop.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-tabs-and-actions-container';\n toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');\n this.rightActionsContainer = document.createElement('div');\n this.rightActionsContainer.className = 'dv-right-actions-container';\n this.leftActionsContainer = document.createElement('div');\n this.leftActionsContainer.className = 'dv-left-actions-container';\n this.preActionsContainer = document.createElement('div');\n this.preActionsContainer.className = 'dv-pre-actions-container';\n this.tabs = new Tabs(group, accessor, {\n showTabsOverflowControl: !accessor.options.disableTabsOverflowList,\n });\n this.voidContainer = new VoidContainer(this.accessor, this.group);\n this._element.appendChild(this.preActionsContainer);\n this._element.appendChild(this.tabs.element);\n this._element.appendChild(this.leftActionsContainer);\n this._element.appendChild(this.voidContainer.element);\n this._element.appendChild(this.rightActionsContainer);\n this.addDisposables(this.tabs.onDrop((e) => this._onDrop.fire(e)), this.tabs.onWillShowOverlay((e) => this._onWillShowOverlay.fire(e)), accessor.onDidOptionsChange(() => {\n this.tabs.showTabsOverflowControl =\n !accessor.options.disableTabsOverflowList;\n }), this.tabs.onOverflowTabsChange((event) => {\n this.toggleDropdown(event);\n }), this.tabs, this._onWillShowOverlay, this._onDrop, this._onGroupDragStart, this.voidContainer, this.voidContainer.onDragStart((event) => {\n this._onGroupDragStart.fire({\n nativeEvent: event,\n group: this.group,\n });\n }), this.voidContainer.onDrop((event) => {\n this._onDrop.fire({\n event: event.nativeEvent,\n index: this.tabs.size,\n });\n }), this.voidContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'header_space',\n panel: this.group.activePanel,\n api: this.accessor.api,\n group: this.group,\n getData: getPanelData,\n }));\n }), addDisposableListener(this.voidContainer.element, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n const isFloatingGroupsEnabled = !this.accessor.options.disableFloatingGroups;\n if (isFloatingGroupsEnabled &&\n event.shiftKey &&\n this.group.api.location.type !== 'floating') {\n event.preventDefault();\n const { top, left } = this.element.getBoundingClientRect();\n const { top: rootTop, left: rootLeft } = this.accessor.element.getBoundingClientRect();\n this.accessor.addFloatingGroup(this.group, {\n x: left - rootLeft + 20,\n y: top - rootTop + 20,\n inDragMode: true,\n });\n }\n }));\n }\n show() {\n if (!this.hidden) {\n this.element.style.display = '';\n }\n }\n hide() {\n this._element.style.display = 'none';\n }\n setRightActionsElement(element) {\n if (this.rightActions === element) {\n return;\n }\n if (this.rightActions) {\n this.rightActions.remove();\n this.rightActions = undefined;\n }\n if (element) {\n this.rightActionsContainer.appendChild(element);\n this.rightActions = element;\n }\n }\n setLeftActionsElement(element) {\n if (this.leftActions === element) {\n return;\n }\n if (this.leftActions) {\n this.leftActions.remove();\n this.leftActions = undefined;\n }\n if (element) {\n this.leftActionsContainer.appendChild(element);\n this.leftActions = element;\n }\n }\n setPrefixActionsElement(element) {\n if (this.preActions === element) {\n return;\n }\n if (this.preActions) {\n this.preActions.remove();\n this.preActions = undefined;\n }\n if (element) {\n this.preActionsContainer.appendChild(element);\n this.preActions = element;\n }\n }\n isActive(tab) {\n return this.tabs.isActive(tab);\n }\n indexOf(id) {\n return this.tabs.indexOf(id);\n }\n setActive(_isGroupActive) {\n // noop\n }\n delete(id) {\n this.tabs.delete(id);\n this.updateClassnames();\n }\n setActivePanel(panel) {\n this.tabs.setActivePanel(panel);\n }\n openPanel(panel, index = this.tabs.size) {\n this.tabs.openPanel(panel, index);\n this.updateClassnames();\n }\n closePanel(panel) {\n this.delete(panel.id);\n }\n updateClassnames() {\n toggleClass(this._element, 'dv-single-tab', this.size === 1);\n }\n toggleDropdown(options) {\n const tabs = options.reset ? [] : options.tabs;\n this._overflowTabs = tabs;\n if (this._overflowTabs.length > 0 && this.dropdownPart) {\n this.dropdownPart.update({ tabs: tabs.length });\n return;\n }\n if (this._overflowTabs.length === 0) {\n this._dropdownDisposable.dispose();\n return;\n }\n const root = document.createElement('div');\n root.className = 'dv-tabs-overflow-dropdown-root';\n const part = createDropdownElementHandle();\n part.update({ tabs: tabs.length });\n this.dropdownPart = part;\n root.appendChild(part.element);\n this.rightActionsContainer.prepend(root);\n this._dropdownDisposable.value = new CompositeDisposable(Disposable.from(() => {\n var _a, _b;\n root.remove();\n (_b = (_a = this.dropdownPart) === null || _a === void 0 ? void 0 : _a.dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.dropdownPart = null;\n }), addDisposableListener(root, 'pointerdown', (event) => {\n event.preventDefault();\n }, { capture: true }), addDisposableListener(root, 'click', (event) => {\n const el = document.createElement('div');\n el.style.overflow = 'auto';\n el.className = 'dv-tabs-overflow-container';\n for (const tab of this.tabs.tabs.filter((tab) => this._overflowTabs.includes(tab.panel.id))) {\n const panelObject = this.group.panels.find((panel) => panel === tab.panel);\n const tabComponent = panelObject.view.createTabRenderer('headerOverflow');\n const child = tabComponent.element;\n const wrapper = document.createElement('div');\n toggleClass(wrapper, 'dv-tab', true);\n toggleClass(wrapper, 'dv-active-tab', panelObject.api.isActive);\n toggleClass(wrapper, 'dv-inactive-tab', !panelObject.api.isActive);\n wrapper.addEventListener('click', (event) => {\n this.accessor.popupService.close();\n if (event.defaultPrevented) {\n return;\n }\n tab.element.scrollIntoView();\n tab.panel.api.setActive();\n });\n wrapper.appendChild(child);\n el.appendChild(wrapper);\n }\n const relativeParent = findRelativeZIndexParent(root);\n this.accessor.popupService.openPopover(el, {\n x: event.clientX,\n y: event.clientY,\n zIndex: (relativeParent === null || relativeParent === void 0 ? void 0 : relativeParent.style.zIndex)\n ? `calc(${relativeParent.style.zIndex} * 2)`\n : undefined,\n });\n }));\n }\n updateDragAndDropState() {\n this.tabs.updateDragAndDropState();\n this.voidContainer.updateDragAndDropState();\n }\n}\n","import { createChevronRightButton } from '../../../svg';\nexport function createDropdownElementHandle() {\n const el = document.createElement('div');\n el.className = 'dv-tabs-overflow-dropdown-default';\n const text = document.createElement('span');\n text.textContent = ``;\n const icon = createChevronRightButton();\n el.appendChild(icon);\n el.appendChild(text);\n return {\n element: el,\n update: (params) => {\n text.textContent = `${params.tabs}`;\n },\n };\n}\n","import { AcceptableEvent } from '../events';\nexport class DockviewUnhandledDragOverEvent extends AcceptableEvent {\n constructor(nativeEvent, target, position, getData, group) {\n super();\n this.nativeEvent = nativeEvent;\n this.target = target;\n this.position = position;\n this.getData = getData;\n this.group = group;\n }\n}\nexport const PROPERTY_KEYS_DOCKVIEW = (() => {\n /**\n * by readong the keys from an empty value object TypeScript will error\n * when we add or remove new properties to `DockviewOptions`\n */\n const properties = {\n disableAutoResizing: undefined,\n hideBorders: undefined,\n singleTabMode: undefined,\n disableFloatingGroups: undefined,\n floatingGroupBounds: undefined,\n popoutUrl: undefined,\n defaultRenderer: undefined,\n debug: undefined,\n rootOverlayModel: undefined,\n locked: undefined,\n disableDnd: undefined,\n className: undefined,\n noPanelsOverlay: undefined,\n dndEdges: undefined,\n theme: undefined,\n disableTabsOverflowList: undefined,\n scrollbars: undefined,\n };\n return Object.keys(properties);\n})();\nexport function isPanelOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isPanelOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithPanel(data) {\n if (data.referencePanel) {\n return true;\n }\n return false;\n}\nexport function isGroupOptionsWithGroup(data) {\n if (data.referenceGroup) {\n return true;\n }\n return false;\n}\n","import { DockviewApi } from '../api/component.api';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { isAncestor, toggleClass } from '../dom';\nimport { addDisposableListener, DockviewEvent, Emitter, } from '../events';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { CompositeDisposable } from '../lifecycle';\nimport { ContentContainer, } from './components/panel/content';\nimport { TabsContainer, } from './components/titlebar/tabsContainer';\nimport { DockviewUnhandledDragOverEvent, } from './options';\nexport class DockviewDidDropEvent extends DockviewEvent {\n get nativeEvent() {\n return this.options.nativeEvent;\n }\n get position() {\n return this.options.position;\n }\n get panel() {\n return this.options.panel;\n }\n get group() {\n return this.options.group;\n }\n get api() {\n return this.options.api;\n }\n constructor(options) {\n super();\n this.options = options;\n }\n getData() {\n return this.options.getData();\n }\n}\nexport class DockviewWillDropEvent extends DockviewDidDropEvent {\n get kind() {\n return this._kind;\n }\n constructor(options) {\n super(options);\n this._kind = options.kind;\n }\n}\nexport class DockviewGroupPanelModel extends CompositeDisposable {\n get element() {\n throw new Error('dockview: not supported');\n }\n get activePanel() {\n return this._activePanel;\n }\n get locked() {\n return this._locked;\n }\n set locked(value) {\n this._locked = value;\n toggleClass(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);\n }\n get isActive() {\n return this._isGroupActive;\n }\n get panels() {\n return this._panels;\n }\n get size() {\n return this._panels.length;\n }\n get isEmpty() {\n return this._panels.length === 0;\n }\n get hasWatermark() {\n return !!(this.watermark && this.container.contains(this.watermark.element));\n }\n get header() {\n return this.tabsContainer;\n }\n get isContentFocused() {\n if (!document.activeElement) {\n return false;\n }\n return isAncestor(document.activeElement, this.contentContainer.element);\n }\n get location() {\n return this._location;\n }\n set location(value) {\n this._location = value;\n toggleClass(this.container, 'dv-groupview-floating', false);\n toggleClass(this.container, 'dv-groupview-popout', false);\n switch (value.type) {\n case 'grid':\n this.contentContainer.dropTarget.setTargetZones([\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'center',\n ]);\n break;\n case 'floating':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n this.contentContainer.dropTarget.setTargetZones(value\n ? ['center']\n : ['top', 'bottom', 'left', 'right', 'center']);\n toggleClass(this.container, 'dv-groupview-floating', true);\n break;\n case 'popout':\n this.contentContainer.dropTarget.setTargetZones(['center']);\n toggleClass(this.container, 'dv-groupview-popout', true);\n break;\n }\n this.groupPanel.api._onDidLocationChange.fire({\n location: this.location,\n });\n }\n constructor(container, accessor, id, options, groupPanel) {\n var _a;\n super();\n this.container = container;\n this.accessor = accessor;\n this.id = id;\n this.options = options;\n this.groupPanel = groupPanel;\n this._isGroupActive = false;\n this._locked = false;\n this._location = { type: 'grid' };\n this.mostRecentlyUsed = [];\n this._overwriteRenderContainer = null;\n this._overwriteDropTargetContainer = null;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._width = 0;\n this._height = 0;\n this._panels = [];\n this._panelDisposables = new Map();\n this._onMove = new Emitter();\n this.onMove = this._onMove.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onTabDragStart = new Emitter();\n this.onTabDragStart = this._onTabDragStart.event;\n this._onGroupDragStart = new Emitter();\n this.onGroupDragStart = this._onGroupDragStart.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPanelTitleChange = new Emitter();\n this.onDidPanelTitleChange = this._onDidPanelTitleChange.event;\n this._onDidPanelParametersChange = new Emitter();\n this.onDidPanelParametersChange = this._onDidPanelParametersChange.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n toggleClass(this.container, 'dv-groupview', true);\n this._api = new DockviewApi(this.accessor);\n this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);\n this.contentContainer = new ContentContainer(this.accessor, this);\n container.append(this.tabsContainer.element, this.contentContainer.element);\n this.header.hidden = !!options.hideHeader;\n this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;\n this.addDisposables(this._onTabDragStart, this._onGroupDragStart, this._onWillShowOverlay, this.tabsContainer.onTabDragStart((event) => {\n this._onTabDragStart.fire(event);\n }), this.tabsContainer.onGroupDragStart((event) => {\n this._onGroupDragStart.fire(event);\n }), this.tabsContainer.onDrop((event) => {\n this.handleDropEvent('header', event.event, 'center', event.index);\n }), this.contentContainer.onDidFocus(() => {\n this.accessor.doSetGroupActive(this.groupPanel);\n }), this.contentContainer.onDidBlur(() => {\n // noop\n }), this.contentContainer.dropTarget.onDrop((event) => {\n this.handleDropEvent('content', event.nativeEvent, event.position);\n }), this.tabsContainer.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(event);\n }), this.contentContainer.dropTarget.onWillShowOverlay((event) => {\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'content',\n panel: this.activePanel,\n api: this._api,\n group: this.groupPanel,\n getData: getPanelData,\n }));\n }), this._onMove, this._onDidChange, this._onDidDrop, this._onWillDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this._onUnhandledDragOverEvent, this._onDidPanelTitleChange, this._onDidPanelParametersChange);\n }\n focusContent() {\n this.contentContainer.element.focus();\n }\n set renderContainer(value) {\n this.panels.forEach((panel) => {\n this.renderContainer.detatch(panel);\n });\n this._overwriteRenderContainer = value;\n this.panels.forEach((panel) => {\n this.rerender(panel);\n });\n }\n get renderContainer() {\n var _a;\n return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);\n }\n set dropTargetContainer(value) {\n this._overwriteDropTargetContainer = value;\n }\n get dropTargetContainer() {\n var _a;\n return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);\n }\n initialize() {\n if (this.options.panels) {\n this.options.panels.forEach((panel) => {\n this.doAddPanel(panel);\n });\n }\n if (this.options.activePanel) {\n this.openPanel(this.options.activePanel);\n }\n // must be run after the constructor otherwise this.parent may not be\n // correctly initialized\n this.setActive(this.isActive, true);\n this.updateContainer();\n if (this.accessor.options.createRightHeaderActionComponent) {\n this._rightHeaderActions =\n this.accessor.options.createRightHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._rightHeaderActions);\n this._rightHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setRightActionsElement(this._rightHeaderActions.element);\n }\n if (this.accessor.options.createLeftHeaderActionComponent) {\n this._leftHeaderActions =\n this.accessor.options.createLeftHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._leftHeaderActions);\n this._leftHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setLeftActionsElement(this._leftHeaderActions.element);\n }\n if (this.accessor.options.createPrefixHeaderActionComponent) {\n this._prefixHeaderActions =\n this.accessor.options.createPrefixHeaderActionComponent(this.groupPanel);\n this.addDisposables(this._prefixHeaderActions);\n this._prefixHeaderActions.init({\n containerApi: this._api,\n api: this.groupPanel.api,\n group: this.groupPanel,\n });\n this.tabsContainer.setPrefixActionsElement(this._prefixHeaderActions.element);\n }\n }\n rerender(panel) {\n this.contentContainer.renderPanel(panel, { asActive: false });\n }\n indexOf(panel) {\n return this.tabsContainer.indexOf(panel.id);\n }\n toJSON() {\n var _a;\n const result = {\n views: this.tabsContainer.panels,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n id: this.id,\n };\n if (this.locked !== false) {\n result.locked = this.locked;\n }\n if (this.header.hidden) {\n result.hideHeader = true;\n }\n return result;\n }\n moveToNext(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n const index = options.panel ? this.panels.indexOf(options.panel) : -1;\n let normalizedIndex;\n if (index < this.panels.length - 1) {\n normalizedIndex = index + 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = 0;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n moveToPrevious(options) {\n if (!options) {\n options = {};\n }\n if (!options.panel) {\n options.panel = this.activePanel;\n }\n if (!options.panel) {\n return;\n }\n const index = this.panels.indexOf(options.panel);\n let normalizedIndex;\n if (index > 0) {\n normalizedIndex = index - 1;\n }\n else if (!options.suppressRoll) {\n normalizedIndex = this.panels.length - 1;\n }\n else {\n return;\n }\n this.openPanel(this.panels[normalizedIndex]);\n }\n containsPanel(panel) {\n return this.panels.includes(panel);\n }\n init(_params) {\n //noop\n }\n update(_params) {\n //noop\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n openPanel(panel, options = {}) {\n /**\n * set the panel group\n * add the panel\n * check if group active\n * check if panel active\n */\n if (typeof options.index !== 'number' ||\n options.index > this.panels.length) {\n options.index = this.panels.length;\n }\n const skipSetActive = !!options.skipSetActive;\n // ensure the group is updated before we fire any events\n panel.updateParentGroup(this.groupPanel, {\n skipSetActive: options.skipSetActive,\n });\n this.doAddPanel(panel, options.index, {\n skipSetActive: skipSetActive,\n });\n if (this._activePanel === panel) {\n this.contentContainer.renderPanel(panel, { asActive: true });\n return;\n }\n if (!skipSetActive) {\n this.doSetActivePanel(panel);\n }\n if (!options.skipSetGroupActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n }\n removePanel(groupItemOrId, options = {\n skipSetActive: false,\n }) {\n const id = typeof groupItemOrId === 'string'\n ? groupItemOrId\n : groupItemOrId.id;\n const panelToRemove = this._panels.find((panel) => panel.id === id);\n if (!panelToRemove) {\n throw new Error('invalid operation');\n }\n return this._removePanel(panelToRemove, options);\n }\n closeAllPanels() {\n if (this.panels.length > 0) {\n // take a copy since we will be edting the array as we iterate through\n const arrPanelCpy = [...this.panels];\n for (const panel of arrPanelCpy) {\n this.doClose(panel);\n }\n }\n else {\n this.accessor.removeGroup(this.groupPanel);\n }\n }\n closePanel(panel) {\n this.doClose(panel);\n }\n doClose(panel) {\n const isLast = this.panels.length === 1 && this.accessor.groups.length === 1;\n this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'\n ? { removeEmptyGroup: false }\n : undefined);\n }\n isPanelActive(panel) {\n return this._activePanel === panel;\n }\n updateActions(element) {\n this.tabsContainer.setRightActionsElement(element);\n }\n setActive(isGroupActive, force = false) {\n if (!force && this.isActive === isGroupActive) {\n return;\n }\n this._isGroupActive = isGroupActive;\n toggleClass(this.container, 'dv-active-group', isGroupActive);\n toggleClass(this.container, 'dv-inactive-group', !isGroupActive);\n this.tabsContainer.setActive(this.isActive);\n if (!this._activePanel && this.panels.length > 0) {\n this.doSetActivePanel(this.panels[0]);\n }\n this.updateContainer();\n }\n layout(width, height) {\n var _a;\n this._width = width;\n this._height = height;\n this.contentContainer.layout(this._width, this._height);\n if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {\n this._activePanel.layout(this._width, this._height);\n }\n }\n _removePanel(panel, options) {\n const isActivePanel = this._activePanel === panel;\n this.doRemovePanel(panel);\n if (isActivePanel && this.panels.length > 0) {\n const nextPanel = this.mostRecentlyUsed[0];\n this.openPanel(nextPanel, {\n skipSetActive: options.skipSetActive,\n skipSetGroupActive: options.skipSetActiveGroup,\n });\n }\n if (this._activePanel && this.panels.length === 0) {\n this.doSetActivePanel(undefined);\n }\n if (!options.skipSetActive) {\n this.updateContainer();\n }\n return panel;\n }\n doRemovePanel(panel) {\n const index = this.panels.indexOf(panel);\n if (this._activePanel === panel) {\n this.contentContainer.closePanel();\n }\n this.tabsContainer.delete(panel.id);\n this._panels.splice(index, 1);\n if (this.mostRecentlyUsed.includes(panel)) {\n const index = this.mostRecentlyUsed.indexOf(panel);\n this.mostRecentlyUsed.splice(index, 1);\n }\n const disposable = this._panelDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._panelDisposables.delete(panel.id);\n }\n this._onDidRemovePanel.fire({ panel });\n }\n doAddPanel(panel, index = this.panels.length, options = { skipSetActive: false }) {\n const existingPanel = this._panels.indexOf(panel);\n const hasExistingPanel = existingPanel > -1;\n this.tabsContainer.show();\n this.contentContainer.show();\n this.tabsContainer.openPanel(panel, index);\n if (!options.skipSetActive) {\n this.contentContainer.openPanel(panel);\n }\n if (hasExistingPanel) {\n // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels\n return;\n }\n this.updateMru(panel);\n this.panels.splice(index, 0, panel);\n this._panelDisposables.set(panel.id, new CompositeDisposable(panel.api.onDidTitleChange((event) => this._onDidPanelTitleChange.fire(event)), panel.api.onDidParametersChange((event) => this._onDidPanelParametersChange.fire(event))));\n this._onDidAddPanel.fire({ panel });\n }\n doSetActivePanel(panel) {\n if (this._activePanel === panel) {\n return;\n }\n this._activePanel = panel;\n if (panel) {\n this.tabsContainer.setActivePanel(panel);\n panel.layout(this._width, this._height);\n this.updateMru(panel);\n this._onDidActivePanelChange.fire({\n panel,\n });\n }\n }\n updateMru(panel) {\n if (this.mostRecentlyUsed.includes(panel)) {\n this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);\n }\n this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];\n }\n updateContainer() {\n var _a, _b;\n this.panels.forEach((panel) => panel.runEvents());\n if (this.isEmpty && !this.watermark) {\n const watermark = this.accessor.createWatermarkComponent();\n watermark.init({\n containerApi: this._api,\n group: this.groupPanel,\n });\n this.watermark = watermark;\n addDisposableListener(this.watermark.element, 'pointerdown', () => {\n if (!this.isActive) {\n this.accessor.doSetGroupActive(this.groupPanel);\n }\n });\n this.contentContainer.element.appendChild(this.watermark.element);\n }\n if (!this.isEmpty && this.watermark) {\n this.watermark.element.remove();\n (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.watermark = undefined;\n }\n }\n canDisplayOverlay(event, position, target) {\n const firedEvent = new DockviewUnhandledDragOverEvent(event, target, position, getPanelData, this.accessor.getPanel(this.id));\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n }\n handleDropEvent(type, event, position, index) {\n if (this.locked === 'no-drop-target') {\n return;\n }\n function getKind() {\n switch (type) {\n case 'header':\n return typeof index === 'number' ? 'tab' : 'header_space';\n case 'content':\n return 'content';\n }\n }\n const panel = typeof index === 'number' ? this.panels[index] : undefined;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n kind: getKind(),\n group: this.groupPanel,\n api: this._api,\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data && data.viewId === this.accessor.id) {\n if (type === 'content') {\n if (data.groupId === this.id) {\n // don't allow to drop on self for center position\n if (position === 'center') {\n return;\n }\n if (data.panelId === null) {\n // don't allow group move to drop anywhere on self\n return;\n }\n }\n }\n if (type === 'header') {\n if (data.groupId === this.id) {\n if (data.panelId === null) {\n return;\n }\n }\n }\n if (data.panelId === null) {\n // this is a group move dnd event\n const { groupId } = data;\n this._onMove.fire({\n target: position,\n groupId: groupId,\n index,\n });\n return;\n }\n const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;\n if (fromSameGroup && this.tabsContainer.size === 1) {\n return;\n }\n const { groupId, panelId } = data;\n const isSameGroup = this.id === groupId;\n if (isSameGroup && !position) {\n const oldIndex = this.tabsContainer.indexOf(panelId);\n if (oldIndex === index) {\n return;\n }\n }\n this._onMove.fire({\n target: position,\n groupId: data.groupId,\n itemId: data.panelId,\n index,\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event,\n position,\n panel,\n getData: () => getPanelData(),\n group: this.groupPanel,\n api: this._api,\n }));\n }\n }\n updateDragAndDropState() {\n this.tabsContainer.updateDragAndDropState();\n }\n dispose() {\n var _a, _b, _c;\n super.dispose();\n (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.element.remove();\n (_c = (_b = this.watermark) === null || _b === void 0 ? void 0 : _b.dispose) === null || _c === void 0 ? void 0 : _c.call(_b);\n this.watermark = undefined;\n for (const panel of this.panels) {\n panel.dispose();\n }\n this.tabsContainer.dispose();\n this.contentContainer.dispose();\n }\n}\n","import { Emitter } from '../events';\nimport { PanelApiImpl } from './panelApi';\nexport class GridviewPanelApiImpl extends PanelApiImpl {\n constructor(id, component, panel) {\n super(id, component);\n this._onDidConstraintsChangeInternal = new Emitter();\n this.onDidConstraintsChangeInternal = this._onDidConstraintsChangeInternal.event;\n this._onDidConstraintsChange = new Emitter();\n this.onDidConstraintsChange = this._onDidConstraintsChange.event;\n this._onDidSizeChange = new Emitter();\n this.onDidSizeChange = this._onDidSizeChange.event;\n this.addDisposables(this._onDidConstraintsChangeInternal, this._onDidConstraintsChange, this._onDidSizeChange);\n if (panel) {\n this.initialize(panel);\n }\n }\n setConstraints(value) {\n this._onDidConstraintsChangeInternal.fire(value);\n }\n setSize(event) {\n this._onDidSizeChange.fire(event);\n }\n}\n","import { BasePanelView, } from './basePanelView';\nimport { GridviewPanelApiImpl, } from '../api/gridviewPanelApi';\nimport { Emitter } from '../events';\nexport class GridviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n get snap() {\n return this._snap;\n }\n get minimumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumWidth();\n }\n get minimumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__minimumHeight();\n }\n get maximumHeight() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumHeight();\n }\n get maximumWidth() {\n /**\n * defer to protected function to allow subclasses to override easily.\n * see https://github.com/microsoft/TypeScript/issues/338\n */\n return this.__maximumWidth();\n }\n __minimumWidth() {\n const width = typeof this._minimumWidth === 'function'\n ? this._minimumWidth()\n : this._minimumWidth;\n if (width !== this._evaluatedMinimumWidth) {\n this._evaluatedMinimumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __maximumWidth() {\n const width = typeof this._maximumWidth === 'function'\n ? this._maximumWidth()\n : this._maximumWidth;\n if (width !== this._evaluatedMaximumWidth) {\n this._evaluatedMaximumWidth = width;\n this.updateConstraints();\n }\n return width;\n }\n __minimumHeight() {\n const height = typeof this._minimumHeight === 'function'\n ? this._minimumHeight()\n : this._minimumHeight;\n if (height !== this._evaluatedMinimumHeight) {\n this._evaluatedMinimumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n __maximumHeight() {\n const height = typeof this._maximumHeight === 'function'\n ? this._maximumHeight()\n : this._maximumHeight;\n if (height !== this._evaluatedMaximumHeight) {\n this._evaluatedMaximumHeight = height;\n this.updateConstraints();\n }\n return height;\n }\n get isActive() {\n return this.api.isActive;\n }\n get isVisible() {\n return this.api.isVisible;\n }\n constructor(id, component, options, api) {\n super(id, component, api !== null && api !== void 0 ? api : new GridviewPanelApiImpl(id, component));\n this._evaluatedMinimumWidth = 0;\n this._evaluatedMaximumWidth = Number.MAX_SAFE_INTEGER;\n this._evaluatedMinimumHeight = 0;\n this._evaluatedMaximumHeight = Number.MAX_SAFE_INTEGER;\n this._minimumWidth = 0;\n this._minimumHeight = 0;\n this._maximumWidth = Number.MAX_SAFE_INTEGER;\n this._maximumHeight = Number.MAX_SAFE_INTEGER;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumWidth) === 'number') {\n this._minimumWidth = options.minimumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumWidth) === 'number') {\n this._maximumWidth = options.maximumWidth;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.minimumHeight) === 'number') {\n this._minimumHeight = options.minimumHeight;\n }\n if (typeof (options === null || options === void 0 ? void 0 : options.maximumHeight) === 'number') {\n this._maximumHeight = options.maximumHeight;\n }\n this.api.initialize(this); // TODO: required to by-pass 'super before this' requirement\n this.addDisposables(this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.doSetGroupActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumWidth === 'number' ||\n typeof event.minimumWidth === 'function') {\n this._minimumWidth = event.minimumWidth;\n }\n if (typeof event.minimumHeight === 'number' ||\n typeof event.minimumHeight === 'function') {\n this._minimumHeight = event.minimumHeight;\n }\n if (typeof event.maximumWidth === 'number' ||\n typeof event.maximumWidth === 'function') {\n this._maximumWidth = event.maximumWidth;\n }\n if (typeof event.maximumHeight === 'number' ||\n typeof event.maximumHeight === 'function') {\n this._maximumHeight = event.maximumHeight;\n }\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({\n height: event.height,\n width: event.width,\n });\n }), this._onDidChange);\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n init(parameters) {\n if (parameters.maximumHeight) {\n this._maximumHeight = parameters.maximumHeight;\n }\n if (parameters.minimumHeight) {\n this._minimumHeight = parameters.minimumHeight;\n }\n if (parameters.maximumWidth) {\n this._maximumWidth = parameters.maximumWidth;\n }\n if (parameters.minimumWidth) {\n this._minimumWidth = parameters.minimumWidth;\n }\n this._priority = parameters.priority;\n this._snap = !!parameters.snap;\n super.init(parameters);\n if (typeof parameters.isVisible === 'boolean') {\n this.setVisible(parameters.isVisible);\n }\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n minimumWidth: this._evaluatedMinimumWidth,\n maximumWidth: this._evaluatedMaximumWidth,\n minimumHeight: this._evaluatedMinimumHeight,\n maximumHeight: this._evaluatedMaximumHeight,\n });\n }\n toJSON() {\n const state = super.toJSON();\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ? undefined : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, state), { minimumHeight: minimum(this.minimumHeight), maximumHeight: maximum(this.maximumHeight), minimumWidth: minimum(this.minimumWidth), maximumWidth: maximum(this.maximumWidth), snap: this.snap, priority: this.priority });\n }\n}\n","import { positionToDirection } from '../dnd/droptarget';\nimport { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nconst NOT_INITIALIZED_MESSAGE = 'dockview: DockviewGroupPanelApiImpl not initialized';\nexport class DockviewGroupPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this._group.model.location;\n }\n constructor(id, accessor) {\n super(id, '__dockviewgroup__');\n this.accessor = accessor;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this._onDidActivePanelChange = new Emitter();\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this.addDisposables(this._onDidLocationChange, this._onDidActivePanelChange);\n }\n close() {\n if (!this._group) {\n return;\n }\n return this.accessor.removeGroup(this._group);\n }\n getWindow() {\n return this.location.type === 'popout'\n ? this.location.getWindow()\n : window;\n }\n moveTo(options) {\n var _a, _b, _c, _d;\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n const group = (_a = options.group) !== null && _a !== void 0 ? _a : this.accessor.addGroup({\n direction: positionToDirection((_b = options.position) !== null && _b !== void 0 ? _b : 'right'),\n skipSetActive: (_c = options.skipSetActive) !== null && _c !== void 0 ? _c : false,\n });\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id },\n to: {\n group,\n position: options.group\n ? (_d = options.position) !== null && _d !== void 0 ? _d : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n maximize() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.location.type !== 'grid') {\n // only grid groups can be maximized\n return;\n }\n this.accessor.maximizeGroup(this._group);\n }\n isMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n return this.accessor.isMaximizedGroup(this._group);\n }\n exitMaximized() {\n if (!this._group) {\n throw new Error(NOT_INITIALIZED_MESSAGE);\n }\n if (this.isMaximized()) {\n this.accessor.exitMaximizedGroup();\n }\n }\n initialize(group) {\n this._group = group;\n }\n}\n","import { DockviewGroupPanelModel, } from './dockviewGroupPanelModel';\nimport { GridviewPanel } from '../gridview/gridviewPanel';\nimport { DockviewGroupPanelApiImpl, } from '../api/dockviewGroupPanelApi';\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH = 100;\nconst MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT = 100;\nexport class DockviewGroupPanel extends GridviewPanel {\n get minimumWidth() {\n var _a;\n const activePanelMinimumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumWidth;\n if (typeof activePanelMinimumWidth === 'number') {\n return activePanelMinimumWidth;\n }\n return super.__minimumWidth();\n }\n get minimumHeight() {\n var _a;\n const activePanelMinimumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.minimumHeight;\n if (typeof activePanelMinimumHeight === 'number') {\n return activePanelMinimumHeight;\n }\n return super.__minimumHeight();\n }\n get maximumWidth() {\n var _a;\n const activePanelMaximumWidth = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumWidth;\n if (typeof activePanelMaximumWidth === 'number') {\n return activePanelMaximumWidth;\n }\n return super.__maximumWidth();\n }\n get maximumHeight() {\n var _a;\n const activePanelMaximumHeight = (_a = this.activePanel) === null || _a === void 0 ? void 0 : _a.maximumHeight;\n if (typeof activePanelMaximumHeight === 'number') {\n return activePanelMaximumHeight;\n }\n return super.__maximumHeight();\n }\n get panels() {\n return this._model.panels;\n }\n get activePanel() {\n return this._model.activePanel;\n }\n get size() {\n return this._model.size;\n }\n get model() {\n return this._model;\n }\n get locked() {\n return this._model.locked;\n }\n set locked(value) {\n this._model.locked = value;\n }\n get header() {\n return this._model.header;\n }\n constructor(accessor, id, options) {\n var _a, _b, _c, _d, _e, _f;\n super(id, 'groupview_default', {\n minimumHeight: (_b = (_a = options.constraints) === null || _a === void 0 ? void 0 : _a.minimumHeight) !== null && _b !== void 0 ? _b : MINIMUM_DOCKVIEW_GROUP_PANEL_HEIGHT,\n minimumWidth: (_d = (_c = options.constraints) === null || _c === void 0 ? void 0 : _c.maximumHeight) !== null && _d !== void 0 ? _d : MINIMUM_DOCKVIEW_GROUP_PANEL_WIDTH,\n maximumHeight: (_e = options.constraints) === null || _e === void 0 ? void 0 : _e.maximumHeight,\n maximumWidth: (_f = options.constraints) === null || _f === void 0 ? void 0 : _f.maximumWidth,\n }, new DockviewGroupPanelApiImpl(id, accessor));\n this.api.initialize(this); // cannot use 'this' after after 'super' call\n this._model = new DockviewGroupPanelModel(this.element, accessor, id, options, this);\n this.addDisposables(this.model.onDidActivePanelChange((event) => {\n this.api._onDidActivePanelChange.fire(event);\n }));\n }\n focus() {\n if (!this.api.isActive) {\n this.api.setActive();\n }\n super.focus();\n }\n initialize() {\n this._model.initialize();\n }\n setActive(isActive) {\n super.setActive(isActive);\n this.model.setActive(isActive);\n }\n layout(width, height) {\n super.layout(width, height);\n this.model.layout(width, height);\n }\n getComponent() {\n return this._model;\n }\n toJSON() {\n return this.model.toJSON();\n }\n}\n","export const themeDark = {\n name: 'dark',\n className: 'dockview-theme-dark',\n};\nexport const themeLight = {\n name: 'light',\n className: 'dockview-theme-light',\n};\nexport const themeVisualStudio = {\n name: 'visualStudio',\n className: 'dockview-theme-vs',\n};\nexport const themeAbyss = {\n name: 'abyss',\n className: 'dockview-theme-abyss',\n};\nexport const themeDracula = {\n name: 'dracula',\n className: 'dockview-theme-dracula',\n};\nexport const themeReplit = {\n name: 'replit',\n className: 'dockview-theme-replit',\n gap: 10,\n};\nexport const themeAbyssSpaced = {\n name: 'abyssSpaced',\n className: 'dockview-theme-abyss-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\nexport const themeLightSpaced = {\n name: 'lightSpaced',\n className: 'dockview-theme-light-spaced',\n gap: 10,\n dndOverlayMounting: 'absolute',\n dndPanelOverlay: 'group',\n};\n","import { Emitter } from '../events';\nimport { GridviewPanelApiImpl } from './gridviewPanelApi';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nexport class DockviewPanelApiImpl extends GridviewPanelApiImpl {\n get location() {\n return this.group.api.location;\n }\n get title() {\n return this.panel.title;\n }\n get isGroupActive() {\n return this.group.isActive;\n }\n get renderer() {\n return this.panel.renderer;\n }\n set group(value) {\n const oldGroup = this._group;\n if (this._group !== value) {\n this._group = value;\n this._onDidGroupChange.fire({});\n this.setupGroupEventListeners(oldGroup);\n this._onDidLocationChange.fire({\n location: this.group.api.location,\n });\n }\n }\n get group() {\n return this._group;\n }\n get tabComponent() {\n return this._tabComponent;\n }\n constructor(panel, group, accessor, component, tabComponent) {\n super(panel.id, component);\n this.panel = panel;\n this.accessor = accessor;\n this._onDidTitleChange = new Emitter();\n this.onDidTitleChange = this._onDidTitleChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._onDidGroupChange = new Emitter();\n this.onDidGroupChange = this._onDidGroupChange.event;\n this._onDidRendererChange = new Emitter();\n this.onDidRendererChange = this._onDidRendererChange.event;\n this._onDidLocationChange = new Emitter();\n this.onDidLocationChange = this._onDidLocationChange.event;\n this.groupEventsDisposable = new MutableDisposable();\n this._tabComponent = tabComponent;\n this.initialize(panel);\n this._group = group;\n this.setupGroupEventListeners();\n this.addDisposables(this.groupEventsDisposable, this._onDidRendererChange, this._onDidTitleChange, this._onDidGroupChange, this._onDidActiveGroupChange, this._onDidLocationChange);\n }\n getWindow() {\n return this.group.api.getWindow();\n }\n moveTo(options) {\n var _a, _b;\n this.accessor.moveGroupOrPanel({\n from: { groupId: this._group.id, panelId: this.panel.id },\n to: {\n group: (_a = options.group) !== null && _a !== void 0 ? _a : this._group,\n position: options.group\n ? (_b = options.position) !== null && _b !== void 0 ? _b : 'center'\n : 'center',\n index: options.index,\n },\n skipSetActive: options.skipSetActive,\n });\n }\n setTitle(title) {\n this.panel.setTitle(title);\n }\n setRenderer(renderer) {\n this.panel.setRenderer(renderer);\n }\n close() {\n this.group.model.closePanel(this.panel);\n }\n maximize() {\n this.group.api.maximize();\n }\n isMaximized() {\n return this.group.api.isMaximized();\n }\n exitMaximized() {\n this.group.api.exitMaximized();\n }\n setupGroupEventListeners(previousGroup) {\n var _a;\n let _trackGroupActive = (_a = previousGroup === null || previousGroup === void 0 ? void 0 : previousGroup.isActive) !== null && _a !== void 0 ? _a : false; // prevent duplicate events with same state\n this.groupEventsDisposable.value = new CompositeDisposable(this.group.api.onDidVisibilityChange((event) => {\n const hasBecomeHidden = !event.isVisible && this.isVisible;\n const hasBecomeVisible = event.isVisible && !this.isVisible;\n const isActivePanel = this.group.model.isPanelActive(this.panel);\n if (hasBecomeHidden || (hasBecomeVisible && isActivePanel)) {\n this._onDidVisibilityChange.fire(event);\n }\n }), this.group.api.onDidLocationChange((event) => {\n if (this.group !== this.panel.group) {\n return;\n }\n this._onDidLocationChange.fire(event);\n }), this.group.api.onDidActiveChange(() => {\n if (this.group !== this.panel.group) {\n return;\n }\n if (_trackGroupActive !== this.isGroupActive) {\n _trackGroupActive = this.isGroupActive;\n this._onDidActiveGroupChange.fire({\n isActive: this.isGroupActive,\n });\n }\n }));\n }\n}\n","import { DockviewPanelApiImpl, } from '../api/dockviewPanelApi';\nimport { CompositeDisposable } from '../lifecycle';\nimport { WillFocusEvent } from '../api/panelApi';\nexport class DockviewPanel extends CompositeDisposable {\n get params() {\n return this._params;\n }\n get title() {\n return this._title;\n }\n get group() {\n return this._group;\n }\n get renderer() {\n var _a;\n return (_a = this._renderer) !== null && _a !== void 0 ? _a : this.accessor.renderer;\n }\n get minimumWidth() {\n return this._minimumWidth;\n }\n get minimumHeight() {\n return this._minimumHeight;\n }\n get maximumWidth() {\n return this._maximumWidth;\n }\n get maximumHeight() {\n return this._maximumHeight;\n }\n constructor(id, component, tabComponent, accessor, containerApi, group, view, options) {\n super();\n this.id = id;\n this.accessor = accessor;\n this.containerApi = containerApi;\n this.view = view;\n this._renderer = options.renderer;\n this._group = group;\n this._minimumWidth = options.minimumWidth;\n this._minimumHeight = options.minimumHeight;\n this._maximumWidth = options.maximumWidth;\n this._maximumHeight = options.maximumHeight;\n this.api = new DockviewPanelApiImpl(this, this._group, accessor, component, tabComponent);\n this.addDisposables(this.api.onActiveChange(() => {\n accessor.setActivePanel(this);\n }), this.api.onDidSizeChange((event) => {\n // forward the resize event to the group since if you want to resize a panel\n // you are actually just resizing the panels parent which is the group\n this.group.api.setSize(event);\n }), this.api.onDidRendererChange(() => {\n this.group.model.rerender(this);\n }));\n }\n init(params) {\n this._params = params.params;\n this.view.init(Object.assign(Object.assign({}, params), { api: this.api, containerApi: this.containerApi }));\n this.setTitle(params.title);\n }\n focus() {\n const event = new WillFocusEvent();\n this.api._onWillFocus.fire(event);\n if (event.defaultPrevented) {\n return;\n }\n if (!this.api.isActive) {\n this.api.setActive();\n }\n }\n toJSON() {\n return {\n id: this.id,\n contentComponent: this.view.contentComponent,\n tabComponent: this.view.tabComponent,\n params: Object.keys(this._params || {}).length > 0\n ? this._params\n : undefined,\n title: this.title,\n renderer: this._renderer,\n minimumHeight: this._minimumHeight,\n maximumHeight: this._maximumHeight,\n minimumWidth: this._minimumWidth,\n maximumWidth: this._maximumWidth,\n };\n }\n setTitle(title) {\n const didTitleChange = title !== this.title;\n if (didTitleChange) {\n this._title = title;\n this.api._onDidTitleChange.fire({ title });\n }\n }\n setRenderer(renderer) {\n const didChange = renderer !== this.renderer;\n if (didChange) {\n this._renderer = renderer;\n this.api._onDidRendererChange.fire({\n renderer: renderer,\n });\n }\n }\n update(event) {\n var _a;\n // merge the new parameters with the existing parameters\n this._params = Object.assign(Object.assign({}, ((_a = this._params) !== null && _a !== void 0 ? _a : {})), event.params);\n /**\n * delete new keys that have a value of undefined,\n * allow values of null\n */\n for (const key of Object.keys(event.params)) {\n if (event.params[key] === undefined) {\n delete this._params[key];\n }\n }\n // update the view with the updated props\n this.view.update({\n params: this._params,\n });\n }\n updateParentGroup(group, options) {\n this._group = group;\n this.api.group = this._group;\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (!(options === null || options === void 0 ? void 0 : options.skipSetActive)) {\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n runEvents() {\n const isPanelVisible = this._group.model.isPanelActive(this);\n const isActive = this.group.api.isActive && isPanelVisible;\n if (this.api.isActive !== isActive) {\n this.api._onDidActiveChange.fire({\n isActive: this.group.api.isActive && isPanelVisible,\n });\n }\n if (this.api.isVisible !== isPanelVisible) {\n this.api._onDidVisibilityChange.fire({\n isVisible: isPanelVisible,\n });\n }\n }\n layout(width, height) {\n // TODO: Can we somehow do height without header height or indicate what the header height is?\n this.api._onDidDimensionChange.fire({\n width,\n height: height,\n });\n this.view.layout(width, height);\n }\n dispose() {\n this.api.dispose();\n this.view.dispose();\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nimport { addDisposableListener } from '../../../events';\nimport { createCloseButton } from '../../../svg';\nexport class DefaultTab extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-default-tab';\n this._content = document.createElement('div');\n this._content.className = 'dv-default-tab-content';\n this.action = document.createElement('div');\n this.action.className = 'dv-default-tab-action';\n this.action.appendChild(createCloseButton());\n this._element.appendChild(this._content);\n this._element.appendChild(this.action);\n this.render();\n }\n init(params) {\n this._title = params.title;\n this.addDisposables(params.api.onDidTitleChange((event) => {\n this._title = event.title;\n this.render();\n }), addDisposableListener(this.action, 'pointerdown', (ev) => {\n ev.preventDefault();\n }), addDisposableListener(this.action, 'click', (ev) => {\n if (ev.defaultPrevented) {\n return;\n }\n ev.preventDefault();\n params.api.close();\n }));\n this.render();\n }\n render() {\n var _a;\n if (this._content.textContent !== this._title) {\n this._content.textContent = (_a = this._title) !== null && _a !== void 0 ? _a : '';\n }\n }\n}\n","import { DefaultTab } from './components/tab/defaultTab';\nexport class DockviewPanelModel {\n get content() {\n return this._content;\n }\n get tab() {\n return this._tab;\n }\n constructor(accessor, id, contentComponent, tabComponent) {\n this.accessor = accessor;\n this.id = id;\n this.contentComponent = contentComponent;\n this.tabComponent = tabComponent;\n this._content = this.createContentComponent(this.id, contentComponent);\n this._tab = this.createTabComponent(this.id, tabComponent);\n }\n createTabRenderer(tabLocation) {\n var _a;\n const cmp = this.createTabComponent(this.id, this.tabComponent);\n if (this._params) {\n cmp.init(Object.assign(Object.assign({}, this._params), { tabLocation }));\n }\n if (this._updateEvent) {\n (_a = cmp.update) === null || _a === void 0 ? void 0 : _a.call(cmp, this._updateEvent);\n }\n return cmp;\n }\n init(params) {\n this._params = params;\n this.content.init(params);\n this.tab.init(Object.assign(Object.assign({}, params), { tabLocation: 'header' }));\n }\n layout(width, height) {\n var _a, _b;\n (_b = (_a = this.content).layout) === null || _b === void 0 ? void 0 : _b.call(_a, width, height);\n }\n update(event) {\n var _a, _b, _c, _d;\n this._updateEvent = event;\n (_b = (_a = this.content).update) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n (_d = (_c = this.tab).update) === null || _d === void 0 ? void 0 : _d.call(_c, event);\n }\n dispose() {\n var _a, _b, _c, _d;\n (_b = (_a = this.content).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.tab).dispose) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n createContentComponent(id, componentName) {\n return this.accessor.options.createComponent({\n id,\n name: componentName,\n });\n }\n createTabComponent(id, componentName) {\n const name = componentName !== null && componentName !== void 0 ? componentName : this.accessor.options.defaultTabComponent;\n if (name) {\n if (this.accessor.options.createTabComponent) {\n const component = this.accessor.options.createTabComponent({\n id,\n name,\n });\n if (component) {\n return component;\n }\n else {\n return new DefaultTab();\n }\n }\n console.warn(`dockview: tabComponent '${componentName}' was not found. falling back to the default tab.`);\n }\n return new DefaultTab();\n }\n}\n","import { DockviewPanel } from './dockviewPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { DockviewApi } from '../api/component.api';\nexport class DefaultDockviewDeserialzier {\n constructor(accessor) {\n this.accessor = accessor;\n }\n fromJSON(panelData, group) {\n var _a, _b;\n const panelId = panelData.id;\n const params = panelData.params;\n const title = panelData.title;\n const viewData = panelData.view;\n const contentComponent = viewData\n ? viewData.content.id\n : (_a = panelData.contentComponent) !== null && _a !== void 0 ? _a : 'unknown';\n const tabComponent = viewData\n ? (_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id\n : panelData.tabComponent;\n const view = new DockviewPanelModel(this.accessor, panelId, contentComponent, tabComponent);\n const panel = new DockviewPanel(panelId, contentComponent, tabComponent, this.accessor, new DockviewApi(this.accessor), group, view, {\n renderer: panelData.renderer,\n minimumWidth: panelData.minimumWidth,\n minimumHeight: panelData.minimumHeight,\n maximumWidth: panelData.maximumWidth,\n maximumHeight: panelData.maximumHeight,\n });\n panel.init({\n title: title !== null && title !== void 0 ? title : panelId,\n params: params !== null && params !== void 0 ? params : {},\n });\n return panel;\n }\n}\n","import { CompositeDisposable } from '../../../lifecycle';\nexport class Watermark extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._element = document.createElement('div');\n this._element.className = 'dv-watermark';\n }\n init(_params) {\n // noop\n }\n}\n","import { disableIframePointEvents, quasiDefaultPrevented, toggleClass, } from '../dom';\nimport { Emitter, addDisposableListener, } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { clamp } from '../math';\nclass AriaLevelTracker {\n constructor() {\n this._orderedList = [];\n }\n push(element) {\n this._orderedList = [\n ...this._orderedList.filter((item) => item !== element),\n element,\n ];\n this.update();\n }\n destroy(element) {\n this._orderedList = this._orderedList.filter((item) => item !== element);\n this.update();\n }\n update() {\n for (let i = 0; i < this._orderedList.length; i++) {\n this._orderedList[i].setAttribute('aria-level', `${i}`);\n this._orderedList[i].style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${i * 2})`;\n }\n }\n}\nconst arialLevelTracker = new AriaLevelTracker();\nexport class Overlay extends CompositeDisposable {\n set minimumInViewportWidth(value) {\n this.options.minimumInViewportWidth = value;\n }\n set minimumInViewportHeight(value) {\n this.options.minimumInViewportHeight = value;\n }\n get element() {\n return this._element;\n }\n get isVisible() {\n return this._isVisible;\n }\n constructor(options) {\n super();\n this.options = options;\n this._element = document.createElement('div');\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onDidChangeEnd = new Emitter();\n this.onDidChangeEnd = this._onDidChangeEnd.event;\n this.addDisposables(this._onDidChange, this._onDidChangeEnd);\n this._element.className = 'dv-resize-container';\n this._isVisible = true;\n this.setupResize('top');\n this.setupResize('bottom');\n this.setupResize('left');\n this.setupResize('right');\n this.setupResize('topleft');\n this.setupResize('topright');\n this.setupResize('bottomleft');\n this.setupResize('bottomright');\n this._element.appendChild(this.options.content);\n this.options.container.appendChild(this._element);\n // if input bad resize within acceptable boundaries\n this.setBounds(Object.assign(Object.assign(Object.assign(Object.assign({ height: this.options.height, width: this.options.width }, ('top' in this.options && { top: this.options.top })), ('bottom' in this.options && { bottom: this.options.bottom })), ('left' in this.options && { left: this.options.left })), ('right' in this.options && { right: this.options.right })));\n arialLevelTracker.push(this._element);\n }\n setVisible(isVisible) {\n if (isVisible === this.isVisible) {\n return;\n }\n this._isVisible = isVisible;\n toggleClass(this.element, 'dv-hidden', !this.isVisible);\n }\n bringToFront() {\n arialLevelTracker.push(this._element);\n }\n setBounds(bounds = {}) {\n if (typeof bounds.height === 'number') {\n this._element.style.height = `${bounds.height}px`;\n }\n if (typeof bounds.width === 'number') {\n this._element.style.width = `${bounds.width}px`;\n }\n if ('top' in bounds && typeof bounds.top === 'number') {\n this._element.style.top = `${bounds.top}px`;\n this._element.style.bottom = 'auto';\n this.verticalAlignment = 'top';\n }\n if ('bottom' in bounds && typeof bounds.bottom === 'number') {\n this._element.style.bottom = `${bounds.bottom}px`;\n this._element.style.top = 'auto';\n this.verticalAlignment = 'bottom';\n }\n if ('left' in bounds && typeof bounds.left === 'number') {\n this._element.style.left = `${bounds.left}px`;\n this._element.style.right = 'auto';\n this.horiziontalAlignment = 'left';\n }\n if ('right' in bounds && typeof bounds.right === 'number') {\n this._element.style.right = `${bounds.right}px`;\n this._element.style.left = 'auto';\n this.horiziontalAlignment = 'right';\n }\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n // region: ensure bounds within allowable limits\n // a minimum width of minimumViewportWidth must be inside the viewport\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n // a minimum height of minimumViewportHeight must be inside the viewport\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n if (this.verticalAlignment === 'top') {\n const top = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.top = `${top}px`;\n this._element.style.bottom = 'auto';\n }\n if (this.verticalAlignment === 'bottom') {\n const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n this._element.style.bottom = `${bottom}px`;\n this._element.style.top = 'auto';\n }\n if (this.horiziontalAlignment === 'left') {\n const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.left = `${left}px`;\n this._element.style.right = 'auto';\n }\n if (this.horiziontalAlignment === 'right') {\n const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n this._element.style.right = `${right}px`;\n this._element.style.left = 'auto';\n }\n this._onDidChange.fire();\n }\n toJSON() {\n const container = this.options.container.getBoundingClientRect();\n const element = this._element.getBoundingClientRect();\n const result = {};\n if (this.verticalAlignment === 'top') {\n result.top = parseFloat(this._element.style.top);\n }\n else if (this.verticalAlignment === 'bottom') {\n result.bottom = parseFloat(this._element.style.bottom);\n }\n else {\n result.top = element.top - container.top;\n }\n if (this.horiziontalAlignment === 'left') {\n result.left = parseFloat(this._element.style.left);\n }\n else if (this.horiziontalAlignment === 'right') {\n result.right = parseFloat(this._element.style.right);\n }\n else {\n result.left = element.left - container.left;\n }\n result.width = element.width;\n result.height = element.height;\n return result;\n }\n setupDrag(dragTarget, options = { inDragMode: false }) {\n const move = new MutableDisposable();\n const track = () => {\n let offset = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable({\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const x = e.clientX - containerRect.left;\n const y = e.clientY - containerRect.top;\n toggleClass(this._element, 'dv-resize-container-dragging', true);\n const overlayRect = this._element.getBoundingClientRect();\n if (offset === null) {\n offset = {\n x: e.clientX - overlayRect.left,\n y: e.clientY - overlayRect.top,\n };\n }\n const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));\n const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));\n const top = clamp(y - offset.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const bottom = clamp(offset.y -\n y +\n containerRect.height -\n overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));\n const left = clamp(x - offset.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const right = clamp(offset.x - x + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n this.setBounds(bounds);\n }), addDisposableListener(window, 'pointerup', () => {\n toggleClass(this._element, 'dv-resize-container-dragging', false);\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n };\n this.addDisposables(move, addDisposableListener(dragTarget, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n event.preventDefault();\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n track();\n }), addDisposableListener(this.options.content, 'pointerdown', (event) => {\n if (event.defaultPrevented) {\n return;\n }\n // if somebody has marked this event then treat as a defaultPrevented\n // without actually calling event.preventDefault()\n if (quasiDefaultPrevented(event)) {\n return;\n }\n if (event.shiftKey) {\n track();\n }\n }), addDisposableListener(this.options.content, 'pointerdown', () => {\n arialLevelTracker.push(this._element);\n }, true));\n if (options.inDragMode) {\n track();\n }\n }\n setupResize(direction) {\n const resizeHandleElement = document.createElement('div');\n resizeHandleElement.className = `dv-resize-handle-${direction}`;\n this._element.appendChild(resizeHandleElement);\n const move = new MutableDisposable();\n this.addDisposables(move, addDisposableListener(resizeHandleElement, 'pointerdown', (e) => {\n e.preventDefault();\n let startPosition = null;\n const iframes = disableIframePointEvents();\n move.value = new CompositeDisposable(addDisposableListener(window, 'pointermove', (e) => {\n const containerRect = this.options.container.getBoundingClientRect();\n const overlayRect = this._element.getBoundingClientRect();\n const y = e.clientY - containerRect.top;\n const x = e.clientX - containerRect.left;\n if (startPosition === null) {\n // record the initial dimensions since as all subsequence moves are relative to this\n startPosition = {\n originalY: y,\n originalHeight: overlayRect.height,\n originalX: x,\n originalWidth: overlayRect.width,\n };\n }\n let top = undefined;\n let bottom = undefined;\n let height = undefined;\n let left = undefined;\n let right = undefined;\n let width = undefined;\n const moveTop = () => {\n top = clamp(y, -Number.MAX_VALUE, startPosition.originalY +\n startPosition.originalHeight >\n containerRect.height\n ? this.getMinimumHeight(containerRect.height)\n : Math.max(0, startPosition.originalY +\n startPosition.originalHeight -\n Overlay.MINIMUM_HEIGHT));\n height =\n startPosition.originalY +\n startPosition.originalHeight -\n top;\n bottom = containerRect.height - top - height;\n };\n const moveBottom = () => {\n top =\n startPosition.originalY -\n startPosition.originalHeight;\n height = clamp(y - top, top < 0 &&\n typeof this.options\n .minimumInViewportHeight === 'number'\n ? -top +\n this.options.minimumInViewportHeight\n : Overlay.MINIMUM_HEIGHT, Number.MAX_VALUE);\n bottom = containerRect.height - top - height;\n };\n const moveLeft = () => {\n left = clamp(x, -Number.MAX_VALUE, startPosition.originalX +\n startPosition.originalWidth >\n containerRect.width\n ? this.getMinimumWidth(containerRect.width)\n : Math.max(0, startPosition.originalX +\n startPosition.originalWidth -\n Overlay.MINIMUM_WIDTH));\n width =\n startPosition.originalX +\n startPosition.originalWidth -\n left;\n right = containerRect.width - left - width;\n };\n const moveRight = () => {\n left =\n startPosition.originalX -\n startPosition.originalWidth;\n width = clamp(x - left, left < 0 &&\n typeof this.options\n .minimumInViewportWidth === 'number'\n ? -left +\n this.options.minimumInViewportWidth\n : Overlay.MINIMUM_WIDTH, Number.MAX_VALUE);\n right = containerRect.width - left - width;\n };\n switch (direction) {\n case 'top':\n moveTop();\n break;\n case 'bottom':\n moveBottom();\n break;\n case 'left':\n moveLeft();\n break;\n case 'right':\n moveRight();\n break;\n case 'topleft':\n moveTop();\n moveLeft();\n break;\n case 'topright':\n moveTop();\n moveRight();\n break;\n case 'bottomleft':\n moveBottom();\n moveLeft();\n break;\n case 'bottomright':\n moveBottom();\n moveRight();\n break;\n }\n const bounds = {};\n // Anchor to top or to bottom depending on which one is closer\n if (top <= bottom) {\n bounds.top = top;\n }\n else {\n bounds.bottom = bottom;\n }\n // Anchor to left or to right depending on which one is closer\n if (left <= right) {\n bounds.left = left;\n }\n else {\n bounds.right = right;\n }\n bounds.height = height;\n bounds.width = width;\n this.setBounds(bounds);\n }), {\n dispose: () => {\n iframes.release();\n },\n }, addDisposableListener(window, 'pointerup', () => {\n move.dispose();\n this._onDidChangeEnd.fire();\n }));\n }));\n }\n getMinimumWidth(width) {\n if (typeof this.options.minimumInViewportWidth === 'number') {\n return width - this.options.minimumInViewportWidth;\n }\n return 0;\n }\n getMinimumHeight(height) {\n if (typeof this.options.minimumInViewportHeight === 'number') {\n return height - this.options.minimumInViewportHeight;\n }\n return 0;\n }\n dispose() {\n arialLevelTracker.destroy(this._element);\n this._element.remove();\n super.dispose();\n }\n}\nOverlay.MINIMUM_HEIGHT = 20;\nOverlay.MINIMUM_WIDTH = 20;\n","import { CompositeDisposable } from '../lifecycle';\nexport class DockviewFloatingGroupPanel extends CompositeDisposable {\n constructor(group, overlay) {\n super();\n this.group = group;\n this.overlay = overlay;\n this.addDisposables(overlay);\n }\n position(bounds) {\n this.overlay.setBounds(bounds);\n }\n}\n","export const DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;\nexport const DEFAULT_FLOATING_GROUP_POSITION = { left: 100, top: 100, width: 300, height: 300 };\nexport const DESERIALIZATION_POPOUT_DELAY_MS = 100;\n","import { DragAndDropObserver } from '../dnd/dnd';\nimport { getDomNodePagePosition, toggleClass } from '../dom';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../lifecycle';\nclass PositionCache {\n constructor() {\n this.cache = new Map();\n this.currentFrameId = 0;\n this.rafId = null;\n }\n getPosition(element) {\n const cached = this.cache.get(element);\n if (cached && cached.frameId === this.currentFrameId) {\n return cached.rect;\n }\n this.scheduleFrameUpdate();\n const rect = getDomNodePagePosition(element);\n this.cache.set(element, { rect, frameId: this.currentFrameId });\n return rect;\n }\n invalidate() {\n this.currentFrameId++;\n }\n scheduleFrameUpdate() {\n if (this.rafId)\n return;\n this.rafId = requestAnimationFrame(() => {\n this.currentFrameId++;\n this.rafId = null;\n });\n }\n}\nfunction createFocusableElement() {\n const element = document.createElement('div');\n element.tabIndex = -1;\n return element;\n}\nexport class OverlayRenderContainer extends CompositeDisposable {\n constructor(element, accessor) {\n super();\n this.element = element;\n this.accessor = accessor;\n this.map = {};\n this._disposed = false;\n this.positionCache = new PositionCache();\n this.pendingUpdates = new Set();\n this.addDisposables(Disposable.from(() => {\n for (const value of Object.values(this.map)) {\n value.disposable.dispose();\n value.destroy.dispose();\n }\n this._disposed = true;\n }));\n }\n updateAllPositions() {\n if (this._disposed) {\n return;\n }\n // Invalidate position cache to force recalculation\n this.positionCache.invalidate();\n // Call resize function directly for all visible panels\n for (const entry of Object.values(this.map)) {\n if (entry.panel.api.isVisible && entry.resize) {\n entry.resize();\n }\n }\n }\n detatch(panel) {\n if (this.map[panel.api.id]) {\n const { disposable, destroy } = this.map[panel.api.id];\n disposable.dispose();\n destroy.dispose();\n delete this.map[panel.api.id];\n return true;\n }\n return false;\n }\n attach(options) {\n const { panel, referenceContainer } = options;\n if (!this.map[panel.api.id]) {\n const element = createFocusableElement();\n element.className = 'dv-render-overlay';\n this.map[panel.api.id] = {\n panel,\n disposable: Disposable.NONE,\n destroy: Disposable.NONE,\n element,\n };\n }\n const focusContainer = this.map[panel.api.id].element;\n if (panel.view.content.element.parentElement !== focusContainer) {\n focusContainer.appendChild(panel.view.content.element);\n }\n if (focusContainer.parentElement !== this.element) {\n this.element.appendChild(focusContainer);\n }\n const resize = () => {\n const panelId = panel.api.id;\n if (this.pendingUpdates.has(panelId)) {\n return; // Update already scheduled\n }\n this.pendingUpdates.add(panelId);\n requestAnimationFrame(() => {\n this.pendingUpdates.delete(panelId);\n if (this.isDisposed || !this.map[panelId]) {\n return;\n }\n const box = this.positionCache.getPosition(referenceContainer.element);\n const box2 = this.positionCache.getPosition(this.element);\n // Use traditional positioning for overlay containers\n const left = box.left - box2.left;\n const top = box.top - box2.top;\n const width = box.width;\n const height = box.height;\n focusContainer.style.left = `${left}px`;\n focusContainer.style.top = `${top}px`;\n focusContainer.style.width = `${width}px`;\n focusContainer.style.height = `${height}px`;\n toggleClass(focusContainer, 'dv-render-overlay-float', panel.group.api.location.type === 'floating');\n });\n };\n const visibilityChanged = () => {\n if (panel.api.isVisible) {\n this.positionCache.invalidate();\n resize();\n }\n focusContainer.style.display = panel.api.isVisible ? '' : 'none';\n };\n const observerDisposable = new MutableDisposable();\n const correctLayerPosition = () => {\n if (panel.api.location.type === 'floating') {\n queueMicrotask(() => {\n const floatingGroup = this.accessor.floatingGroups.find((group) => group.group === panel.api.group);\n if (!floatingGroup) {\n return;\n }\n const element = floatingGroup.overlay.element;\n const update = () => {\n const level = Number(element.getAttribute('aria-level'));\n focusContainer.style.zIndex = `calc(var(--dv-overlay-z-index, 999) + ${level * 2 + 1})`;\n };\n const observer = new MutationObserver(() => {\n update();\n });\n observerDisposable.value = Disposable.from(() => observer.disconnect());\n observer.observe(element, {\n attributeFilter: ['aria-level'],\n attributes: true,\n });\n update();\n });\n }\n else {\n focusContainer.style.zIndex = ''; // reset the z-index, perhaps CSS will take over here\n }\n };\n const disposable = new CompositeDisposable(observerDisposable, \n /**\n * since container is positioned absoutely we must explicitly forward\n * the dnd events for the expect behaviours to continue to occur in terms of dnd\n *\n * the dnd observer does not need to be conditional on whether the panel is visible since\n * non-visible panels are 'display: none' and in such case the dnd observer will not fire.\n */\n new DragAndDropObserver(focusContainer, {\n onDragEnd: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnd(e);\n },\n onDragEnter: (e) => {\n referenceContainer.dropTarget.dnd.onDragEnter(e);\n },\n onDragLeave: (e) => {\n referenceContainer.dropTarget.dnd.onDragLeave(e);\n },\n onDrop: (e) => {\n referenceContainer.dropTarget.dnd.onDrop(e);\n },\n onDragOver: (e) => {\n referenceContainer.dropTarget.dnd.onDragOver(e);\n },\n }), panel.api.onDidVisibilityChange(() => {\n /**\n * Control the visibility of the content, however even when not visible (display: none)\n * the content is still maintained within the DOM hence DOM specific attributes\n * such as scroll position are maintained when next made visible.\n */\n visibilityChanged();\n }), panel.api.onDidDimensionsChange(() => {\n if (!panel.api.isVisible) {\n return;\n }\n resize();\n }), panel.api.onDidLocationChange(() => {\n correctLayerPosition();\n }));\n this.map[panel.api.id].destroy = Disposable.from(() => {\n var _a;\n if (panel.view.content.element.parentElement === focusContainer) {\n focusContainer.removeChild(panel.view.content.element);\n }\n (_a = focusContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(focusContainer);\n });\n correctLayerPosition();\n queueMicrotask(() => {\n if (this.isDisposed) {\n return;\n }\n /**\n * wait until everything has finished in the current stack-frame call before\n * calling the first resize as other size-altering events may still occur before\n * the end of the stack-frame.\n */\n visibilityChanged();\n });\n // dispose of logic asoccciated with previous reference-container\n this.map[panel.api.id].disposable.dispose();\n // and reset the disposable to the active reference-container\n this.map[panel.api.id].disposable = disposable;\n // store the resize function for direct access\n this.map[panel.api.id].resize = resize;\n return focusContainer;\n }\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { addStyles } from './dom';\nimport { Emitter, addDisposableListener } from './events';\nimport { CompositeDisposable, Disposable } from './lifecycle';\nexport class PopoutWindow extends CompositeDisposable {\n get window() {\n var _a, _b;\n return (_b = (_a = this._window) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n }\n constructor(target, className, options) {\n super();\n this.target = target;\n this.className = className;\n this.options = options;\n this._onWillClose = new Emitter();\n this.onWillClose = this._onWillClose.event;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._window = null;\n this.addDisposables(this._onWillClose, this._onDidClose, {\n dispose: () => {\n this.close();\n },\n });\n }\n dimensions() {\n if (!this._window) {\n return null;\n }\n const left = this._window.value.screenX;\n const top = this._window.value.screenY;\n const width = this._window.value.innerWidth;\n const height = this._window.value.innerHeight;\n return { top, left, width, height };\n }\n close() {\n var _a, _b;\n if (this._window) {\n this._onWillClose.fire();\n (_b = (_a = this.options).onWillClose) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: this._window.value,\n });\n this._window.disposable.dispose();\n this._window = null;\n this._onDidClose.fire();\n }\n }\n open() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._window) {\n throw new Error('instance of popout window is already open');\n }\n const url = `${this.options.url}`;\n const features = Object.entries({\n top: this.options.top,\n left: this.options.left,\n width: this.options.width,\n height: this.options.height,\n })\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/open\n */\n const externalWindow = window.open(url, this.target, features);\n if (!externalWindow) {\n /**\n * Popup blocked\n */\n return null;\n }\n const disposable = new CompositeDisposable();\n this._window = { value: externalWindow, disposable };\n disposable.addDisposables(Disposable.from(() => {\n externalWindow.close();\n }), addDisposableListener(window, 'beforeunload', () => {\n /**\n * before the main window closes we should close this popup too\n * to be good citizens\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n }));\n const container = this.createPopoutWindowContainer();\n if (this.className) {\n container.classList.add(this.className);\n }\n (_b = (_a = this.options).onDidOpen) === null || _b === void 0 ? void 0 : _b.call(_a, {\n id: this.target,\n window: externalWindow,\n });\n return new Promise((resolve, reject) => {\n externalWindow.addEventListener('unload', (e) => {\n // if page fails to load before unloading\n // this.close();\n });\n externalWindow.addEventListener('load', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\n */\n try {\n const externalDocument = externalWindow.document;\n externalDocument.title = document.title;\n externalDocument.body.appendChild(container);\n addStyles(externalDocument, window.document.styleSheets);\n /**\n * beforeunload must be registered after load for reasons I could not determine\n * otherwise the beforeunload event will not fire when the window is closed\n */\n addDisposableListener(externalWindow, 'beforeunload', () => {\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event\n */\n this.close();\n });\n resolve(container);\n }\n catch (err) {\n // only except this is the DOM isn't setup. e.g. in a in correctly configured test\n reject(err);\n }\n });\n });\n });\n }\n createPopoutWindowContainer() {\n const el = document.createElement('div');\n el.classList.add('dv-popout-window');\n el.id = 'dv-popout-window';\n el.style.position = 'absolute';\n el.style.width = '100%';\n el.style.height = '100%';\n el.style.top = '0px';\n el.style.left = '0px';\n return el;\n }\n}\n","import { CompositeDisposable } from '../lifecycle';\nexport class StrictEventsSequencing extends CompositeDisposable {\n constructor(accessor) {\n super();\n this.accessor = accessor;\n this.init();\n }\n init() {\n const panels = new Set();\n const groups = new Set();\n this.addDisposables(this.accessor.onDidAddPanel((panel) => {\n if (panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddPanel] called for panel ${panel.api.id} but panel already exists`);\n }\n else {\n panels.add(panel.api.id);\n }\n }), this.accessor.onDidRemovePanel((panel) => {\n if (!panels.has(panel.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemovePanel] called for panel ${panel.api.id} but panel does not exists`);\n }\n else {\n panels.delete(panel.api.id);\n }\n }), this.accessor.onDidAddGroup((group) => {\n if (groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidAddGroup] called for group ${group.api.id} but group already exists`);\n }\n else {\n groups.add(group.api.id);\n }\n }), this.accessor.onDidRemoveGroup((group) => {\n if (!groups.has(group.api.id)) {\n throw new Error(`dockview: Invalid event sequence. [onDidRemoveGroup] called for group ${group.api.id} but group does not exists`);\n }\n else {\n groups.delete(group.api.id);\n }\n }));\n }\n}\n","import { shiftAbsoluteElementIntoView } from '../../dom';\nimport { addDisposableListener } from '../../events';\nimport { CompositeDisposable, Disposable, MutableDisposable, } from '../../lifecycle';\nexport class PopupService extends CompositeDisposable {\n constructor(root) {\n super();\n this.root = root;\n this._active = null;\n this._activeDisposable = new MutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-popover-anchor';\n this._element.style.position = 'relative';\n this.root.prepend(this._element);\n this.addDisposables(Disposable.from(() => {\n this.close();\n }), this._activeDisposable);\n }\n openPopover(element, position) {\n var _a;\n this.close();\n const wrapper = document.createElement('div');\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = (_a = position.zIndex) !== null && _a !== void 0 ? _a : 'var(--dv-overlay-z-index)';\n wrapper.appendChild(element);\n const anchorBox = this._element.getBoundingClientRect();\n const offsetX = anchorBox.left;\n const offsetY = anchorBox.top;\n wrapper.style.top = `${position.y - offsetY}px`;\n wrapper.style.left = `${position.x - offsetX}px`;\n this._element.appendChild(wrapper);\n this._active = wrapper;\n this._activeDisposable.value = new CompositeDisposable(addDisposableListener(window, 'pointerdown', (event) => {\n var _a;\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n let el = target;\n while (el && el !== wrapper) {\n el = (_a = el === null || el === void 0 ? void 0 : el.parentElement) !== null && _a !== void 0 ? _a : null;\n }\n if (el) {\n return; // clicked within popover\n }\n this.close();\n }));\n requestAnimationFrame(() => {\n shiftAbsoluteElementIntoView(wrapper, this.root);\n });\n }\n close() {\n if (this._active) {\n this._active.remove();\n this._activeDisposable.dispose();\n this._active = null;\n }\n }\n}\n","import { CompositeDisposable, Disposable } from '../lifecycle';\nexport class DropTargetAnchorContainer extends CompositeDisposable {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n var _a;\n if (this.disabled === value) {\n return;\n }\n this._disabled = value;\n if (value) {\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }\n }\n get model() {\n if (this.disabled) {\n return undefined;\n }\n return {\n clear: () => {\n var _a;\n if (this._model) {\n (_a = this._model.root.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this._model.root);\n }\n this._model = undefined;\n },\n exists: () => {\n return !!this._model;\n },\n getElements: (event, outline) => {\n const changed = this._outline !== outline;\n this._outline = outline;\n if (this._model) {\n this._model.changed = changed;\n return this._model;\n }\n const container = this.createContainer();\n const anchor = this.createAnchor();\n this._model = { root: container, overlay: anchor, changed };\n container.appendChild(anchor);\n this.element.appendChild(container);\n if ((event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement) {\n const targetBox = event.target.getBoundingClientRect();\n const box = this.element.getBoundingClientRect();\n anchor.style.left = `${targetBox.left - box.left}px`;\n anchor.style.top = `${targetBox.top - box.top}px`;\n }\n return this._model;\n },\n };\n }\n constructor(element, options) {\n super();\n this.element = element;\n this._disabled = false;\n this._disabled = options.disabled;\n this.addDisposables(Disposable.from(() => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.clear();\n }));\n }\n createContainer() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-container';\n return el;\n }\n createAnchor() {\n const el = document.createElement('div');\n el.className = 'dv-drop-target-anchor';\n el.style.visibility = 'hidden';\n return el;\n }\n}\n","import { getRelativeLocation, getGridLocation, orthogonal, } from '../gridview/gridview';\nimport { directionToPosition, Droptarget, } from '../dnd/droptarget';\nimport { tail, sequenceEquals, remove } from '../array';\nimport { DockviewPanel } from './dockviewPanel';\nimport { CompositeDisposable, Disposable } from '../lifecycle';\nimport { Event, Emitter, addDisposableListener } from '../events';\nimport { Watermark } from './components/watermark/watermark';\nimport { sequentialNumberGenerator } from '../math';\nimport { DefaultDockviewDeserialzier } from './deserializer';\nimport { DockviewUnhandledDragOverEvent, isGroupOptionsWithGroup, isGroupOptionsWithPanel, isPanelOptionsWithGroup, isPanelOptionsWithPanel, } from './options';\nimport { BaseGrid, toTarget, } from '../gridview/baseComponentGridview';\nimport { DockviewApi } from '../api/component.api';\nimport { Orientation } from '../splitview/splitview';\nimport { DockviewDidDropEvent, DockviewWillDropEvent, } from './dockviewGroupPanelModel';\nimport { WillShowOverlayLocationEvent } from './events';\nimport { DockviewGroupPanel } from './dockviewGroupPanel';\nimport { DockviewPanelModel } from './dockviewPanelModel';\nimport { getPanelData } from '../dnd/dataTransfer';\nimport { Overlay } from '../overlay/overlay';\nimport { addTestId, Classnames, getDockviewTheme, onDidWindowResizeEnd, onDidWindowMoveEnd, toggleClass, watchElementResize, } from '../dom';\nimport { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';\nimport { DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, DEFAULT_FLOATING_GROUP_POSITION, DESERIALIZATION_POPOUT_DELAY_MS, } from '../constants';\nimport { OverlayRenderContainer, } from '../overlay/overlayRenderContainer';\nimport { PopoutWindow } from '../popoutWindow';\nimport { StrictEventsSequencing } from './strictEventsSequencing';\nimport { PopupService } from './components/popupService';\nimport { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';\nimport { themeAbyss } from './theme';\nconst DEFAULT_ROOT_OVERLAY_MODEL = {\n activationSize: { type: 'pixels', value: 10 },\n size: { type: 'pixels', value: 20 },\n};\nfunction moveGroupWithoutDestroying(options) {\n const activePanel = options.from.activePanel;\n const panels = [...options.from.panels].map((panel) => {\n const removedPanel = options.from.model.removePanel(panel);\n options.from.model.renderContainer.detatch(panel);\n return removedPanel;\n });\n panels.forEach((panel) => {\n options.to.model.openPanel(panel, {\n skipSetActive: activePanel !== panel,\n skipSetGroupActive: true,\n });\n });\n}\nexport class DockviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n get totalPanels() {\n return this.panels.length;\n }\n get panels() {\n return this.groups.flatMap((group) => group.panels);\n }\n get options() {\n return this._options;\n }\n get activePanel() {\n const activeGroup = this.activeGroup;\n if (!activeGroup) {\n return undefined;\n }\n return activeGroup.activePanel;\n }\n get renderer() {\n var _a;\n return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisible';\n }\n get api() {\n return this._api;\n }\n get floatingGroups() {\n return this._floatingGroups;\n }\n /**\n * Promise that resolves when all popout groups from the last fromJSON call are restored.\n * Useful for tests that need to wait for delayed popout creation.\n */\n get popoutRestorationPromise() {\n return this._popoutRestorationPromise;\n }\n constructor(container, options) {\n var _a, _b, _c;\n super(container, {\n proportionalLayout: true,\n orientation: Orientation.HORIZONTAL,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n locked: options.locked,\n margin: (_b = (_a = options.theme) === null || _a === void 0 ? void 0 : _a.gap) !== null && _b !== void 0 ? _b : 0,\n className: options.className,\n });\n this.nextGroupId = sequentialNumberGenerator();\n this._deserializer = new DefaultDockviewDeserialzier(this);\n this._watermark = null;\n this._onWillDragPanel = new Emitter();\n this.onWillDragPanel = this._onWillDragPanel.event;\n this._onWillDragGroup = new Emitter();\n this.onWillDragGroup = this._onWillDragGroup.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onWillDrop = new Emitter();\n this.onWillDrop = this._onWillDrop.event;\n this._onWillShowOverlay = new Emitter();\n this.onWillShowOverlay = this._onWillShowOverlay.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this._onDidRemovePanel = new Emitter();\n this.onDidRemovePanel = this._onDidRemovePanel.event;\n this._onDidAddPanel = new Emitter();\n this.onDidAddPanel = this._onDidAddPanel.event;\n this._onDidPopoutGroupSizeChange = new Emitter();\n this.onDidPopoutGroupSizeChange = this._onDidPopoutGroupSizeChange.event;\n this._onDidPopoutGroupPositionChange = new Emitter();\n this.onDidPopoutGroupPositionChange = this._onDidPopoutGroupPositionChange.event;\n this._onDidOpenPopoutWindowFail = new Emitter();\n this.onDidOpenPopoutWindowFail = this._onDidOpenPopoutWindowFail.event;\n this._onDidLayoutFromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutFromJSON.event;\n this._onDidActivePanelChange = new Emitter({ replay: true });\n this.onDidActivePanelChange = this._onDidActivePanelChange.event;\n this._onDidMovePanel = new Emitter();\n this.onDidMovePanel = this._onDidMovePanel.event;\n this._onDidMaximizedGroupChange = new Emitter();\n this.onDidMaximizedGroupChange = this._onDidMaximizedGroupChange.event;\n this._floatingGroups = [];\n this._popoutGroups = [];\n this._popoutRestorationPromise = Promise.resolve();\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidOptionsChange = new Emitter();\n this.onDidOptionsChange = this._onDidOptionsChange.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._moving = false;\n this._options = options;\n this.popupService = new PopupService(this.element);\n this._themeClassnames = new Classnames(this.element);\n this._api = new DockviewApi(this);\n this.rootDropTargetContainer = new DropTargetAnchorContainer(this.element, { disabled: true });\n this.overlayRenderContainer = new OverlayRenderContainer(this.gridview.element, this);\n this._rootDropTarget = new Droptarget(this.element, {\n className: 'dv-drop-target-edge',\n canDisplayOverlay: (event, position) => {\n const data = getPanelData();\n if (data) {\n if (data.viewId !== this.id) {\n return false;\n }\n if (position === 'center') {\n // center drop target is only allowed if there are no panels in the grid\n // floating panels are allowed\n return this.gridview.length === 0;\n }\n return true;\n }\n if (position === 'center' && this.gridview.length !== 0) {\n /**\n * for external events only show the four-corner drag overlays, disable\n * the center position so that external drag events can fall through to the group\n * and panel drop target handlers\n */\n return false;\n }\n const firedEvent = new DockviewUnhandledDragOverEvent(event, 'edge', position, getPanelData);\n this._onUnhandledDragOverEvent.fire(firedEvent);\n return firedEvent.isAccepted;\n },\n acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],\n overlayModel: (_c = options.rootOverlayModel) !== null && _c !== void 0 ? _c : DEFAULT_ROOT_OVERLAY_MODEL,\n getOverrideTarget: () => { var _a; return (_a = this.rootDropTargetContainer) === null || _a === void 0 ? void 0 : _a.model; },\n });\n this.updateDropTargetModel(options);\n toggleClass(this.gridview.element, 'dv-dockview', true);\n toggleClass(this.element, 'dv-debug', !!options.debug);\n this.updateTheme();\n this.updateWatermark();\n if (options.debug) {\n this.addDisposables(new StrictEventsSequencing(this));\n }\n this.addDisposables(this.rootDropTargetContainer, this.overlayRenderContainer, this._onWillDragPanel, this._onWillDragGroup, this._onWillShowOverlay, this._onDidActivePanelChange, this._onDidAddPanel, this._onDidRemovePanel, this._onDidLayoutFromJSON, this._onDidDrop, this._onWillDrop, this._onDidMovePanel, this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this._onUnhandledDragOverEvent, this._onDidMaximizedGroupChange, this._onDidOptionsChange, this._onDidPopoutGroupSizeChange, this._onDidPopoutGroupPositionChange, this._onDidOpenPopoutWindowFail, this.onDidViewVisibilityChangeMicroTaskQueue(() => {\n this.updateWatermark();\n }), this.onDidAdd((event) => {\n if (!this._moving) {\n this._onDidAddGroup.fire(event);\n }\n }), this.onDidRemove((event) => {\n if (!this._moving) {\n this._onDidRemoveGroup.fire(event);\n }\n }), this.onDidActiveChange((event) => {\n if (!this._moving) {\n this._onDidActiveGroupChange.fire(event);\n }\n }), this.onDidMaximizedChange((event) => {\n this._onDidMaximizedGroupChange.fire({\n group: event.panel,\n isMaximized: event.isMaximized,\n });\n }), Event.any(this.onDidAdd, this.onDidRemove)(() => {\n this.updateWatermark();\n }), Event.any(this.onDidAddPanel, this.onDidRemovePanel, this.onDidAddGroup, this.onDidRemove, this.onDidMovePanel, this.onDidActivePanelChange, this.onDidPopoutGroupPositionChange, this.onDidPopoutGroupSizeChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }), Disposable.from(() => {\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._floatingGroups]) {\n group.dispose();\n }\n // iterate over a copy of the array since .dispose() mutates the original array\n for (const group of [...this._popoutGroups]) {\n group.disposable.dispose();\n }\n }), this._rootDropTarget, this._rootDropTarget.onWillShowOverlay((event) => {\n if (this.gridview.length > 0 && event.position === 'center') {\n // option only available when no panels in primary grid\n return;\n }\n this._onWillShowOverlay.fire(new WillShowOverlayLocationEvent(event, {\n kind: 'edge',\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }), this._rootDropTarget.onDrop((event) => {\n var _a;\n const willDropEvent = new DockviewWillDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n kind: 'edge',\n });\n this._onWillDrop.fire(willDropEvent);\n if (willDropEvent.defaultPrevented) {\n return;\n }\n const data = getPanelData();\n if (data) {\n this.moveGroupOrPanel({\n from: {\n groupId: data.groupId,\n panelId: (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined,\n },\n to: {\n group: this.orthogonalize(event.position),\n position: 'center',\n },\n });\n }\n else {\n this._onDidDrop.fire(new DockviewDidDropEvent({\n nativeEvent: event.nativeEvent,\n position: event.position,\n panel: undefined,\n api: this._api,\n group: undefined,\n getData: getPanelData,\n }));\n }\n }), this._rootDropTarget);\n }\n setVisible(panel, visible) {\n switch (panel.api.location.type) {\n case 'grid':\n super.setVisible(panel, visible);\n break;\n case 'floating': {\n const item = this.floatingGroups.find((floatingGroup) => floatingGroup.group === panel);\n if (item) {\n item.overlay.setVisible(visible);\n panel.api._onDidVisibilityChange.fire({\n isVisible: visible,\n });\n }\n break;\n }\n case 'popout':\n console.warn('dockview: You cannot hide a group that is in a popout window');\n break;\n }\n }\n addPopoutGroup(itemToPopout, options) {\n var _a, _b, _c, _d, _e;\n if (itemToPopout instanceof DockviewPanel &&\n itemToPopout.group.size === 1) {\n return this.addPopoutGroup(itemToPopout.group, options);\n }\n const theme = getDockviewTheme(this.gridview.element);\n const element = this.element;\n function getBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n return options.position;\n }\n if (itemToPopout instanceof DockviewGroupPanel) {\n return itemToPopout.element.getBoundingClientRect();\n }\n if (itemToPopout.group) {\n return itemToPopout.group.element.getBoundingClientRect();\n }\n return element.getBoundingClientRect();\n }\n const box = getBox();\n const groupId = (_b = (_a = options === null || options === void 0 ? void 0 : options.overridePopoutGroup) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : this.getNextGroupId();\n const _window = new PopoutWindow(`${this.id}-${groupId}`, // unique id\n theme !== null && theme !== void 0 ? theme : '', {\n url: (_e = (_c = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _c !== void 0 ? _c : (_d = this.options) === null || _d === void 0 ? void 0 : _d.popoutUrl) !== null && _e !== void 0 ? _e : '/popout.html',\n left: window.screenX + box.left,\n top: window.screenY + box.top,\n width: box.width,\n height: box.height,\n onDidOpen: options === null || options === void 0 ? void 0 : options.onDidOpen,\n onWillClose: options === null || options === void 0 ? void 0 : options.onWillClose,\n });\n const popoutWindowDisposable = new CompositeDisposable(_window, _window.onDidClose(() => {\n popoutWindowDisposable.dispose();\n }));\n return _window\n .open()\n .then((popoutContainer) => {\n var _a;\n if (_window.isDisposed) {\n return false;\n }\n const referenceGroup = (options === null || options === void 0 ? void 0 : options.referenceGroup)\n ? options.referenceGroup\n : itemToPopout instanceof DockviewPanel\n ? itemToPopout.group\n : itemToPopout;\n const referenceLocation = itemToPopout.api.location.type;\n /**\n * The group that is being added doesn't already exist within the DOM, the most likely occurrence\n * of this case is when being called from the `fromJSON(...)` method\n */\n const isGroupAddedToDom = referenceGroup.element.parentElement !== null;\n let group;\n if (!isGroupAddedToDom) {\n group = referenceGroup;\n }\n else if (options === null || options === void 0 ? void 0 : options.overridePopoutGroup) {\n group = options.overridePopoutGroup;\n }\n else {\n group = this.createGroup({ id: groupId });\n if (popoutContainer) {\n this._onDidAddGroup.fire(group);\n }\n }\n if (popoutContainer === null) {\n console.error('dockview: failed to create popout. perhaps you need to allow pop-ups for this website');\n popoutWindowDisposable.dispose();\n this._onDidOpenPopoutWindowFail.fire();\n // if the popout window was blocked, we need to move the group back to the reference group\n // and set it to visible\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n return false;\n }\n const gready = document.createElement('div');\n gready.className = 'dv-overlay-render-container';\n const overlayRenderContainer = new OverlayRenderContainer(gready, this);\n group.model.renderContainer = overlayRenderContainer;\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n let floatingBox;\n if (!(options === null || options === void 0 ? void 0 : options.overridePopoutGroup) && isGroupAddedToDom) {\n if (itemToPopout instanceof DockviewPanel) {\n this.movingLock(() => {\n const panel = referenceGroup.model.removePanel(itemToPopout);\n group.model.openPanel(panel);\n });\n }\n else {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: referenceGroup,\n to: group,\n }));\n switch (referenceLocation) {\n case 'grid':\n referenceGroup.api.setVisible(false);\n break;\n case 'floating':\n case 'popout':\n floatingBox = (_a = this._floatingGroups\n .find((value) => value.group.api.id ===\n itemToPopout.api.id)) === null || _a === void 0 ? void 0 : _a.overlay.toJSON();\n this.removeGroup(referenceGroup);\n break;\n }\n }\n }\n popoutContainer.classList.add('dv-dockview');\n popoutContainer.style.overflow = 'hidden';\n popoutContainer.appendChild(gready);\n popoutContainer.appendChild(group.element);\n const anchor = document.createElement('div');\n const dropTargetContainer = new DropTargetAnchorContainer(anchor, { disabled: this.rootDropTargetContainer.disabled });\n popoutContainer.appendChild(anchor);\n group.model.dropTargetContainer = dropTargetContainer;\n group.model.location = {\n type: 'popout',\n getWindow: () => _window.window,\n popoutUrl: options === null || options === void 0 ? void 0 : options.popoutUrl,\n };\n if (isGroupAddedToDom &&\n itemToPopout.api.location.type === 'grid') {\n itemToPopout.api.setVisible(false);\n }\n this.doSetGroupAndPanelActive(group);\n popoutWindowDisposable.addDisposables(group.api.onDidActiveChange((event) => {\n var _a;\n if (event.isActive) {\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }), group.api.onWillFocus(() => {\n var _a;\n (_a = _window.window) === null || _a === void 0 ? void 0 : _a.focus();\n }));\n let returnedGroup;\n const isValidReferenceGroup = isGroupAddedToDom &&\n referenceGroup &&\n this.getPanel(referenceGroup.id);\n const value = {\n window: _window,\n popoutGroup: group,\n referenceGroup: isValidReferenceGroup\n ? referenceGroup.id\n : undefined,\n disposable: {\n dispose: () => {\n popoutWindowDisposable.dispose();\n return returnedGroup;\n },\n },\n };\n const _onDidWindowPositionChange = onDidWindowMoveEnd(_window.window);\n popoutWindowDisposable.addDisposables(_onDidWindowPositionChange, onDidWindowResizeEnd(_window.window, () => {\n this._onDidPopoutGroupSizeChange.fire({\n width: _window.window.innerWidth,\n height: _window.window.innerHeight,\n group,\n });\n }), _onDidWindowPositionChange.event(() => {\n this._onDidPopoutGroupPositionChange.fire({\n screenX: _window.window.screenX,\n screenY: _window.window.screenX,\n group,\n });\n }), \n /**\n * ResizeObserver seems slow here, I do not know why but we don't need it\n * since we can reply on the window resize event as we will occupy the full\n * window dimensions\n */\n addDisposableListener(_window.window, 'resize', () => {\n group.layout(_window.window.innerWidth, _window.window.innerHeight);\n }), overlayRenderContainer, Disposable.from(() => {\n if (this.isDisposed) {\n return; // cleanup may run after instance is disposed\n }\n if (isGroupAddedToDom &&\n this.getPanel(referenceGroup.id)) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: group,\n to: referenceGroup,\n }));\n if (!referenceGroup.api.isVisible) {\n referenceGroup.api.setVisible(true);\n }\n if (this.getPanel(group.id)) {\n this.doRemoveGroup(group, {\n skipPopoutAssociated: true,\n });\n }\n }\n else if (this.getPanel(group.id)) {\n group.model.renderContainer =\n this.overlayRenderContainer;\n group.model.dropTargetContainer =\n this.rootDropTargetContainer;\n returnedGroup = group;\n const alreadyRemoved = !this._popoutGroups.find((p) => p.popoutGroup === group);\n if (alreadyRemoved) {\n /**\n * If this popout group was explicitly removed then we shouldn't run the additional\n * steps. To tell if the running of this disposable is the result of this popout group\n * being explicitly removed we can check if this popout group is still referenced in\n * the `this._popoutGroups` list.\n */\n return;\n }\n if (floatingBox) {\n this.addFloatingGroup(group, {\n height: floatingBox.height,\n width: floatingBox.width,\n position: floatingBox,\n });\n }\n else {\n this.doRemoveGroup(group, {\n skipDispose: true,\n skipActive: true,\n skipPopoutReturn: true,\n });\n group.model.location = { type: 'grid' };\n this.movingLock(() => {\n // suppress group add events since the group already exists\n this.doAddGroup(group, [0]);\n });\n }\n this.doSetGroupAndPanelActive(group);\n }\n }));\n this._popoutGroups.push(value);\n this.updateWatermark();\n return true;\n })\n .catch((err) => {\n console.error('dockview: failed to create popout.', err);\n return false;\n });\n }\n addFloatingGroup(item, options) {\n var _a, _b, _c, _d, _e;\n let group;\n if (item instanceof DockviewPanel) {\n group = this.createGroup();\n this._onDidAddGroup.fire(group);\n this.movingLock(() => this.removePanel(item, {\n removeEmptyGroup: true,\n skipDispose: true,\n skipSetActiveGroup: true,\n }));\n this.movingLock(() => group.model.openPanel(item, { skipSetGroupActive: true }));\n }\n else {\n group = item;\n const popoutReferenceGroupId = (_a = this._popoutGroups.find((_) => _.popoutGroup === group)) === null || _a === void 0 ? void 0 : _a.referenceGroup;\n const popoutReferenceGroup = popoutReferenceGroupId\n ? this.getPanel(popoutReferenceGroupId)\n : undefined;\n const skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&\n options.skipRemoveGroup;\n if (!skip) {\n if (popoutReferenceGroup) {\n this.movingLock(() => moveGroupWithoutDestroying({\n from: item,\n to: popoutReferenceGroup,\n }));\n this.doRemoveGroup(item, {\n skipPopoutReturn: true,\n skipPopoutAssociated: true,\n });\n this.doRemoveGroup(popoutReferenceGroup, {\n skipDispose: true,\n });\n group = popoutReferenceGroup;\n }\n else {\n this.doRemoveGroup(item, {\n skipDispose: true,\n skipPopoutReturn: true,\n skipPopoutAssociated: false,\n });\n }\n }\n }\n function getAnchoredBox() {\n if (options === null || options === void 0 ? void 0 : options.position) {\n const result = {};\n if ('left' in options.position) {\n result.left = Math.max(options.position.left, 0);\n }\n else if ('right' in options.position) {\n result.right = Math.max(options.position.right, 0);\n }\n else {\n result.left = DEFAULT_FLOATING_GROUP_POSITION.left;\n }\n if ('top' in options.position) {\n result.top = Math.max(options.position.top, 0);\n }\n else if ('bottom' in options.position) {\n result.bottom = Math.max(options.position.bottom, 0);\n }\n else {\n result.top = DEFAULT_FLOATING_GROUP_POSITION.top;\n }\n if (typeof options.width === 'number') {\n result.width = Math.max(options.width, 0);\n }\n else {\n result.width = DEFAULT_FLOATING_GROUP_POSITION.width;\n }\n if (typeof options.height === 'number') {\n result.height = Math.max(options.height, 0);\n }\n else {\n result.height = DEFAULT_FLOATING_GROUP_POSITION.height;\n }\n return result;\n }\n return {\n left: typeof (options === null || options === void 0 ? void 0 : options.x) === 'number'\n ? Math.max(options.x, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.left,\n top: typeof (options === null || options === void 0 ? void 0 : options.y) === 'number'\n ? Math.max(options.y, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.top,\n width: typeof (options === null || options === void 0 ? void 0 : options.width) === 'number'\n ? Math.max(options.width, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.width,\n height: typeof (options === null || options === void 0 ? void 0 : options.height) === 'number'\n ? Math.max(options.height, 0)\n : DEFAULT_FLOATING_GROUP_POSITION.height,\n };\n }\n const anchoredBox = getAnchoredBox();\n const overlay = new Overlay(Object.assign(Object.assign({ container: this.gridview.element, content: group.element }, anchoredBox), { minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_c = (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport) !== null && _c !== void 0 ? _c : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE, minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'\n ? undefined\n : (_e = (_d = this.options.floatingGroupBounds) === null || _d === void 0 ? void 0 : _d.minimumHeightWithinViewport) !== null && _e !== void 0 ? _e : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE }));\n const el = group.element.querySelector('.dv-void-container');\n if (!el) {\n throw new Error('failed to find drag handle');\n }\n overlay.setupDrag(el, {\n inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'\n ? options.inDragMode\n : false,\n });\n const floatingGroupPanel = new DockviewFloatingGroupPanel(group, overlay);\n const disposable = new CompositeDisposable(group.api.onDidActiveChange((event) => {\n if (event.isActive) {\n overlay.bringToFront();\n }\n }), watchElementResize(group.element, (entry) => {\n const { width, height } = entry.contentRect;\n group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel\n }));\n floatingGroupPanel.addDisposables(overlay.onDidChange(() => {\n // this is either a resize or a move\n // to inform the panels .layout(...) the group with it's current size\n // don't care about resize since the above watcher handles that\n group.layout(group.width, group.height);\n }), overlay.onDidChangeEnd(() => {\n this._bufferOnDidLayoutChange.fire();\n }), group.onDidChange((event) => {\n overlay.setBounds({\n height: event === null || event === void 0 ? void 0 : event.height,\n width: event === null || event === void 0 ? void 0 : event.width,\n });\n }), {\n dispose: () => {\n disposable.dispose();\n remove(this._floatingGroups, floatingGroupPanel);\n group.model.location = { type: 'grid' };\n this.updateWatermark();\n },\n });\n this._floatingGroups.push(floatingGroupPanel);\n group.model.location = { type: 'floating' };\n if (!(options === null || options === void 0 ? void 0 : options.skipActiveGroup)) {\n this.doSetGroupAndPanelActive(group);\n }\n this.updateWatermark();\n }\n orthogonalize(position, options) {\n this.gridview.normalize();\n switch (position) {\n case 'top':\n case 'bottom':\n if (this.gridview.orientation === Orientation.HORIZONTAL) {\n // we need to add to a vertical splitview but the current root is a horizontal splitview.\n // insert a vertical splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n case 'left':\n case 'right':\n if (this.gridview.orientation === Orientation.VERTICAL) {\n // we need to add to a horizontal splitview but the current root is a vertical splitview.\n // insert a horiziontal splitview at the root level and add the existing view as a child\n this.gridview.insertOrthogonalSplitviewAtRoot();\n }\n break;\n default:\n break;\n }\n switch (position) {\n case 'top':\n case 'left':\n case 'center':\n return this.createGroupAtLocation([0], undefined, options); // insert into first position\n case 'bottom':\n case 'right':\n return this.createGroupAtLocation([this.gridview.length], undefined, options); // insert into last position\n default:\n throw new Error(`unsupported position ${position}`);\n }\n }\n updateOptions(options) {\n var _a, _b;\n super.updateOptions(options);\n if ('floatingGroupBounds' in options) {\n for (const group of this._floatingGroups) {\n switch (options.floatingGroupBounds) {\n case 'boundedWithinViewport':\n group.overlay.minimumInViewportHeight = undefined;\n group.overlay.minimumInViewportWidth = undefined;\n break;\n case undefined:\n group.overlay.minimumInViewportHeight =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n group.overlay.minimumInViewportWidth =\n DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;\n break;\n default:\n group.overlay.minimumInViewportHeight =\n (_a = options.floatingGroupBounds) === null || _a === void 0 ? void 0 : _a.minimumHeightWithinViewport;\n group.overlay.minimumInViewportWidth =\n (_b = options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumWidthWithinViewport;\n }\n group.overlay.setBounds();\n }\n }\n this.updateDropTargetModel(options);\n const oldDisableDnd = this.options.disableDnd;\n this._options = Object.assign(Object.assign({}, this.options), options);\n const newDisableDnd = this.options.disableDnd;\n if (oldDisableDnd !== newDisableDnd) {\n this.updateDragAndDropState();\n }\n if ('theme' in options) {\n this.updateTheme();\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n layout(width, height, forceResize) {\n super.layout(width, height, forceResize);\n if (this._floatingGroups) {\n for (const floating of this._floatingGroups) {\n // ensure floting groups stay within visible boundaries\n floating.overlay.setBounds();\n }\n }\n }\n updateDragAndDropState() {\n // Update draggable state for all tabs and void containers\n for (const group of this.groups) {\n group.model.updateDragAndDropState();\n }\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n getGroupPanel(id) {\n return this.panels.find((panel) => panel.id === id);\n }\n setActivePanel(panel) {\n panel.group.model.openPanel(panel);\n this.doSetGroupAndPanelActive(panel.group);\n }\n moveToNext(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !==\n options.group.panels[options.group.panels.length - 1]) {\n options.group.model.moveToNext({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;\n this.doSetGroupAndPanelActive(next);\n }\n moveToPrevious(options = {}) {\n var _a;\n if (!options.group) {\n if (!this.activeGroup) {\n return;\n }\n options.group = this.activeGroup;\n }\n if (options.includePanel && options.group) {\n if (options.group.activePanel !== options.group.panels[0]) {\n options.group.model.moveToPrevious({ suppressRoll: true });\n return;\n }\n }\n const location = getGridLocation(options.group.element);\n const next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;\n if (next) {\n this.doSetGroupAndPanelActive(next);\n }\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n const panels = this.panels.reduce((collection, panel) => {\n collection[panel.id] = panel.toJSON();\n return collection;\n }, {});\n const floats = this._floatingGroups.map((group) => {\n return {\n data: group.group.toJSON(),\n position: group.overlay.toJSON(),\n };\n });\n const popoutGroups = this._popoutGroups.map((group) => {\n return {\n data: group.popoutGroup.toJSON(),\n gridReferenceGroup: group.referenceGroup,\n position: group.window.dimensions(),\n url: group.popoutGroup.api.location.type === 'popout'\n ? group.popoutGroup.api.location.popoutUrl\n : undefined,\n };\n });\n const result = {\n grid: data,\n panels,\n activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n if (floats.length > 0) {\n result.floatingGroups = floats;\n }\n if (popoutGroups.length > 0) {\n result.popoutGroups = popoutGroups;\n }\n return result;\n }\n fromJSON(data) {\n var _a, _b;\n this.clear();\n if (typeof data !== 'object' || data === null) {\n throw new Error('serialized layout must be a non-null object');\n }\n const { grid, panels, activeGroup } = data;\n if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {\n throw new Error('root must be of type branch');\n }\n try {\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n const createGroupFromSerializedState = (data) => {\n const { id, locked, hideHeader, views, activeView } = data;\n if (typeof id !== 'string') {\n throw new Error('group id must be of type string');\n }\n const group = this.createGroup({\n id,\n locked: !!locked,\n hideHeader: !!hideHeader,\n });\n this._onDidAddGroup.fire(group);\n const createdPanels = [];\n for (const child of views) {\n /**\n * Run the deserializer step seperately since this may fail to due corrupted external state.\n * In running this section first we avoid firing lots of 'add' events in the event of a failure\n * due to a corruption of input data.\n */\n const panel = this._deserializer.fromJSON(panels[child], group);\n createdPanels.push(panel);\n }\n for (let i = 0; i < views.length; i++) {\n const panel = createdPanels[i];\n const isActive = typeof activeView === 'string' &&\n activeView === panel.id;\n group.model.openPanel(panel, {\n skipSetActive: !isActive,\n skipSetGroupActive: true,\n });\n }\n if (!group.activePanel && group.panels.length > 0) {\n group.model.openPanel(group.panels[group.panels.length - 1], {\n skipSetGroupActive: true,\n });\n }\n return group;\n };\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n return createGroupFromSerializedState(node.data);\n },\n });\n this.layout(width, height, true);\n const serializedFloatingGroups = (_a = data.floatingGroups) !== null && _a !== void 0 ? _a : [];\n for (const serializedFloatingGroup of serializedFloatingGroups) {\n const { data, position } = serializedFloatingGroup;\n const group = createGroupFromSerializedState(data);\n this.addFloatingGroup(group, {\n position: position,\n width: position.width,\n height: position.height,\n skipRemoveGroup: true,\n inDragMode: false,\n });\n }\n const serializedPopoutGroups = (_b = data.popoutGroups) !== null && _b !== void 0 ? _b : [];\n // Create a promise that resolves when all popout groups are created\n const popoutPromises = [];\n // Queue popup group creation with delays to avoid browser blocking\n serializedPopoutGroups.forEach((serializedPopoutGroup, index) => {\n const { data, position, gridReferenceGroup, url } = serializedPopoutGroup;\n const group = createGroupFromSerializedState(data);\n // Add a small delay for each popup after the first to avoid browser popup blocking\n const popoutPromise = new Promise((resolve) => {\n setTimeout(() => {\n this.addPopoutGroup(group, {\n position: position !== null && position !== void 0 ? position : undefined,\n overridePopoutGroup: gridReferenceGroup ? group : undefined,\n referenceGroup: gridReferenceGroup\n ? this.getPanel(gridReferenceGroup)\n : undefined,\n popoutUrl: url,\n });\n resolve();\n }, index * DESERIALIZATION_POPOUT_DELAY_MS); // 100ms delay between each popup\n });\n popoutPromises.push(popoutPromise);\n });\n // Store the promise for tests to wait on\n this._popoutRestorationPromise = Promise.all(popoutPromises).then(() => void 0);\n for (const floatingGroup of this._floatingGroups) {\n floatingGroup.overlay.setBounds();\n }\n if (typeof activeGroup === 'string') {\n const panel = this.getPanel(activeGroup);\n if (panel) {\n this.doSetGroupAndPanelActive(panel);\n }\n }\n }\n catch (err) {\n console.error('dockview: failed to deserialize layout. Reverting changes', err);\n /**\n * Takes all the successfully created groups and remove all of their panels.\n */\n for (const group of this.groups) {\n for (const panel of group.panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: false,\n });\n }\n }\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // iterate over a reassigned array since original array will be modified\n for (const floatingGroup of [...this._floatingGroups]) {\n floatingGroup.dispose();\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this.updateWatermark();\n // Force position updates for always visible panels after DOM layout is complete\n requestAnimationFrame(() => {\n this.overlayRenderContainer.updateAllPositions();\n });\n this._onDidLayoutFromJSON.fire();\n }\n clear() {\n const groups = Array.from(this._groups.values()).map((_) => _.value);\n const hasActiveGroup = !!this.activeGroup;\n for (const group of groups) {\n // remove the group will automatically remove the panels\n this.removeGroup(group, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupAndPanelActive(undefined);\n }\n this.gridview.clear();\n }\n closeAllGroups() {\n for (const entry of this._groups.entries()) {\n const [_, group] = entry;\n group.value.model.closeAllPanels();\n }\n }\n addPanel(options) {\n var _a, _b;\n if (this.panels.find((_) => _.id === options.id)) {\n throw new Error(`panel with id ${options.id} already exists`);\n }\n let referenceGroup;\n if (options.position && options.floating) {\n throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');\n }\n const initial = {\n width: options.initialWidth,\n height: options.initialHeight,\n };\n let index;\n if (options.position) {\n if (isPanelOptionsWithPanel(options.position)) {\n const referencePanel = typeof options.position.referencePanel === 'string'\n ? this.getGroupPanel(options.position.referencePanel)\n : options.position.referencePanel;\n index = options.position.index;\n if (!referencePanel) {\n throw new Error(`referencePanel '${options.position.referencePanel}' does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n }\n else if (isPanelOptionsWithGroup(options.position)) {\n referenceGroup =\n typeof options.position.referenceGroup === 'string'\n ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.position.referenceGroup;\n index = options.position.index;\n if (!referenceGroup) {\n throw new Error(`referenceGroup '${options.position.referenceGroup}' does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.position.direction));\n const panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n group.api.setSize({\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n });\n return panel;\n }\n }\n else {\n referenceGroup = this.activeGroup;\n }\n let panel;\n if (referenceGroup) {\n const target = toTarget(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');\n if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const floatingGroupOptions = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, floatingGroupOptions), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else if (referenceGroup.api.location.type === 'floating' ||\n target === 'center') {\n panel = this.createPanel(options, referenceGroup);\n referenceGroup.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n referenceGroup.api.setSize({\n width: initial === null || initial === void 0 ? void 0 : initial.width,\n height: initial === null || initial === void 0 ? void 0 : initial.height,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(referenceGroup);\n }\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroupAtLocation(relativeLocation, this.orientationAtLocation(relativeLocation) ===\n Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n }\n else if (options.floating) {\n const group = this.createGroup();\n this._onDidAddGroup.fire(group);\n const coordinates = typeof options.floating === 'object' &&\n options.floating !== null\n ? options.floating\n : {};\n this.addFloatingGroup(group, Object.assign(Object.assign({}, coordinates), { inDragMode: false, skipRemoveGroup: true, skipActiveGroup: true }));\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n }\n else {\n const group = this.createGroupAtLocation([0], this.gridview.orientation === Orientation.VERTICAL\n ? initial === null || initial === void 0 ? void 0 : initial.height\n : initial === null || initial === void 0 ? void 0 : initial.width);\n panel = this.createPanel(options, group);\n group.model.openPanel(panel, {\n skipSetActive: options.inactive,\n skipSetGroupActive: options.inactive,\n index,\n });\n if (!options.inactive) {\n this.doSetGroupAndPanelActive(group);\n }\n }\n return panel;\n }\n removePanel(panel, options = {\n removeEmptyGroup: true,\n }) {\n const group = panel.group;\n if (!group) {\n throw new Error(`cannot remove panel ${panel.id}. it's missing a group.`);\n }\n group.model.removePanel(panel, {\n skipSetActiveGroup: options.skipSetActiveGroup,\n });\n if (!options.skipDispose) {\n panel.group.model.renderContainer.detatch(panel);\n panel.dispose();\n }\n if (group.size === 0 && options.removeEmptyGroup) {\n this.removeGroup(group, { skipActive: options.skipSetActiveGroup });\n }\n }\n createWatermarkComponent() {\n if (this.options.createWatermarkComponent) {\n return this.options.createWatermarkComponent();\n }\n return new Watermark();\n }\n updateWatermark() {\n var _a, _b;\n if (this.groups.filter((x) => x.api.location.type === 'grid' && x.api.isVisible).length === 0) {\n if (!this._watermark) {\n this._watermark = this.createWatermarkComponent();\n this._watermark.init({\n containerApi: new DockviewApi(this),\n });\n const watermarkContainer = document.createElement('div');\n watermarkContainer.className = 'dv-watermark-container';\n addTestId(watermarkContainer, 'watermark-component');\n watermarkContainer.appendChild(this._watermark.element);\n this.gridview.element.appendChild(watermarkContainer);\n }\n }\n else if (this._watermark) {\n this._watermark.element.parentElement.remove();\n (_b = (_a = this._watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);\n this._watermark = null;\n }\n }\n addGroup(options) {\n var _a;\n if (options) {\n let referenceGroup;\n if (isGroupOptionsWithPanel(options)) {\n const referencePanel = typeof options.referencePanel === 'string'\n ? this.panels.find((panel) => panel.id === options.referencePanel)\n : options.referencePanel;\n if (!referencePanel) {\n throw new Error(`reference panel ${options.referencePanel} does not exist`);\n }\n referenceGroup = this.findGroup(referencePanel);\n if (!referenceGroup) {\n throw new Error(`reference group for reference panel ${options.referencePanel} does not exist`);\n }\n }\n else if (isGroupOptionsWithGroup(options)) {\n referenceGroup =\n typeof options.referenceGroup === 'string'\n ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value\n : options.referenceGroup;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.referenceGroup} does not exist`);\n }\n }\n else {\n const group = this.orthogonalize(directionToPosition(options.direction), options);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n const target = toTarget(options.direction || 'within');\n const location = getGridLocation(referenceGroup.element);\n const relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n const group = this.createGroup(options);\n const size = this.getLocationOrientation(relativeLocation) ===\n Orientation.VERTICAL\n ? options.initialHeight\n : options.initialWidth;\n this.doAddGroup(group, relativeLocation, size);\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(group);\n }\n return group;\n }\n else {\n const group = this.createGroup(options);\n this.doAddGroup(group);\n this.doSetGroupAndPanelActive(group);\n return group;\n }\n }\n getLocationOrientation(location) {\n return location.length % 2 == 0 &&\n this.gridview.orientation === Orientation.HORIZONTAL\n ? Orientation.HORIZONTAL\n : Orientation.VERTICAL;\n }\n removeGroup(group, options) {\n this.doRemoveGroup(group, options);\n }\n doRemoveGroup(group, options) {\n var _a;\n const panels = [...group.panels]; // reassign since group panels will mutate\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n for (const panel of panels) {\n this.removePanel(panel, {\n removeEmptyGroup: false,\n skipDispose: (_a = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _a !== void 0 ? _a : false,\n });\n }\n }\n const activePanel = this.activePanel;\n if (group.api.location.type === 'floating') {\n const floatingGroup = this._floatingGroups.find((_) => _.group === group);\n if (floatingGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n floatingGroup.group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._floatingGroups, floatingGroup);\n floatingGroup.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n return floatingGroup.group;\n }\n throw new Error('failed to find floating group');\n }\n if (group.api.location.type === 'popout') {\n const selectedGroup = this._popoutGroups.find((_) => _.popoutGroup === group);\n if (selectedGroup) {\n if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutAssociated)) {\n const refGroup = selectedGroup.referenceGroup\n ? this.getPanel(selectedGroup.referenceGroup)\n : undefined;\n if (refGroup && refGroup.panels.length === 0) {\n this.removeGroup(refGroup);\n }\n }\n selectedGroup.popoutGroup.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n remove(this._popoutGroups, selectedGroup);\n const removedGroup = selectedGroup.disposable.dispose();\n if (!(options === null || options === void 0 ? void 0 : options.skipPopoutReturn) && removedGroup) {\n this.doAddGroup(removedGroup, [0]);\n this.doSetGroupAndPanelActive(removedGroup);\n }\n if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {\n const groups = Array.from(this._groups.values());\n this.doSetGroupAndPanelActive(groups.length > 0 ? groups[0].value : undefined);\n }\n this.updateWatermark();\n return selectedGroup.popoutGroup;\n }\n throw new Error('failed to find popout group');\n }\n const re = super.doRemoveGroup(group, options);\n if (!(options === null || options === void 0 ? void 0 : options.skipActive)) {\n if (this.activePanel !== activePanel) {\n this._onDidActivePanelChange.fire(this.activePanel);\n }\n }\n return re;\n }\n movingLock(func) {\n const isMoving = this._moving;\n try {\n this._moving = true;\n return func();\n }\n finally {\n this._moving = isMoving;\n }\n }\n moveGroupOrPanel(options) {\n var _a;\n const destinationGroup = options.to.group;\n const sourceGroupId = options.from.groupId;\n const sourceItemId = options.from.panelId;\n const destinationTarget = options.to.position;\n const destinationIndex = options.to.index;\n const sourceGroup = sourceGroupId\n ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value\n : undefined;\n if (!sourceGroup) {\n throw new Error(`Failed to find group id ${sourceGroupId}`);\n }\n if (sourceItemId === undefined) {\n /**\n * Moving an entire group into another group\n */\n this.moveGroup({\n from: { group: sourceGroup },\n to: {\n group: destinationGroup,\n position: destinationTarget,\n },\n skipSetActive: options.skipSetActive,\n });\n return;\n }\n if (!destinationTarget || destinationTarget === 'center') {\n /**\n * Dropping a panel within another group\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n if (sourceGroup.model.size === 0) {\n // remove the group and do not set a new group as active\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n }\n // Check if destination group is empty - if so, force render the component\n const isDestinationGroupEmpty = destinationGroup.model.size === 0;\n this.movingLock(() => {\n var _a;\n return destinationGroup.model.openPanel(removedPanel, {\n index: destinationIndex,\n skipSetActive: ((_a = options.skipSetActive) !== null && _a !== void 0 ? _a : false) && !isDestinationGroupEmpty,\n skipSetGroupActive: true,\n });\n });\n if (!options.skipSetActive) {\n this.doSetGroupAndPanelActive(destinationGroup);\n }\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n else {\n /**\n * Dropping a panel to the extremities of a group which will place that panel\n * into an adjacent group\n */\n const referenceLocation = getGridLocation(destinationGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n if (sourceGroup.size < 2) {\n /**\n * If we are moving from a group which only has one panel left we will consider\n * moving the group itself rather than moving the panel into a newly created group\n */\n const [targetParentLocation, to] = tail(targetLocation);\n if (sourceGroup.api.location.type === 'grid') {\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n }\n if (sourceGroup.api.location.type === 'popout') {\n /**\n * the source group is a popout group with a single panel\n *\n * 1. remove the panel from the group without triggering any events\n * 2. remove the popout group\n * 3. create a new group at the requested location and add that panel\n */\n const popoutGroup = this._popoutGroups.find((group) => group.popoutGroup === sourceGroup);\n const removedPanel = this.movingLock(() => popoutGroup.popoutGroup.model.removePanel(popoutGroup.popoutGroup.panels[0], {\n skipSetActive: true,\n skipSetActiveGroup: true,\n }));\n this.doRemoveGroup(sourceGroup, { skipActive: true });\n const newGroup = this.createGroupAtLocation(targetLocation);\n this.movingLock(() => newGroup.model.openPanel(removedPanel));\n this.doSetGroupAndPanelActive(newGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.movingLock(() => this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n }));\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(destinationGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, destinationTarget);\n this.movingLock(() => this.doAddGroup(targetGroup, location));\n this.doSetGroupAndPanelActive(targetGroup);\n this._onDidMovePanel.fire({\n panel: this.getGroupPanel(sourceItemId),\n from: sourceGroup,\n });\n }\n else {\n /**\n * The group we are removing from has many panels, we need to remove the panels we are moving,\n * create a new group, add the panels to that new group and add the new group in an appropiate position\n */\n const removedPanel = this.movingLock(() => sourceGroup.model.removePanel(sourceItemId, {\n skipSetActive: false,\n skipSetActiveGroup: true,\n }));\n if (!removedPanel) {\n throw new Error(`No panel with id ${sourceItemId}`);\n }\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, destinationTarget);\n const group = this.createGroupAtLocation(dropLocation);\n this.movingLock(() => group.model.openPanel(removedPanel, {\n skipSetGroupActive: true,\n }));\n this.doSetGroupAndPanelActive(group);\n this._onDidMovePanel.fire({\n panel: removedPanel,\n from: sourceGroup,\n });\n }\n }\n }\n moveGroup(options) {\n const from = options.from.group;\n const to = options.to.group;\n const target = options.to.position;\n if (target === 'center') {\n const activePanel = from.activePanel;\n const panels = this.movingLock(() => [...from.panels].map((p) => from.model.removePanel(p.id, {\n skipSetActive: true,\n })));\n if ((from === null || from === void 0 ? void 0 : from.model.size) === 0) {\n this.doRemoveGroup(from, { skipActive: true });\n }\n this.movingLock(() => {\n for (const panel of panels) {\n to.model.openPanel(panel, {\n skipSetActive: panel !== activePanel,\n skipSetGroupActive: true,\n });\n }\n });\n // Ensure group becomes active after move\n if (options.skipSetActive !== true) {\n // For center moves (merges), we need to ensure the target group is active\n // unless explicitly told not to (skipSetActive: true)\n this.doSetGroupAndPanelActive(to);\n }\n else if (!this.activePanel) {\n // Even with skipSetActive: true, ensure there's an active panel if none exists\n // This maintains basic functionality while respecting skipSetActive\n this.doSetGroupAndPanelActive(to);\n }\n }\n else {\n switch (from.api.location.type) {\n case 'grid':\n this.gridview.removeView(getGridLocation(from.element));\n break;\n case 'floating': {\n const selectedFloatingGroup = this._floatingGroups.find((x) => x.group === from);\n if (!selectedFloatingGroup) {\n throw new Error('failed to find floating group');\n }\n selectedFloatingGroup.dispose();\n break;\n }\n case 'popout': {\n const selectedPopoutGroup = this._popoutGroups.find((x) => x.popoutGroup === from);\n if (!selectedPopoutGroup) {\n throw new Error('failed to find popout group');\n }\n // Remove from popout groups list to prevent automatic restoration\n const index = this._popoutGroups.indexOf(selectedPopoutGroup);\n if (index >= 0) {\n this._popoutGroups.splice(index, 1);\n }\n // Clean up the reference group (ghost) if it exists and is hidden\n if (selectedPopoutGroup.referenceGroup) {\n const referenceGroup = this.getPanel(selectedPopoutGroup.referenceGroup);\n if (referenceGroup && !referenceGroup.api.isVisible) {\n this.doRemoveGroup(referenceGroup, {\n skipActive: true,\n });\n }\n }\n // Manually dispose the window without triggering restoration\n selectedPopoutGroup.window.dispose();\n // Update group's location and containers for target\n if (to.api.location.type === 'grid') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'grid' };\n }\n else if (to.api.location.type === 'floating') {\n from.model.renderContainer =\n this.overlayRenderContainer;\n from.model.dropTargetContainer =\n this.rootDropTargetContainer;\n from.model.location = { type: 'floating' };\n }\n break;\n }\n }\n // For moves to grid locations\n if (to.api.location.type === 'grid') {\n const referenceLocation = getGridLocation(to.element);\n const dropLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n // Add to grid for all moves targeting grid location\n let size;\n switch (this.gridview.orientation) {\n case Orientation.VERTICAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.width\n : from.api.height;\n break;\n case Orientation.HORIZONTAL:\n size =\n referenceLocation.length % 2 == 0\n ? from.api.height\n : from.api.width;\n break;\n }\n this.gridview.addView(from, size, dropLocation);\n }\n else if (to.api.location.type === 'floating') {\n // For moves to floating locations, add as floating group\n // Get the position/size from the target floating group\n const targetFloatingGroup = this._floatingGroups.find((x) => x.group === to);\n if (targetFloatingGroup) {\n const box = targetFloatingGroup.overlay.toJSON();\n // Calculate position based on available properties\n let left, top;\n if ('left' in box) {\n left = box.left + 50;\n }\n else if ('right' in box) {\n left = Math.max(0, box.right - box.width - 50);\n }\n else {\n left = 50; // Default fallback\n }\n if ('top' in box) {\n top = box.top + 50;\n }\n else if ('bottom' in box) {\n top = Math.max(0, box.bottom - box.height - 50);\n }\n else {\n top = 50; // Default fallback\n }\n this.addFloatingGroup(from, {\n height: box.height,\n width: box.width,\n position: {\n left,\n top,\n },\n });\n }\n }\n }\n from.panels.forEach((panel) => {\n this._onDidMovePanel.fire({ panel, from });\n });\n // Ensure group becomes active after move\n if (options.skipSetActive === false) {\n // Only activate when explicitly requested (skipSetActive: false)\n // Use 'to' group for non-center moves since 'from' may have been destroyed\n const targetGroup = to !== null && to !== void 0 ? to : from;\n this.doSetGroupAndPanelActive(targetGroup);\n }\n }\n doSetGroupActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n doSetGroupAndPanelActive(group) {\n super.doSetGroupActive(group);\n const activePanel = this.activePanel;\n if (group &&\n this.hasMaximizedGroup() &&\n !this.isMaximizedGroup(group)) {\n this.exitMaximizedGroup();\n }\n if (!this._moving &&\n activePanel !== this._onDidActivePanelChange.value) {\n this._onDidActivePanelChange.fire(activePanel);\n }\n }\n getNextGroupId() {\n let id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n return id;\n }\n createGroup(options) {\n if (!options) {\n options = {};\n }\n let id = options === null || options === void 0 ? void 0 : options.id;\n if (id && this._groups.has(options.id)) {\n console.warn(`dockview: Duplicate group id ${options === null || options === void 0 ? void 0 : options.id}. reassigning group id to avoid errors`);\n id = undefined;\n }\n if (!id) {\n id = this.nextGroupId.next();\n while (this._groups.has(id)) {\n id = this.nextGroupId.next();\n }\n }\n const view = new DockviewGroupPanel(this, id, options);\n view.init({ params: {}, accessor: this });\n if (!this._groups.has(view.id)) {\n const disposable = new CompositeDisposable(view.model.onTabDragStart((event) => {\n this._onWillDragPanel.fire(event);\n }), view.model.onGroupDragStart((event) => {\n this._onWillDragGroup.fire(event);\n }), view.model.onMove((event) => {\n const { groupId, itemId, target, index } = event;\n this.moveGroupOrPanel({\n from: { groupId: groupId, panelId: itemId },\n to: {\n group: view,\n position: target,\n index,\n },\n });\n }), view.model.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), view.model.onWillDrop((event) => {\n this._onWillDrop.fire(event);\n }), view.model.onWillShowOverlay((event) => {\n if (this.options.disableDnd) {\n event.preventDefault();\n return;\n }\n this._onWillShowOverlay.fire(event);\n }), view.model.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }), view.model.onDidAddPanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidAddPanel.fire(event.panel);\n }), view.model.onDidRemovePanel((event) => {\n if (this._moving) {\n return;\n }\n this._onDidRemovePanel.fire(event.panel);\n }), view.model.onDidActivePanelChange((event) => {\n if (this._moving) {\n return;\n }\n if (event.panel !== this.activePanel) {\n return;\n }\n if (this._onDidActivePanelChange.value !== event.panel) {\n this._onDidActivePanelChange.fire(event.panel);\n }\n }), Event.any(view.model.onDidPanelTitleChange, view.model.onDidPanelParametersChange)(() => {\n this._bufferOnDidLayoutChange.fire();\n }));\n this._groups.set(view.id, { value: view, disposable });\n }\n // TODO: must be called after the above listeners have been setup, not an ideal pattern\n view.initialize();\n return view;\n }\n createPanel(options, group) {\n var _a, _b, _c;\n const contentComponent = options.component;\n const tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;\n const view = new DockviewPanelModel(this, options.id, contentComponent, tabComponent);\n const panel = new DockviewPanel(options.id, contentComponent, tabComponent, this, this._api, group, view, {\n renderer: options.renderer,\n minimumWidth: options.minimumWidth,\n minimumHeight: options.minimumHeight,\n maximumWidth: options.maximumWidth,\n maximumHeight: options.maximumHeight,\n });\n panel.init({\n title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,\n params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},\n });\n return panel;\n }\n createGroupAtLocation(location, size, options) {\n const group = this.createGroup(options);\n this.doAddGroup(group, location, size);\n return group;\n }\n findGroup(panel) {\n var _a;\n return (_a = Array.from(this._groups.values()).find((group) => group.value.model.containsPanel(panel))) === null || _a === void 0 ? void 0 : _a.value;\n }\n orientationAtLocation(location) {\n const rootOrientation = this.gridview.orientation;\n return location.length % 2 == 1\n ? rootOrientation\n : orthogonal(rootOrientation);\n }\n updateDropTargetModel(options) {\n if ('dndEdges' in options) {\n this._rootDropTarget.disabled =\n typeof options.dndEdges === 'boolean' &&\n options.dndEdges === false;\n if (typeof options.dndEdges === 'object' &&\n options.dndEdges !== null) {\n this._rootDropTarget.setOverlayModel(options.dndEdges);\n }\n else {\n this._rootDropTarget.setOverlayModel(DEFAULT_ROOT_OVERLAY_MODEL);\n }\n }\n if ('rootOverlayModel' in options) {\n this.updateDropTargetModel({ dndEdges: options.dndEdges });\n }\n }\n updateTheme() {\n var _a, _b;\n const theme = (_a = this._options.theme) !== null && _a !== void 0 ? _a : themeAbyss;\n this._themeClassnames.setClassNames(theme.className);\n this.gridview.margin = (_b = theme.gap) !== null && _b !== void 0 ? _b : 0;\n switch (theme.dndOverlayMounting) {\n case 'absolute':\n this.rootDropTargetContainer.disabled = false;\n break;\n case 'relative':\n default:\n this.rootDropTargetContainer.disabled = true;\n break;\n }\n }\n}\n","import { getRelativeLocation, getGridLocation, } from './gridview';\nimport { tail, sequenceEquals } from '../array';\nimport { CompositeDisposable } from '../lifecycle';\nimport { BaseGrid, toTarget, } from './baseComponentGridview';\nimport { Emitter } from '../events';\nexport class GridviewComponent extends BaseGrid {\n get orientation() {\n return this.gridview.orientation;\n }\n set orientation(value) {\n this.gridview.orientation = value;\n }\n get options() {\n return this._options;\n }\n get deserializer() {\n return this._deserializer;\n }\n set deserializer(value) {\n this._deserializer = value;\n }\n constructor(container, options) {\n var _a;\n super(container, {\n proportionalLayout: (_a = options.proportionalLayout) !== null && _a !== void 0 ? _a : true,\n orientation: options.orientation,\n styles: options.hideBorders\n ? { separatorBorder: 'transparent' }\n : undefined,\n disableAutoResizing: options.disableAutoResizing,\n className: options.className,\n });\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidRemoveGroup = new Emitter();\n this.onDidRemoveGroup = this._onDidRemoveGroup.event;\n this._onDidAddGroup = new Emitter();\n this.onDidAddGroup = this._onDidAddGroup.event;\n this._onDidActiveGroupChange = new Emitter();\n this.onDidActiveGroupChange = this._onDidActiveGroupChange.event;\n this._options = options;\n this.addDisposables(this._onDidAddGroup, this._onDidRemoveGroup, this._onDidActiveGroupChange, this.onDidAdd((event) => {\n this._onDidAddGroup.fire(event);\n }), this.onDidRemove((event) => {\n this._onDidRemoveGroup.fire(event);\n }), this.onDidActiveChange((event) => {\n this._onDidActiveGroupChange.fire(event);\n }));\n }\n updateOptions(options) {\n super.updateOptions(options);\n const hasOrientationChanged = typeof options.orientation === 'string' &&\n this.gridview.orientation !== options.orientation;\n this._options = Object.assign(Object.assign({}, this.options), options);\n if (hasOrientationChanged) {\n this.gridview.orientation = options.orientation;\n }\n this.layout(this.gridview.width, this.gridview.height, true);\n }\n removePanel(panel) {\n this.removeGroup(panel);\n }\n /**\n * Serialize the current state of the layout\n *\n * @returns A JSON respresentation of the layout\n */\n toJSON() {\n var _a;\n const data = this.gridview.serialize();\n return {\n grid: data,\n activePanel: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,\n };\n }\n setVisible(panel, visible) {\n this.gridview.setViewVisible(getGridLocation(panel.element), visible);\n }\n setActive(panel) {\n this._groups.forEach((value, _key) => {\n value.value.setActive(panel === value.value);\n });\n }\n focus() {\n var _a;\n (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();\n }\n fromJSON(serializedGridview) {\n this.clear();\n const { grid, activePanel } = serializedGridview;\n try {\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.gridview.deserialize(grid, {\n fromJSON: (node) => {\n const { data } = node;\n const view = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => view.init({\n params: data.params,\n minimumWidth: data.minimumWidth,\n maximumWidth: data.maximumWidth,\n minimumHeight: data.minimumHeight,\n maximumHeight: data.maximumHeight,\n priority: data.priority,\n snap: !!data.snap,\n accessor: this,\n isVisible: node.visible,\n }));\n this._onDidAddGroup.fire(view);\n this.registerPanel(view);\n return view;\n },\n });\n this.layout(width, height, true);\n queue.forEach((f) => f());\n if (typeof activePanel === 'string') {\n const panel = this.getPanel(activePanel);\n if (panel) {\n this.doSetGroupActive(panel);\n }\n }\n }\n catch (err) {\n /**\n * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about\n * the underlying HTMLElement existing in the Gridview.\n */\n for (const group of this.groups) {\n group.dispose();\n this._groups.delete(group.id);\n this._onDidRemoveGroup.fire(group);\n }\n // fires clean-up events and clears the underlying HTML gridview.\n this.clear();\n /**\n * even though we have cleaned-up we still want to inform the caller of their error\n * and we'll do this through re-throwing the original error since afterall you would\n * expect trying to load a corrupted layout to result in an error and not silently fail...\n */\n throw err;\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n const hasActiveGroup = this.activeGroup;\n const groups = Array.from(this._groups.values()); // reassign since group panels will mutate\n for (const group of groups) {\n group.disposable.dispose();\n this.doRemoveGroup(group.value, { skipActive: true });\n }\n if (hasActiveGroup) {\n this.doSetGroupActive(undefined);\n }\n this.gridview.clear();\n }\n movePanel(panel, options) {\n var _a;\n let relativeLocation;\n const removedPanel = this.gridview.remove(panel);\n const referenceGroup = (_a = this._groups.get(options.reference)) === null || _a === void 0 ? void 0 : _a.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.reference} does not exist`);\n }\n const target = toTarget(options.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n this.doAddGroup(removedPanel, relativeLocation, options.size);\n }\n addPanel(options) {\n var _a, _b, _c, _d;\n let relativeLocation = (_a = options.location) !== null && _a !== void 0 ? _a : [0];\n if ((_b = options.position) === null || _b === void 0 ? void 0 : _b.referencePanel) {\n const referenceGroup = (_c = this._groups.get(options.position.referencePanel)) === null || _c === void 0 ? void 0 : _c.value;\n if (!referenceGroup) {\n throw new Error(`reference group ${options.position.referencePanel} does not exist`);\n }\n const target = toTarget(options.position.direction);\n if (target === 'center') {\n throw new Error(`${target} not supported as an option`);\n }\n else {\n const location = getGridLocation(referenceGroup.element);\n relativeLocation = getRelativeLocation(this.gridview.orientation, location, target);\n }\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.init({\n params: (_d = options.params) !== null && _d !== void 0 ? _d : {},\n minimumWidth: options.minimumWidth,\n maximumWidth: options.maximumWidth,\n minimumHeight: options.minimumHeight,\n maximumHeight: options.maximumHeight,\n priority: options.priority,\n snap: !!options.snap,\n accessor: this,\n isVisible: true,\n });\n this.registerPanel(view);\n this.doAddGroup(view, relativeLocation, options.size);\n this.doSetGroupActive(view);\n return view;\n }\n registerPanel(panel) {\n const disposable = new CompositeDisposable(panel.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this._groups.forEach((groupItem) => {\n const group = groupItem.value;\n if (group !== panel) {\n group.setActive(false);\n }\n else {\n group.setActive(true);\n }\n });\n }));\n this._groups.set(panel.id, {\n value: panel,\n disposable,\n });\n }\n moveGroup(referenceGroup, groupId, target) {\n const sourceGroup = this.getPanel(groupId);\n if (!sourceGroup) {\n throw new Error('invalid operation');\n }\n const referenceLocation = getGridLocation(referenceGroup.element);\n const targetLocation = getRelativeLocation(this.gridview.orientation, referenceLocation, target);\n const [targetParentLocation, to] = tail(targetLocation);\n const sourceLocation = getGridLocation(sourceGroup.element);\n const [sourceParentLocation, from] = tail(sourceLocation);\n if (sequenceEquals(sourceParentLocation, targetParentLocation)) {\n // special case when 'swapping' two views within same grid location\n // if a group has one tab - we are essentially moving the 'group'\n // which is equivalent to swapping two views in this case\n this.gridview.moveView(sourceParentLocation, from, to);\n return;\n }\n // source group will become empty so delete the group\n const targetGroup = this.doRemoveGroup(sourceGroup, {\n skipActive: true,\n skipDispose: true,\n });\n // after deleting the group we need to re-evaulate the ref location\n const updatedReferenceLocation = getGridLocation(referenceGroup.element);\n const location = getRelativeLocation(this.gridview.orientation, updatedReferenceLocation, target);\n this.doAddGroup(targetGroup, location);\n }\n removeGroup(group) {\n super.removeGroup(group);\n }\n dispose() {\n super.dispose();\n this._onDidLayoutfromJSON.dispose();\n }\n}\n","import { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing, Splitview, } from './splitview';\nimport { Emitter } from '../events';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\n/**\n * A high-level implementation of splitview that works using 'panels'\n */\nexport class SplitviewComponent extends Resizable {\n get panels() {\n return this.splitview.getViews();\n }\n get options() {\n return this._options;\n }\n get length() {\n return this._panels.size;\n }\n get orientation() {\n return this.splitview.orientation;\n }\n get splitview() {\n return this._splitview;\n }\n set splitview(value) {\n if (this._splitview) {\n this._splitview.dispose();\n }\n this._splitview = value;\n this._splitviewChangeDisposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get minimumSize() {\n return this.splitview.minimumSize;\n }\n get maximumSize() {\n return this.splitview.maximumSize;\n }\n get height() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.orthogonalSize\n : this.splitview.size;\n }\n get width() {\n return this.splitview.orientation === Orientation.HORIZONTAL\n ? this.splitview.size\n : this.splitview.orthogonalSize;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._splitviewChangeDisposable = new MutableDisposable();\n this._panels = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.splitview = new Splitview(this.element, options);\n this.addDisposables(this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n if (typeof options.orientation === 'string') {\n this.splitview.orientation = options.orientation;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);\n }\n focus() {\n var _a;\n (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();\n }\n movePanel(from, to) {\n this.splitview.moveView(from, to);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.splitview.setViewVisible(index, visible);\n }\n setActive(panel, skipFocus) {\n this._activePanel = panel;\n this.panels\n .filter((v) => v !== panel)\n .forEach((v) => {\n v.api._onDidActiveChange.fire({ isActive: false });\n if (!skipFocus) {\n v.focus();\n }\n });\n panel.api._onDidActiveChange.fire({ isActive: true });\n if (!skipFocus) {\n panel.focus();\n }\n }\n removePanel(panel, sizing) {\n const item = this._panels.get(panel.id);\n if (!item) {\n throw new Error(`unknown splitview panel ${panel.id}`);\n }\n item.dispose();\n this._panels.delete(panel.id);\n const index = this.panels.findIndex((_) => _ === panel);\n const removedView = this.splitview.removeView(index, sizing);\n removedView.dispose();\n const panels = this.panels;\n if (panels.length > 0) {\n this.setActive(panels[panels.length - 1]);\n }\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n addPanel(options) {\n var _a;\n if (this._panels.has(options.id)) {\n throw new Error(`panel ${options.id} already exists`);\n }\n const view = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n view.orientation = this.splitview.orientation;\n view.init({\n params: (_a = options.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: options.minimumSize,\n maximumSize: options.maximumSize,\n snap: options.snap,\n priority: options.priority,\n accessor: this,\n });\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n this.splitview.addView(view, size, index);\n this.doAddView(view);\n this.setActive(view);\n return view;\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.splitview.layout(size, orthogonalSize);\n }\n doAddView(view) {\n const disposable = view.api.onDidFocusChange((event) => {\n if (!event.isFocused) {\n return;\n }\n this.setActive(view, true);\n });\n this._panels.set(view.id, disposable);\n }\n toJSON() {\n var _a;\n const views = this.splitview\n .getViews()\n .map((view, i) => {\n const size = this.splitview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n snap: !!view.snap,\n priority: view.priority,\n };\n });\n return {\n views,\n activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,\n size: this.splitview.size,\n orientation: this.splitview.orientation,\n };\n }\n fromJSON(serializedSplitview) {\n this.clear();\n const { views, orientation, size, activeView } = serializedSplitview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.splitview = new Splitview(this.element, {\n orientation,\n proportionalLayout: this.options.proportionalLayout,\n descriptor: {\n size,\n views: views.map((view) => {\n const data = view.data;\n if (this._panels.has(data.id)) {\n throw new Error(`panel ${data.id} already exists`);\n }\n const panel = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumSize: data.minimumSize,\n maximumSize: data.maximumSize,\n snap: view.snap,\n priority: view.priority,\n accessor: this,\n });\n });\n panel.orientation = orientation;\n this.doAddView(panel);\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n if (typeof activeView === 'string') {\n const panel = this.getPanel(activeView);\n if (panel) {\n this.setActive(panel);\n }\n }\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n while (this.splitview.length > 0) {\n const view = this.splitview.removeView(0, Sizing.Distribute, true);\n view.dispose();\n }\n }\n dispose() {\n for (const disposable of this._panels.values()) {\n disposable.dispose();\n }\n this._panels.clear();\n const views = this.splitview.getViews();\n this._splitviewChangeDisposable.dispose();\n this.splitview.dispose();\n for (const view of views) {\n view.dispose();\n }\n this.element.remove();\n super.dispose();\n }\n}\n","import { addDisposableListener } from '../events';\nimport { CompositeDisposable, MutableDisposable } from '../lifecycle';\nimport { toggleClass } from '../dom';\nimport { createChevronRightButton, createExpandMoreButton } from '../svg';\nexport class DefaultHeader extends CompositeDisposable {\n get element() {\n return this._element;\n }\n constructor() {\n super();\n this._expandedIcon = createExpandMoreButton();\n this._collapsedIcon = createChevronRightButton();\n this.disposable = new MutableDisposable();\n this.apiRef = {\n api: null,\n };\n this._element = document.createElement('div');\n this.element.className = 'dv-default-header';\n this._content = document.createElement('span');\n this._expander = document.createElement('div');\n this._expander.className = 'dv-pane-header-icon';\n this.element.appendChild(this._expander);\n this.element.appendChild(this._content);\n this.addDisposables(addDisposableListener(this._element, 'click', () => {\n var _a;\n (_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.setExpanded(!this.apiRef.api.isExpanded);\n }));\n }\n init(params) {\n this.apiRef.api = params.api;\n this._content.textContent = params.title;\n this.updateIcon();\n this.disposable.value = params.api.onDidExpansionChange(() => {\n this.updateIcon();\n });\n }\n updateIcon() {\n var _a;\n const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);\n toggleClass(this._expander, 'collapsed', !isExpanded);\n if (isExpanded) {\n if (this._expander.contains(this._collapsedIcon)) {\n this._collapsedIcon.remove();\n }\n if (!this._expander.contains(this._expandedIcon)) {\n this._expander.appendChild(this._expandedIcon);\n }\n }\n else {\n if (this._expander.contains(this._expandedIcon)) {\n this._expandedIcon.remove();\n }\n if (!this._expander.contains(this._collapsedIcon)) {\n this._expander.appendChild(this._collapsedIcon);\n }\n }\n }\n update(_params) {\n //\n }\n dispose() {\n this.disposable.dispose();\n super.dispose();\n }\n}\n","import { PaneviewApi } from '../api/component.api';\nimport { Emitter } from '../events';\nimport { CompositeDisposable, MutableDisposable, } from '../lifecycle';\nimport { Orientation, Sizing } from '../splitview/splitview';\nimport { Paneview } from './paneview';\nimport { DraggablePaneviewPanel, } from './draggablePaneviewPanel';\nimport { DefaultHeader } from './defaultPaneviewHeader';\nimport { sequentialNumberGenerator } from '../math';\nimport { Resizable } from '../resizable';\nimport { Classnames } from '../dom';\nconst nextLayoutId = sequentialNumberGenerator();\nconst HEADER_SIZE = 22;\nconst MINIMUM_BODY_SIZE = 0;\nconst MAXIMUM_BODY_SIZE = Number.MAX_SAFE_INTEGER;\nexport class PaneFramework extends DraggablePaneviewPanel {\n constructor(options) {\n super({\n accessor: options.accessor,\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n orientation: options.orientation,\n isExpanded: options.isExpanded,\n disableDnd: options.disableDnd,\n headerSize: options.headerSize,\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n });\n this.options = options;\n }\n getBodyComponent() {\n return this.options.body;\n }\n getHeaderComponent() {\n return this.options.header;\n }\n}\nexport class PaneviewComponent extends Resizable {\n get id() {\n return this._id;\n }\n get panels() {\n return this.paneview.getPanes();\n }\n set paneview(value) {\n this._paneview = value;\n this._disposable.value = new CompositeDisposable(this._paneview.onDidChange(() => {\n this._onDidLayoutChange.fire(undefined);\n }), this._paneview.onDidAddView((e) => this._onDidAddView.fire(e)), this._paneview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));\n }\n get paneview() {\n return this._paneview;\n }\n get minimumSize() {\n return this.paneview.minimumSize;\n }\n get maximumSize() {\n return this.paneview.maximumSize;\n }\n get height() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.orthogonalSize\n : this.paneview.size;\n }\n get width() {\n return this.paneview.orientation === Orientation.HORIZONTAL\n ? this.paneview.size\n : this.paneview.orthogonalSize;\n }\n get options() {\n return this._options;\n }\n constructor(container, options) {\n var _a;\n super(document.createElement('div'), options.disableAutoResizing);\n this._id = nextLayoutId.next();\n this._disposable = new MutableDisposable();\n this._viewDisposables = new Map();\n this._onDidLayoutfromJSON = new Emitter();\n this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;\n this._onDidLayoutChange = new Emitter();\n this.onDidLayoutChange = this._onDidLayoutChange.event;\n this._onDidDrop = new Emitter();\n this.onDidDrop = this._onDidDrop.event;\n this._onDidAddView = new Emitter();\n this.onDidAddView = this._onDidAddView.event;\n this._onDidRemoveView = new Emitter();\n this.onDidRemoveView = this._onDidRemoveView.event;\n this._onUnhandledDragOverEvent = new Emitter();\n this.onUnhandledDragOverEvent = this._onUnhandledDragOverEvent.event;\n this.element.style.height = '100%';\n this.element.style.width = '100%';\n this.addDisposables(this._onDidLayoutChange, this._onDidLayoutfromJSON, this._onDidDrop, this._onDidAddView, this._onDidRemoveView, this._onUnhandledDragOverEvent);\n this._classNames = new Classnames(this.element);\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n // the container is owned by the third-party, do not modify/delete it\n container.appendChild(this.element);\n this._options = options;\n this.paneview = new Paneview(this.element, {\n // only allow paneview in the vertical orientation for now\n orientation: Orientation.VERTICAL,\n });\n this.addDisposables(this._disposable);\n }\n setVisible(panel, visible) {\n const index = this.panels.indexOf(panel);\n this.paneview.setViewVisible(index, visible);\n }\n focus() {\n //noop\n }\n updateOptions(options) {\n var _a, _b;\n if ('className' in options) {\n this._classNames.setClassNames((_a = options.className) !== null && _a !== void 0 ? _a : '');\n }\n if ('disableResizing' in options) {\n this.disableResizing = (_b = options.disableAutoResizing) !== null && _b !== void 0 ? _b : false;\n }\n this._options = Object.assign(Object.assign({}, this.options), options);\n }\n addPanel(options) {\n var _a, _b;\n const body = this.options.createComponent({\n id: options.id,\n name: options.component,\n });\n let header;\n if (options.headerComponent && this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: options.id,\n name: options.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const view = new PaneFramework({\n id: options.id,\n component: options.component,\n headerComponent: options.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!options.isExpanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = options.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: MINIMUM_BODY_SIZE,\n maximumBodySize: MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(view);\n const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;\n const index = typeof options.index === 'number' ? options.index : undefined;\n view.init({\n params: (_b = options.params) !== null && _b !== void 0 ? _b : {},\n minimumBodySize: options.minimumBodySize,\n maximumBodySize: options.maximumBodySize,\n isExpanded: options.isExpanded,\n title: options.title,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n this.paneview.addPane(view, size, index);\n view.orientation = this.paneview.orientation;\n return view;\n }\n removePanel(panel) {\n const views = this.panels;\n const index = views.findIndex((_) => _ === panel);\n this.paneview.removePane(index);\n this.doRemovePanel(panel);\n }\n movePanel(from, to) {\n this.paneview.moveView(from, to);\n }\n getPanel(id) {\n return this.panels.find((view) => view.id === id);\n }\n layout(width, height) {\n const [size, orthogonalSize] = this.paneview.orientation === Orientation.HORIZONTAL\n ? [width, height]\n : [height, width];\n this.paneview.layout(size, orthogonalSize);\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n const views = this.paneview\n .getPanes()\n .map((view, i) => {\n const size = this.paneview.getViewSize(i);\n return {\n size,\n data: view.toJSON(),\n minimumSize: minimum(view.minimumBodySize),\n maximumSize: maximum(view.maximumBodySize),\n headerSize: view.headerSize,\n expanded: view.isExpanded(),\n };\n });\n return {\n views,\n size: this.paneview.size,\n };\n }\n fromJSON(serializedPaneview) {\n this.clear();\n const { views, size } = serializedPaneview;\n const queue = [];\n // take note of the existing dimensions\n const width = this.width;\n const height = this.height;\n this.paneview = new Paneview(this.element, {\n orientation: Orientation.VERTICAL,\n descriptor: {\n size,\n views: views.map((view) => {\n var _a, _b, _c;\n const data = view.data;\n const body = this.options.createComponent({\n id: data.id,\n name: data.component,\n });\n let header;\n if (data.headerComponent &&\n this.options.createHeaderComponent) {\n header = this.options.createHeaderComponent({\n id: data.id,\n name: data.headerComponent,\n });\n }\n if (!header) {\n header = new DefaultHeader();\n }\n const panel = new PaneFramework({\n id: data.id,\n component: data.component,\n headerComponent: data.headerComponent,\n header,\n body,\n orientation: Orientation.VERTICAL,\n isExpanded: !!view.expanded,\n disableDnd: !!this.options.disableDnd,\n accessor: this,\n headerSize: (_a = view.headerSize) !== null && _a !== void 0 ? _a : HEADER_SIZE,\n minimumBodySize: (_b = view.minimumSize) !== null && _b !== void 0 ? _b : MINIMUM_BODY_SIZE,\n maximumBodySize: (_c = view.maximumSize) !== null && _c !== void 0 ? _c : MAXIMUM_BODY_SIZE,\n });\n this.doAddPanel(panel);\n queue.push(() => {\n var _a;\n panel.init({\n params: (_a = data.params) !== null && _a !== void 0 ? _a : {},\n minimumBodySize: view.minimumSize,\n maximumBodySize: view.maximumSize,\n title: data.title,\n isExpanded: !!view.expanded,\n containerApi: new PaneviewApi(this),\n accessor: this,\n });\n panel.orientation = this.paneview.orientation;\n });\n setTimeout(() => {\n // the original onDidAddView events are missed since they are fired before we can subcribe to them\n this._onDidAddView.fire(panel);\n }, 0);\n return { size: view.size, view: panel };\n }),\n },\n });\n this.layout(width, height);\n queue.forEach((f) => f());\n this._onDidLayoutfromJSON.fire();\n }\n clear() {\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.paneview.dispose();\n }\n doAddPanel(panel) {\n const disposable = new CompositeDisposable(panel.onDidDrop((event) => {\n this._onDidDrop.fire(event);\n }), panel.onUnhandledDragOverEvent((event) => {\n this._onUnhandledDragOverEvent.fire(event);\n }));\n this._viewDisposables.set(panel.id, disposable);\n }\n doRemovePanel(panel) {\n const disposable = this._viewDisposables.get(panel.id);\n if (disposable) {\n disposable.dispose();\n this._viewDisposables.delete(panel.id);\n }\n }\n dispose() {\n super.dispose();\n for (const [_, value] of this._viewDisposables.entries()) {\n value.dispose();\n }\n this._viewDisposables.clear();\n this.element.remove();\n this.paneview.dispose();\n }\n}\n","import { BasePanelView, } from '../gridview/basePanelView';\nimport { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';\nimport { Orientation } from './splitview';\nimport { Emitter } from '../events';\nexport class SplitviewPanel extends BasePanelView {\n get priority() {\n return this._priority;\n }\n set orientation(value) {\n this._orientation = value;\n }\n get orientation() {\n return this._orientation;\n }\n get minimumSize() {\n const size = typeof this._minimumSize === 'function'\n ? this._minimumSize()\n : this._minimumSize;\n if (size !== this._evaluatedMinimumSize) {\n this._evaluatedMinimumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get maximumSize() {\n const size = typeof this._maximumSize === 'function'\n ? this._maximumSize()\n : this._maximumSize;\n if (size !== this._evaluatedMaximumSize) {\n this._evaluatedMaximumSize = size;\n this.updateConstraints();\n }\n return size;\n }\n get snap() {\n return this._snap;\n }\n constructor(id, componentName) {\n super(id, componentName, new SplitviewPanelApiImpl(id, componentName));\n this._evaluatedMinimumSize = 0;\n this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;\n this._minimumSize = 0;\n this._maximumSize = Number.POSITIVE_INFINITY;\n this._snap = false;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.api.initialize(this);\n this.addDisposables(this._onDidChange, this.api.onWillVisibilityChange((event) => {\n const { isVisible } = event;\n const { accessor } = this._params;\n accessor.setVisible(this, isVisible);\n }), this.api.onActiveChange(() => {\n const { accessor } = this._params;\n accessor.setActive(this);\n }), this.api.onDidConstraintsChangeInternal((event) => {\n if (typeof event.minimumSize === 'number' ||\n typeof event.minimumSize === 'function') {\n this._minimumSize = event.minimumSize;\n }\n if (typeof event.maximumSize === 'number' ||\n typeof event.maximumSize === 'function') {\n this._maximumSize = event.maximumSize;\n }\n this.updateConstraints();\n }), this.api.onDidSizeChange((event) => {\n this._onDidChange.fire({ size: event.size });\n }));\n }\n setVisible(isVisible) {\n this.api._onDidVisibilityChange.fire({ isVisible });\n }\n setActive(isActive) {\n this.api._onDidActiveChange.fire({ isActive });\n }\n layout(size, orthogonalSize) {\n const [width, height] = this.orientation === Orientation.HORIZONTAL\n ? [size, orthogonalSize]\n : [orthogonalSize, size];\n super.layout(width, height);\n }\n init(parameters) {\n super.init(parameters);\n this._priority = parameters.priority;\n if (parameters.minimumSize) {\n this._minimumSize = parameters.minimumSize;\n }\n if (parameters.maximumSize) {\n this._maximumSize = parameters.maximumSize;\n }\n if (parameters.snap) {\n this._snap = parameters.snap;\n }\n }\n toJSON() {\n const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||\n value === Number.POSITIVE_INFINITY\n ? undefined\n : value;\n const minimum = (value) => (value <= 0 ? undefined : value);\n return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });\n }\n updateConstraints() {\n this.api._onDidConstraintsChange.fire({\n maximumSize: this._evaluatedMaximumSize,\n minimumSize: this._evaluatedMinimumSize,\n });\n }\n}\n","import { GridviewApi, PaneviewApi, SplitviewApi, } from '../api/component.api';\nimport { DockviewComponent } from '../dockview/dockviewComponent';\nimport { GridviewComponent } from '../gridview/gridviewComponent';\nimport { PaneviewComponent } from '../paneview/paneviewComponent';\nimport { SplitviewComponent } from '../splitview/splitviewComponent';\nexport function createDockview(element, options) {\n const component = new DockviewComponent(element, options);\n return component.api;\n}\nexport function createSplitview(element, options) {\n const component = new SplitviewComponent(element, options);\n return new SplitviewApi(component);\n}\nexport function createGridview(element, options) {\n const component = new GridviewComponent(element, options);\n return new GridviewApi(component);\n}\nexport function createPaneview(element, options) {\n const component = new PaneviewComponent(element, options);\n return new PaneviewApi(component);\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { DockviewDisposable, } from 'dockview-core';\n/**\n * This component is intended to interface between vanilla-js and React hence we need to be\n * creative in how we update props.\n * A ref of the component is exposed with an update method; which when called stores the props\n * as a ref within this component and forcefully triggers a re-render of the component using\n * the ref of props we just set on the renderered component as the props passed to the inner\n * component\n */\nconst ReactComponentBridge = (props, ref) => {\n const [_, triggerRender] = React.useState();\n const _props = React.useRef(props.componentProps);\n React.useImperativeHandle(ref, () => ({\n update: (componentProps) => {\n _props.current = Object.assign(Object.assign({}, _props.current), componentProps);\n /**\n * setting a arbitrary piece of state within this component will\n * trigger a re-render.\n * we use this rather than updating through a prop since we can\n * pass a ref into the vanilla-js world.\n */\n triggerRender(Date.now());\n },\n }), []);\n return React.createElement(props.component, _props.current);\n};\nReactComponentBridge.displayName = 'DockviewReactJsBridge';\n/**\n * Since we are storing the React.Portal references in a rendered array they\n * require a key property like any other React element rendered in an array\n * to prevent excessive re-rendering\n */\nconst uniquePortalKeyGenerator = (() => {\n let value = 1;\n return { next: () => `dockview_react_portal_key_${(value++).toString()}` };\n})();\nexport const ReactPartContext = React.createContext({});\nexport class ReactPart {\n constructor(parent, portalStore, component, parameters, context) {\n this.parent = parent;\n this.portalStore = portalStore;\n this.component = component;\n this.parameters = parameters;\n this.context = context;\n this._initialProps = {};\n this.disposed = false;\n this.createPortal();\n }\n update(props) {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!this.componentInstance) {\n // if the component is yet to be mounted store the props\n this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);\n }\n else {\n this.componentInstance.update(props);\n }\n }\n createPortal() {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!isReactComponent(this.component)) {\n /**\n * we know this isn't a React.FunctionComponent so throw an error here.\n * if we do not intercept then React library will throw a very obsure error\n * for the same reason... at least at this point we will emit a sensible stacktrace.\n */\n throw new Error('Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components');\n }\n const bridgeComponent = React.createElement(React.forwardRef(ReactComponentBridge), {\n component: this\n .component,\n componentProps: this.parameters,\n ref: (element) => {\n this.componentInstance = element;\n if (Object.keys(this._initialProps).length > 0) {\n this.componentInstance.update(this._initialProps);\n this._initialProps = {}; // don't keep a reference to the users object once no longer required\n }\n },\n });\n const node = this.context\n ? React.createElement(ReactPartContext.Provider, { value: this.context }, bridgeComponent)\n : bridgeComponent;\n const portal = ReactDOM.createPortal(node, this.parent, uniquePortalKeyGenerator.next());\n this.ref = {\n portal,\n disposable: this.portalStore.addPortal(portal),\n };\n }\n dispose() {\n var _a;\n (_a = this.ref) === null || _a === void 0 ? void 0 : _a.disposable.dispose();\n this.disposed = true;\n }\n}\n/**\n * A React Hook that returns an array of portals to be rendered by the user of this hook\n * and a disposable function to add a portal. Calling dispose removes this portal from the\n * portal array\n */\nexport const usePortalsLifecycle = () => {\n const [portals, setPortals] = React.useState([]);\n React.useDebugValue(`Portal count: ${portals.length}`);\n const addPortal = React.useCallback((portal) => {\n setPortals((existingPortals) => [...existingPortals, portal]);\n let disposed = false;\n return DockviewDisposable.from(() => {\n if (disposed) {\n throw new Error('invalid operation: resource already disposed');\n }\n disposed = true;\n setPortals((existingPortals) => existingPortals.filter((p) => p !== portal));\n });\n }, []);\n return [portals, addPortal];\n};\nexport function isReactComponent(component) {\n /**\n * Yes, we could use \"react-is\" but that would introduce an unwanted peer dependency\n * so for now we will check in a rather crude fashion...\n */\n return (typeof component === 'function' /** Functional Componnts */ ||\n !!(component === null || component === void 0 ? void 0 : component.$$typeof) /** React.memo(...) Components */);\n}\n","import { ReactPart } from '../react';\nimport { DockviewEmitter, } from 'dockview-core';\nexport class ReactPanelContentPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._onDidFocus = new DockviewEmitter();\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = new DockviewEmitter();\n this.onDidBlur = this._onDidBlur.event;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n focus() {\n // TODO\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n containerApi: parameters.containerApi,\n });\n }\n update(event) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });\n }\n layout(_width, _height) {\n // noop\n }\n dispose() {\n var _a;\n this._onDidFocus.dispose();\n this._onDidBlur.dispose();\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nexport class ReactPanelHeaderPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n focus() {\n //noop\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n containerApi: parameters.containerApi,\n tabLocation: parameters.tabLocation,\n });\n }\n update(event) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: event.params });\n }\n layout(_width, _height) {\n // noop - retrieval from api\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nexport class ReactWatermarkPart {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n group: parameters.group,\n containerApi: parameters.containerApi,\n });\n }\n focus() {\n // noop\n }\n update(params) {\n var _a, _b, _c;\n if (this.parameters) {\n this.parameters.params = params.params;\n }\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update({ params: (_c = (_b = this.parameters) === null || _b === void 0 ? void 0 : _b.params) !== null && _c !== void 0 ? _c : {} });\n }\n layout(_width, _height) {\n // noop - retrieval from api\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import { ReactPart } from '../react';\nimport { DockviewCompositeDisposable, DockviewMutableDisposable, } from 'dockview-core';\nexport class ReactHeaderActionsRendererPart {\n get element() {\n return this._element;\n }\n get part() {\n return this._part;\n }\n constructor(component, reactPortalStore, _group) {\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._group = _group;\n this.mutableDisposable = new DockviewMutableDisposable();\n this._element = document.createElement('div');\n this._element.className = 'dv-react-part';\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.mutableDisposable.value = new DockviewCompositeDisposable(this._group.model.onDidAddPanel(() => {\n this.updatePanels();\n }), this._group.model.onDidRemovePanel(() => {\n this.updatePanels();\n }), this._group.model.onDidActivePanelChange(() => {\n this.updateActivePanel();\n }), parameters.api.onDidActiveChange(() => {\n this.updateGroupActive();\n }));\n this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n api: parameters.api,\n containerApi: parameters.containerApi,\n panels: this._group.model.panels,\n activePanel: this._group.model.activePanel,\n isGroupActive: this._group.api.isActive,\n group: this._group,\n });\n }\n dispose() {\n var _a;\n this.mutableDisposable.dispose();\n (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n update(event) {\n var _a;\n (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);\n }\n updatePanels() {\n this.update({ params: { panels: this._group.model.panels } });\n }\n updateActivePanel() {\n this.update({\n params: {\n activePanel: this._group.model.activePanel,\n },\n });\n }\n updateGroupActive() {\n this.update({\n params: {\n isGroupActive: this._group.api.isActive,\n },\n });\n }\n}\n","import React from 'react';\nimport { PROPERTY_KEYS_DOCKVIEW, createDockview, } from 'dockview-core';\nimport { ReactPanelContentPart } from './reactContentPart';\nimport { ReactPanelHeaderPart } from './reactHeaderPart';\nimport { usePortalsLifecycle } from '../react';\nimport { ReactWatermarkPart } from './reactWatermarkPart';\nimport { ReactHeaderActionsRendererPart } from './headerActionsRenderer';\nfunction createGroupControlElement(component, store) {\n return component\n ? (groupPanel) => {\n return new ReactHeaderActionsRendererPart(component, store, groupPanel);\n }\n : undefined;\n}\nconst DEFAULT_REACT_TAB = 'props.defaultTabComponent';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_DOCKVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const DockviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const dockviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_DOCKVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (dockviewRef.current) {\n dockviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_DOCKVIEW.map((key) => props[key]));\n React.useEffect(() => {\n var _a;\n if (!domRef.current) {\n return;\n }\n const frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};\n if (props.defaultTabComponent) {\n frameworkTabComponents[DEFAULT_REACT_TAB] =\n props.defaultTabComponent;\n }\n const frameworkOptions = {\n createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal }),\n createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal }),\n createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal }),\n createComponent: (options) => {\n return new ReactPanelContentPart(options.id, props.components[options.name], {\n addPortal,\n });\n },\n createTabComponent(options) {\n return new ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {\n addPortal,\n });\n },\n createWatermarkComponent: props.watermarkComponent\n ? () => {\n return new ReactWatermarkPart('watermark', props.watermarkComponent, {\n addPortal,\n });\n }\n : undefined,\n defaultTabComponent: props.defaultTabComponent\n ? DEFAULT_REACT_TAB\n : undefined,\n };\n const api = createDockview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n dockviewRef.current = api;\n return () => {\n dockviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = dockviewRef.current.onDidDrop((event) => {\n if (props.onDidDrop) {\n props.onDidDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onDidDrop]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = dockviewRef.current.onWillDrop((event) => {\n if (props.onWillDrop) {\n props.onWillDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onWillDrop]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactPanelContentPart(options.id, props.components[options.name], {\n addPortal,\n });\n },\n });\n }, [props.components]);\n React.useEffect(() => {\n var _a;\n if (!dockviewRef.current) {\n return;\n }\n const frameworkTabComponents = (_a = props.tabComponents) !== null && _a !== void 0 ? _a : {};\n if (props.defaultTabComponent) {\n frameworkTabComponents[DEFAULT_REACT_TAB] =\n props.defaultTabComponent;\n }\n dockviewRef.current.updateOptions({\n defaultTabComponent: props.defaultTabComponent\n ? DEFAULT_REACT_TAB\n : undefined,\n createTabComponent(options) {\n return new ReactPanelHeaderPart(options.id, frameworkTabComponents[options.name], {\n addPortal,\n });\n },\n });\n }, [props.tabComponents, props.defaultTabComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createWatermarkComponent: props.watermarkComponent\n ? () => {\n return new ReactWatermarkPart('watermark', props.watermarkComponent, {\n addPortal,\n });\n }\n : undefined,\n });\n }, [props.watermarkComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createRightHeaderActionComponent: createGroupControlElement(props.rightHeaderActionsComponent, { addPortal }),\n });\n }, [props.rightHeaderActionsComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createLeftHeaderActionComponent: createGroupControlElement(props.leftHeaderActionsComponent, { addPortal }),\n });\n }, [props.leftHeaderActionsComponent]);\n React.useEffect(() => {\n if (!dockviewRef.current) {\n return;\n }\n dockviewRef.current.updateOptions({\n createPrefixHeaderActionComponent: createGroupControlElement(props.prefixHeaderActionsComponent, { addPortal }),\n });\n }, [props.prefixHeaderActionsComponent]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nDockviewReact.displayName = 'DockviewComponent';\n","import React from 'react';\nexport const CloseButton = () => (React.createElement(\"svg\", { height: \"11\", width: \"11\", viewBox: \"0 0 28 28\", \"aria-hidden\": 'false', focusable: false, className: \"dv-svg\" },\n React.createElement(\"path\", { d: \"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\" })));\nexport const ExpandMore = () => {\n return (React.createElement(\"svg\", { width: \"11\", height: \"11\", viewBox: \"0 0 24 15\", \"aria-hidden\": 'false', focusable: false, className: \"dv-svg\" },\n React.createElement(\"path\", { d: \"M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z\" })));\n};\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport { CloseButton } from '../svg';\nfunction useTitle(api) {\n const [title, setTitle] = React.useState(api.title);\n React.useEffect(() => {\n const disposable = api.onDidTitleChange((event) => {\n setTitle(event.title);\n });\n // Depending on the order in which React effects are run, the title may already be out of sync (cf. issue #1003).\n if (title !== api.title) {\n setTitle(api.title);\n }\n return () => {\n disposable.dispose();\n };\n }, [api]);\n return title;\n}\nexport const DockviewDefaultTab = (_a) => {\n var { api, containerApi: _containerApi, params: _params, hideClose, closeActionOverride, onPointerDown, onPointerUp, onPointerLeave, tabLocation } = _a, rest = __rest(_a, [\"api\", \"containerApi\", \"params\", \"hideClose\", \"closeActionOverride\", \"onPointerDown\", \"onPointerUp\", \"onPointerLeave\", \"tabLocation\"]);\n const title = useTitle(api);\n const isMiddleMouseButton = React.useRef(false);\n const onClose = React.useCallback((event) => {\n event.preventDefault();\n if (closeActionOverride) {\n closeActionOverride();\n }\n else {\n api.close();\n }\n }, [api, closeActionOverride]);\n const onBtnPointerDown = React.useCallback((event) => {\n event.preventDefault();\n }, []);\n const _onPointerDown = React.useCallback((event) => {\n isMiddleMouseButton.current = event.button === 1;\n onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(event);\n }, [onPointerDown]);\n const _onPointerUp = React.useCallback((event) => {\n if (isMiddleMouseButton && event.button === 1 && !hideClose) {\n isMiddleMouseButton.current = false;\n onClose(event);\n }\n onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp(event);\n }, [onPointerUp, onClose, hideClose]);\n const _onPointerLeave = React.useCallback((event) => {\n isMiddleMouseButton.current = false;\n onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(event);\n }, [onPointerLeave]);\n return (React.createElement(\"div\", Object.assign({ \"data-testid\": \"dockview-dv-default-tab\" }, rest, { onPointerDown: _onPointerDown, onPointerUp: _onPointerUp, onPointerLeave: _onPointerLeave, className: \"dv-default-tab\" }),\n React.createElement(\"span\", { className: \"dv-default-tab-content\" }, title),\n !hideClose && (React.createElement(\"div\", { className: \"dv-default-tab-action\", onPointerDown: onBtnPointerDown, onClick: onClose },\n React.createElement(CloseButton, null)))));\n};\n","import { SplitviewApi, SplitviewPanel, } from 'dockview-core';\nimport { ReactPart } from '../react';\nexport class ReactPanelView extends SplitviewPanel {\n constructor(id, component, reactComponent, reactPortalStore) {\n super(id, component);\n this.reactComponent = reactComponent;\n this.reactPortalStore = reactPortalStore;\n }\n getComponent() {\n var _a, _b;\n return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {\n params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},\n api: this.api,\n containerApi: new SplitviewApi(this._params.accessor),\n });\n }\n}\n","import React from 'react';\nimport { createSplitview, PROPERTY_KEYS_SPLITVIEW, } from 'dockview-core';\nimport { usePortalsLifecycle } from '../react';\nimport { ReactPanelView } from './view';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_SPLITVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const SplitviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const splitviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_SPLITVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (splitviewRef.current) {\n splitviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_SPLITVIEW.map((key) => props[key]));\n React.useEffect(() => {\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const frameworkOptions = {\n createComponent: (options) => {\n return new ReactPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n };\n const api = createSplitview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n splitviewRef.current = api;\n return () => {\n splitviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!splitviewRef.current) {\n return;\n }\n splitviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nSplitviewReact.displayName = 'SplitviewComponent';\n","import { GridviewApi, GridviewPanel, } from 'dockview-core';\nimport { ReactPart } from '../react';\nexport class ReactGridPanelView extends GridviewPanel {\n constructor(id, component, reactComponent, reactPortalStore) {\n super(id, component);\n this.reactComponent = reactComponent;\n this.reactPortalStore = reactPortalStore;\n }\n getComponent() {\n var _a, _b;\n return new ReactPart(this.element, this.reactPortalStore, this.reactComponent, {\n params: (_b = (_a = this._params) === null || _a === void 0 ? void 0 : _a.params) !== null && _b !== void 0 ? _b : {},\n api: this.api,\n // TODO: fix casting hack\n containerApi: new GridviewApi(this._params\n .accessor),\n });\n }\n}\n","import React from 'react';\nimport { createGridview, PROPERTY_KEYS_GRIDVIEW, } from 'dockview-core';\nimport { ReactGridPanelView } from './view';\nimport { usePortalsLifecycle } from '../react';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_GRIDVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const GridviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const gridviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_GRIDVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (gridviewRef.current) {\n gridviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_GRIDVIEW.map((key) => props[key]));\n React.useEffect(() => {\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const frameworkOptions = {\n createComponent: (options) => {\n return new ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n };\n const api = createGridview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n gridviewRef.current = api;\n return () => {\n gridviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!gridviewRef.current) {\n return;\n }\n gridviewRef.current.updateOptions({\n createComponent: (options) => {\n return new ReactGridPanelView(options.id, options.name, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nGridviewReact.displayName = 'GridviewComponent';\n","import { ReactPart } from '../react';\nexport class PanePanelSection {\n get element() {\n return this._element;\n }\n constructor(id, component, reactPortalStore) {\n this.id = id;\n this.component = component;\n this.reactPortalStore = reactPortalStore;\n this._element = document.createElement('div');\n this._element.style.height = '100%';\n this._element.style.width = '100%';\n }\n init(parameters) {\n this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {\n params: parameters.params,\n api: parameters.api,\n title: parameters.title,\n containerApi: parameters.containerApi,\n });\n }\n toJSON() {\n return {\n id: this.id,\n };\n }\n update(params) {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(params.params);\n }\n dispose() {\n var _a;\n (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\n","import React from 'react';\nimport { createPaneview, PROPERTY_KEYS_PANEVIEW, } from 'dockview-core';\nimport { usePortalsLifecycle } from '../react';\nimport { PanePanelSection } from './view';\nfunction extractCoreOptions(props) {\n const coreOptions = PROPERTY_KEYS_PANEVIEW.reduce((obj, key) => {\n if (key in props) {\n obj[key] = props[key];\n }\n return obj;\n }, {});\n return coreOptions;\n}\nexport const PaneviewReact = React.forwardRef((props, ref) => {\n const domRef = React.useRef(null);\n const paneviewRef = React.useRef();\n const [portals, addPortal] = usePortalsLifecycle();\n React.useImperativeHandle(ref, () => domRef.current, []);\n const prevProps = React.useRef({});\n React.useEffect(() => {\n const changes = {};\n PROPERTY_KEYS_PANEVIEW.forEach((propKey) => {\n const key = propKey;\n const propValue = props[key];\n if (key in props && propValue !== prevProps.current[key]) {\n changes[key] = propValue;\n }\n });\n if (paneviewRef.current) {\n paneviewRef.current.updateOptions(changes);\n }\n else {\n // not yet fully initialized\n }\n prevProps.current = props;\n }, PROPERTY_KEYS_PANEVIEW.map((key) => props[key]));\n React.useEffect(() => {\n var _a;\n if (!domRef.current) {\n return () => {\n // noop\n };\n }\n const headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};\n const frameworkOptions = {\n createComponent: (options) => {\n return new PanePanelSection(options.id, props.components[options.name], { addPortal });\n },\n createHeaderComponent: (options) => {\n return new PanePanelSection(options.id, headerComponents[options.name], { addPortal });\n },\n };\n const api = createPaneview(domRef.current, Object.assign(Object.assign({}, extractCoreOptions(props)), frameworkOptions));\n const { clientWidth, clientHeight } = domRef.current;\n api.layout(clientWidth, clientHeight);\n if (props.onReady) {\n props.onReady({ api });\n }\n paneviewRef.current = api;\n return () => {\n paneviewRef.current = undefined;\n api.dispose();\n };\n }, []);\n React.useEffect(() => {\n if (!paneviewRef.current) {\n return;\n }\n paneviewRef.current.updateOptions({\n createComponent: (options) => {\n return new PanePanelSection(options.id, props.components[options.name], { addPortal });\n },\n });\n }, [props.components]);\n React.useEffect(() => {\n var _a;\n if (!paneviewRef.current) {\n return;\n }\n const headerComponents = (_a = props.headerComponents) !== null && _a !== void 0 ? _a : {};\n paneviewRef.current.updateOptions({\n createHeaderComponent: (options) => {\n return new PanePanelSection(options.id, headerComponents[options.name], { addPortal });\n },\n });\n }, [props.headerComponents]);\n React.useEffect(() => {\n if (!paneviewRef.current) {\n return () => {\n // noop\n };\n }\n const disposable = paneviewRef.current.onDidDrop((event) => {\n if (props.onDidDrop) {\n props.onDidDrop(event);\n }\n });\n return () => {\n disposable.dispose();\n };\n }, [props.onDidDrop]);\n return (React.createElement(\"div\", { style: { height: '100%', width: '100%' }, ref: domRef }, portals));\n});\nPaneviewReact.displayName = 'PaneviewComponent';\n","import * as React from 'react';\nimport './codeSandboxButton.scss';\nimport { ThemePicker } from './container';\n\nconst BASE_SANDBOX_URL =\n 'https://codesandbox.io/s/github/mathuo/dockview/tree/master/packages/docs/sandboxes';\n\nconst createSvgElementFromPath = (params: {\n height: string;\n width: string;\n viewbox: string;\n path: string;\n}) => {\n return (\n \n \n \n );\n};\n\nconst CloseButton = () =>\n createSvgElementFromPath({\n width: '16',\n height: '16',\n viewbox: '0 0 50 58',\n path: 'M22.5581 50.9938V30.1717L4.65116 19.869V31.7386L12.8536 36.4939V45.4198L22.5581 50.9938ZM27.2093 51.1162L37.0931 45.4226V36.2851L45.3488 31.501V19.7801L27.2093 30.2529V51.1162ZM42.9633 15.7867L33.4288 10.2615L25.0571 15.1193L16.6219 10.2567L7.00237 15.8557L24.9542 26.1842L42.9633 15.7867ZM0 43.4008V14.5498L24.9974 0L50 14.4887V43.3552L24.9969 57.7584L0 43.4008Z',\n });\n\nexport const CodeSandboxButton = (props: {\n id: string;\n hideThemePicker?: boolean;\n}) => {\n const url = React.useMemo(() => {\n if (!props.id) {\n return '';\n }\n return `${BASE_SANDBOX_URL}/${props.id}`;\n }, [props.id]);\n\n return (\n <>\n {!props.hideThemePicker && }\n \n {`Open in `}\n \n \n CodeSandbox\n \n \n \n \n \n );\n};\n","import * as React from 'react';\nimport './spinner.scss';\n\nexport const Spinner = () => {\n return (\n
\n
\n
\n
\n
\n
\n );\n};\n","import * as React from 'react';\nimport { CodeSandboxButton } from './codeSandboxButton';\nimport useBaseUrl from '@docusaurus/useBaseUrl';\nimport './container.scss';\nimport { Spinner } from './spinner';\nimport BrowserOnly from '@docusaurus/BrowserOnly';\n\nexport const Container = (props: {\n children?: React.ReactNode;\n height?: number;\n injectVanillaJS?: (parent: HTMLElement) => void;\n sandboxId?: string;\n}) => {\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n if (!props.injectVanillaJS) {\n return;\n }\n\n props.injectVanillaJS(ref.current);\n }, [props.injectVanillaJS]);\n\n return (\n \n {() => (\n <>\n \n {props.children}\n \n \n \n {props.sandboxId && (\n \n )}\n \n \n )}\n \n );\n};\n\nconst ReactIcon = (props: { height: number; width: number }) => {\n return (\n \n );\n};\n\nconst JavascriptIcon = (props: { height: number; width: number }) => {\n return (\n \n );\n};\n\nconst themes = [\n 'dockview-theme-abyss',\n 'dockview-theme-dark',\n 'dockview-theme-light',\n 'dockview-theme-vs',\n 'dockview-theme-dracula',\n 'dockview-theme-replit',\n 'dockview-theme-kraken',\n];\n\nfunction useLocalStorageItem(key: string, defaultValue: string): string {\n const [item, setItem] = React.useState(\n localStorage.getItem(key)\n );\n\n React.useEffect(() => {\n const listener = (event: StorageEvent) => {\n setItem(localStorage.getItem(key));\n };\n\n window.addEventListener('storage', listener);\n\n setItem(localStorage.getItem(key));\n\n return () => {\n window.removeEventListener('storage', listener);\n };\n }, [key]);\n\n return item === null ? defaultValue : item;\n}\n\nexport const ThemePicker = () => {\n const [theme, setTheme] = React.useState(\n localStorage.getItem('dv-theme-class-name') || themes[0]\n );\n\n React.useEffect(() => {\n localStorage.setItem('dv-theme-class-name', theme);\n window.dispatchEvent(new StorageEvent('storage'));\n }, [theme]);\n\n return (\n \n {'Theme: '}\n setTheme(e.target.value)}\n value={theme}\n >\n {themes.map((theme) => (\n \n ))}\n \n \n );\n};\n\nexport function useTheme(): string {\n return useLocalStorageItem('dv-theme-class-name', 'dockview-theme-abyss');\n}\n\nexport const MultiFrameworkContainer2 = (props: {\n react: React.FC;\n typescript?: (parent: HTMLElement) => { dispose: () => void };\n sandboxId: string;\n height?: number;\n hideThemePicker?: boolean;\n}) => {\n const ref = React.useRef(null);\n\n const [framework, setFramework] = React.useState('React');\n\n const [animation, setAnimation] = React.useState(false);\n\n const theme = useLocalStorageItem(\n 'dv-theme-class-name',\n 'dockview-theme-abyss'\n );\n\n React.useEffect(() => {\n setAnimation(true);\n\n setTimeout(() => {\n setAnimation(false);\n }, 500);\n }, [framework]);\n\n React.useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n if (framework === 'Javascript') {\n const disposable = props.typescript(ref.current);\n\n return () => {\n disposable.dispose();\n };\n }\n\n return;\n }, [props.typescript, framework]);\n\n const sandboxId = React.useMemo(() => {\n if (framework === 'Javascript') {\n return `javascript/${props.sandboxId}`;\n }\n return props.sandboxId;\n }, [props.sandboxId, framework]);\n\n return (\n <>\n \n {animation && (\n \n \n \n )}\n {framework === 'React' && }\n \n \n \n {props.typescript &&\n (framework === 'React' ? (\n \n ) : (\n \n ))}\n {props.typescript && (\n {\n const target = e.target as HTMLSelectElement;\n setFramework(target.value);\n }}\n >\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nexport const MultiFrameworkContainer = (props: {\n react: React.FC;\n typescript?: (parent: HTMLElement) => { dispose: () => void };\n sandboxId: string;\n height?: number;\n hideThemePicker?: boolean;\n}) => {\n return (\n \n {() => }\n \n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"features\":\"features_t9lD\",\"featureSvg\":\"featureSvg_GfXr\"};","import React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.module.css';\n\ntype FeatureItem = {\n title: string;\n Svg: React.ComponentType>;\n description: JSX.Element;\n};\n\nconst FeatureList: FeatureItem[] = [\n {\n title: '',\n Svg: require('@site/static/img/dockview_grid_3.svg').default,\n description: (\n <>\n
\n

\n Serializable Layouts\n

\n

\n Add and remove panels using the provided api or use the\n serialziation methods to persist layouts.\n

\n
\n
\n

\n Customizable Theme\n

\n

\n Adjust a number of provided CSS Properties for a simple\n change or target specific classes for a more customized\n approach.\n

\n
\n
\n

\n Choose Your Control\n

\n

\n Choose from a simple splitview, gridview, collapsable\n panes or a full docking solution. Combine multiple for\n complex layouts.\n

\n
\n \n ),\n },\n {\n title: '',\n Svg: require('@site/static/img/dockview_grid_4.svg').default,\n description: (\n <>\n
\n

\n Rich Feature Control\n

\n

\n Customize header features to add additional icons and\n more as well as custom tab rendering.\n

\n
\n
\n

\n Floating and Popout Groups\n

\n

\n Built-in support for floating groups and groups in new\n windows with a supporting api for progmatic control.\n

\n
\n
\n

Drag And Drop

\n

\n Drag and Drop tab to position your layout as well as\n interacting with external drag events.\n

\n
\n \n ),\n },\n {\n title: '',\n Svg: require('@site/static/img/dockview_splash_2.svg').default,\n description: (\n <>\n
\n

Zero Dependencies

\n

\n Zero dependencies, that's all.\n

\n
\n
\n

\n Code Quality and Transparency\n

\n

\n All of the code is run through Sonarcloud Code Analysis,\n which along with the source code and high test coverage\n can be viewed from the Github page.\n

\n
\n
\n

\n React or Vanilla TypeScript\n

\n

\n Exposes native support for both ReactJS components and\n Vanilla TypeScript.\n

\n
\n \n ),\n },\n];\n\nfunction Feature({ title, Svg, description }: FeatureItem) {\n return (\n \n \n
\n

{title}

\n {description}\n
\n \n );\n}\n\nexport default function HomepageFeatures(): JSX.Element {\n return (\n
\n
\n
\n {FeatureList.map((props, idx) => (\n \n ))}\n
\n
\n
\n );\n}\n","import * as React from 'react';\n\nexport const BrowserHeader = () => (\n \n \n \n \n \n);\n","import {\n GridviewReact,\n GridviewReadyEvent,\n IGridviewPanelProps,\n IPaneviewPanelProps,\n PaneviewReact,\n PaneviewReadyEvent,\n} from 'dockview';\nimport * as React from 'react';\n\nconst paneComponents = {\n default: (props: IPaneviewPanelProps) => {\n return (\n \n {props.params.title}\n \n );\n },\n};\n\nconst components = {\n default: (props: IGridviewPanelProps<{ title: string }>) => {\n return (\n \n {props.params.title}\n \n );\n },\n panes: (props: IGridviewPanelProps) => {\n const onReady = (event: PaneviewReadyEvent) => {\n event.api.addPanel({\n id: 'pane_1',\n component: 'default',\n title: 'Pane 1',\n isExpanded: false,\n });\n\n event.api.addPanel({\n id: 'pane_2',\n component: 'default',\n title: 'Pane 2',\n isExpanded: true,\n });\n\n event.api.addPanel({\n id: 'pane_3',\n component: 'default',\n title: 'Pane 3',\n isExpanded: true,\n });\n\n event.api.addPanel({\n id: 'pane_4',\n component: 'default',\n title: 'Pane 4',\n isExpanded: false,\n });\n };\n\n return ;\n },\n};\n\nconst DockviewDemo2 = (props: { theme?: string }) => {\n const onReady = (event: GridviewReadyEvent) => {\n event.api.addPanel({\n id: 'panes',\n component: 'panes',\n minimumHeight: 100,\n minimumWidth: 100,\n });\n\n event.api.addPanel({\n id: 'panel_1',\n component: 'default',\n position: { referencePanel: 'panes', direction: 'right' },\n minimumHeight: 100,\n minimumWidth: 100,\n });\n\n event.api.addPanel({\n id: 'panel_2',\n component: 'default',\n position: { referencePanel: 'panel_1', direction: 'below' },\n minimumHeight: 100,\n minimumWidth: 100,\n });\n\n event.api.addPanel({\n id: 'panel_3',\n component: 'default',\n position: { referencePanel: 'panel_2', direction: 'below' },\n minimumHeight: 100,\n minimumWidth: 100,\n });\n };\n\n return (\n \n );\n};\n\nexport default DockviewDemo2;\n","import useBaseUrl from '@docusaurus/useBaseUrl';\nimport HomepageFeatures from '.';\nimport { BrowserHeader } from '../ui/browserHeader';\nimport { MultiFrameworkContainer } from '../ui/container';\nimport * as React from 'react';\nimport DockviewDemo2 from '@site/sandboxes/dockview-app/src/app';\n\nexport const Introduction = () => {\n return (\n <>\n \n \n \n Dockview Live Demos\n \n
\n \n \n
\n \n );\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport Layout from '@theme/Layout';\nimport Link from '@docusaurus/Link';\nimport useDocusaurusContext from '@docusaurus/useDocusaurusContext';\nimport useBaseUrl from '@docusaurus/useBaseUrl';\nimport { Introduction } from '../components/HomepageFeatures/introduction';\nimport styles from './index.module.css';\nimport './index.scss';\n\nexport default function Home(): JSX.Element {\n const { siteConfig } = useDocusaurusContext();\n return (\n \n
\n
\n
\n
\n
\n

Fully Featured Docking Layout Manager

\n

\n Zero dependency layout management and docking\n controls\n

\n
\n
\n \n \n \n \n
\n
\n
\n \n
\n
\n
\n \n
\n \n \n
\n );\n}\n","var _rect, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _rect11, _rect12, _rect13, _rect14, _rect15, _rect16, _path18, _path19, _path20, _path21, _path22, _path23, _rect17, _rect18, _path24, _path25, _path26, _path27, _rect19, _rect20, _path28, _path29;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgDockviewGrid3 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 312,\n height: 200,\n fill: \"none\",\n viewBox: \"0 0 312 200\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 311.504,\n height: 200,\n fill: \"#fff\",\n rx: 5\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DCDCDC\",\n d: \"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BABABA\",\n d: \"M0 10h312v1H0z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A8A8A8\",\n d: \"M0 11h156v189H0z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M156 11h156v91H156zM234 102h78v98h-78zM156 102h78v98h-78zM0 24h156v176H0z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M157 102h155v1H157zM157 11h-1v189h1zM234 103h-1v97h1v-97Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M0 11h156v14H0z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M0 11h30v14H0zM31 11h30v14H31z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M62 11h30v14H62z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M30 11h1v14h-1zM61 11h1v14h-1zM92 11h1v14h-1z\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M157 11h155v14H157z\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M157 11h30v14h-30z\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M188 11h30v14h-30z\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M187 11h1v14h-1zM218 11h1v14h-1z\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M234 103h78v14h-78z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M234 103h24v14h-24z\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M258 103h24v14h-24z\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M258 103h.503v14H258zM282 103h.503v14H282z\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 4,\n x: 66,\n y: 16,\n fill: \"#fff\",\n rx: 2\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12,\n height: 4,\n x: 76,\n y: 16,\n fill: \"#fff\",\n rx: 2\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12,\n height: 4,\n x: 191,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 4,\n x: 260,\n y: 108,\n fill: \"#777\",\n rx: 2\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 11,\n height: 4,\n x: 268,\n y: 108,\n fill: \"#777\",\n rx: 2\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 206,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 5,\n height: 4,\n x: 160,\n y: 16,\n fill: \"#282828\",\n rx: 2\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16,\n height: 4,\n x: 166,\n y: 16,\n fill: \"#282828\",\n rx: 2\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16,\n height: 4,\n x: 237,\n y: 108,\n fill: \"#282828\",\n rx: 2\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 15,\n height: 4,\n x: 33,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 4,\n y: 3,\n fill: \"#FD605E\",\n rx: 2\n })), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 10,\n y: 3,\n fill: \"#FBBC3F\",\n rx: 2\n })), _rect14 || (_rect14 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 16,\n y: 3,\n fill: \"#34C942\",\n rx: 2\n })), _rect15 || (_rect15 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 6,\n height: 4,\n x: 2,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect16 || (_rect16 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 4,\n x: 10,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E1E1E1\",\n fillOpacity: 0.25,\n d: \"M297 11h15v189h-15z\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n stroke: \"#2B2B4A\",\n d: \"M90.5 18.5h48v13h-48z\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M140.344 22.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z\",\n clipRule: \"evenodd\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeDasharray: \".25 .25\",\n d: \"M139.5 23.5h4v2h-4z\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M97.33 23.09h.421l.989 2.416h.034l.989-2.415h.42V26h-.33v-2.21h-.028L98.916 26h-.318l-.91-2.21h-.028V26h-.33v-2.91Zm4.889 2.018v-1.29h.335V26h-.335v-.37h-.023a.713.713 0 0 1-.238.283.692.692 0 0 1-.41.115.727.727 0 0 1-.363-.09.623.623 0 0 1-.25-.272 1.03 1.03 0 0 1-.091-.462v-1.386h.335v1.364c0 .159.045.286.134.38.09.095.204.142.343.142a.571.571 0 0 0 .563-.596Zm1.284-2.017V26h-.335v-2.91h.335Zm1.563.727v.284h-1.13v-.284h1.13Zm-.801-.523h.335v2.08c0 .095.014.166.042.213a.212.212 0 0 0 .107.094.438.438 0 0 0 .141.023.598.598 0 0 0 .091-.006l.057-.012.068.302a.7.7 0 0 1-.528-.021.556.556 0 0 1-.225-.187.532.532 0 0 1-.088-.315v-2.17ZM105.57 26v-2.182h.336V26h-.336Zm.171-2.546a.238.238 0 0 1-.169-.066.216.216 0 0 1-.07-.16c0-.063.024-.117.07-.161a.238.238 0 0 1 .169-.067c.065 0 .121.022.168.067a.214.214 0 0 1 .071.16.214.214 0 0 1-.071.16.236.236 0 0 1-.168.067Zm.779 3.364v-3h.324v.347h.039c.025-.038.059-.086.103-.145a.596.596 0 0 1 .19-.16.683.683 0 0 1 .338-.07c.184 0 .346.046.486.138a.92.92 0 0 1 .328.39c.079.169.118.368.118.597 0 .23-.039.431-.118.6a.935.935 0 0 1-.327.393.852.852 0 0 1-.481.137.7.7 0 0 1-.337-.07.636.636 0 0 1-.195-.16c-.045-.06-.08-.11-.105-.15h-.028v1.153h-.335Zm.329-1.909c0 .165.024.31.073.436a.661.661 0 0 0 .211.294.55.55 0 0 0 .341.105.55.55 0 0 0 .351-.11.672.672 0 0 0 .213-.302c.048-.127.073-.268.073-.423 0-.153-.024-.292-.071-.415a.644.644 0 0 0-.212-.294.56.56 0 0 0-.354-.11.556.556 0 0 0-.343.105.627.627 0 0 0-.211.287 1.187 1.187 0 0 0-.071.427Zm2.443-1.818V26h-.335v-2.91h.335Zm1.529 2.954c-.21 0-.391-.046-.544-.139a.942.942 0 0 1-.351-.392 1.343 1.343 0 0 1-.122-.588c0-.223.041-.42.122-.59a.967.967 0 0 1 .344-.401.924.924 0 0 1 .517-.145c.114 0 .226.019.337.057.111.037.211.099.302.184a.884.884 0 0 1 .218.335c.054.14.081.311.081.515v.142h-1.682v-.29h1.341a.718.718 0 0 0-.074-.33.556.556 0 0 0-.523-.312.6.6 0 0 0-.346.1.65.65 0 0 0-.223.255.74.74 0 0 0-.079.338v.193c0 .165.029.305.086.42.057.113.137.2.24.26a.701.701 0 0 0 .356.087.728.728 0 0 0 .239-.037.511.511 0 0 0 .186-.113.526.526 0 0 0 .121-.19l.324.09a.734.734 0 0 1-.172.29.84.84 0 0 1-.299.193 1.104 1.104 0 0 1-.399.069Zm2.539.773v-3h.323v.347h.04a3.76 3.76 0 0 1 .102-.145.6.6 0 0 1 .191-.16.683.683 0 0 1 .338-.07c.184 0 .346.046.486.138a.92.92 0 0 1 .328.39c.078.169.118.368.118.597 0 .23-.04.431-.118.6a.935.935 0 0 1-.327.393.854.854 0 0 1-.481.137.697.697 0 0 1-.337-.07.636.636 0 0 1-.195-.16c-.045-.06-.08-.11-.105-.15h-.028v1.153h-.335Zm.329-1.909c0 .165.024.31.073.436a.653.653 0 0 0 .211.294.55.55 0 0 0 .341.105.55.55 0 0 0 .351-.11.672.672 0 0 0 .213-.302c.048-.127.072-.268.072-.423 0-.153-.023-.292-.071-.415a.642.642 0 0 0-.211-.294.56.56 0 0 0-.354-.11.561.561 0 0 0-.344.105.625.625 0 0 0-.21.287 1.187 1.187 0 0 0-.071.427Zm2.75 1.142a.883.883 0 0 1-.376-.078.643.643 0 0 1-.269-.229.647.647 0 0 1-.099-.363c0-.125.024-.227.074-.304a.522.522 0 0 1 .197-.185c.082-.044.173-.078.273-.1.1-.022.201-.04.302-.053.133-.017.24-.03.323-.039a.5.5 0 0 0 .182-.047c.038-.021.058-.06.058-.113v-.012a.444.444 0 0 0-.115-.326c-.076-.078-.191-.117-.345-.117a.605.605 0 0 0-.377.105.622.622 0 0 0-.192.225l-.318-.114a.764.764 0 0 1 .228-.31.843.843 0 0 1 .312-.156c.114-.03.225-.045.335-.045.07 0 .151.008.242.025.092.016.18.05.265.101a.59.59 0 0 1 .215.232.86.86 0 0 1 .085.415V26h-.335v-.296h-.017a.653.653 0 0 1-.325.29.82.82 0 0 1-.323.057Zm.051-.301a.66.66 0 0 0 .335-.078.537.537 0 0 0 .279-.462v-.307c-.014.018-.046.033-.094.047a1.55 1.55 0 0 1-.165.036 6.889 6.889 0 0 1-.321.042c-.087.012-.168.03-.244.056a.424.424 0 0 0-.182.112.288.288 0 0 0-.068.202.3.3 0 0 0 .129.264.581.581 0 0 0 .331.088Zm1.896-1.063V26h-.335v-2.182h.324v.341h.028c.051-.11.129-.2.233-.267a.726.726 0 0 1 .404-.102c.147 0 .277.03.387.09.111.06.197.151.259.273.061.122.092.275.092.46V26h-.335v-1.364c0-.171-.045-.305-.134-.4a.473.473 0 0 0-.366-.145.585.585 0 0 0-.287.07.497.497 0 0 0-.197.203.663.663 0 0 0-.073.323Zm2.92 1.358c-.211 0-.392-.046-.544-.139a.929.929 0 0 1-.351-.392 1.33 1.33 0 0 1-.122-.588c0-.223.04-.42.122-.59a.964.964 0 0 1 .343-.401.926.926 0 0 1 .517-.145c.114 0 .226.019.337.057a.835.835 0 0 1 .52.52c.054.139.081.31.081.514v.142h-1.682v-.29h1.341a.718.718 0 0 0-.074-.33.554.554 0 0 0-.523-.312.6.6 0 0 0-.346.1.65.65 0 0 0-.223.255.752.752 0 0 0-.078.338v.193c0 .165.028.305.085.42.058.113.138.2.24.26a.702.702 0 0 0 .357.087.722.722 0 0 0 .238-.037.511.511 0 0 0 .186-.113.513.513 0 0 0 .121-.19l.324.09a.711.711 0 0 1-.172.29.835.835 0 0 1-.298.193 1.112 1.112 0 0 1-.399.069Zm1.748-2.954V26h-.335v-2.91h.335Zm2.16 1.216-.302.085a.53.53 0 0 0-.083-.146.413.413 0 0 0-.148-.12.54.54 0 0 0-.24-.047.572.572 0 0 0-.334.093c-.088.06-.132.138-.132.231 0 .084.03.15.091.198.06.048.155.088.284.12l.324.08c.195.048.34.12.436.218a.507.507 0 0 1 .143.373.554.554 0 0 1-.108.335.713.713 0 0 1-.298.233 1.089 1.089 0 0 1-.446.085.978.978 0 0 1-.552-.144.639.639 0 0 1-.277-.424l.318-.08c.03.118.087.206.172.265a.575.575 0 0 0 .333.088.625.625 0 0 0 .373-.1c.092-.067.139-.147.139-.24a.254.254 0 0 0-.08-.191.505.505 0 0 0-.244-.117l-.364-.085c-.2-.047-.346-.12-.44-.22a.532.532 0 0 1-.139-.377.54.54 0 0 1 .103-.326.716.716 0 0 1 .286-.223c.121-.054.258-.081.412-.081.216 0 .385.047.508.142.124.095.213.22.265.375Zm1.788.239c0-.358.047-.688.14-.988.093-.3.227-.578.4-.83h.296a1.75 1.75 0 0 0-.192.346 4.068 4.068 0 0 0-.26.956 3.627 3.627 0 0 0 .028 1.201c.044.232.103.448.176.647.074.199.157.36.248.486h-.296a3.068 3.068 0 0 1-.4-.83 3.337 3.337 0 0 1-.14-.988Zm2.307 1.494c-.187 0-.354-.032-.501-.097a.857.857 0 0 1-.348-.268.719.719 0 0 1-.139-.402h.358c.007.093.04.174.096.243.057.067.132.119.223.156a.815.815 0 0 0 .306.055.796.796 0 0 0 .332-.065.536.536 0 0 0 .227-.182.455.455 0 0 0 .083-.27.507.507 0 0 0-.313-.476.903.903 0 0 0-.375-.07h-.233v-.312h.233c.116 0 .217-.02.304-.062a.474.474 0 0 0 .282-.443.488.488 0 0 0-.066-.258.446.446 0 0 0-.184-.17.602.602 0 0 0-.279-.061c-.1 0-.195.018-.284.055a.53.53 0 0 0-.216.158.412.412 0 0 0-.091.247h-.341a.696.696 0 0 1 .138-.4.868.868 0 0 1 .338-.27c.14-.065.294-.097.462-.097.18 0 .334.037.463.11a.748.748 0 0 1 .4.669.653.653 0 0 1-.477.66v.021c.184.03.327.109.431.235.103.125.154.28.154.464 0 .158-.043.3-.129.426a.88.88 0 0 1-.349.296 1.139 1.139 0 0 1-.505.108Zm2.286-1.494c0 .357-.047.687-.141.988-.092.3-.225.577-.399.83h-.295a1.8 1.8 0 0 0 .19-.347c.06-.136.112-.286.156-.449a4.123 4.123 0 0 0 .142-1.023c0-.225-.021-.454-.065-.686a3.876 3.876 0 0 0-.176-.646 2.031 2.031 0 0 0-.247-.486h.295c.174.253.307.53.399.831.094.3.141.63.141.988Z\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n stroke: \"#2B2B4A\",\n d: \"M279.5 46.5h29v13h-29z\"\n })), _rect17 || (_rect17 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 4,\n x: 283,\n y: 51,\n fill: \"#fff\",\n rx: 2\n })), _rect18 || (_rect18 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12,\n height: 4,\n x: 294,\n y: 51,\n fill: \"#fff\",\n rx: 2\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M305.344 61.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z\",\n clipRule: \"evenodd\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeDasharray: \".25 .25\",\n d: \"M304.5 62.5h4v2h-4z\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E1E1E1\",\n fillOpacity: 0.25,\n d: \"M157 153h76v47h-76z\"\n })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n stroke: \"#2B2B4A\",\n d: \"M180.5 163.5h29v13h-29z\"\n })), _rect19 || (_rect19 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 4,\n x: 184,\n y: 168,\n fill: \"#fff\",\n rx: 2\n })), _rect20 || (_rect20 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12,\n height: 4,\n x: 195,\n y: 168,\n fill: \"#fff\",\n rx: 2\n })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M194.344 176.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z\",\n clipRule: \"evenodd\"\n })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeDasharray: \".25 .25\",\n d: \"M193.5 177.5h4v2h-4z\"\n })));\n};\nexport default SvgDockviewGrid3;","var _rect, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _path19, _rect10, _rect11, _rect12, _rect13, _rect14, _path20, _circle, _circle2, _circle3, _path21, _circle4, _circle5, _circle6, _path22, _rect15, _rect16, _path23, _circle7, _circle8, _circle9, _path24, _rect17, _path25, _g, _path26, _path27, _path28, _path29, _path30, _path31, _rect18, _rect19, _rect20, _rect21, _path32, _path33, _path34;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgDockviewGrid4 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 312,\n height: 200,\n fill: \"none\",\n viewBox: \"0 0 312 200\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 311.504,\n height: 200,\n fill: \"#fff\",\n rx: 5\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DCDCDC\",\n d: \"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BABABA\",\n d: \"M0 10h312v1H0z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#A8A8A8\",\n d: \"M0 11h156v189H0z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M188 11h124v91H188zM188 102h124v98H188zM0 24h187v176H0z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M188 102h124v1H188zM188 11h-1v189h1z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M0 11h187v14H0z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M0 11h35.962v14H0zM37.16 11h35.962v14H37.16z\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M74.32 11h35.962v14H74.32z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M35.962 11h1.199v14h-1.199zM73.122 11h1.199v14h-1.199zM110.282 11h1.199v14h-1.199z\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M188 11h124v14H188z\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M188 11h30v14h-30z\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M219 11h30v14h-30z\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M218 11h1v14h-1zM249 11h1v14h-1z\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M188 103h124v14H188z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M188 103h24v14h-24z\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M212 103h24v14h-24z\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M212 103h.503v14H212zM236 103h.503v14H236z\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M76 18a2 2 0 0 1 2-2h3a2 2 0 1 1 0 4h-3a2 2 0 0 1-2-2Z\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12,\n height: 4,\n x: 85,\n y: 16,\n fill: \"#fff\",\n rx: 2\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12,\n height: 4,\n x: 222,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 4,\n x: 214,\n y: 108,\n fill: \"#777\",\n rx: 2\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 11,\n height: 4,\n x: 222,\n y: 108,\n fill: \"#777\",\n rx: 2\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 237,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 5,\n height: 4,\n x: 191,\n y: 16,\n fill: \"#282828\",\n rx: 2\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16,\n height: 4,\n x: 197,\n y: 16,\n fill: \"#282828\",\n rx: 2\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16,\n height: 4,\n x: 191,\n y: 108,\n fill: \"#282828\",\n rx: 2\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#777\",\n d: \"M39 18a2 2 0 0 1 2-2h11a2 2 0 1 1 0 4H41a2 2 0 0 1-2-2Z\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 4,\n y: 3,\n fill: \"#FD605E\",\n rx: 2\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 10,\n y: 3,\n fill: \"#FBBC3F\",\n rx: 2\n })), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 16,\n y: 3,\n fill: \"#34C942\",\n rx: 2\n })), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 6,\n height: 4,\n x: 2,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _rect14 || (_rect14 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 4,\n x: 10,\n y: 16,\n fill: \"#777\",\n rx: 2\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M173 11h14v14h-14z\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 176,\n cy: 18,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 176 18)\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 184,\n cy: 18,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 184 18)\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 180,\n cy: 18,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 180 18)\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M298 11h14v14h-14z\"\n })), _circle4 || (_circle4 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 301,\n cy: 18,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 301 18)\"\n })), _circle5 || (_circle5 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 309,\n cy: 18,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 309 18)\"\n })), _circle6 || (_circle6 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 305,\n cy: 18,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 305 18)\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M111 11h14v14h-14z\"\n })), _rect15 || (_rect15 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 1.333,\n height: 8,\n x: 117.333,\n y: 14,\n fill: \"#fff\",\n rx: 0.667\n })), _rect16 || (_rect16 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 1.333,\n height: 8,\n x: 114,\n y: 18.666,\n fill: \"#fff\",\n rx: 0.667,\n transform: \"rotate(-90 114 18.666)\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M298 103h14v14h-14z\"\n })), _circle7 || (_circle7 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 301,\n cy: 110,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 301 110)\"\n })), _circle8 || (_circle8 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 309,\n cy: 110,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 309 110)\"\n })), _circle9 || (_circle9 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 305,\n cy: 110,\n r: 1,\n fill: \"#fff\",\n transform: \"rotate(-90 305 110)\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M285 103h14v14h-14z\"\n })), _rect17 || (_rect17 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 7,\n x: 288.5,\n y: 106.5,\n stroke: \"#fff\",\n rx: 1.5\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M288 109h8v2h-8z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.35\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M40 45h128.769v91H40z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M40 136h128.769v1H40z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M40 45h128.769v14H40z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M40 45h31.154v14H40z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M72.192 45h31.154v14H72.192z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M71.154 45h1.038v14h-1.038zM40 45h1v92h-1zM168 45h1v92h-1zM103.346 45h1.038v14h-1.038z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 12.461,\n height: 4,\n x: 75.308,\n y: 50,\n fill: \"#777\",\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 4.154,\n height: 4,\n x: 90.885,\n y: 50,\n fill: \"#777\",\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 5.192,\n height: 4,\n x: 43.115,\n y: 50,\n fill: \"#282828\",\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 16.615,\n height: 4,\n x: 49.346,\n y: 50,\n fill: \"#282828\",\n rx: 2\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M40 45h128.769v1H40z\"\n }))), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M29 54h128.769v91H29z\"\n })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M29 145h128.769v1H29z\"\n })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M29 54h128.769v14H29z\"\n })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#10192C\",\n d: \"M29 54h31.154v14H29z\"\n })), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M61.192 54h31.154v14H61.192z\"\n })), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M60.154 54h1.038v14h-1.038zM29 54h1v92h-1zM157 54h1v92h-1zM92.346 54h1.038v14h-1.038z\"\n })), _rect18 || (_rect18 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 12.461,\n height: 4,\n x: 64.308,\n y: 59,\n fill: \"#777\",\n rx: 2\n })), _rect19 || (_rect19 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4.154,\n height: 4,\n x: 79.885,\n y: 59,\n fill: \"#777\",\n rx: 2\n })), _rect20 || (_rect20 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 5.192,\n height: 4,\n x: 32.115,\n y: 59,\n fill: \"#282828\",\n rx: 2\n })), _rect21 || (_rect21 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16.615,\n height: 4,\n x: 38.346,\n y: 59,\n fill: \"#282828\",\n rx: 2\n })), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M29 54h128.769v1H29z\"\n })), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M128.344 61.265a.295.295 0 0 0-.017-.495l-4.147-2.48a.295.295 0 0 0-.441.31l.912 4.744c.04.21.284.309.459.186l.662-.463a.296.296 0 0 0 .12-.298l-.29-1.508a.296.296 0 0 1 .442-.309l1.318.788c.1.06.226.055.321-.011l.661-.464Z\",\n clipRule: \"evenodd\"\n })), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeDasharray: \".25 .25\",\n d: \"M127.5 62.5h4v2h-4z\"\n })));\n};\nexport default SvgDockviewGrid4;","var _path, _path2, _rect, _rect2, _rect3, _path3, _path4, _path5, _path6, _path7, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _path8, _path9, _path10, _rect11, _rect12, _rect13, _rect14, _rect15, _rect16, _rect17, _rect18, _rect19, _rect20, _rect21, _rect22, _rect23;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nconst SvgDockviewSplash2 = _ref => {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 312,\n height: 200,\n fill: \"none\",\n viewBox: \"0 0 312 200\",\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#DCDCDC\",\n d: \"M0 5a5 5 0 0 1 5-5h302a5 5 0 0 1 5 5v6H0V5Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#BABABA\",\n d: \"M0 10h312v1H0z\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 4,\n y: 3,\n fill: \"#FD605E\",\n rx: 2\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 10,\n y: 3,\n fill: \"#FBBC3F\",\n rx: 2\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 4,\n height: 4,\n x: 16,\n y: 3,\n fill: \"#34C942\",\n rx: 2\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D9D9D9\",\n d: \"M0 11h312v189H0z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#000C18\",\n d: \"M0 11h166v189H0zM167 11h145v189H167z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M166 11h1v189h-1zM167 56h145v1H167zM167 112h145v1H167z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1C1C2A\",\n d: \"M0 11h166v10H0zM0 22h166v10H0zM0 94h166v10H0zM0 190h166v10H0z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#2B2B4A\",\n d: \"M0 21h166v1H0z\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 21,\n height: 4,\n x: 11,\n y: 14,\n fill: \"#fff\",\n rx: 2\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 11,\n height: 4,\n x: 34,\n y: 14,\n fill: \"#fff\",\n rx: 2\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 6,\n height: 4,\n x: 11,\n y: 25,\n fill: \"#fff\",\n rx: 2\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 11,\n height: 4,\n x: 19,\n y: 25,\n fill: \"#fff\",\n rx: 2\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 16,\n height: 4,\n x: 11,\n y: 97,\n fill: \"#fff\",\n rx: 2\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 5,\n height: 4,\n x: 29,\n y: 97,\n fill: \"#fff\",\n rx: 2\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 14,\n height: 4,\n x: 11,\n y: 193,\n fill: \"#fff\",\n rx: 2\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m5 29-3-3.392.538-.608L5 27.799l2.463-2.785.537.608L5 29ZM5 101l-3-3.392.538-.608L5 99.799l2.463-2.785.537.608L5 101ZM6 16l-3.392 3L2 18.462 4.799 16l-2.785-2.463.608-.537L6 16ZM6 195l-3.392 3-.608-.537L4.799 195l-2.785-2.462.608-.538L6 195Z\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M212.674 111c.236 0 .394-.221.297-.416l-2.174-4.409c-.115-.233-.479-.233-.594 0l-2.174 4.409c-.097.195.061.416.297.416h.889a.327.327 0 0 0 .297-.175l.691-1.401c.115-.233.479-.233.594 0l.691 1.401a.327.327 0 0 0 .297.175h.889ZM208.326 114c-.236 0-.394.221-.297.416l2.174 4.409c.115.233.479.233.594 0l2.174-4.409c.097-.195-.061-.416-.297-.416h-.889a.327.327 0 0 0-.297.175l-.691 1.401c-.115.233-.479.233-.594 0l-.691-1.401a.327.327 0 0 0-.297-.175h-.889Z\",\n clipRule: \"evenodd\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n d: \"M210.5 116v-7\"\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 19,\n x: 175,\n y: 18,\n fill: \"#777\",\n rx: 2\n })), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 5,\n height: 5,\n x: 198,\n y: 18,\n fill: \"#777\",\n rx: 2\n })), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 26,\n height: 5,\n x: 206,\n y: 18,\n fill: \"#777\",\n rx: 2\n })), _rect14 || (_rect14 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 44,\n height: 5,\n x: 203,\n y: 71,\n fill: \"#777\",\n rx: 2\n })), _rect15 || (_rect15 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 44,\n height: 14,\n x: 228,\n y: 78,\n fill: \"#777\",\n rx: 2\n })), _rect16 || (_rect16 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 22,\n height: 5,\n x: 250,\n y: 71,\n fill: \"#777\",\n rx: 2\n })), _rect17 || (_rect17 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 33,\n height: 5,\n x: 239,\n y: 95,\n fill: \"#777\",\n rx: 2\n })), _rect18 || (_rect18 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 33,\n height: 5,\n x: 272,\n y: 117,\n fill: \"#777\",\n rx: 2\n })), _rect19 || (_rect19 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 7,\n height: 5,\n x: 259,\n y: 117,\n fill: \"#777\",\n rx: 2\n })), _rect20 || (_rect20 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 23,\n height: 5,\n x: 213,\n y: 95,\n fill: \"#777\",\n rx: 2\n })), _rect21 || (_rect21 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 8,\n height: 5,\n x: 203,\n y: 95,\n fill: \"#777\",\n rx: 2\n })), _rect22 || (_rect22 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 15,\n height: 5,\n x: 198,\n y: 25,\n fill: \"#777\",\n rx: 2\n })), _rect23 || (_rect23 = /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 5,\n x: 215,\n y: 25,\n fill: \"#777\",\n rx: 2\n })));\n};\nexport default SvgDockviewSplash2;"],"names":["BrowserOnly","_ref","children","fallback","useIsBrowser","_jsx","_Fragment","TransferObject","PanelTransfer","constructor","viewId","groupId","panelId","super","this","PaneTransfer","paneId","LocalSelectionTransfer","getInstance","INSTANCE","hasData","proto","clearData","undefined","data","getData","setData","getPanelData","panelTransfer","prototype","getPaneData","paneTransfer","Event","Disposable","any","_len","arguments","length","Array","_key","listener","disposables","map","child","dispose","forEach","d","DockviewEvent","_defaultPrevented","defaultPrevented","preventDefault","AcceptableEvent","_isAccepted","isAccepted","accept","Stacktrace","create","_a","Error","stack","value","print","console","warn","Listener","callback","stacktrace","Emitter","setLeakageMonitorEnabled","isEnabled","ENABLE_TRACKING","MEMORY_LEAK_WATCHER","clear","_last","options","_listeners","_disposed","event","_event","replay","push","index","indexOf","splice","add","fire","e","queueMicrotask","delete","addDisposableListener","element","type","addEventListener","removeEventListener","events","Map","size","set","AsapEvent","_onFired","_currentFireCount","_queued","onEvent","fireCountAtTimeOfEventSubscription","NONE","from","func","CompositeDisposable","isDisposed","_isDisposed","args","_disposables","addDisposables","_len2","_key2","arg","MutableDisposable","_disposable","disposable","OverflowObserver","el","_onDidChange","onDidChange","_value","watchElementResize","entry","hasScrollX","target","scrollWidth","clientWidth","hasScrollY","scrollHeight","clientHeight","cb","observer","ResizeObserver","entires","requestAnimationFrame","firstEntry","observe","unobserve","disconnect","removeClasses","classes","classname","classList","contains","remove","addClasses","toggleClass","className","isToggled","hasClass","isAncestor","testChild","testAncestor","parentNode","trackFocus","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","document","activeElement","loosingFocus","onFocus","onBlur","window","setTimeout","_refreshStateHandler","refreshState","QUASI_PREVENT_DEFAULT_KEY","quasiDefaultPrevented","getDomNodePagePosition","domNode","left","top","width","height","getBoundingClientRect","scrollX","scrollY","disableIframePointEvents","rootNode","iframes","tagNames","findIframesInNode","node","nodeType","Node","ELEMENT_NODE","includes","tagName","shadowRoot","documentElement","allTagsNamesInclusiveOfShadowDoms","original","WeakMap","iframe","style","pointerEvents","release","get","Classnames","_classNames","setClassNames","classNames","split","filter","v","trim","tail","arr","slice","sequenceEquals","arr1","arr2","i","pushToStart","unshift","pushToEnd","array","findIndex","t","clamp","min","max","Math","sequentialNumberGenerator","next","toString","range","to","result","ViewItem","_size","cachedVisibleSize","_cachedVisibleSize","visible","minimumSize","view","viewMinimumSize","maximumSize","viewMaximumSize","priority","snap","enabled","container","setVisible","toggle","Orientation","SashState","LayoutPriority","Sizing","Distribute","Split","Invisible","Splitview","contentSize","_contentSize","orthogonalSize","_orthogonalSize","viewItems","proportions","_proportions","orientation","_orientation","tmp","HORIZONTAL","reduce","r","item","Number","POSITIVE_INFINITY","startSnappingEnabled","_startSnappingEnabled","updateSashEnablement","endSnappingEnabled","_endSnappingEnabled","disabled","_disabled","margin","_margin","_b","_this","sashes","_onDidSashEnd","onDidSashEnd","_onDidAddView","onDidAddView","_onDidRemoveView","onDidRemoveView","resize","delta","sizes","lowPriorityIndexes","highPriorityIndexes","overloadMinDelta","overloadMaxDelta","snapBefore","snapAfter","x","NEGATIVE_INFINITY","upIndexes","downIndexes","upItems","upSizes","downItems","downSizes","minDeltaUp","_","maxDeltaUp","maxDeltaDown","minDeltaDown","minDelta","maxDelta","snapped","snapView","limitDelta","actualDelta","deltaUp","viewDelta","deltaDown","VERTICAL","createContainer","proportionalLayout","viewContainer","createViewContainer","sashContainer","createSashContainer","appendChild","styles","descriptor","views","viewDescriptor","sizing","addView","saveProportions","separatorBorder","removeProperty","setProperty","isViewVisible","setViewVisible","viewItem","distributeEmptySpace","layoutViews","getViewSize","resizeView","indexes","Low","High","round","relayout","getViews","skipLayout","createElement","viewSize","newSize","removeChild","insertBefore","sash","onPointerStart","start","clientX","clientY","sashIndex","fn","firstIndex","s","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","snappedViewItem","halfSize","floor","onPointerMove","end","sashItem","distributeViewSizes","flexibleViewItems","flexibleSize","removeView","getViewCachedVisibleSize","moveView","layout","previousSize","total","proportion","lowPriorityIndex","emptyDelta","visibleViewItems","sashCount","marginReducedSize","totalLeftOffset","viewLeftOffsets","runningVisiblePanelCount","flag","visiblePanelsBeforeThisView","offset","sashWidth","previous","collapsesDown","expandsDown","reverseViews","reverse","collapsesUp","expandsUp","position","snappedBefore","snappedAfter","updateSash","MINIMUM","MAXIMUM","DISABLED","ENABLED","state","orientationClassname","PROPERTY_KEYS_SPLITVIEW","properties","disableAutoResizing","Object","keys","Paneview","splitview","paneItems","skipAnimation","getPanes","pane","onDidChangeExpansionState","setupAnimation","paneItem","addPane","removePane","skipDispose","animationTimer","clearTimeout","LeafNode","minimumWidth","maximumWidth","minimumHeight","maximumHeight","minimumOrthogonalSize","maximumOrthogonalSize","BranchNode","c","Normal","priorities","some","p","childDescriptors","_childrenDisposable","_onDidVisibilityChange","onDidVisibilityChange","childDescriptor","setupChildrenEvents","_visible","isChildVisible","setChildVisible","wereAllChildrenHidden","areAllChildrenHidden","moveChild","_removeChild","_addChild","getChildSize","resizeChild","addChild","getChildCachedVisibleSize","findLeaf","candiateNode","last","cloneNode","flipNode","orthogonal","totalSize","childSize","getGridLocation","parentElement","test","firstElementChild","lastElementChild","nextElementSibling","indexInParent","getRelativeLocation","rootOrientation","location","direction","getLocationOrientation","directionOrientation","getDirectionOrientation","rest","_index","serializeBranchNode","box","isGridBranchNode","toJSON","Gridview","_root","root","locked","_locked","branch","pop","maximizedView","_maximizedNode","leaf","hasMaximizedView","maximizeView","getNode","exitMaximizedView","getView","hiddenOnMaximize","hideAllViewsBut","parent","exclude","_onDidMaximizedNodeChange","isMaximized","showViewsInReverseOrder","serialize","maxmizedViewLocation","resullt","maximizedNode","_onDidViewVisibilityChange","deserialize","json","deserializer","_deserialize","_deserializeNode","serializedChild","fromJSON","call","oldRoot","normalize","childReference","insertOrthogonalSplitviewAtRoot","progmaticSelect","_getViews","nodeCachedVisibleSize","path","n","l","onDidViewVisibilityChange","onDidMaximizedNodeChange","parentLocation","pathToParent","grandParent","parentIndex","__","newSiblingSize","newSiblingCachedVisibleSize","newParent","newSibling","nodeToRemove","sibling","isSiblingVisible","siblingSizing","PROPERTY_KEYS_GRIDVIEW","hideBorders","Resizable","_element","disableResizing","_disableResizing","offsetParent","currentElement","DocumentFragment","host","isInDocument","contentRect","nextLayoutId","toTarget","BaseGrid","id","_id","_groups","groups","values","gridview","activeGroup","_activeGroup","_onDidRemove","onDidRemove","_onDidAdd","onDidAdd","_onDidMaximizedChange","onDidMaximizedChange","_onDidActiveChange","onDidActiveChange","_bufferOnDidLayoutChange","onDidLayoutChange","_onDidViewVisibilityChangeMicroTaskQueue","onDidViewVisibilityChangeMicroTaskQueue","panel","isVisible","updateOptions","_c","_d","maximizeGroup","doSetGroupActive","isMaximizedGroup","exitMaximizedGroup","hasMaximizedGroup","doAddGroup","group","doRemoveGroup","has","skipActive","getPanel","setActive","removeGroup","moveToNext","moveToPrevious","forceResize","SplitviewApi","component","panels","onDidLayoutFromJSON","removePanel","focus","addPanel","movePanel","PaneviewApi","onDidDrop","onUnhandledDragOverEvent","GridviewApi","onDidAddPanel","onDidAddGroup","onDidRemovePanel","onDidRemoveGroup","onDidActivePanelChange","onDidActiveGroupChange","force","DockviewApi","totalPanels","onDidMovePanel","onWillDrop","onWillShowOverlay","onWillDragGroup","onWillDragPanel","onDidPopoutGroupSizeChange","onDidPopoutGroupPositionChange","onDidOpenPopoutWindowFail","activePanel","getGroupPanel","addGroup","closeAllGroups","getGroup","addFloatingGroup","onDidMaximizedGroupChange","addPopoutGroup","DragHandler","dataDisposable","pointerEventsDisposable","_onDragStart","onDragStart","configure","setDisabled","isCancelled","dataTransfer","effectAllowed","items","DragAndDropObserver","callbacks","registerListeners","onDragEnter","onDragOver","onDragLeave","onDragEnd","onDrop","WillShowOverlayEvent","nativeEvent","directionToPosition","positionToDirection","DEFAULT_ACTIVATION_SIZE","DEFAULT_SIZE","Droptarget","_state","_onDrop","_onWillShowOverlay","_acceptedTargetZonesSet","Set","acceptedTargetZones","dnd","getOverrideTarget","getElements","_e","_f","_g","ACTUAL_TARGET","overrideTarget","removeDropTarget","getOverlayOutline","offsetWidth","offsetHeight","rect","currentTarget","y","quadrant","calculateQuadrant","isAlreadyUsed","canDisplayOverlay","willShowOverlayEvent","markAsUsed","targetElement","overlayElement","append","toggleClasses","stopPropagation","setTargetZones","setOverlayModel","model","overlayModel","USED_EVENT_ID","isSmallX","isSmallY","isLeft","isRight","isTop","isBottom","rightClass","leftClass","topClass","bottomClass","sizeOptions","outlineEl","elBox","ta","overlay","bigbox","rootTop","rootLeft","bounds","topPx","leftPx","widthPx","heightPx","checkBoundsChanged","visibility","transform","setGPUOptimizedBounds","changed","setGPUOptimizedBoundsFromStrings","overlayType","activationSizeOptions","activationSize","threshold","xp","yp","calculateQuadrantAsPercentage","calculateQuadrantAsPixels","PROPERTY_KEYS_PANEVIEW","disableDnd","PaneviewUnhandledDragOverEvent","WillFocusEvent","PanelApiImpl","isFocused","_isFocused","isActive","_isActive","_isVisible","_width","_height","_parameters","panelUpdatesDisposable","_onDidDimensionChange","onDidDimensionsChange","_onDidChangeFocus","onDidFocusChange","_onWillFocus","onWillFocus","_onWillVisibilityChange","onWillVisibilityChange","_onActiveChange","onActiveChange","_onDidParametersChange","onDidParametersChange","getParameters","initialize","parameters","update","params","updateParameters","SplitviewPanelApiImpl","_onDidConstraintsChangeInternal","onDidConstraintsChangeInternal","_onDidConstraintsChange","onDidConstraintsChange","_onDidSizeChange","onDidSizeChange","setConstraints","setSize","PaneviewPanelApiImpl","_pane","_onDidExpansionChange","onDidExpansionChange","_onMouseEnter","onMouseEnter","_onMouseLeave","onMouseLeave","setExpanded","isExpanded","BasePanelView","_params","api","tabIndex","outline","overflow","focusTracker","part","init","getComponent","assign","key","PaneviewPanel","headerSize","_minimumBodySize","_maximumBodySize","minimumBodySize","maximumBodySize","headerVisible","_headerVisible","header","display","_onDidChangeExpansionState","_isExpanded","headerComponent","isHeaderVisible","accessor","ev","isPanelExpanded","renderOnce","expanded","body","bodyPart","getBodyComponent","headerPart","getHeaderComponent","title","lineHeight","minHeight","maxHeight","DraggablePaneviewPanel","_onDidDrop","_onUnhandledDragOverEvent","initDragFeatures","accessorId","draggable","handler","firedEvent","containerApi","existingPanel","allPanels","fromIndex","toIndex","ContentContainer","dropTargetContainer","dropTarget","theme","dndPanelOverlay","shiftKey","show","hide","renderPanel","asActive","doRender","isPanelActive","content","renderer","renderContainer","detatch","attach","referenceContainer","openPanel","closePanel","addGhostImage","ghostElement","setDragImage","TabDragHandler","Tab","_onPointDown","onPointerDown","_onDropped","dragHandler","getComputedStyle","newNode","getPropertyValue","getPropertyPriority","setContent","updateDragAndDropState","WillShowOverlayLocationEvent","kind","GroupDragHandler","dragEvent","bgColor","color","backgroundColor","padding","fontSize","borderRadius","textContent","VoidContainer","Scrollbar","scrollableElement","_scrollLeft","_horizontalScrollbar","deltaY","MouseWheelSpeed","calculateScrollbarStyles","originalClientX","originalScrollLeft","deltaX","onEnd","scrollLeft","_animationTimer","px","percentageComplete","Tabs","showTabsOverflowControl","_showTabsOverflowControl","_tabsList","_observerDisposable","hasOverflow","toggleDropdown","reset","_tabs","tabs","selectedIndex","_onTabDragStart","onTabDragStart","_onOverflowTabsChange","onOverflowTabsChange","scrollbars","scrollbar","button","tab","setActivePanel","runningWidth","isActivePanel","find","isFloatingGroupsEnabled","disableFloatingGroups","isFloatingWithOnePanel","inDragMode","addTab","tabToRemove","childPosition","parentPosition","isChildEntirelyVisibleWithinParent","createSvgElementFromPath","svg","createElementNS","setAttributeNS","viewbox","createChevronRightButton","TabsContainer","hidden","_hidden","dropdownPart","_overflowTabs","_dropdownDisposable","_onGroupDragStart","onGroupDragStart","singleTabMode","rightActionsContainer","leftActionsContainer","preActionsContainer","disableTabsOverflowList","voidContainer","onDidOptionsChange","setRightActionsElement","rightActions","setLeftActionsElement","leftActions","setPrefixActionsElement","preActions","_isGroupActive","updateClassnames","text","icon","createDropdownElementHandle","prepend","capture","panelObject","createTabRenderer","wrapper","popupService","close","scrollIntoView","relativeParent","zIndex","findRelativeZIndexParent","openPopover","DockviewUnhandledDragOverEvent","PROPERTY_KEYS_DOCKVIEW","floatingGroupBounds","popoutUrl","defaultRenderer","debug","rootOverlayModel","noPanelsOverlay","dndEdges","DockviewDidDropEvent","DockviewWillDropEvent","_kind","DockviewGroupPanelModel","_activePanel","_panels","isEmpty","hasWatermark","watermark","tabsContainer","isContentFocused","contentContainer","_location","groupPanel","_onDidLocationChange","mostRecentlyUsed","_overwriteRenderContainer","_overwriteDropTargetContainer","_panelDisposables","_onMove","onMove","_onWillDrop","_onDidAddPanel","_onDidPanelTitleChange","onDidPanelTitleChange","_onDidPanelParametersChange","onDidPanelParametersChange","_onDidRemovePanel","_onDidActivePanelChange","_api","hideHeader","handleDropEvent","focusContent","rerender","overlayRenderContainer","rootDropTargetContainer","doAddPanel","updateContainer","createRightHeaderActionComponent","_rightHeaderActions","createLeftHeaderActionComponent","_leftHeaderActions","createPrefixHeaderActionComponent","_prefixHeaderActions","activeView","normalizedIndex","suppressRoll","containsPanel","skipSetActive","updateParentGroup","doSetActivePanel","skipSetGroupActive","groupItemOrId","panelToRemove","_removePanel","closeAllPanels","arrPanelCpy","doClose","isLast","removeEmptyGroup","updateActions","isGroupActive","doRemovePanel","nextPanel","skipSetActiveGroup","hasExistingPanel","updateMru","onDidTitleChange","runEvents","createWatermarkComponent","willDropEvent","getKind","itemId","GridviewPanelApiImpl","GridviewPanel","_priority","_snap","__minimumWidth","__minimumHeight","__maximumHeight","__maximumWidth","_minimumWidth","_evaluatedMinimumWidth","updateConstraints","_maximumWidth","_evaluatedMaximumWidth","_minimumHeight","_evaluatedMinimumHeight","_maximumHeight","_evaluatedMaximumHeight","MAX_SAFE_INTEGER","maximum","minimum","NOT_INITIALIZED_MESSAGE","DockviewGroupPanelApiImpl","_group","onDidLocationChange","getWindow","moveTo","moveGroupOrPanel","maximize","exitMaximized","DockviewGroupPanel","activePanelMinimumWidth","activePanelMinimumHeight","activePanelMaximumWidth","activePanelMaximumHeight","_model","constraints","themeDark","name","themeLight","themeVisualStudio","themeAbyss","themeDracula","themeReplit","gap","themeAbyssSpaced","dndOverlayMounting","themeLightSpaced","DockviewPanelApiImpl","oldGroup","_onDidGroupChange","setupGroupEventListeners","tabComponent","_tabComponent","_onDidTitleChange","_onDidActiveGroupChange","onDidGroupChange","_onDidRendererChange","onDidRendererChange","groupEventsDisposable","setTitle","setRenderer","previousGroup","_trackGroupActive","hasBecomeHidden","hasBecomeVisible","DockviewPanel","_title","_renderer","contentComponent","isPanelVisible","DefaultTab","_content","action","render","DockviewPanelModel","_tab","createContentComponent","createTabComponent","tabLocation","cmp","_updateEvent","componentName","createComponent","defaultTabComponent","DefaultDockviewDeserialzier","panelData","viewData","Watermark","arialLevelTracker","_orderedList","destroy","setAttribute","Overlay","minimumInViewportWidth","minimumInViewportHeight","_onDidChangeEnd","onDidChangeEnd","setupResize","setBounds","bottom","right","bringToFront","verticalAlignment","horiziontalAlignment","containerRect","overlayRect","xOffset","getMinimumWidth","yOffset","getMinimumHeight","parseFloat","setupDrag","dragTarget","move","track","resizeHandleElement","startPosition","originalY","originalHeight","originalX","originalWidth","moveTop","MAX_VALUE","MINIMUM_HEIGHT","moveBottom","moveLeft","MINIMUM_WIDTH","moveRight","DockviewFloatingGroupPanel","DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE","DEFAULT_FLOATING_GROUP_POSITION","PositionCache","cache","currentFrameId","rafId","getPosition","cached","frameId","scheduleFrameUpdate","invalidate","OverlayRenderContainer","positionCache","pendingUpdates","updateAllPositions","createFocusableElement","focusContainer","box2","visibilityChanged","observerDisposable","correctLayerPosition","floatingGroup","floatingGroups","level","getAttribute","MutationObserver","attributeFilter","attributes","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","apply","PopoutWindow","_window","_onWillClose","onWillClose","_onDidClose","onDidClose","dimensions","screenX","screenY","innerWidth","innerHeight","open","url","features","entries","join","externalWindow","createPopoutWindowContainer","onDidOpen","externalDocument","styleSheetList","styleSheets","styleSheet","href","link","rel","head","cssTexts","cssRules","rule","cssText","err","createTextNode","addStyles","StrictEventsSequencing","PopupService","_active","_activeDisposable","anchorBox","offsetX","offsetY","HTMLElement","buffer","rootRect","translateX","translateY","shiftAbsoluteElementIntoView","DropTargetAnchorContainer","exists","_outline","anchor","createAnchor","targetBox","DEFAULT_ROOT_OVERLAY_MODEL","moveGroupWithoutDestroying","removedPanel","DockviewComponent","flatMap","_options","_floatingGroups","popoutRestorationPromise","_popoutRestorationPromise","nextGroupId","_deserializer","_watermark","_onWillDragPanel","_onWillDragGroup","_onDidPopoutGroupSizeChange","_onDidPopoutGroupPositionChange","_onDidOpenPopoutWindowFail","_onDidLayoutFromJSON","_onDidMovePanel","_onDidMaximizedGroupChange","_popoutGroups","_onDidRemoveGroup","_onDidAddGroup","_onDidOptionsChange","_moving","_themeClassnames","_rootDropTarget","updateDropTargetModel","updateTheme","updateWatermark","orthogonalize","itemToPopout","toClassList","list","cls","startsWith","getDockviewTheme","overridePopoutGroup","getNextGroupId","popoutWindowDisposable","popoutContainer","referenceGroup","referenceLocation","isGroupAddedToDom","createGroup","error","movingLock","gready","floatingBox","returnedGroup","doSetGroupAndPanelActive","isValidReferenceGroup","popoutGroup","_onDidWindowPositionChange","emitter","timeout","previousScreenX","previousScreenY","checkMovement","closed","currentScreenX","currentScreenY","onDidWindowMoveEnd","resizeTimeout","onDidWindowResizeEnd","skipPopoutAssociated","skipPopoutReturn","catch","popoutReferenceGroupId","popoutReferenceGroup","skipRemoveGroup","anchoredBox","getAnchoredBox","minimumWidthWithinViewport","minimumHeightWithinViewport","querySelector","floatingGroupPanel","skipActiveGroup","createGroupAtLocation","oldDisableDnd","floating","includePanel","collection","floats","popoutGroups","gridReferenceGroup","grid","isArray","createGroupFromSerializedState","createdPanels","serializedFloatingGroups","serializedFloatingGroup","serializedPopoutGroups","popoutPromises","serializedPopoutGroup","popoutPromise","all","hasActiveGroup","initial","initialWidth","initialHeight","referencePanel","findGroup","isPanelOptionsWithGroup","createPanel","inactive","floatingGroupOptions","relativeLocation","orientationAtLocation","coordinates","watermarkContainer","isGroupOptionsWithGroup","selectedGroup","refGroup","removedGroup","re","isMoving","destinationGroup","sourceGroupId","sourceItemId","destinationTarget","destinationIndex","sourceGroup","targetLocation","targetParentLocation","sourceLocation","sourceParentLocation","newGroup","targetGroup","updatedReferenceLocation","dropLocation","isDestinationGroupEmpty","moveGroup","selectedFloatingGroup","selectedPopoutGroup","targetFloatingGroup","GridviewComponent","_onDidLayoutfromJSON","hasOrientationChanged","serializedGridview","queue","registerPanel","f","reference","groupItem","SplitviewComponent","_splitview","_splitviewChangeDisposable","_onDidLayoutChange","skipFocus","doAddView","serializedSplitview","DefaultHeader","_expandedIcon","_collapsedIcon","apiRef","_expander","updateIcon","MAXIMUM_BODY_SIZE","PaneFramework","PaneviewComponent","paneview","_paneview","_viewDisposables","createHeaderComponent","serializedPaneview","SplitviewPanel","_minimumSize","_evaluatedMinimumSize","_maximumSize","_evaluatedMaximumSize","createDockview","createSplitview","createGridview","createPaneview","ReactComponentBridge","props","ref","triggerRender","React","_props","componentProps","current","Date","now","displayName","uniquePortalKeyGenerator","ReactPartContext","ReactPart","portalStore","context","_initialProps","disposed","createPortal","componentInstance","$$typeof","bridgeComponent","Provider","portal","ReactDOM","addPortal","usePortalsLifecycle","portals","setPortals","existingPortals","DockviewDisposable","ReactPanelContentPart","reactPortalStore","DockviewEmitter","ReactPanelHeaderPart","ReactWatermarkPart","ReactHeaderActionsRendererPart","_part","mutableDisposable","DockviewMutableDisposable","DockviewCompositeDisposable","updatePanels","updateActivePanel","updateGroupActive","createGroupControlElement","store","DEFAULT_REACT_TAB","DockviewReact","domRef","dockviewRef","prevProps","changes","propKey","propValue","frameworkTabComponents","tabComponents","frameworkOptions","leftHeaderActionsComponent","rightHeaderActionsComponent","prefixHeaderActionsComponent","components","watermarkComponent","obj","extractCoreOptions","onReady","CloseButton","viewBox","focusable","__rest","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","DockviewDefaultTab","_containerApi","hideClose","closeActionOverride","onPointerUp","onPointerLeave","useTitle","isMiddleMouseButton","onClose","onBtnPointerDown","_onPointerDown","_onPointerUp","_onPointerLeave","onClick","ReactPanelView","reactComponent","SplitviewReact","splitviewRef","ReactGridPanelView","GridviewReact","gridviewRef","PanePanelSection","PaneviewReact","paneviewRef","headerComponents","CodeSandboxButton","_jsxs","hideThemePicker","ThemePicker","alignItems","fontWeight","paddingRight","Spinner","ReactIcon","marginRight","src","useBaseUrl","JavascriptIcon","themes","useLocalStorageItem","defaultValue","setItem","localStorage","getItem","setTheme","dispatchEvent","StorageEvent","onChange","MultiFrameworkContainer2","framework","setFramework","animation","setAnimation","typescript","sandboxId","background","justifyContent","react","cursor","border","flexGrow","MultiFrameworkContainer","FeatureList","Svg","require","description","Feature","flexWrap","featureSvg","role","maxWidth","HomepageFeatures","idx","BrowserHeader","borderBottom","borderTopLeftRadius","borderTopRightRadius","paneComponents","default","panes","Introduction","paddingLeft","DockviewDemo2","Home","siteConfig","useDocusaurusContext","Layout","tagline","Link","_rect","_path","_path2","_path3","_path4","_path5","_path6","_path7","_path8","_path9","_path10","_path11","_path12","_path13","_path14","_path15","_path16","_path17","_rect2","_rect3","_rect4","_rect5","_rect6","_rect7","_rect8","_rect9","_rect10","_rect11","_rect12","_rect13","_rect14","_rect15","_rect16","_path18","_path19","_path20","_path21","_path22","_path23","_rect17","_rect18","_path24","_path25","_path26","_path27","_rect19","_rect20","_path28","_path29","_extends","bind","source","titleId","xmlns","fill","rx","fillOpacity","stroke","fillRule","clipRule","strokeDasharray","_circle","_circle2","_circle3","_circle4","_circle5","_circle6","_circle7","_circle8","_circle9","_path30","_path31","_rect21","_path32","_path33","_path34","cx","cy","opacity","_rect22","_rect23"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"assets/js/1df93b7f.52f669bc.js","mappings":"8JAUe,SAASA,EAAWC,GAA2B,IAA1B,SAAEC,EAAQ,SAAEC,GAAWF,EAEvD,OADkBG,EAAAA,EAAAA,MAOPC,EAAAA,EAAAA,KAAAC,EAAAA,SAAA,CAAAJ,SAAGA,QAEPC,GAAY,IACvB,C,0SCrBA,MAAMI,GAEC,MAAMC,UAAsBD,EAC/BE,WAAAA,CAAYC,EAAQC,EAASC,GACzBC,QACAC,KAAKJ,OAASA,EACdI,KAAKH,QAAUA,EACfG,KAAKF,QAAUA,CACnB,EAEG,MAAMG,UAAqBR,EAC9BE,WAAAA,CAAYC,EAAQM,GAChBH,QACAC,KAAKJ,OAASA,EACdI,KAAKE,OAASA,CAClB,EAKG,MAAMC,EACTR,WAAAA,GACI,CAEJ,kBAAOS,GACH,OAAOD,EAAuBE,QAClC,CACAC,OAAAA,CAAQC,GACJ,OAAOA,GAASA,IAAUP,KAAKO,KACnC,CACAC,SAAAA,CAAUD,GACFP,KAAKM,QAAQC,KACbP,KAAKO,WAAQE,EACbT,KAAKU,UAAOD,EAEpB,CACAE,OAAAA,CAAQJ,GACJ,GAAIP,KAAKM,QAAQC,GACb,OAAOP,KAAKU,IAGpB,CACAE,OAAAA,CAAQF,EAAMH,GACNA,IACAP,KAAKU,KAAOA,EACZV,KAAKO,MAAQA,EAErB,EAGG,SAASM,IACZ,MAAMC,EAAgBX,EAAuBC,cAE7C,GADqBU,EAAcR,QAAQZ,EAAcqB,WAIzD,OAAOD,EAAcH,QAAQjB,EAAcqB,WAAW,EAC1D,CACO,SAASC,IACZ,MAAMC,EAAed,EAAuBC,cAE5C,GADqBa,EAAaX,QAAQL,EAAac,WAIvD,OAAOE,EAAaN,QAAQV,EAAac,WAAW,EACxD,CCjEO,IAAIG,ECAAC,EFiDXhB,EAAuBE,SAAW,IAAIF,EChDtC,SAAWe,GACPA,EAAME,IAAM,WAAkB,IAAD,IAAAC,EAAAC,UAAAC,OAAbnC,EAAQ,IAAAoC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAARrC,EAAQqC,GAAAH,UAAAG,GACpB,OAAQC,IACJ,MAAMC,EAAcvC,EAASwC,KAAKC,GAAUA,EAAMH,KAClD,MAAO,CACHI,QAASA,KACLH,EAAYI,SAASC,IACjBA,EAAEF,SAAS,GACb,EAET,CAET,CACH,CAbD,CAaGZ,IAAUA,EAAQ,CAAC,IACf,MAAMe,EACTtC,WAAAA,GACIK,KAAKkC,mBAAoB,CAC7B,CACA,oBAAIC,GACA,OAAOnC,KAAKkC,iBAChB,CACAE,cAAAA,GACIpC,KAAKkC,mBAAoB,CAC7B,EAEG,MAAMG,EACT1C,WAAAA,GACIK,KAAKsC,aAAc,CACvB,CACA,cAAIC,GACA,OAAOvC,KAAKsC,WAChB,CACAE,MAAAA,GACIxC,KAAKsC,aAAc,CACvB,EAmBJ,MAAMG,EACF,aAAOC,GACH,IAAIC,EACJ,OAAO,IAAIF,EAAwC,QAA5BE,GAAK,IAAIC,OAAQC,aAA0B,IAAPF,EAAgBA,EAAK,GACpF,CACAhD,WAAAA,CAAYmD,GACR9C,KAAK8C,MAAQA,CACjB,CACAC,KAAAA,GACIC,QAAQC,KAAK,uBAAwBjD,KAAK8C,MAC9C,EAEJ,MAAMI,EACFvD,WAAAA,CAAYwD,EAAUC,GAClBpD,KAAKmD,SAAWA,EAChBnD,KAAKoD,WAAaA,CACtB,EAGG,MAAMC,EACT,+BAAOC,CAAyBC,GACxBA,IAAcF,EAAQG,iBACtBH,EAAQI,oBAAoBC,QAEhCL,EAAQG,gBAAkBD,CAC9B,CACA,SAAIT,GACA,OAAO9C,KAAK2D,KAChB,CACAhE,WAAAA,CAAYiE,GACR5D,KAAK4D,QAAUA,EACf5D,KAAK6D,WAAa,GAClB7D,KAAK8D,WAAY,CACrB,CACA,SAAIC,GA4BA,OA3BK/D,KAAKgE,SACNhE,KAAKgE,OAAUb,IACX,IAAIR,GACyB,QAAvBA,EAAK3C,KAAK4D,eAA4B,IAAPjB,OAAgB,EAASA,EAAGsB,cAA0BxD,IAAfT,KAAK2D,OAC7ER,EAASnD,KAAK2D,OAElB,MAAMjC,EAAW,IAAIwB,EAASC,EAAUE,EAAQG,gBAAkBf,EAAWC,cAAWjC,GAExF,OADAT,KAAK6D,WAAWK,KAAKxC,GACd,CACHI,QAASA,KACL,MAAMqC,EAAQnE,KAAK6D,WAAWO,QAAQ1C,GAClCyC,GAAS,EACTnE,KAAK6D,WAAWQ,OAAOF,EAAO,GAEzBd,EAAQG,eAIb,EAGX,EAEDH,EAAQG,iBACRH,EAAQI,oBAAoBa,IAAItE,KAAKgE,OAAQvB,EAAWC,WAGzD1C,KAAKgE,MAChB,CACAO,IAAAA,CAAKC,GACD,IAAI7B,GACwB,QAAvBA,EAAK3C,KAAK4D,eAA4B,IAAPjB,OAAgB,EAASA,EAAGsB,UAC5DjE,KAAK2D,MAAQa,GAEjB,IAAK,MAAM9C,KAAY1B,KAAK6D,WACxBnC,EAASyB,SAASqB,EAE1B,CACA1C,OAAAA,GACS9B,KAAK8D,YACN9D,KAAK8D,WAAY,EACb9D,KAAK6D,WAAWtC,OAAS,IACrB8B,EAAQG,iBACRiB,gBAAe,KACX,IAAI9B,EAEJ,IAAK,MAAMjB,KAAY1B,KAAK6D,WACxBb,QAAQC,KAAK,uBAAuD,QAA9BN,EAAKjB,EAAS0B,kBAA+B,IAAPT,OAAgB,EAASA,EAAGI,QAC5G,IAGR/C,KAAK6D,WAAa,IAElBR,EAAQG,iBAAmBxD,KAAKgE,QAChCX,EAAQI,oBAAoBiB,OAAO1E,KAAKgE,QAGpD,EAIG,SAASW,EAAsBC,EAASC,EAAMnD,EAAUkC,GAE3D,OADAgB,EAAQE,iBAAiBD,EAAMnD,EAAUkC,GAClC,CACH9B,QAASA,KACL8C,EAAQG,oBAAoBF,EAAMnD,EAAUkC,EAAQ,EAGhE,CATAP,EAAQG,iBAAkB,EAC1BH,EAAQI,oBAAsB,IAhH9B,MACI9D,WAAAA,GACIK,KAAKgF,OAAS,IAAIC,GACtB,CACA,QAAIC,GACA,OAAOlF,KAAKgF,OAAOE,IACvB,CACAZ,GAAAA,CAAIP,EAAOX,GACPpD,KAAKgF,OAAOG,IAAIpB,EAAOX,EAC3B,CACAsB,OAAOX,GACH/D,KAAKgF,OAAON,OAAOX,EACvB,CACAL,KAAAA,GACI1D,KAAKgF,OAAOtB,OAChB,GAoHG,MAAM0B,EACTzF,WAAAA,GACIK,KAAKqF,SAAW,IAAIhC,EACpBrD,KAAKsF,kBAAoB,EACzBtF,KAAKuF,SAAU,EACfvF,KAAKwF,QAAWhB,IAIZ,MAAMiB,EAAqCzF,KAAKsF,kBAChD,OAAOtF,KAAKqF,SAAStB,OAAM,KAQnB/D,KAAKsF,kBAAoBG,GACzBjB,GACJ,GACF,CAEV,CACAD,IAAAA,GACIvE,KAAKsF,oBACDtF,KAAKuF,UAGTvF,KAAKuF,SAAU,EACfd,gBAAe,KACXzE,KAAKuF,SAAU,EACfvF,KAAKqF,SAASd,MAAM,IAE5B,CACAzC,OAAAA,GACI9B,KAAKqF,SAASvD,SAClB,GC5MJ,SAAWX,GACPA,EAAWuE,KAAO,CACd5D,QAASA,QAWbX,EAAWwE,KAPX,SAAcC,GACV,MAAO,CACH9D,QAASA,KACL8D,GAAM,EAGlB,CAEH,CAdD,CAcGzE,IAAeA,EAAa,CAAC,IACzB,MAAM0E,EACT,cAAIC,GACA,OAAO9F,KAAK+F,WAChB,CACApG,WAAAA,GACIK,KAAK+F,aAAc,EAAM,QAAA1E,EAAAC,UAAAC,OADdyE,EAAI,IAAAxE,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAJuE,EAAIvE,GAAAH,UAAAG,GAEfzB,KAAKiG,aAAeD,CACxB,CACAE,cAAAA,GAAyB,IAAD,IAAAC,EAAA7E,UAAAC,OAANyE,EAAI,IAAAxE,MAAA2E,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJJ,EAAII,GAAA9E,UAAA8E,GAClBJ,EAAKjE,SAASsE,GAAQrG,KAAKiG,aAAa/B,KAAKmC,IACjD,CACAvE,OAAAA,GACQ9B,KAAK+F,cAGT/F,KAAK+F,aAAc,EACnB/F,KAAKiG,aAAalE,SAASsE,GAAQA,EAAIvE,YACvC9B,KAAKiG,aAAe,GACxB,EAEG,MAAMK,EACT3G,WAAAA,GACIK,KAAKuG,YAAcpF,EAAWuE,IAClC,CACA,SAAI5C,CAAM0D,GACFxG,KAAKuG,aACLvG,KAAKuG,YAAYzE,UAErB9B,KAAKuG,YAAcC,CACvB,CACA1E,OAAAA,GACQ9B,KAAKuG,cACLvG,KAAKuG,YAAYzE,UACjB9B,KAAKuG,YAAcpF,EAAWuE,KAEtC,ECjDG,MAAMe,UAAyBZ,EAClClG,WAAAA,CAAY+G,GACR3G,QACAC,KAAK2G,aAAe,IAAItD,EACxBrD,KAAK4G,YAAc5G,KAAK2G,aAAa5C,MACrC/D,KAAK6G,OAAS,KACd7G,KAAKkG,eAAelG,KAAK2G,aAAcG,EAAmBJ,GAAKK,IAC3D,MAAMC,EAAaD,EAAME,OAAOC,YAAcH,EAAME,OAAOE,YACrDC,EAAaL,EAAME,OAAOI,aAAeN,EAAME,OAAOK,aAC5DtH,KAAK6G,OAAS,CAAEG,aAAYI,cAC5BpH,KAAK2G,aAAapC,KAAKvE,KAAK6G,OAAO,IAE3C,EAEG,SAASC,EAAmBlC,EAAS2C,GACxC,MAAMC,EAAW,IAAIC,gBAAgBC,IAMjCC,uBAAsB,KAClB,MAAMC,EAAaF,EAAQ,GAC3BH,EAAGK,EAAW,GAChB,IAGN,OADAJ,EAASK,QAAQjD,GACV,CACH9C,QAASA,KACL0F,EAASM,UAAUlD,GACnB4C,EAASO,YAAY,EAGjC,CACO,MAAMC,EAAgB,SAACpD,GAAyB,IAAD,IAAAvD,EAAAC,UAAAC,OAAZ0G,EAAO,IAAAzG,MAAAH,EAAA,EAAAA,EAAA,KAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAPwG,EAAOxG,EAAA,GAAAH,UAAAG,GAC7C,IAAK,MAAMyG,KAAaD,EAChBrD,EAAQuD,UAAUC,SAASF,IAC3BtD,EAAQuD,UAAUE,OAAOH,EAGrC,EACaI,EAAa,SAAC1D,GAAyB,IAAD,IAAAuB,EAAA7E,UAAAC,OAAZ0G,EAAO,IAAAzG,MAAA2E,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAP6B,EAAO7B,EAAA,GAAA9E,UAAA8E,GAC1C,IAAK,MAAM8B,KAAaD,EACfrD,EAAQuD,UAAUC,SAASF,IAC5BtD,EAAQuD,UAAU7D,IAAI4D,EAGlC,EACaK,EAAcA,CAAC3D,EAAS4D,EAAWC,KAC5C,MAAMC,EAAW9D,EAAQuD,UAAUC,SAASI,GACxCC,IAAcC,GACd9D,EAAQuD,UAAU7D,IAAIkE,IAErBC,GAAaC,GACd9D,EAAQuD,UAAUE,OAAOG,EAC7B,EAEG,SAASG,EAAWC,EAAWC,GAClC,KAAOD,GAAW,CACd,GAAIA,IAAcC,EACd,OAAO,EAEXD,EAAYA,EAAUE,UAC1B,CACA,OAAO,CACX,CAIO,SAASC,EAAWnE,GACvB,OAAO,IAAIoE,EAAapE,EAC5B,CAIA,MAAMoE,UAAqBnD,EACvBlG,WAAAA,CAAYiF,GACR7E,QACAC,KAAKiJ,YAAc,IAAI5F,EACvBrD,KAAKkJ,WAAalJ,KAAKiJ,YAAYlF,MACnC/D,KAAKmJ,WAAa,IAAI9F,EACtBrD,KAAKoJ,UAAYpJ,KAAKmJ,WAAWpF,MACjC/D,KAAKkG,eAAelG,KAAKiJ,YAAajJ,KAAKmJ,YAC3C,IAAIE,EAAWV,EAAWW,SAASC,cAAe3E,GAC9C4E,GAAe,EACnB,MAAMC,EAAUA,KACZD,GAAe,EACVH,IACDA,GAAW,EACXrJ,KAAKiJ,YAAY1E,OACrB,EAEEmF,EAASA,KACPL,IACAG,GAAe,EACfG,OAAOC,YAAW,KACVJ,IACAA,GAAe,EACfH,GAAW,EACXrJ,KAAKmJ,WAAW5E,OACpB,GACD,GACP,EAEJvE,KAAK6J,qBAAuB,KACIlB,EAAWW,SAASC,cAAe3E,KACnCyE,IACpBA,EACAK,IAGAD,IAER,EAEJzJ,KAAKkG,eAAevB,EAAsBC,EAAS,QAAS6E,GAAS,IACrEzJ,KAAKkG,eAAevB,EAAsBC,EAAS,OAAQ8E,GAAQ,GACvE,CACAI,YAAAA,GACI9J,KAAK6J,sBACT,EAGJ,MAAME,EAA4B,yBAM3B,SAASC,EAAsBjG,GAClC,OAAOA,EAAMgG,EACjB,CA2BO,SAASE,EAAuBC,GACnC,MAAM,KAAEC,EAAI,IAAEC,EAAG,MAAEC,EAAK,OAAEC,GAAWJ,EAAQK,wBAC7C,MAAO,CACHJ,KAAMA,EAAOR,OAAOa,QACpBJ,IAAKA,EAAMT,OAAOc,QAClBJ,MAAOA,EACPC,OAAQA,EAEhB,CA8CO,SAASI,EAAyBC,QAAQ,IAARA,IAAAA,EAAWrB,UAChD,MAAMsB,EAnBV,SAA2CC,GACvC,MAAMD,EAAU,GAehB,OAdA,SAASE,EAAkBC,GACvB,GAAIA,EAAKC,WAAaC,KAAKC,aAAc,CACjCL,EAASM,SAASJ,EAAKK,UACvBR,EAAQ1G,KAAK6G,GAEbA,EAAKM,YACLP,EAAkBC,EAAKM,YAE3B,IAAK,MAAMxJ,KAASkJ,EAAK3L,SACrB0L,EAAkBjJ,EAE1B,CACJ,CACAiJ,CAAkBxB,SAASgC,iBACpBV,CACX,CAEoBW,CAAkC,CAAC,SAAU,YACvDC,EAAW,IAAIC,QACrB,IAAK,MAAMC,KAAUd,EACjBY,EAASrG,IAAIuG,EAAQA,EAAOC,MAAMC,eAClCF,EAAOC,MAAMC,cAAgB,OAEjC,MAAO,CACHC,QAASA,KACL,IAAIlJ,EACJ,IAAK,MAAM+I,KAAUd,EACjBc,EAAOC,MAAMC,cAAgD,QAA/BjJ,EAAK6I,EAASM,IAAIJ,UAA4B,IAAP/I,EAAgBA,EAAK,OAE9FiI,EAAQvG,OAAO,EAAGuG,EAAQrJ,OAAO,EAG7C,CAoBO,MAAMwK,EACTpM,WAAAA,CAAYiF,GACR5E,KAAK4E,QAAUA,EACf5E,KAAKgM,YAAc,EACvB,CACAC,aAAAA,CAAcC,GACV,IAAK,MAAM1D,KAAaxI,KAAKgM,YACzBzD,EAAYvI,KAAK4E,QAAS4D,GAAW,GAEzCxI,KAAKgM,YAAcE,EACdC,MAAM,KACNC,QAAQC,GAAMA,EAAEC,OAAO/K,OAAS,IACrC,IAAK,MAAMiH,KAAaxI,KAAKgM,YACzBzD,EAAYvI,KAAK4E,QAAS4D,GAAW,EAE7C,ECzQG,SAAS+D,EAAKC,GACjB,GAAmB,IAAfA,EAAIjL,OACJ,MAAM,IAAIqB,MAAM,qBAEpB,MAAO,CAAC4J,EAAIC,MAAM,EAAGD,EAAIjL,OAAS,GAAIiL,EAAIA,EAAIjL,OAAS,GAC3D,CAIO,SAASmL,EAAeC,EAAMC,GACjC,GAAID,EAAKpL,SAAWqL,EAAKrL,OACrB,OAAO,EAEX,IAAK,IAAIsL,EAAI,EAAGA,EAAIF,EAAKpL,OAAQsL,IAC7B,GAAIF,EAAKE,KAAOD,EAAKC,GACjB,OAAO,EAGf,OAAO,CACX,CAIO,SAASC,EAAYN,EAAK1J,GAC7B,MAAMqB,EAAQqI,EAAIpI,QAAQtB,GACtBqB,GAAS,IACTqI,EAAInI,OAAOF,EAAO,GAClBqI,EAAIO,QAAQjK,GAEpB,CAIO,SAASkK,EAAUR,EAAK1J,GAC3B,MAAMqB,EAAQqI,EAAIpI,QAAQtB,GACtBqB,GAAS,IACTqI,EAAInI,OAAOF,EAAO,GAClBqI,EAAItI,KAAKpB,GAEjB,CAUO,SAASuF,EAAO4E,EAAOnK,GAC1B,MAAMqB,EAAQ8I,EAAMC,WAAWC,GAAMA,IAAMrK,IAC3C,OAAIqB,GAAS,IACT8I,EAAM5I,OAAOF,EAAO,IACb,EAGf,CCxDO,MAAMiJ,EAAQA,CAACtK,EAAOuK,EAAKC,IAC1BD,EAAMC,EAKCD,EAEJE,KAAKF,IAAIC,EAAKC,KAAKD,IAAIxK,EAAOuK,IAE5BG,EAA4BA,KACrC,IAAI1K,EAAQ,EACZ,MAAO,CAAE2K,KAAMA,KAAO3K,KAAS4K,WAAY,EAElCC,EAAQA,CAAChI,EAAMiI,KACxB,MAAMC,EAAS,GAKf,GAJkB,iBAAPD,IACPA,EAAKjI,EACLA,EAAO,GAEPA,GAAQiI,EACR,IAAK,IAAIf,EAAIlH,EAAMkH,EAAIe,EAAIf,IACvBgB,EAAO3J,KAAK2I,QAIhB,IAAK,IAAIA,EAAIlH,EAAMkH,EAAIe,EAAIf,IACvBgB,EAAO3J,KAAK2I,GAGpB,OAAOgB,CAAM,EC7BV,MAAMC,EACT,QAAI5I,CAAKA,GACLlF,KAAK+N,MAAQ7I,CACjB,CACA,QAAIA,GACA,OAAOlF,KAAK+N,KAChB,CACA,qBAAIC,GACA,OAAOhO,KAAKiO,kBAChB,CACA,WAAIC,GACA,YAA0C,IAA5BlO,KAAKiO,kBACvB,CACA,eAAIE,GACA,OAAOnO,KAAKkO,QAAUlO,KAAKoO,KAAKD,YAAc,CAClD,CACA,mBAAIE,GACA,OAAOrO,KAAKoO,KAAKD,WACrB,CACA,eAAIG,GACA,OAAOtO,KAAKkO,QAAUlO,KAAKoO,KAAKE,YAAc,CAClD,CACA,mBAAIC,GACA,OAAOvO,KAAKoO,KAAKE,WACrB,CACA,YAAIE,GACA,OAAOxO,KAAKoO,KAAKI,QACrB,CACA,QAAIC,GACA,QAASzO,KAAKoO,KAAKK,IACvB,CACA,WAAIC,CAAQA,GACR1O,KAAK2O,UAAUhD,MAAMC,cAAgB8C,EAAU,GAAK,MACxD,CACA/O,WAAAA,CAAYgP,EAAWP,EAAMlJ,EAAMsB,GAC/BxG,KAAK2O,UAAYA,EACjB3O,KAAKoO,KAAOA,EACZpO,KAAKwG,WAAaA,EAClBxG,KAAKiO,wBAAqBxN,EACN,iBAATyE,GACPlF,KAAK+N,MAAQ7I,EACblF,KAAKiO,wBAAqBxN,EAC1BkO,EAAUxG,UAAU7D,IAAI,aAGxBtE,KAAK+N,MAAQ,EACb/N,KAAKiO,mBAAqB/I,EAAK8I,kBAEvC,CACAY,UAAAA,CAAWV,EAAShJ,GAChB,IAAIvC,EACAuL,IAAYlO,KAAKkO,UAGjBA,GACAlO,KAAKkF,KAAOkI,EAAyC,QAAlCzK,EAAK3C,KAAKiO,0BAAuC,IAAPtL,EAAgBA,EAAK,EAAG3C,KAAKqO,gBAAiBrO,KAAKuO,iBAChHvO,KAAKiO,wBAAqBxN,IAG1BT,KAAKiO,mBACe,iBAAT/I,EAAoBA,EAAOlF,KAAKkF,KAC3ClF,KAAKkF,KAAO,GAEhBlF,KAAK2O,UAAUxG,UAAU0G,OAAO,UAAWX,GACvClO,KAAKoO,KAAKQ,YACV5O,KAAKoO,KAAKQ,WAAWV,GAE7B,CACApM,OAAAA,GAEI,OADA9B,KAAKwG,WAAW1E,UACT9B,KAAKoO,IAChB,EC/DG,IAAIU,EAKAC,EAOAC,EAMAC,GAjBX,SAAWH,GACPA,EAAwB,WAAI,aAC5BA,EAAsB,SAAI,UAC7B,CAHD,CAGGA,IAAgBA,EAAc,CAAC,IAElC,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,CAAC,IAE9B,SAAWC,GACPA,EAAoB,IAAI,MACxBA,EAAqB,KAAI,OACzBA,EAAuB,OAAI,QAC9B,CAJD,CAIGA,IAAmBA,EAAiB,CAAC,IAExC,SAAWC,GACPA,EAAOC,WAAa,CAAErK,KAAM,cAI5BoK,EAAOE,MAHP,SAAehL,GACX,MAAO,CAAEU,KAAM,QAASV,QAC5B,EAKA8K,EAAOG,UAHP,SAAmBpB,GACf,MAAO,CAAEnJ,KAAM,YAAamJ,oBAChC,CAEH,CAVD,CAUGiB,IAAWA,EAAS,CAAC,IACjB,MAAMI,EACT,eAAIC,GACA,OAAOtP,KAAKuP,YAChB,CACA,QAAIrK,GACA,OAAOlF,KAAK+N,KAChB,CACA,QAAI7I,CAAKpC,GACL9C,KAAK+N,MAAQjL,CACjB,CACA,kBAAI0M,GACA,OAAOxP,KAAKyP,eAChB,CACA,kBAAID,CAAe1M,GACf9C,KAAKyP,gBAAkB3M,CAC3B,CACA,UAAIvB,GACA,OAAOvB,KAAK0P,UAAUnO,MAC1B,CACA,eAAIoO,GACA,OAAO3P,KAAK4P,aAAe,IAAI5P,KAAK4P,mBAAgBnP,CACxD,CACA,eAAIoP,GACA,OAAO7P,KAAK8P,YAChB,CACA,eAAID,CAAY/M,GACZ9C,KAAK8P,aAAehN,EACpB,MAAMiN,EAAM/P,KAAKkF,KACjBlF,KAAKkF,KAAOlF,KAAKwP,eACjBxP,KAAKwP,eAAiBO,EACtB/H,EAAchI,KAAK4E,QAAS,gBAAiB,eAC7C5E,KAAK4E,QAAQuD,UAAU7D,IAAItE,KAAK6P,aAAef,EAAYkB,WACrD,gBACA,cACV,CACA,eAAI7B,GACA,OAAOnO,KAAK0P,UAAUO,QAAO,CAACC,EAAGC,IAASD,EAAIC,EAAKhC,aAAa,EACpE,CACA,eAAIG,GACA,OAAuB,IAAhBtO,KAAKuB,OACN6O,OAAOC,kBACPrQ,KAAK0P,UAAUO,QAAO,CAACC,EAAGC,IAASD,EAAIC,EAAK7B,aAAa,EACnE,CACA,wBAAIgC,GACA,OAAOtQ,KAAKuQ,qBAChB,CACA,wBAAID,CAAqBA,GACjBtQ,KAAKuQ,wBAA0BD,IAGnCtQ,KAAKuQ,sBAAwBD,EAC7BtQ,KAAKwQ,uBACT,CACA,sBAAIC,GACA,OAAOzQ,KAAK0Q,mBAChB,CACA,sBAAID,CAAmBA,GACfzQ,KAAK0Q,sBAAwBD,IAGjCzQ,KAAK0Q,oBAAsBD,EAC3BzQ,KAAKwQ,uBACT,CACA,YAAIG,GACA,OAAO3Q,KAAK4Q,SAChB,CACA,YAAID,CAAS7N,GACT9C,KAAK4Q,UAAY9N,EACjByF,EAAYvI,KAAK4E,QAAS,wBAAyB9B,EACvD,CACA,UAAI+N,GACA,OAAO7Q,KAAK8Q,OAChB,CACA,UAAID,CAAO/N,GACP9C,KAAK8Q,QAAUhO,EACfyF,EAAYvI,KAAK4E,QAAS,0BAAqC,IAAV9B,EACzD,CACAnD,WAAAA,CAAYgP,EAAW/K,GAAU,IACzBjB,EAAIoO,EADoBC,EAAA,KAE5BhR,KAAK2O,UAAYA,EACjB3O,KAAK0P,UAAY,GACjB1P,KAAKiR,OAAS,GACdjR,KAAK+N,MAAQ,EACb/N,KAAKyP,gBAAkB,EACvBzP,KAAKuP,aAAe,EACpBvP,KAAK4P,kBAAenP,EACpBT,KAAKuQ,uBAAwB,EAC7BvQ,KAAK0Q,qBAAsB,EAC3B1Q,KAAK4Q,WAAY,EACjB5Q,KAAK8Q,QAAU,EACf9Q,KAAKkR,cAAgB,IAAI7N,EACzBrD,KAAKmR,aAAenR,KAAKkR,cAAcnN,MACvC/D,KAAKoR,cAAgB,IAAI/N,EACzBrD,KAAKqR,aAAerR,KAAKoR,cAAcrN,MACvC/D,KAAKsR,iBAAmB,IAAIjO,EAC5BrD,KAAKuR,gBAAkBvR,KAAKsR,iBAAiBvN,MAC7C/D,KAAKwR,OAAS,SAACrN,EAAOsN,EAAOC,EAA2CC,EAAoBC,EAAqBC,EAA6CC,EAA6CC,EAAYC,GACnN,QAD8B,IAALN,IAAAA,EAAQV,EAAKtB,UAAU9N,KAAKqQ,GAAMA,EAAE/M,aAAgE,IAAhB2M,IAAAA,EAAmBzB,OAAO8B,wBAAmC,IAAhBJ,IAAAA,EAAmB1B,OAAOC,mBAChLlM,EAAQ,GAAKA,EAAQ6M,EAAKtB,UAAUnO,OACpC,OAAO,EAEX,MAAM4Q,EAAYxE,EAAMxJ,GAAQ,GAC1BiO,EAAczE,EAAMxJ,EAAQ,EAAG6M,EAAKtB,UAAUnO,QAEpD,GAAIqQ,EACA,IAAK,MAAM/E,KAAK+E,EACZ9E,EAAYqF,EAAWtF,GACvBC,EAAYsF,EAAavF,GAGjC,GAAI8E,EACA,IAAK,MAAM9E,KAAK8E,EACZ3E,EAAUmF,EAAWtF,GACrBG,EAAUoF,EAAavF,GAI/B,MAAMwF,EAAUF,EAAUvQ,KAAKiL,GAAMmE,EAAKtB,UAAU7C,KAC9CyF,EAAUH,EAAUvQ,KAAKiL,GAAM6E,EAAM7E,KAErC0F,EAAYH,EAAYxQ,KAAKiL,GAAMmE,EAAKtB,UAAU7C,KAClD2F,EAAYJ,EAAYxQ,KAAKiL,GAAM6E,EAAM7E,KAEzC4F,EAAaN,EAAUlC,QAAO,CAACyC,EAAG7F,IAAM6F,EAAI1B,EAAKtB,UAAU7C,GAAGsB,YAAcuD,EAAM7E,IAAI,GACtF8F,EAAaR,EAAUlC,QAAO,CAACyC,EAAG7F,IAAM6F,EAAI1B,EAAKtB,UAAU7C,GAAGyB,YAAcoD,EAAM7E,IAAI,GAEtF+F,EAAsC,IAAvBR,EAAY7Q,OAC3B6O,OAAOC,kBACP+B,EAAYnC,QAAO,CAACyC,EAAG7F,IAAM6F,EAAIhB,EAAM7E,GAAKmE,EAAKtB,UAAU7C,GAAGsB,aAAa,GAC3E0E,EAAsC,IAAvBT,EAAY7Q,OAC3B6O,OAAO8B,kBACPE,EAAYnC,QAAO,CAACyC,EAAG7F,IAAM6F,EAAIhB,EAAM7E,GAAKmE,EAAKtB,UAAU7C,GAAGyB,aAAa,GAE3EwE,EAAWvF,KAAKD,IAAImF,EAAYI,GAChCE,EAAWxF,KAAKF,IAAIuF,EAAcD,GAExC,IAAIK,GAAU,EACd,GAAIjB,EAAY,CACZ,MAAMkB,EAAWjC,EAAKtB,UAAUqC,EAAW5N,OACrC+J,EAAUuD,GAASM,EAAWmB,WACpCF,EAAU9E,IAAY+E,EAAS/E,QAC/B+E,EAASrE,WAAWV,EAAS6D,EAAW7M,KAC5C,CACA,IAAK8N,GAAWhB,EAAW,CACvB,MAAMiB,EAAWjC,EAAKtB,UAAUsC,EAAU7N,OACpC+J,EAAUuD,EAAQO,EAAUkB,WAClCF,EAAU9E,IAAY+E,EAAS/E,QAC/B+E,EAASrE,WAAWV,EAAS8D,EAAU9M,KAC3C,CACA,GAAI8N,EACA,OAAOhC,EAAKQ,OAAOrN,EAAOsN,EAAOC,EAAOC,EAAoBC,EAAqBC,EAAkBC,GAIvG,IAAIqB,EAAc,EAEdC,EAHmBhG,EAAMqE,EAAOqB,EAAUC,GAI9C,IAAK,IAAIlG,EAAI,EAAGA,EAAIwF,EAAQ9Q,OAAQsL,IAAK,CACrC,MAAMsD,EAAOkC,EAAQxF,GACf3H,EAAOkI,EAAMkF,EAAQzF,GAAKuG,EAASjD,EAAKhC,YAAagC,EAAK7B,aAC1D+E,EAAYnO,EAAOoN,EAAQzF,GACjCsG,GAAeE,EACfD,GAAWC,EACXlD,EAAKjL,KAAOA,CAChB,CAEA,IAAIoO,EAAYH,EAChB,IAAK,IAAItG,EAAI,EAAGA,EAAI0F,EAAUhR,OAAQsL,IAAK,CACvC,MAAMsD,EAAOoC,EAAU1F,GACjB3H,EAAOkI,EAAMoF,EAAU3F,GAAKyG,EAAWnD,EAAKhC,YAAagC,EAAK7B,aAEpEgF,GADkBpO,EAAOsN,EAAU3F,GAEnCsD,EAAKjL,KAAOA,CAChB,CAEA,OAAOuM,CACX,EACAzR,KAAK8P,aAA8C,QAA9BnN,EAAKiB,EAAQiM,mBAAgC,IAAPlN,EAAgBA,EAAKmM,EAAYyE,SAC5FvT,KAAK4E,QAAU5E,KAAKwT,kBACpBxT,KAAK6Q,OAAmC,QAAzBE,EAAKnN,EAAQiN,cAA2B,IAAPE,EAAgBA,EAAK,EACrE/Q,KAAKyT,wBAC8BhT,IAA/BmD,EAAQ6P,sBAEA7P,EAAQ6P,mBACpBzT,KAAK0T,cAAgB1T,KAAK2T,sBAC1B3T,KAAK4T,cAAgB5T,KAAK6T,sBAC1B7T,KAAK4E,QAAQkP,YAAY9T,KAAK4T,eAC9B5T,KAAK4E,QAAQkP,YAAY9T,KAAK0T,eAC9B1T,KAAK2O,UAAUmF,YAAY9T,KAAK4E,SAChC5E,KAAK2L,MAAM/H,EAAQmQ,QAEfnQ,EAAQoQ,aACRhU,KAAK+N,MAAQnK,EAAQoQ,WAAW9O,KAChCtB,EAAQoQ,WAAWC,MAAMlS,SAAQ,CAACmS,EAAgB/P,KAC9C,MAAMgQ,OAAoC1T,IAA3ByT,EAAehG,SAC1BgG,EAAehG,QACbgG,EAAehP,KACf,CACEL,KAAM,YACNmJ,kBAAmBkG,EAAehP,MAEpCkJ,EAAO8F,EAAe9F,KAC5BpO,KAAKoU,QAAQhG,EAAM+F,EAAQhQ,GAAO,EAEjC,IAGLnE,KAAKuP,aAAevP,KAAK0P,UAAUO,QAAO,CAACC,EAAGrD,IAAMqD,EAAIrD,EAAE3H,MAAM,GAChElF,KAAKqU,kBAEb,CACA1I,KAAAA,CAAMoI,GAC+E,iBAA5EA,aAAuC,EAASA,EAAOO,kBACxDtM,EAAchI,KAAK4E,QAAS,uBAC5B5E,KAAK4E,QAAQ+G,MAAM4I,eAAe,2BAGlCjM,EAAWtI,KAAK4E,QAAS,wBACrBmP,aAAuC,EAASA,EAAOO,kBACvDtU,KAAK4E,QAAQ+G,MAAM6I,YAAY,wBAAyBT,EAAOO,iBAG3E,CACAG,aAAAA,CAActQ,GACV,GAAIA,EAAQ,GAAKA,GAASnE,KAAK0P,UAAUnO,OACrC,MAAM,IAAIqB,MAAM,uBAGpB,OADiB5C,KAAK0P,UAAUvL,GAChB+J,OACpB,CACAwG,cAAAA,CAAevQ,EAAO+J,GAClB,GAAI/J,EAAQ,GAAKA,GAASnE,KAAK0P,UAAUnO,OACrC,MAAM,IAAIqB,MAAM,uBAEpB,MAAM+R,EAAW3U,KAAK0P,UAAUvL,GAChCwQ,EAAS/F,WAAWV,EAASyG,EAASzP,MACtClF,KAAK4U,qBAAqBzQ,GAC1BnE,KAAK6U,cACL7U,KAAKqU,iBACT,CACAS,WAAAA,CAAY3Q,GACR,OAAIA,EAAQ,GAAKA,GAASnE,KAAK0P,UAAUnO,QAC7B,EAELvB,KAAK0P,UAAUvL,GAAOe,IACjC,CACA6P,UAAAA,CAAW5Q,EAAOe,GACd,GAAIf,EAAQ,GAAKA,GAASnE,KAAK0P,UAAUnO,OACrC,OAEJ,MAAMyT,EAAUrH,EAAM3N,KAAK0P,UAAUnO,QAAQ6K,QAAQS,GAAMA,IAAM1I,IAC3DwN,EAAqB,IACpBqD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAeiG,MACvE9Q,GAEEyN,EAAsBoD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAekG,OAC1F/E,EAAOnQ,KAAK0P,UAAUvL,GAC5Be,EAAOqI,KAAK4H,MAAMjQ,GAClBA,EAAOkI,EAAMlI,EAAMiL,EAAKhC,YAAaZ,KAAKF,IAAI8C,EAAK7B,YAAatO,KAAK+N,QACrEoC,EAAKjL,KAAOA,EACZlF,KAAKoV,SAASzD,EAAoBC,EACtC,CACAyD,QAAAA,GACI,OAAOrV,KAAK0P,UAAU9N,KAAKqQ,GAAMA,EAAE7D,MACvC,CACAxH,WAAAA,CAAYuJ,EAAMjL,GACd,MAAMf,EAAQnE,KAAK0P,UAAUtL,QAAQ+L,GACrC,GAAIhM,EAAQ,GAAKA,GAASnE,KAAK0P,UAAUnO,OACrC,OAEJ2D,EAAuB,iBAATA,EAAoBA,EAAOiL,EAAKjL,KAC9CA,EAAOkI,EAAMlI,EAAMiL,EAAKhC,YAAagC,EAAK7B,aAC1C6B,EAAKjL,KAAOA,EACZ,MAAM8P,EAAUrH,EAAM3N,KAAK0P,UAAUnO,QAAQ6K,QAAQS,GAAMA,IAAM1I,IAC3DwN,EAAqB,IACpBqD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAeiG,MACvE9Q,GAEEyN,EAAsBoD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAekG,OAKhGlV,KAAKoV,SAAS,IAAIzD,EAAoBxN,GAAQyN,EAClD,CACAwC,OAAAA,CAAQhG,EAAMlJ,EAA+Bf,EAA+BmR,QAA1D,IAAJpQ,IAAAA,EAAO,CAAEL,KAAM,oBAAqB,IAALV,IAAAA,EAAQnE,KAAK0P,UAAUnO,QAChE,MAAMoN,EAAYrF,SAASiM,cAAc,OAGzC,IAAIC,EAFJ7G,EAAUnG,UAAY,UACtBmG,EAAUmF,YAAY1F,EAAKxJ,SAGvB4Q,EADgB,iBAATtQ,EACIA,EAEQ,UAAdA,EAAKL,KACC7E,KAAK8U,YAAY5P,EAAKf,OAAS,EAEvB,cAAde,EAAKL,KACC,CAAEmJ,kBAAmB9I,EAAK8I,mBAG1BI,EAAKD,YAEpB,MAAM3H,EAAa4H,EAAKxH,aAAa6O,GAAYzV,KAAK4G,YAAY+N,EAAUc,EAAQvQ,QAC9EyP,EAAW,IAAI7G,EAASa,EAAWP,EAAMoH,EAAU,CACrD1T,QAASA,KACL0E,EAAW1E,UACX9B,KAAK0T,cAAcgC,YAAY/G,EAAU,IAUjD,GAPIxK,IAAUnE,KAAK0P,UAAUnO,OACzBvB,KAAK0T,cAAcI,YAAYnF,GAG/B3O,KAAK0T,cAAciC,aAAahH,EAAW3O,KAAK0T,cAActU,SAAS+Q,KAAKhM,IAEhFnE,KAAK0P,UAAUrL,OAAOF,EAAO,EAAGwQ,GAC5B3U,KAAK0P,UAAUnO,OAAS,EAAG,CAE3B,MAAMqU,EAAOtM,SAASiM,cAAc,OACpCK,EAAKpN,UAAY,UACjB,MAAMqN,EAAkB9R,IACpB,IAAK,MAAMoM,KAAQnQ,KAAK0P,UACpBS,EAAKzB,SAAU,EAEnB,MAAM9D,EAAUF,IACVoL,EAAQ9V,KAAK8P,eAAiBhB,EAAYkB,WAC1CjM,EAAMgS,QACNhS,EAAMiS,QACNC,EHtUf,SAAoBhJ,EAAOiJ,GAC9B,IAAK,IAAIrJ,EAAI,EAAGA,EAAII,EAAM1L,OAAQsL,IAE9B,GAAIqJ,EADYjJ,EAAMJ,IAElB,OAAOA,EAGf,OAAQ,CACZ,CG8TkCsJ,CAAWnW,KAAKiR,QAASmF,GAAMA,EAAEzH,YAAciH,IAE3DlE,EAAQ1R,KAAK0P,UAAU9N,KAAKqQ,GAAMA,EAAE/M,OAE1C,IAAI6M,EACAC,EACJ,MAAMG,EAAYxE,EAAMsI,GAAY,GAC9B7D,EAAczE,EAAMsI,EAAY,EAAGjW,KAAK0P,UAAUnO,QAClDkR,EAAaN,EAAUlC,QAAO,CAACC,EAAGrD,IAAMqD,GAAKlQ,KAAK0P,UAAU7C,GAAGsB,YAAcuD,EAAM7E,KAAK,GACxF8F,EAAaR,EAAUlC,QAAO,CAACC,EAAGrD,IAAMqD,GAAKlQ,KAAK0P,UAAU7C,GAAG0B,gBAAkBmD,EAAM7E,KAAK,GAC5F+F,EAAsC,IAAvBR,EAAY7Q,OAC3B6O,OAAOC,kBACP+B,EAAYnC,QAAO,CAACC,EAAGrD,IAAMqD,GAC1BwB,EAAM7E,GAAK7M,KAAK0P,UAAU7C,GAAGsB,cAAc,GAC9C0E,EAAsC,IAAvBT,EAAY7Q,OAC3B6O,OAAO8B,kBACPE,EAAYnC,QAAO,CAACC,EAAGrD,IAAMqD,GAC1BwB,EAAM7E,GACH7M,KAAK0P,UAAU7C,GAAG0B,kBAAkB,GAC1CuE,EAAWvF,KAAKD,IAAImF,EAAYI,GAChCE,EAAWxF,KAAKF,IAAIuF,EAAcD,GAClC0D,EAAkBrW,KAAKsW,mBAAmBnE,GAC1CoE,EAAiBvW,KAAKsW,mBAAmBlE,GAC/C,GAA+B,iBAApBiE,EAA8B,CACrC,MAAMG,EAAkBxW,KAAK0P,UAAU2G,GACjCI,EAAWlJ,KAAKmJ,MAAMF,EAAgBnI,gBAAkB,GAC9D0D,EAAa,CACT5N,MAAOkS,EACPnD,WAAYsD,EAAgBtI,QACtB4E,EAAW2D,EACX3D,EAAW2D,EACjBvR,KAAMsR,EAAgBtR,KAE9B,CACA,GAA8B,iBAAnBqR,EAA6B,CACpC,MAAMC,EAAkBxW,KAAK0P,UAAU6G,GACjCE,EAAWlJ,KAAKmJ,MAAMF,EAAgBnI,gBAAkB,GAC9D2D,EAAY,CACR7N,MAAOoS,EACPrD,WAAYsD,EAAgBtI,QACtB6E,EAAW0D,EACX1D,EAAW0D,EACjBvR,KAAMsR,EAAgBtR,KAE9B,CACA,MAAMyR,EAAiB5S,IACnB,MAGM0N,GAHUzR,KAAK8P,eAAiBhB,EAAYkB,WAC5CjM,EAAMgS,QACNhS,EAAMiS,SACYF,EACxB9V,KAAKwR,OAAOyE,EAAWxE,EAAOC,OAAOjR,OAAWA,EAAWqS,EAAUC,EAAUhB,EAAYC,GAC3FhS,KAAK4U,uBACL5U,KAAK6U,aAAa,EAEhB+B,EAAMA,KACR,IAAK,MAAMzG,KAAQnQ,KAAK0P,UACpBS,EAAKzB,SAAU,EAEnB9D,EAAQiB,UACR7L,KAAKqU,kBACL/K,SAASvE,oBAAoB,cAAe4R,GAC5CrN,SAASvE,oBAAoB,YAAa6R,GAC1CtN,SAASvE,oBAAoB,gBAAiB6R,GAC9C5W,KAAKkR,cAAc3M,UAAK9D,EAAU,EAEtC6I,SAASxE,iBAAiB,cAAe6R,GACzCrN,SAASxE,iBAAiB,YAAa8R,GACvCtN,SAASxE,iBAAiB,gBAAiB8R,EAAI,EAEnDhB,EAAK9Q,iBAAiB,cAAe+Q,GACrC,MAAMgB,EAAW,CACblI,UAAWiH,EACXpP,WAAYA,KACRoP,EAAK7Q,oBAAoB,cAAe8Q,GACxC7V,KAAK4T,cAAc8B,YAAYE,EAAK,GAG5C5V,KAAK4T,cAAcE,YAAY8B,GAC/B5V,KAAKiR,OAAO/M,KAAK2S,EACrB,CACKvB,GACDtV,KAAKoV,SAAS,CAACjR,IAEdmR,GACe,iBAATpQ,GACO,eAAdA,EAAKL,MACL7E,KAAK8W,sBAET9W,KAAKoR,cAAc7M,KAAK6J,EAC5B,CACA0I,mBAAAA,GACI,MAAMC,EAAoB,GAC1B,IAAIC,EAAe,EACnB,IAAK,MAAM7G,KAAQnQ,KAAK0P,UAChBS,EAAK7B,YAAc6B,EAAKhC,YAAc,IACtC4I,EAAkB7S,KAAKiM,GACvB6G,GAAgB7G,EAAKjL,MAG7B,MAAMA,EAAOqI,KAAKmJ,MAAMM,EAAeD,EAAkBxV,QACzD,IAAK,MAAM4O,KAAQ4G,EACf5G,EAAKjL,KAAOkI,EAAMlI,EAAMiL,EAAKhC,YAAagC,EAAK7B,aAEnD,MAAM0G,EAAUrH,EAAM3N,KAAK0P,UAAUnO,QAC/BoQ,EAAqBqD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAeiG,MACzFrD,EAAsBoD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAekG,OAChGlV,KAAKoV,SAASzD,EAAoBC,EACtC,CACAqF,UAAAA,CAAW9S,EAAOgQ,EAAQmB,QAAU,IAAVA,IAAAA,GAAa,GAEnC,MAAMX,EAAW3U,KAAK0P,UAAUrL,OAAOF,EAAO,GAAG,GAGjD,GAFAwQ,EAAS7S,UAEL9B,KAAK0P,UAAUnO,QAAU,EAAG,CAC5B,MAAM0U,EAAY1I,KAAKD,IAAInJ,EAAQ,EAAG,GACrBnE,KAAKiR,OAAO5M,OAAO4R,EAAW,GAAG,GACzCzP,YACb,CAQA,OAPK8O,GACDtV,KAAKoV,WAELjB,GAA0B,eAAhBA,EAAOtP,MACjB7E,KAAK8W,sBAET9W,KAAKsR,iBAAiB/M,KAAKoQ,EAASvG,MAC7BuG,EAASvG,IACpB,CACA8I,wBAAAA,CAAyB/S,GACrB,GAAIA,EAAQ,GAAKA,GAASnE,KAAK0P,UAAUnO,OACrC,MAAM,IAAIqB,MAAM,uBAGpB,OADiB5C,KAAK0P,UAAUvL,GAChB6J,iBACpB,CACAmJ,QAAAA,CAASxR,EAAMiI,GACX,MAAMI,EAAoBhO,KAAKkX,yBAAyBvR,GAClDwO,OAAsC,IAAtBnG,EAChBhO,KAAK8U,YAAYnP,GACjBsJ,EAAOG,UAAUpB,GACjBI,EAAOpO,KAAKiX,WAAWtR,OAAMlF,GAAW,GAC9CT,KAAKoU,QAAQhG,EAAM+F,EAAQvG,EAC/B,CACAwJ,MAAAA,CAAOlS,EAAMsK,GACT,MAAM6H,EAAe9J,KAAKD,IAAItN,KAAKkF,KAAMlF,KAAKuP,cAG9C,GAFAvP,KAAKkF,KAAOA,EACZlF,KAAKwP,eAAiBA,EACjBxP,KAAK2P,YAML,CACD,IAAI2H,EAAQ,EACZ,IAAK,IAAIzK,EAAI,EAAGA,EAAI7M,KAAK0P,UAAUnO,OAAQsL,IAAK,CAC5C,MAAMsD,EAAOnQ,KAAK0P,UAAU7C,GACtB0K,EAAavX,KAAK2P,YAAY9C,GACV,iBAAf0K,EACPD,GAASC,EAGTrS,GAAQiL,EAAKjL,IAErB,CACA,IAAK,IAAI2H,EAAI,EAAGA,EAAI7M,KAAK0P,UAAUnO,OAAQsL,IAAK,CAC5C,MAAMsD,EAAOnQ,KAAK0P,UAAU7C,GACtB0K,EAAavX,KAAK2P,YAAY9C,GACV,iBAAf0K,GAA2BD,EAAQ,IAC1CnH,EAAKjL,KAAOkI,EAAMG,KAAK4H,MAAOoC,EAAarS,EAAQoS,GAAQnH,EAAKhC,YAAagC,EAAK7B,aAE1F,CACJ,KAzBuB,CACnB,MAAM0G,EAAUrH,EAAM3N,KAAK0P,UAAUnO,QAC/BoQ,EAAqBqD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAeiG,MACzFrD,EAAsBoD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAekG,OAChGlV,KAAKwR,OAAOxR,KAAK0P,UAAUnO,OAAS,EAAG2D,EAAOmS,OAAc5W,EAAWkR,EAAoBC,EAC/F,CAqBA5R,KAAK4U,uBACL5U,KAAK6U,aACT,CACAO,QAAAA,CAASzD,EAAoBC,GACzB,MAAMtC,EAActP,KAAK0P,UAAUO,QAAO,CAACC,EAAGrD,IAAMqD,EAAIrD,EAAE3H,MAAM,GAChElF,KAAKwR,OAAOxR,KAAK0P,UAAUnO,OAAS,EAAGvB,KAAK+N,MAAQuB,OAAa7O,EAAWkR,EAAoBC,GAChG5R,KAAK4U,uBACL5U,KAAK6U,cACL7U,KAAKqU,iBACT,CACAO,oBAAAA,CAAqB4C,GACjB,MAAMlI,EAActP,KAAK0P,UAAUO,QAAO,CAACC,EAAGrD,IAAMqD,EAAIrD,EAAE3H,MAAM,GAChE,IAAIuS,EAAazX,KAAKkF,KAAOoK,EAC7B,MAAM0F,EAAUrH,EAAM3N,KAAK0P,UAAUnO,OAAS,GAAI,GAC5CoQ,EAAqBqD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAeiG,MACzFrD,EAAsBoD,EAAQ5I,QAAQS,GAAM7M,KAAK0P,UAAU7C,GAAG2B,WAAaQ,EAAekG,OAChG,IAAK,MAAM/Q,KAASyN,EAChB9E,EAAYkI,EAAS7Q,GAEzB,IAAK,MAAMA,KAASwN,EAChB3E,EAAUgI,EAAS7Q,GAES,iBAArBqT,GACPxK,EAAUgI,EAASwC,GAEvB,IAAK,IAAI3K,EAAI,EAAkB,IAAf4K,GAAoB5K,EAAImI,EAAQzT,OAAQsL,IAAK,CACzD,MAAMsD,EAAOnQ,KAAK0P,UAAUsF,EAAQnI,IAC9B3H,EAAOkI,EAAM+C,EAAKjL,KAAOuS,EAAYtH,EAAKhC,YAAagC,EAAK7B,aAElEmJ,GADkBvS,EAAOiL,EAAKjL,KAE9BiL,EAAKjL,KAAOA,CAChB,CACJ,CACAmP,eAAAA,GACQrU,KAAKyT,oBAAsBzT,KAAKuP,aAAe,IAC/CvP,KAAK4P,aAAe5P,KAAK0P,UAAU9N,KAAKiL,GAAMA,EAAEqB,QAAUrB,EAAE3H,KAAOlF,KAAKuP,kBAAe9O,IAE/F,CAUAoU,WAAAA,GAGI,GAFA7U,KAAKuP,aAAevP,KAAK0P,UAAUO,QAAO,CAACC,EAAGrD,IAAMqD,EAAIrD,EAAE3H,MAAM,GAChElF,KAAKwQ,uBACyB,IAA1BxQ,KAAK0P,UAAUnO,OACf,OAEJ,MAAMmW,EAAmB1X,KAAK0P,UAAUtD,QAAQS,GAAMA,EAAEqB,UAClDyJ,EAAYpK,KAAKD,IAAI,EAAGoK,EAAiBnW,OAAS,GAClDqW,EAAqB5X,KAAK6Q,OAAS8G,EAAapK,KAAKD,IAAI,EAAGoK,EAAiBnW,QACnF,IAAIsW,EAAkB,EACtB,MAAMC,EAAkB,GAElBC,EAA2B/X,KAAK0P,UAAUO,QAAO,CAACzD,EAAKmI,EAAU9H,KACnE,MAAMmL,EAAOrD,EAASzG,QAAU,EAAI,EAOpC,OANU,IAANrB,EACAL,EAAItI,KAAK8T,GAGTxL,EAAItI,KAAKsI,EAAIK,EAAI,GAAKmL,GAEnBxL,CAAG,GACX,IAEHxM,KAAK0P,UAAU3N,SAAQ,CAACqM,EAAMvB,KAC1BgL,GAAmB7X,KAAK0P,UAAU7C,GAAG3H,KACrC4S,EAAgB5T,KAAK2T,GACrB,MAAM3S,EAAOkJ,EAAKF,QAAUE,EAAKlJ,KAAO0S,EAAoB,EACtDK,EAA8B1K,KAAKD,IAAI,EAAGyK,EAAyBlL,GAAK,GACxEqL,EAAe,IAANrL,GAA2C,IAAhCoL,EACpB,EACAH,EAAgBjL,EAAI,GACjBoL,EAA8BN,EAC3BC,EACZ,GAAI/K,EAAI7M,KAAK0P,UAAUnO,OAAS,EAAG,CAE/B,MAAMkU,EAAUrH,EAAKF,QACfgK,EAAShT,EAAOiT,EAAgBnY,KAAK6Q,OAAS,EAC9CqH,EACFlY,KAAK8P,eAAiBhB,EAAYkB,aAClChQ,KAAKiR,OAAOpE,GAAG8B,UAAUhD,MAAMxB,KAAQ,GAAEsL,MACzCzV,KAAKiR,OAAOpE,GAAG8B,UAAUhD,MAAMvB,IAAO,OAEtCpK,KAAK8P,eAAiBhB,EAAYyE,WAClCvT,KAAKiR,OAAOpE,GAAG8B,UAAUhD,MAAMxB,KAAQ,MACvCnK,KAAKiR,OAAOpE,GAAG8B,UAAUhD,MAAMvB,IAAO,GAAEqL,MAEhD,CAEIzV,KAAK8P,eAAiBhB,EAAYkB,aAClC5B,EAAKO,UAAUhD,MAAMtB,MAAS,GAAEnF,MAChCkJ,EAAKO,UAAUhD,MAAMxB,KAAQ,GAAE+N,MAC/B9J,EAAKO,UAAUhD,MAAMvB,IAAM,GAC3BgE,EAAKO,UAAUhD,MAAMrB,OAAS,IAE9BtK,KAAK8P,eAAiBhB,EAAYyE,WAClCnF,EAAKO,UAAUhD,MAAMrB,OAAU,GAAEpF,MACjCkJ,EAAKO,UAAUhD,MAAMvB,IAAO,GAAE8N,MAC9B9J,EAAKO,UAAUhD,MAAMtB,MAAQ,GAC7B+D,EAAKO,UAAUhD,MAAMxB,KAAO,IAEhCiE,EAAKA,KAAKgJ,OAAOhJ,EAAKlJ,KAAO0S,EAAmB5X,KAAKyP,gBAAgB,GAE7E,CACA6G,kBAAAA,CAAmBtB,GAEf,IAAK,MAAM7Q,KAAS6Q,EAAS,CACzB,MAAML,EAAW3U,KAAK0P,UAAUvL,GAChC,GAAKwQ,EAASzG,SAGVyG,EAASlG,KACT,OAAOtK,CAEf,CAEA,IAAK,MAAMA,KAAS6Q,EAAS,CACzB,MAAML,EAAW3U,KAAK0P,UAAUvL,GAChC,GAAIwQ,EAASzG,SACTyG,EAASrG,YAAcqG,EAASxG,YAAc,EAC9C,OAEJ,IAAKwG,EAASzG,SAAWyG,EAASlG,KAC9B,OAAOtK,CAEf,CAEJ,CACAqM,oBAAAA,GACI,IAAI4H,GAAW,EACf,MAAMC,EAAgBrY,KAAK0P,UAAU9N,KAAKiL,GAAOuL,EAAWvL,EAAE3H,KAAO2H,EAAEsB,YAAc,GAAKiK,IAC1FA,GAAW,EACX,MAAME,EAActY,KAAK0P,UAAU9N,KAAKiL,GAAOuL,EAAWvL,EAAEyB,YAAczB,EAAE3H,KAAO,GAAKkT,IAClFG,EAAe,IAAIvY,KAAK0P,WAAW8I,UACzCJ,GAAW,EACX,MAAMK,EAAcF,EACf3W,KAAKiL,GAAOuL,EAAWvL,EAAE3H,KAAO2H,EAAEsB,YAAc,GAAKiK,IACrDI,UACLJ,GAAW,EACX,MAAMM,EAAYH,EACb3W,KAAKiL,GAAOuL,EAAWvL,EAAEyB,YAAczB,EAAE3H,KAAO,GAAKkT,IACrDI,UACL,IAAIG,EAAW,EACf,IAAK,IAAIxU,EAAQ,EAAGA,EAAQnE,KAAKiR,OAAO1P,OAAQ4C,IAAS,CACrD,MAAMyR,EAAO5V,KAAKiR,OAAO9M,GAEzBwU,GADiB3Y,KAAK0P,UAAUvL,GACXe,KACrB,MAAMmI,IAAQgL,EAAclU,IAAUuU,EAAUvU,EAAQ,IAClDmJ,IAAQgL,EAAYnU,IAAUsU,EAAYtU,EAAQ,IACxD,GAAIkJ,GAAOC,EAAK,CACZ,MAAM6E,EAAYxE,EAAMxJ,GAAQ,GAC1BiO,EAAczE,EAAMxJ,EAAQ,EAAGnE,KAAK0P,UAAUnO,QAC9C8U,EAAkBrW,KAAKsW,mBAAmBnE,GAC1CoE,EAAiBvW,KAAKsW,mBAAmBlE,GACzCwG,EAA2C,iBAApBvC,IACxBrW,KAAK0P,UAAU2G,GAAiBnI,QAC/B2K,EAAyC,iBAAnBtC,IACvBvW,KAAK0P,UAAU6G,GAAgBrI,QAChC0K,GACAH,EAAYtU,KACXwU,EAAW,GAAK3Y,KAAKsQ,sBACtBtQ,KAAK8Y,WAAWlD,EAAM7G,EAAUgK,SAE3BF,GACLR,EAAclU,KACbwU,EAAW3Y,KAAKuP,cAAgBvP,KAAKyQ,oBACtCzQ,KAAK8Y,WAAWlD,EAAM7G,EAAUiK,SAGhChZ,KAAK8Y,WAAWlD,EAAM7G,EAAUkK,SAExC,MACS5L,IAAQC,EACbtN,KAAK8Y,WAAWlD,EAAM7G,EAAUgK,UAE1B1L,GAAOC,EACbtN,KAAK8Y,WAAWlD,EAAM7G,EAAUiK,SAGhChZ,KAAK8Y,WAAWlD,EAAM7G,EAAUmK,QAExC,CACJ,CACAJ,UAAAA,CAAWlD,EAAMuD,GACb5Q,EAAYqN,EAAKjH,UAAW,cAAewK,IAAUpK,EAAUkK,UAC/D1Q,EAAYqN,EAAKjH,UAAW,aAAcwK,IAAUpK,EAAUmK,SAC9D3Q,EAAYqN,EAAKjH,UAAW,aAAcwK,IAAUpK,EAAUiK,SAC9DzQ,EAAYqN,EAAKjH,UAAW,aAAcwK,IAAUpK,EAAUgK,QAClE,CACApF,mBAAAA,GACI,MAAM/O,EAAU0E,SAASiM,cAAc,OAEvC,OADA3Q,EAAQ4D,UAAY,oBACb5D,CACX,CACAiP,mBAAAA,GACI,MAAMjP,EAAU0E,SAASiM,cAAc,OAEvC,OADA3Q,EAAQ4D,UAAY,oBACb5D,CACX,CACA4O,eAAAA,GACI,MAAM5O,EAAU0E,SAASiM,cAAc,OACjC6D,EAAuBpZ,KAAK8P,eAAiBhB,EAAYkB,WACzD,gBACA,cAEN,OADApL,EAAQ4D,UAAa,2BAA0B4Q,IACxCxU,CACX,CACA9C,OAAAA,GACI9B,KAAKkR,cAAcpP,UACnB9B,KAAKoR,cAActP,UACnB9B,KAAKsR,iBAAiBxP,UACtB,IAAK,IAAI+K,EAAI,EAAGA,EAAI7M,KAAK4E,QAAQxF,SAASmC,OAAQsL,IAC9C,GAAI7M,KAAK4E,QAAQxF,SAAS+Q,KAAKtD,KAAO7M,KAAK4E,QAAS,CAChD5E,KAAK4E,QAAQ8Q,YAAY1V,KAAK4E,SAC9B,KACJ,CAEJ,IAAK,MAAM+P,KAAY3U,KAAK0P,UACxBiF,EAAS7S,UAEb9B,KAAK4E,QAAQyD,QACjB,EC7vBG,MAAMgR,EAA0B,MAKnC,MAAMC,EAAa,CACfzJ,iBAAapP,EACbuT,gBAAYvT,EACZgT,wBAAoBhT,EACpBsT,YAAQtT,EACRoQ,YAAQpQ,EACR8Y,yBAAqB9Y,EACrB+H,eAAW/H,GAEf,OAAO+Y,OAAOC,KAAKH,EACtB,EAfsC,GCIhC,MAAMI,UAAiB7T,EAC1B,gBAAIwL,GACA,OAAOrR,KAAK2Z,UAAUtI,YAC1B,CACA,mBAAIE,GACA,OAAOvR,KAAK2Z,UAAUpI,eAC1B,CACA,eAAIpD,GACA,OAAOnO,KAAK2Z,UAAUxL,WAC1B,CACA,eAAIG,GACA,OAAOtO,KAAK2Z,UAAUrL,WAC1B,CACA,eAAIuB,GACA,OAAO7P,KAAK2Z,UAAU9J,WAC1B,CACA,QAAI3K,GACA,OAAOlF,KAAK2Z,UAAUzU,IAC1B,CACA,kBAAIsK,GACA,OAAOxP,KAAK2Z,UAAUnK,cAC1B,CACA7P,WAAAA,CAAYgP,EAAW/K,GACnB,IAAIjB,EACJ5C,QACAC,KAAK4Z,UAAY,GACjB5Z,KAAK6Z,eAAgB,EACrB7Z,KAAK2G,aAAe,IAAItD,EACxBrD,KAAK4G,YAAc5G,KAAK2G,aAAa5C,MACrC/D,KAAK8P,aAA8C,QAA9BnN,EAAKiB,EAAQiM,mBAAgC,IAAPlN,EAAgBA,EAAKmM,EAAYyE,SAC5FvT,KAAK4E,QAAU0E,SAASiM,cAAc,OACtCvV,KAAK4E,QAAQ4D,UAAY,oBACzBmG,EAAUmF,YAAY9T,KAAK4E,SAC3B5E,KAAK2Z,UAAY,IAAItK,EAAUrP,KAAK4E,QAAS,CACzCiL,YAAa7P,KAAK8P,aAClB2D,oBAAoB,EACpBO,WAAYpQ,EAAQoQ,aAIxBhU,KAAK8Z,WAAW/X,SAASgY,IACrB,MAAMvT,EAAa,IAAIX,EAAoBkU,EAAKC,2BAA0B,KACtEha,KAAKia,iBACLja,KAAK2G,aAAapC,UAAK9D,EAAU,KAE/ByZ,EAAW,CACbH,OACAvT,WAAY,CACR1E,QAASA,KACL0E,EAAW1E,SAAS,IAIhC9B,KAAK4Z,UAAU1V,KAAKgW,GACpBH,EAAKvK,eAAiBxP,KAAK2Z,UAAUnK,cAAc,IAEvDxP,KAAKkG,eAAelG,KAAK2G,aAAc3G,KAAK2Z,UAAUxI,cAAa,KAC/DnR,KAAK2G,aAAapC,UAAK9D,EAAU,IACjCT,KAAK2Z,UAAUtI,cAAa,KAC5BrR,KAAK2G,aAAapC,MAAM,IACxBvE,KAAK2Z,UAAUpI,iBAAgB,KAC/BvR,KAAK2G,aAAapC,MAAM,IAEhC,CACAmQ,cAAAA,CAAevQ,EAAO+J,GAClBlO,KAAK2Z,UAAUjF,eAAevQ,EAAO+J,EACzC,CACAiM,OAAAA,CAAQJ,EAAM7U,EAAMf,EAA+BmR,QAA1B,IAALnR,IAAAA,EAAQnE,KAAK2Z,UAAUpY,aAAkB,IAAV+T,IAAAA,GAAa,GAC5D,MAAM9O,EAAauT,EAAKC,2BAA0B,KAC9Cha,KAAKia,iBACLja,KAAK2G,aAAapC,UAAK9D,EAAU,IAE/ByZ,EAAW,CACbH,OACAvT,WAAY,CACR1E,QAASA,KACL0E,EAAW1E,SAAS,IAIhC9B,KAAK4Z,UAAUvV,OAAOF,EAAO,EAAG+V,GAChCH,EAAKvK,eAAiBxP,KAAK2Z,UAAUnK,eACrCxP,KAAK2Z,UAAUvF,QAAQ2F,EAAM7U,EAAMf,EAAOmR,EAC9C,CACAR,WAAAA,CAAY3Q,GACR,OAAOnE,KAAK2Z,UAAU7E,YAAY3Q,EACtC,CACA2V,QAAAA,GACI,OAAO9Z,KAAK2Z,UAAUtE,UAC1B,CACA+E,UAAAA,CAAWjW,EAAOP,QAAO,IAAPA,IAAAA,EAAU,CAAEyW,aAAa,IACvC,MAAMH,EAAWla,KAAK4Z,UAAUvV,OAAOF,EAAO,GAAG,GAMjD,OALAnE,KAAK2Z,UAAU1C,WAAW9S,GACrBP,EAAQyW,cACTH,EAAS1T,WAAW1E,UACpBoY,EAASH,KAAKjY,WAEXoY,CACX,CACA/C,QAAAA,CAASxR,EAAMiI,GACX,GAAIjI,IAASiI,EACT,OAEJ,MAAMQ,EAAOpO,KAAKoa,WAAWzU,EAAM,CAAE0U,aAAa,IAClDra,KAAK6Z,eAAgB,EACrB,IACI7Z,KAAKma,QAAQ/L,EAAK2L,KAAM3L,EAAK2L,KAAK7U,KAAM0I,GAAI,EAChD,CAAC,QAEG5N,KAAK6Z,eAAgB,CACzB,CACJ,CACAzC,MAAAA,CAAOlS,EAAMsK,GACTxP,KAAK2Z,UAAUvC,OAAOlS,EAAMsK,EAChC,CACAyK,cAAAA,GACQja,KAAK6Z,gBAGL7Z,KAAKsa,iBACLC,aAAava,KAAKsa,gBAClBta,KAAKsa,oBAAiB7Z,GAE1B6H,EAAWtI,KAAK4E,QAAS,eACzB5E,KAAKsa,eAAiB1Q,YAAW,KAC7B5J,KAAKsa,oBAAiB7Z,EACtBuH,EAAchI,KAAK4E,QAAS,cAAc,GAC3C,KACP,CACA9C,OAAAA,GACI/B,MAAM+B,UACF9B,KAAKsa,iBACLC,aAAava,KAAKsa,gBAClBta,KAAKsa,oBAAiB7Z,GAE1BT,KAAK4Z,UAAU7X,SAASmY,IACpBA,EAAS1T,WAAW1E,UACpBoY,EAASH,KAAKjY,SAAS,IAE3B9B,KAAK4Z,UAAY,GACjB5Z,KAAK2Z,UAAU7X,UACf9B,KAAK4E,QAAQyD,QACjB,EC5IG,MAAMmS,EACT,gBAAIC,GACA,OAAOza,KAAKoO,KAAKqM,YACrB,CACA,gBAAIC,GACA,OAAO1a,KAAKoO,KAAKsM,YACrB,CACA,iBAAIC,GACA,OAAO3a,KAAKoO,KAAKuM,aACrB,CACA,iBAAIC,GACA,OAAO5a,KAAKoO,KAAKwM,aACrB,CACA,YAAIpM,GACA,OAAOxO,KAAKoO,KAAKI,QACrB,CACA,QAAIC,GACA,OAAOzO,KAAKoO,KAAKK,IACrB,CACA,eAAIN,GACA,OAAOnO,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAK2a,cACL3a,KAAKya,YACf,CACA,eAAInM,GACA,OAAOtO,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAK4a,cACL5a,KAAK0a,YACf,CACA,yBAAIG,GACA,OAAO7a,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKya,aACLza,KAAK2a,aACf,CACA,yBAAIG,GACA,OAAO9a,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAK0a,aACL1a,KAAK4a,aACf,CACA,kBAAIpL,GACA,OAAOxP,KAAKyP,eAChB,CACA,QAAIvK,GACA,OAAOlF,KAAK+N,KAChB,CACA,WAAInJ,GACA,OAAO5E,KAAKoO,KAAKxJ,OACrB,CACA,SAAIyF,GACA,OAAOrK,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKwP,eACLxP,KAAKkF,IACf,CACA,UAAIoF,GACA,OAAOtK,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKkF,KACLlF,KAAKwP,cACf,CACA7P,WAAAA,CAAYyO,EAAMyB,EAAaL,EAAgBtK,QAAI,IAAJA,IAAAA,EAAO,GAClDlF,KAAKoO,KAAOA,EACZpO,KAAK6P,YAAcA,EACnB7P,KAAK2G,aAAe,IAAItD,EACxBrD,KAAK4G,YAAc5G,KAAK2G,aAAa5C,MACrC/D,KAAKyP,gBAAkBD,EACvBxP,KAAK+N,MAAQ7I,EACblF,KAAKuG,YAAcvG,KAAKoO,KAAKxH,aAAa7C,IAClCA,EACA/D,KAAK2G,aAAapC,KAAK,CACnBW,KAAMlF,KAAK6P,cAAgBf,EAAYyE,SACjCxP,EAAMsG,MACNtG,EAAMuG,OACZkF,eAAgBxP,KAAK6P,cAAgBf,EAAYyE,SAC3CxP,EAAMuG,OACNvG,EAAMsG,QAIhBrK,KAAK2G,aAAapC,KAAK,CAAC,EAC5B,GAER,CACAqK,UAAAA,CAAWV,GACHlO,KAAKoO,KAAKQ,YACV5O,KAAKoO,KAAKQ,WAAWV,EAE7B,CACAkJ,MAAAA,CAAOlS,EAAMsK,GACTxP,KAAK+N,MAAQ7I,EACblF,KAAKyP,gBAAkBD,EACvBxP,KAAKoO,KAAKgJ,OAAOpX,KAAKqK,MAAOrK,KAAKsK,OACtC,CACAxI,OAAAA,GACI9B,KAAK2G,aAAa7E,UAClB9B,KAAKuG,YAAYzE,SACrB,EC5FG,MAAMiZ,UAAmBlV,EAC5B,SAAIwE,GACA,OAAOrK,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKkF,KACLlF,KAAKwP,cACf,CACA,UAAIlF,GACA,OAAOtK,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKwP,eACLxP,KAAKkF,IACf,CACA,eAAIiJ,GACA,OAAgC,IAAzBnO,KAAKZ,SAASmC,OACf,EACAgM,KAAKD,OAAOtN,KAAKZ,SAASwC,KAAI,CAACoZ,EAAG7W,IAAUnE,KAAK2Z,UAAUlF,cAActQ,GACrE6W,EAAEH,sBACF,IACd,CACA,eAAIvM,GACA,OAAOf,KAAKF,OAAOrN,KAAKZ,SAASwC,KAAI,CAACoZ,EAAG7W,IAAUnE,KAAK2Z,UAAUlF,cAActQ,GAC1E6W,EAAEF,sBACF1K,OAAOC,oBACjB,CACA,yBAAIwK,GACA,OAAO7a,KAAK2Z,UAAUxL,WAC1B,CACA,yBAAI2M,GACA,OAAO9a,KAAK2Z,UAAUrL,WAC1B,CACA,kBAAIkB,GACA,OAAOxP,KAAKyP,eAChB,CACA,QAAIvK,GACA,OAAOlF,KAAK+N,KAChB,CACA,gBAAI0M,GACA,OAAOza,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAK6a,sBACL7a,KAAKmO,WACf,CACA,iBAAIwM,GACA,OAAO3a,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKmO,YACLnO,KAAK6a,qBACf,CACA,gBAAIH,GACA,OAAO1a,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAK8a,sBACL9a,KAAKsO,WACf,CACA,iBAAIsM,GACA,OAAO5a,KAAK6P,cAAgBf,EAAYkB,WAClChQ,KAAKsO,YACLtO,KAAK8a,qBACf,CACA,YAAItM,GACA,GAA6B,IAAzBxO,KAAKZ,SAASmC,OACd,OAAOyN,EAAeiM,OAE1B,MAAMC,EAAalb,KAAKZ,SAASwC,KAAKoZ,QAA4B,IAAfA,EAAExM,SAC/CQ,EAAeiM,OACfD,EAAExM,WACR,OAAI0M,EAAWC,MAAMC,GAAMA,IAAMpM,EAAekG,OACrClG,EAAekG,KAEjBgG,EAAWC,MAAMC,GAAMA,IAAMpM,EAAeiG,MAC1CjG,EAAeiG,IAEnBjG,EAAeiM,MAC1B,CACA,YAAItK,GACA,OAAO3Q,KAAK2Z,UAAUhJ,QAC1B,CACA,YAAIA,CAAS7N,GACT9C,KAAK2Z,UAAUhJ,SAAW7N,CAC9B,CACA,UAAI+N,GACA,OAAO7Q,KAAK2Z,UAAU9I,MAC1B,CACA,UAAIA,CAAO/N,GACP9C,KAAK2Z,UAAU9I,OAAS/N,EACxB9C,KAAKZ,SAAS2C,SAASF,IACfA,aAAiBkZ,IACjBlZ,EAAMgP,OAAS/N,EACnB,GAER,CACAnD,WAAAA,CAAYkQ,EAAa4D,EAAoBM,EAAQ7O,EAAMsK,EAAgBmB,EAAUE,EAAQwK,GAezF,GAdAtb,QACAC,KAAK6P,YAAcA,EACnB7P,KAAKyT,mBAAqBA,EAC1BzT,KAAK+T,OAASA,EACd/T,KAAKsb,oBAAsBna,EAAWuE,KACtC1F,KAAKZ,SAAW,GAChBY,KAAK2G,aAAe,IAAItD,EACxBrD,KAAK4G,YAAc5G,KAAK2G,aAAa5C,MACrC/D,KAAKub,uBAAyB,IAAIlY,EAClCrD,KAAKwb,sBAAwBxb,KAAKub,uBAAuBxX,MACzD/D,KAAKyP,gBAAkBD,EACvBxP,KAAK+N,MAAQ7I,EACblF,KAAK4E,QAAU0E,SAASiM,cAAc,OACtCvV,KAAK4E,QAAQ4D,UAAY,iBACpB6S,EASA,CACD,MAAMrH,EAAa,CACfC,MAAOoH,EAAiBzZ,KAAK6Z,IAClB,CACHrN,KAAMqN,EAAgB1Q,KACtB7F,KAAMuW,EAAgB1Q,KAAK7F,KAC3BgJ,UAASuN,EAAgB1Q,gBAAgByP,QACT/Z,IAA5Bgb,EAAgBvN,UACduN,EAAgBvN,YAI9BhJ,KAAMlF,KAAKwP,gBAEfxP,KAAKZ,SAAWic,EAAiBzZ,KAAKoZ,GAAMA,EAAEjQ,OAC9C/K,KAAK2Z,UAAY,IAAItK,EAAUrP,KAAK4E,QAAS,CACzCiL,YAAa7P,KAAK6P,YAClBmE,aACAP,qBACAM,SACAlD,UAER,MA9BI7Q,KAAK2Z,UAAY,IAAItK,EAAUrP,KAAK4E,QAAS,CACzCiL,YAAa7P,KAAK6P,YAClB4D,qBACAM,SACAlD,WAEJ7Q,KAAK2Z,UAAUvC,OAAOpX,KAAKkF,KAAMlF,KAAKwP,gBAyB1CxP,KAAK2Q,SAAWA,EAChB3Q,KAAKkG,eAAelG,KAAK2G,aAAc3G,KAAKub,uBAAwBvb,KAAK2Z,UAAUxI,cAAa,KAC5FnR,KAAK2G,aAAapC,KAAK,CAAC,EAAE,KAE9BvE,KAAK0b,qBACT,CACA9M,UAAAA,CAAW+M,GACP,CAEJC,cAAAA,CAAezX,GACX,GAAIA,EAAQ,GAAKA,GAASnE,KAAKZ,SAASmC,OACpC,MAAM,IAAIqB,MAAM,iBAEpB,OAAO5C,KAAK2Z,UAAUlF,cAActQ,EACxC,CACA0X,eAAAA,CAAgB1X,EAAO+J,GACnB,GAAI/J,EAAQ,GAAKA,GAASnE,KAAKZ,SAASmC,OACpC,MAAM,IAAIqB,MAAM,iBAEpB,GAAI5C,KAAK2Z,UAAUlF,cAActQ,KAAW+J,EACxC,OAEJ,MAAM4N,EAAuD,IAA/B9b,KAAK2Z,UAAUrK,YAC7CtP,KAAK2Z,UAAUjF,eAAevQ,EAAO+J,GAErC,MAAM6N,EAAsD,IAA/B/b,KAAK2Z,UAAUrK,aAGvCpB,GAAW4N,IACV5N,GAAW6N,IACb/b,KAAKub,uBAAuBhX,KAAK,CAAE2J,WAE3C,CACA8N,SAAAA,CAAUrW,EAAMiI,GACZ,GAAIjI,IAASiI,EACT,OAEJ,GAAIjI,EAAO,GAAKA,GAAQ3F,KAAKZ,SAASmC,OAClC,MAAM,IAAIqB,MAAM,sBAEhB+C,EAAOiI,GACPA,IAEJ5N,KAAK2Z,UAAUxC,SAASxR,EAAMiI,GAC9B,MAAM/L,EAAQ7B,KAAKic,aAAatW,GAChC3F,KAAKkc,UAAUra,EAAO+L,EAC1B,CACAuO,YAAAA,CAAahY,GACT,GAAIA,EAAQ,GAAKA,GAASnE,KAAKZ,SAASmC,OACpC,MAAM,IAAIqB,MAAM,iBAEpB,OAAO5C,KAAK2Z,UAAU7E,YAAY3Q,EACtC,CACAiY,WAAAA,CAAYjY,EAAOe,GACf,GAAIf,EAAQ,GAAKA,GAASnE,KAAKZ,SAASmC,OACpC,MAAM,IAAIqB,MAAM,iBAEpB5C,KAAK2Z,UAAU5E,WAAW5Q,EAAOe,EACrC,CACAkS,MAAAA,CAAOlS,EAAMsK,GACTxP,KAAK+N,MAAQyB,EACbxP,KAAKyP,gBAAkBvK,EACvBlF,KAAK2Z,UAAUvC,OAAO5H,EAAgBtK,EAC1C,CACAmX,QAAAA,CAAStR,EAAM7F,EAAMf,EAAOmR,GACxB,GAAInR,EAAQ,GAAKA,EAAQnE,KAAKZ,SAASmC,OACnC,MAAM,IAAIqB,MAAM,iBAEpB5C,KAAK2Z,UAAUvF,QAAQrJ,EAAM7F,EAAMf,EAAOmR,GAC1CtV,KAAKkc,UAAUnR,EAAM5G,EACzB,CACAmY,yBAAAA,CAA0BnY,GACtB,GAAIA,EAAQ,GAAKA,GAASnE,KAAKZ,SAASmC,OACpC,MAAM,IAAIqB,MAAM,iBAEpB,OAAO5C,KAAK2Z,UAAUzC,yBAAyB/S,EACnD,CACAuR,WAAAA,CAAYvR,EAAOgQ,GACf,GAAIhQ,EAAQ,GAAKA,GAASnE,KAAKZ,SAASmC,OACpC,MAAM,IAAIqB,MAAM,iBAGpB,OADA5C,KAAK2Z,UAAU1C,WAAW9S,EAAOgQ,GAC1BnU,KAAKic,aAAa9X,EAC7B,CACA+X,SAAAA,CAAUnR,EAAM5G,GACZnE,KAAKZ,SAASiF,OAAOF,EAAO,EAAG4G,GAC/B/K,KAAK0b,qBACT,CACAO,YAAAA,CAAa9X,GACT,MAAOtC,GAAS7B,KAAKZ,SAASiF,OAAOF,EAAO,GAE5C,OADAnE,KAAK0b,sBACE7Z,CACX,CACA6Z,mBAAAA,GACI1b,KAAKsb,oBAAoBxZ,UACzB9B,KAAKsb,oBAAsB,IAAIzV,EAAoB3E,EAAME,OAAOpB,KAAKZ,SAASwC,KAAKoZ,GAAMA,EAAEpU,cAAxC1F,EAAuDsD,IAKtGxE,KAAK2G,aAAapC,KAAK,CAAEW,KAAMV,EAAEgL,gBAAiB,OAC/CxP,KAAKZ,SAASwC,KAAI,CAACoZ,EAAGnO,IACrBmO,aAAaD,EACNC,EAAEQ,uBAAsBrc,IAAkB,IAAjB,QAAE+O,GAAS/O,EACvCa,KAAK6b,gBAAgBhP,EAAGqB,EAAQ,IAGjC/M,EAAWuE,OAE1B,CACA5D,OAAAA,GACI9B,KAAKsb,oBAAoBxZ,UACzB9B,KAAK2Z,UAAU7X,UACf9B,KAAKZ,SAAS2C,SAASF,GAAUA,EAAMC,YACvC/B,MAAM+B,SACV,ECvPJ,SAASya,EAASC,EAAcC,GAC5B,GAAID,aAAwBhC,EACxB,OAAOgC,EAEX,GAAIA,aAAwBzB,EACxB,OAAOwB,EAASC,EAAapd,SAASqd,EAAOD,EAAapd,SAASmC,OAAS,EAAI,GAAIkb,GAExF,MAAM,IAAI7Z,MAAM,eACpB,CACA,SAAS8Z,EAAU3R,EAAM7F,EAAMsK,GAC3B,GAAIzE,aAAgBgQ,EAAY,CAC5B,MAAMlN,EAAS,IAAIkN,EAAWhQ,EAAK8E,YAAa9E,EAAK0I,mBAAoB1I,EAAKgJ,OAAQ7O,EAAMsK,EAAgBzE,EAAK4F,SAAU5F,EAAK8F,QAChI,IAAK,IAAIhE,EAAI9B,EAAK3L,SAASmC,OAAS,EAAGsL,GAAK,EAAGA,IAAK,CAChD,MAAMhL,EAAQkJ,EAAK3L,SAASyN,GAC5BgB,EAAOwO,SAASK,EAAU7a,EAAOA,EAAMqD,KAAMrD,EAAM2N,gBAAiB3N,EAAMqD,KAAM,GAAG,EACvF,CACA,OAAO2I,CACX,CAEI,OAAO,IAAI2M,EAASzP,EAAKqD,KAAMrD,EAAK8E,YAAaL,EAEzD,CACA,SAASmN,EAAS5R,EAAM7F,EAAMsK,GAC1B,GAAIzE,aAAgBgQ,EAAY,CAC5B,MAAMlN,EAAS,IAAIkN,EAAW6B,GAAW7R,EAAK8E,aAAc9E,EAAK0I,mBAAoB1I,EAAKgJ,OAAQ7O,EAAMsK,EAAgBzE,EAAK4F,SAAU5F,EAAK8F,QAC5I,IAAIgM,EAAY,EAChB,IAAK,IAAIhQ,EAAI9B,EAAK3L,SAASmC,OAAS,EAAGsL,GAAK,EAAGA,IAAK,CAChD,MAAMhL,EAAQkJ,EAAK3L,SAASyN,GACtBiQ,EAAYjb,aAAiBkZ,EAAalZ,EAAM2N,eAAiB3N,EAAMqD,KAC7E,IAAIuQ,EAAwB,IAAd1K,EAAK7F,KACb,EACAqI,KAAK4H,MAAOjQ,EAAO4X,EAAa/R,EAAK7F,MAC3C2X,GAAapH,EAEH,IAAN5I,IACA4I,GAAWvQ,EAAO2X,GAEtBhP,EAAOwO,SAASM,EAAS9a,EAAO2N,EAAgBiG,GAAUA,EAAS,GAAG,EAC1E,CACA,OAAO5H,CACX,CAEI,OAAO,IAAI2M,EAASzP,EAAKqD,KAAMwO,GAAW7R,EAAK8E,aAAcL,EAErE,CAoBO,SAASuN,GAAgBnY,GAC5B,MAAMoY,EAAgBpY,EAAQoY,cAC9B,IAAKA,EACD,MAAM,IAAIpa,MAAM,wBAEpB,GAAI,mBAAmBqa,KAAKD,EAAcxU,WACtC,MAAO,GAEX,MAAMrE,EA3BH,SAAuBS,GAC1B,MAAMoY,EAAgBpY,EAAQoY,cAC9B,IAAKA,EACD,MAAM,IAAIpa,MAAM,wBAEpB,IAAI8D,EAAKsW,EAAcE,kBACnB/Y,EAAQ,EACZ,KAAOuC,IAAO9B,GAAW8B,IAAOsW,EAAcG,kBAAoBzW,GAC9DA,EAAKA,EAAG0W,mBACRjZ,IAEJ,OAAOA,CACX,CAekBkZ,CAAcL,GAE5B,MAAO,IAAID,GADMC,EAAcA,cAAcA,cAAcA,eACrB7Y,EAC1C,CACO,SAASmZ,GAAoBC,EAAiBC,EAAUC,GAC3D,MAAM5N,EAoBH,SAAgC0N,EAAiBC,GACpD,OAAOA,EAASjc,OAAS,GAAM,EACzBqb,GAAWW,GACXA,CACV,CAxBwBG,CAAuBH,EAAiBC,GACtDG,EAcH,SAAiCF,GACpC,MAAqB,QAAdA,GAAqC,WAAdA,EACxB3O,EAAYyE,SACZzE,EAAYkB,UACtB,CAlBiC4N,CAAwBH,GACrD,GAAI5N,IAAgB8N,EAAsB,CACtC,MAAOE,EAAMC,GAAUvR,EAAKiR,GAC5B,IAAIrZ,EAAQ2Z,EAIZ,MAHkB,UAAdL,GAAuC,WAAdA,IACzBtZ,GAAS,GAEN,IAAI0Z,EAAM1Z,EACrB,CACK,CACD,MAAMA,EAAsB,UAAdsZ,GAAuC,WAAdA,EAAyB,EAAI,EACpE,MAAO,IAAID,EAAUrZ,EACzB,CACJ,CAWO,MAAMyY,GAAc/M,GAAgBA,IAAgBf,EAAYkB,WACjElB,EAAYyE,SACZzE,EAAYkB,WAIlB,MAAM+N,GAAsBA,CAAChT,EAAM8E,KAC/B,MAAM3K,EAAO2K,IAAgBf,EAAYyE,SAAWxI,EAAKiT,IAAI3T,MAAQU,EAAKiT,IAAI1T,OAC9E,OALG,SAA0BS,GAC7B,QAASA,EAAK3L,QAClB,CAGS6e,CAAiBlT,GAWf,CACHlG,KAAM,SACNnE,KAAMqK,EAAK3L,SAASwC,KAAKoZ,GAAM+C,GAAoB/C,EAAG4B,GAAW/M,MACjE3K,QAbsC,iBAA3B6F,EAAKiD,kBACL,CACHnJ,KAAM,OACNnE,KAAMqK,EAAKqD,KAAK8P,SAChBhZ,KAAM6F,EAAKiD,kBACXE,SAAS,GAGV,CAAErJ,KAAM,OAAQnE,KAAMqK,EAAKqD,KAAK8P,SAAUhZ,OAMpD,EAEE,MAAMiZ,GACT,UAAI5c,GACA,OAAOvB,KAAKoe,MAAQpe,KAAKoe,MAAMhf,SAASmC,OAAS,CACrD,CACA,eAAIsO,GACA,OAAO7P,KAAKqe,KAAKxO,WACrB,CACA,eAAIA,CAAYA,GACZ,GAAI7P,KAAKqe,KAAKxO,cAAgBA,EAC1B,OAEJ,MAAM,KAAE3K,EAAI,eAAEsK,GAAmBxP,KAAKqe,KACtCre,KAAKqe,KAAO1B,EAAS3c,KAAKqe,KAAM7O,EAAgBtK,GAChDlF,KAAKqe,KAAKjH,OAAOlS,EAAMsK,EAC3B,CACA,SAAInF,GACA,OAAOrK,KAAKqe,KAAKhU,KACrB,CACA,UAAIC,GACA,OAAOtK,KAAKqe,KAAK/T,MACrB,CACA,gBAAImQ,GACA,OAAOza,KAAKqe,KAAK5D,YACrB,CACA,iBAAIE,GACA,OAAO3a,KAAKqe,KAAK1D,aACrB,CACA,gBAAID,GACA,OAAO1a,KAAKqe,KAAKzD,aACrB,CACA,iBAAIA,GACA,OAAO5a,KAAKqe,KAAKzD,aACrB,CACA,UAAI0D,GACA,OAAOte,KAAKue,OAChB,CACA,UAAID,CAAOxb,GACP9C,KAAKue,QAAUzb,EACf,MAAM0b,EAAS,CAACxe,KAAKqe,MAMrB,KAAOG,EAAOjd,OAAS,GAAG,CACtB,MAAMwJ,EAAOyT,EAAOC,MAChB1T,aAAgBgQ,IAChBhQ,EAAK4F,SAAW7N,EAChB0b,EAAOta,QAAQ6G,EAAK3L,UAE5B,CACJ,CACA,UAAIyR,GACA,OAAO7Q,KAAK8Q,OAChB,CACA,UAAID,CAAO/N,GACP9C,KAAK8Q,QAAUhO,EACf9C,KAAKqe,KAAKxN,OAAS/N,CACvB,CACA4b,aAAAA,GACI,IAAI/b,EACJ,OAAsC,QAA9BA,EAAK3C,KAAK2e,sBAAmC,IAAPhc,OAAgB,EAASA,EAAGic,KAAKxQ,IACnF,CACAyQ,gBAAAA,GACI,YAA+Bpe,IAAxBT,KAAK2e,cAChB,CACAG,YAAAA,CAAa1Q,GACT,IAAIzL,EACJ,MAAM6a,EAAWT,GAAgB3O,EAAKxJ,UAC/B8N,EAAG3H,GAAQ/K,KAAK+e,QAAQvB,GAC/B,KAAMzS,aAAgByP,GAClB,OAEJ,IAAoC,QAA9B7X,EAAK3C,KAAK2e,sBAAmC,IAAPhc,OAAgB,EAASA,EAAGic,QAAU7T,EAC9E,OAEA/K,KAAK6e,oBACL7e,KAAKgf,oBAETjB,GAAoB/d,KAAKif,UAAWjf,KAAK6P,aACzC,MAAMqP,EAAmB,IACzB,SAASC,EAAgBC,EAAQC,GAC7B,IAAK,IAAIxS,EAAI,EAAGA,EAAIuS,EAAOhgB,SAASmC,OAAQsL,IAAK,CAC7C,MAAMhL,EAAQud,EAAOhgB,SAASyN,GAC1BhL,aAAiB2Y,EACb3Y,IAAUwd,IACND,EAAOxD,eAAe/O,GACtBuS,EAAOvD,gBAAgBhP,GAAG,GAG1BqS,EAAiBhb,KAAKrC,IAK9Bsd,EAAgBtd,EAAOwd,EAE/B,CACJ,CACAF,CAAgBnf,KAAKqe,KAAMtT,GAC3B/K,KAAK2e,eAAiB,CAAEC,KAAM7T,EAAMmU,oBACpClf,KAAKsf,0BAA0B/a,KAAK,CAChC6J,KAAMrD,EAAKqD,KACXmR,aAAa,GAErB,CACAP,iBAAAA,GACI,IAAKhf,KAAK2e,eACN,OAEJ,MAAMO,EAAmBlf,KAAK2e,eAAeO,kBAC7C,SAASM,EAAwBJ,GAC7B,IAAK,IAAIjb,EAAQib,EAAOhgB,SAASmC,OAAS,EAAG4C,GAAS,EAAGA,IAAS,CAC9D,MAAMtC,EAAQud,EAAOhgB,SAAS+E,GAC1BtC,aAAiB2Y,EACZ0E,EAAiB/T,SAAStJ,IAC3Bud,EAAOvD,gBAAgB1X,GAAO,GAIlCqb,EAAwB3d,EAEhC,CACJ,CACA2d,CAAwBxf,KAAKqe,MAC7B,MAAMtO,EAAM/P,KAAK2e,eAAeC,KAChC5e,KAAK2e,oBAAiBle,EACtBT,KAAKsf,0BAA0B/a,KAAK,CAChC6J,KAAM2B,EAAI3B,KACVmR,aAAa,GAErB,CACAE,SAAAA,GACI,MAAMf,EAAgB1e,KAAK0e,gBAC3B,IAAIgB,EACAhB,IAKAgB,EAAuB3C,GAAgB2B,EAAc9Z,UAErD5E,KAAK6e,oBASL7e,KAAKgf,oBAET,MACMW,EAAU,CACZtB,KAFSN,GAAoB/d,KAAKif,UAAWjf,KAAK6P,aAGlDxF,MAAOrK,KAAKqK,MACZC,OAAQtK,KAAKsK,OACbuF,YAAa7P,KAAK6P,aAWtB,OATI6P,IACAC,EAAQC,cAAgB,CACpBpC,SAAUkC,IAGdhB,GAEA1e,KAAK8e,aAAaJ,GAEfiB,CACX,CACA7d,OAAAA,GACI9B,KAAKwG,WAAW1E,UAChB9B,KAAK2G,aAAa7E,UAClB9B,KAAKsf,0BAA0Bxd,UAC/B9B,KAAK6f,2BAA2B/d,UAChC9B,KAAKqe,KAAKvc,UACV9B,KAAK2e,oBAAiBle,EACtBT,KAAK4E,QAAQyD,QACjB,CACA3E,KAAAA,GACI,MAAMmM,EAAc7P,KAAKqe,KAAKxO,YAC9B7P,KAAKqe,KAAO,IAAItD,EAAWlL,EAAa7P,KAAKyT,mBAAoBzT,KAAK+T,OAAQ/T,KAAKqe,KAAKnZ,KAAMlF,KAAKqe,KAAK7O,eAAgBxP,KAAKse,OAAQte,KAAK6Q,OAC9I,CACAiP,WAAAA,CAAYC,EAAMC,GACd,MAAMnQ,EAAckQ,EAAKlQ,YACnBvF,EAASuF,IAAgBf,EAAYyE,SAAWwM,EAAKzV,OAASyV,EAAK1V,MAOzE,GANArK,KAAKigB,aAAaF,EAAK1B,KAAMxO,EAAamQ,EAAc1V,GAKxDtK,KAAKoX,OAAO2I,EAAK1V,MAAO0V,EAAKzV,QACzByV,EAAKH,cAAe,CACpB,MAAMpC,EAAWuC,EAAKH,cAAcpC,UAC7B9K,EAAG3H,GAAQ/K,KAAK+e,QAAQvB,GAC/B,KAAMzS,aAAgByP,GAClB,OAEJxa,KAAK8e,aAAa/T,EAAKqD,KAC3B,CACJ,CACA6R,YAAAA,CAAa5B,EAAMxO,EAAamQ,EAAcxQ,GAC1CxP,KAAKqe,KAAOre,KAAKkgB,iBAAiB7B,EAAMxO,EAAamQ,EAAcxQ,EACvE,CACA0Q,gBAAAA,CAAiBnV,EAAM8E,EAAamQ,EAAcxQ,GAC9C,IAAI7M,EACJ,IAAIkL,EACJ,GAAkB,WAAd9C,EAAKlG,KAAmB,CACxB,MACMzF,EADqB2L,EAAKrK,KACIkB,KAAKue,IAC9B,CACHpV,KAAM/K,KAAKkgB,iBAAiBC,EAAiBvD,GAAW/M,GAAcmQ,EAAcjV,EAAK7F,MACzFgJ,QAASiS,EAAgBjS,YAGjCL,EAAS,IAAIkN,EAAWlL,EAAa7P,KAAKyT,mBAAoBzT,KAAK+T,OAAQhJ,EAAK7F,KAChFsK,EACAxP,KAAKse,OAAQte,KAAK6Q,OAAQzR,EAC9B,KACK,CACD,MAAMgP,EAAO4R,EAAaI,SAASrV,GACP,kBAAjBA,EAAKmD,UACe,QAA1BvL,EAAKyL,EAAKQ,kBAA+B,IAAPjM,GAAyBA,EAAG0d,KAAKjS,EAAMrD,EAAKmD,UAEnFL,EAAS,IAAI2M,EAASpM,EAAMyB,EAAaL,EAAgBzE,EAAK7F,KAClE,CACA,OAAO2I,CACX,CACA,QAAIwQ,GACA,OAAOre,KAAKoe,KAChB,CACA,QAAIC,CAAKA,GACL,MAAMiC,EAAUtgB,KAAKoe,MACjBkC,IACAA,EAAQxe,UACR9B,KAAK2e,oBAAiBle,EACtBT,KAAK4E,QAAQ8Q,YAAY4K,EAAQ1b,UAErC5E,KAAKoe,MAAQC,EACbre,KAAK4E,QAAQkP,YAAY9T,KAAKoe,MAAMxZ,SACpC5E,KAAKwG,WAAW1D,MAAQ9C,KAAKoe,MAAMxX,aAAapC,IAC5CxE,KAAK2G,aAAapC,KAAKC,EAAE,GAEjC,CACA+b,SAAAA,GACI,IAAKvgB,KAAKoe,MACN,OAEJ,GAAmC,IAA/Bpe,KAAKoe,MAAMhf,SAASmC,OACpB,OAEJ,MAAM+e,EAAUtgB,KAAKqe,KAEfmC,EAAiBF,EAAQlhB,SAAS,GACxC,GAAIohB,aAA0BhG,EAC1B,OAEJ8F,EAAQ1b,QAAQyD,SAChB,MAAMxG,EAAQye,EAAQ5K,YAAY,GAClC4K,EAAQxe,UACRD,EAAMC,UACN9B,KAAKoe,MAAQ1B,EAAU8D,EAAgBA,EAAetb,KAAMsb,EAAehR,gBAC3ExP,KAAK4E,QAAQkP,YAAY9T,KAAKoe,MAAMxZ,SACpC5E,KAAKwG,WAAW1D,MAAQ9C,KAAKoe,MAAMxX,aAAapC,IAC5CxE,KAAK2G,aAAapC,KAAKC,EAAE,GAEjC,CAKAic,+BAAAA,GACI,IAAKzgB,KAAKoe,MACN,OAEJ,MAAMkC,EAAUtgB,KAAKqe,KAGrB,GAFAiC,EAAQ1b,QAAQyD,SAChBrI,KAAKoe,MAAQ,IAAIrD,EAAW6B,GAAW0D,EAAQzQ,aAAc7P,KAAKyT,mBAAoBzT,KAAK+T,OAAQ/T,KAAKqe,KAAK7O,eAAgBxP,KAAKqe,KAAKnZ,KAAMlF,KAAKse,OAAQte,KAAK6Q,QAC/H,IAA5ByP,EAAQlhB,SAASmC,aAGhB,GAAgC,IAA5B+e,EAAQlhB,SAASmC,OAAc,CAEpC,MAAMif,EAAiBF,EAAQlhB,SAAS,GAC1BkhB,EAAQ5K,YAAY,GAC5B5T,UACNwe,EAAQxe,UACR9B,KAAKoe,MAAM/B,SAOXM,EAAS6D,EAAgBA,EAAehR,eAAgBgR,EAAetb,MAAO+J,EAAOC,WAAY,EACrG,MAEIlP,KAAKoe,MAAM/B,SAASiE,EAASrR,EAAOC,WAAY,GAEpDlP,KAAK4E,QAAQkP,YAAY9T,KAAKoe,MAAMxZ,SACpC5E,KAAKwG,WAAW1D,MAAQ9C,KAAKoe,MAAMxX,aAAapC,IAC5CxE,KAAK2G,aAAapC,KAAKC,EAAE,GAEjC,CACAiJ,IAAAA,CAAK+P,GACD,OAAOxd,KAAK0gB,gBAAgBlD,EAChC,CACApF,QAAAA,CAASoF,GACL,OAAOxd,KAAK0gB,gBAAgBlD,GAAU,EAC1C,CACAyB,OAAAA,CAAQzB,GACJ,MAAMzS,EAAOyS,EAAWxd,KAAK+e,QAAQvB,GAAU,GAAKxd,KAAKqe,KACzD,OAAOre,KAAK2gB,UAAU5V,EAAM/K,KAAK6P,YACrC,CACA8Q,SAAAA,CAAU5V,EAAM8E,EAAa7B,GACzB,MAAMgQ,EAAM,CAAE1T,OAAQS,EAAKT,OAAQD,MAAOU,EAAKV,OAC/C,GAAIU,aAAgByP,EAChB,MAAO,CAAEwD,MAAK5P,KAAMrD,EAAKqD,KAAMJ,qBAEnC,MAAM5O,EAAW,GACjB,IAAK,IAAIyN,EAAI,EAAGA,EAAI9B,EAAK3L,SAASmC,OAAQsL,IAAK,CAC3C,MAAMhL,EAAQkJ,EAAK3L,SAASyN,GACtB+T,EAAwB7V,EAAKuR,0BAA0BzP,GAC7DzN,EAAS8E,KAAKlE,KAAK2gB,UAAU9e,EAAO+a,GAAW/M,GAAc+Q,GACjE,CACA,MAAO,CAAE5C,MAAK5e,WAClB,CACAshB,eAAAA,CAAgBlD,EAAUhF,QAAO,IAAPA,IAAAA,GAAU,GAChC,MAAOqI,EAAM9V,GAAQ/K,KAAK+e,QAAQvB,GAClC,KAAMzS,aAAgByP,GAClB,MAAM,IAAI5X,MAAM,oBAEpB,IAAK,IAAIiK,EAAIgU,EAAKtf,OAAS,EAAGsL,GAAK,EAAGA,IAAK,CACvC,MAAMiU,EAAID,EAAKhU,GACTkU,EAAIvD,EAAS3Q,IAAM,EAIzB,GAHkC2L,EAC5BuI,EAAI,GAAK,EACTA,EAAI,EAAID,EAAE1hB,SAASmC,OAErB,OAAOgb,EAASuE,EAAE1hB,SAASoZ,EAAUuI,EAAI,EAAIA,EAAI,GAAIvI,EAE7D,CACA,OAAO+D,EAASvc,KAAKqe,KAAM7F,EAC/B,CACA7Y,WAAAA,CAAY8T,EAAoBM,EAAQlE,EAAayO,EAAQzN,GACzD7Q,KAAKyT,mBAAqBA,EAC1BzT,KAAK+T,OAASA,EACd/T,KAAKue,SAAU,EACfve,KAAK8Q,QAAU,EACf9Q,KAAK2e,oBAAiBle,EACtBT,KAAKwG,WAAa,IAAIF,EACtBtG,KAAK2G,aAAe,IAAItD,EACxBrD,KAAK4G,YAAc5G,KAAK2G,aAAa5C,MACrC/D,KAAK6f,2BAA6B,IAAIxc,EACtCrD,KAAKghB,0BAA4BhhB,KAAK6f,2BAA2B9b,MACjE/D,KAAKsf,0BAA4B,IAAIjc,EACrCrD,KAAKihB,yBAA2BjhB,KAAKsf,0BAA0Bvb,MAC/D/D,KAAK4E,QAAU0E,SAASiM,cAAc,OACtCvV,KAAK4E,QAAQ4D,UAAY,eACzBxI,KAAKue,QAAUD,SAAuCA,EACtDte,KAAK8Q,QAAUD,QAAuCA,EAAS,EAC/D7Q,KAAKqe,KAAO,IAAItD,EAAWlL,EAAa4D,EAAoBM,EAAQ,EAAG,EAAG/T,KAAKse,OAAQte,KAAK6Q,OAChG,CACA4D,aAAAA,CAAc+I,GACV,MAAOK,EAAM1Z,GAASoI,EAAKiR,IACpB,CAAE4B,GAAUpf,KAAK+e,QAAQlB,GAChC,KAAMuB,aAAkBrE,GACpB,MAAM,IAAInY,MAAM,yBAEpB,OAAOwc,EAAOxD,eAAezX,EACjC,CACAuQ,cAAAA,CAAe8I,EAAUtP,GACjBlO,KAAK6e,oBACL7e,KAAKgf,oBAET,MAAOnB,EAAM1Z,GAASoI,EAAKiR,IACpB,CAAE4B,GAAUpf,KAAK+e,QAAQlB,GAChC,KAAMuB,aAAkBrE,GACpB,MAAM,IAAInY,MAAM,yBAEpB5C,KAAK6f,2BAA2Btb,OAChC6a,EAAOvD,gBAAgB1X,EAAO+J,EAClC,CACAiJ,QAAAA,CAAS+J,EAAgBvb,EAAMiI,GACvB5N,KAAK6e,oBACL7e,KAAKgf,oBAET,MAAO,CAAEI,GAAUpf,KAAK+e,QAAQmC,GAChC,KAAM9B,aAAkBrE,GACpB,MAAM,IAAInY,MAAM,oBAEpBwc,EAAOpD,UAAUrW,EAAMiI,EAC3B,CACAwG,OAAAA,CAAQhG,EAAMlJ,EAAMsY,GACZxd,KAAK6e,oBACL7e,KAAKgf,oBAET,MAAOnB,EAAM1Z,GAASoI,EAAKiR,IACpB2D,EAAc/B,GAAUpf,KAAK+e,QAAQlB,GAC5C,GAAIuB,aAAkBrE,EAAY,CAC9B,MAAMhQ,EAAO,IAAIyP,EAASpM,EAAMwO,GAAWwC,EAAOvP,aAAcuP,EAAO5P,gBACvE4P,EAAO/C,SAAStR,EAAM7F,EAAMf,EAChC,KACK,CACD,MAAOid,KAAgB1O,GAAK,IAAIyO,GAAc3I,WACvC6I,KAAgBC,GAAM,IAAIzD,GAAMrF,UACvC,IAAI+I,EAAiB,EACrB,MAAMC,EAA8BJ,EAAY9E,0BAA0B+E,GAC/B,iBAAhCG,IACPD,EAAiBtS,EAAOG,UAAUoS,IAExBJ,EAAY1L,YAAY2L,GAChCvf,UACN,MAAM2f,EAAY,IAAI1G,EAAWqE,EAAOvP,YAAa7P,KAAKyT,mBAAoBzT,KAAK+T,OAAQqL,EAAOla,KAAMka,EAAO5P,eAAgBxP,KAAKse,OAAQte,KAAK6Q,QACjJuQ,EAAY/E,SAASoF,EAAWrC,EAAOla,KAAMmc,GAC7C,MAAMK,EAAa,IAAIlH,EAAS4E,EAAOhR,KAAMgT,EAAYvR,YAAauP,EAAOla,MAC7Euc,EAAUpF,SAASqF,EAAYH,EAAgB,GAC3B,iBAATrc,GAAmC,UAAdA,EAAKL,OACjCK,EAAO,CAAEL,KAAM,QAASV,MAAO,IAEnC,MAAM4G,EAAO,IAAIyP,EAASpM,EAAMgT,EAAYvR,YAAauP,EAAOla,MAChEuc,EAAUpF,SAAStR,EAAM7F,EAAMf,EACnC,CACJ,CACAkE,MAAAA,CAAO+F,EAAM+F,GACT,MAAMqJ,EAAWT,GAAgB3O,EAAKxJ,SACtC,OAAO5E,KAAKiX,WAAWuG,EAAUrJ,EACrC,CACA8C,UAAAA,CAAWuG,EAAUrJ,GACbnU,KAAK6e,oBACL7e,KAAKgf,oBAET,MAAOnB,EAAM1Z,GAASoI,EAAKiR,IACpB2D,EAAc/B,GAAUpf,KAAK+e,QAAQlB,GAC5C,KAAMuB,aAAkBrE,GACpB,MAAM,IAAInY,MAAM,oBAEpB,MAAM+e,EAAevC,EAAOhgB,SAAS+E,GACrC,KAAMwd,aAAwBnH,GAC1B,MAAM,IAAI5X,MAAM,oBAIpB,GAFAwc,EAAO1J,YAAYvR,EAAOgQ,GAC1BwN,EAAa7f,UACkB,IAA3Bsd,EAAOhgB,SAASmC,OAChB,OAAOogB,EAAavT,KAOxB,MAAMwT,EAAUxC,EAAOhgB,SAAS,GAChC,GAA4B,IAAxB+hB,EAAa5f,OAEb,OAAIqgB,aAAmBpH,IAOvB4E,EAAO1J,YAAY,EAAGvB,GAEtBnU,KAAKqe,KAAOuD,GAPDD,EAAavT,KAW5B,MAAOgT,KAAgB1O,GAAK,IAAIyO,GAAc3I,WACvC6I,KAAgBC,GAAM,IAAIzD,GAAMrF,UACjCqJ,EAAmBzC,EAAOxD,eAAe,GAE/CwD,EAAO1J,YAAY,EAAGvB,GAEtB,MAAMzC,EAAQ0P,EAAYhiB,SAASwC,KAAI,CAACmM,EAAOlB,IAAMuU,EAAYjF,aAAatP,KAI9E,GADAuU,EAAY1L,YAAY2L,EAAalN,GAAQrS,UACzC8f,aAAmB7G,EAAY,CAE/BrJ,EAAMrN,OAAOgd,EAAa,KAAMO,EAAQxiB,SAASwC,KAAKoZ,GAAMA,EAAE9V,QAE9D,IAAK,IAAI2H,EAAI,EAAGA,EAAI+U,EAAQxiB,SAASmC,OAAQsL,IAAK,CAC9C,MAAMhL,EAAQ+f,EAAQxiB,SAASyN,GAC/BuU,EAAY/E,SAASxa,EAAOA,EAAMqD,KAAMmc,EAAcxU,EAC1D,CAMA,KAAO+U,EAAQxiB,SAASmC,OAAS,GAC7BqgB,EAAQlM,YAAY,EAE5B,KACK,CAED,MAAMgM,EAAa,IAAIlH,EAASoH,EAAQxT,KAAMwO,GAAWgF,EAAQ/R,aAAc+R,EAAQ1c,MACjF4c,EAAgBD,EAChBD,EAAQpS,eACRP,EAAOG,UAAUwS,EAAQpS,gBAC/B4R,EAAY/E,SAASqF,EAAYI,EAAeT,EACpD,CAEAO,EAAQ9f,UAER,IAAK,IAAI+K,EAAI,EAAGA,EAAI6E,EAAMnQ,OAAQsL,IAC9BuU,EAAYhF,YAAYvP,EAAG6E,EAAM7E,IAErC,OAAO8U,EAAavT,IACxB,CACAgJ,MAAAA,CAAO/M,EAAOC,GACV,MAAOpF,EAAMsK,GAAkBxP,KAAKqe,KAAKxO,cAAgBf,EAAYkB,WAC/D,CAAC1F,EAAQD,GACT,CAACA,EAAOC,GACdtK,KAAKqe,KAAKjH,OAAOlS,EAAMsK,EAC3B,CACAuP,OAAAA,CAAQvB,EAAUzS,EAAkB8V,GAChC,QADkB,IAAJ9V,IAAAA,EAAO/K,KAAKqe,WAAU,IAAJwC,IAAAA,EAAO,IACf,IAApBrD,EAASjc,OACT,MAAO,CAACsf,EAAM9V,GAElB,KAAMA,aAAgBgQ,GAClB,MAAM,IAAInY,MAAM,oBAEpB,MAAOuB,KAAU0Z,GAAQL,EACzB,GAAIrZ,EAAQ,GAAKA,GAAS4G,EAAK3L,SAASmC,OACpC,MAAM,IAAIqB,MAAM,oBAEpB,MAAMf,EAAQkJ,EAAK3L,SAAS+E,GAE5B,OADA0c,EAAK3c,KAAK6G,GACH/K,KAAK+e,QAAQlB,EAAMhc,EAAOgf,EACrC,EC5pBG,MAAMkB,GAAyB,MAKlC,MAAMzI,EAAa,CACfC,yBAAqB9Y,EACrBgT,wBAAoBhT,EACpBoP,iBAAapP,EACbuhB,iBAAavhB,EACb+H,eAAW/H,GAEf,OAAO+Y,OAAOC,KAAKH,EACtB,EAbqC,GCE/B,MAAM2I,WAAkBpc,EAC3B,WAAIjB,GACA,OAAO5E,KAAKkiB,QAChB,CACA,mBAAIC,GACA,OAAOniB,KAAKoiB,gBAChB,CACA,mBAAID,CAAgBrf,GAChB9C,KAAKoiB,iBAAmBtf,CAC5B,CACAnD,WAAAA,CAAYqd,EAAemF,QAAe,IAAfA,IAAAA,GAAkB,GACzCpiB,QACAC,KAAKoiB,iBAAmBD,EACxBniB,KAAKkiB,SAAWlF,EAChBhd,KAAKkG,eAAeY,EAAmB9G,KAAKkiB,UAAWnb,IACnD,GAAI/G,KAAK8F,WAKL,OAEJ,GAAI9F,KAAKmiB,gBACL,OAEJ,IAAKniB,KAAKkiB,SAASG,aAaf,OAEJ,IXmIL,SAAsBzd,GACzB,IAAI0d,EAAiB1d,EACrB,KAAO0d,aAAuD,EAASA,EAAexZ,YAAY,CAC9F,GAAIwZ,EAAexZ,aAAeQ,SAC9B,OAAO,EAIPgZ,EAFKA,EAAexZ,sBAAsByZ,iBAEzBD,EAAexZ,WAAW0Z,KAG1BF,EAAexZ,UAExC,CACA,OAAO,CACX,CWlJiB2Z,CAAaziB,KAAKkiB,UAMnB,OAEJ,MAAM,MAAE7X,EAAK,OAAEC,GAAWvD,EAAM2b,YAChC1iB,KAAKoX,OAAO/M,EAAOC,EAAO,IAElC,EC9CJ,MAAMqY,GAAenV,IACd,SAASoV,GAASnF,GACrB,OAAQA,GACJ,IAAK,OACD,MAAO,OACX,IAAK,QACD,MAAO,QACX,IAAK,QACD,MAAO,MACX,IAAK,QACD,MAAO,SAEX,QACI,MAAO,SAEnB,CACO,MAAMoF,WAAiBZ,GAC1B,MAAIa,GACA,OAAO9iB,KAAK+iB,GAChB,CACA,QAAI7d,GACA,OAAOlF,KAAKgjB,QAAQ9d,IACxB,CACA,UAAI+d,GACA,OAAOzhB,MAAMmE,KAAK3F,KAAKgjB,QAAQE,UAAUthB,KAAK8Q,GAAMA,EAAE5P,OAC1D,CACA,SAAIuH,GACA,OAAOrK,KAAKmjB,SAAS9Y,KACzB,CACA,UAAIC,GACA,OAAOtK,KAAKmjB,SAAS7Y,MACzB,CACA,iBAAIqQ,GACA,OAAO3a,KAAKmjB,SAASxI,aACzB,CACA,iBAAIC,GACA,OAAO5a,KAAKmjB,SAASvI,aACzB,CACA,gBAAIH,GACA,OAAOza,KAAKmjB,SAAS1I,YACzB,CACA,gBAAIC,GACA,OAAO1a,KAAKmjB,SAASzI,YACzB,CACA,eAAI0I,GACA,OAAOpjB,KAAKqjB,YAChB,CACA,UAAI/E,GACA,OAAOte,KAAKmjB,SAAS7E,MACzB,CACA,UAAIA,CAAOxb,GACP9C,KAAKmjB,SAAS7E,OAASxb,CAC3B,CACAnD,WAAAA,CAAYgP,EAAW/K,GACnB,IAAIjB,EACJ5C,MAAMuJ,SAASiM,cAAc,OAAQ3R,EAAQ2V,qBAC7CvZ,KAAK+iB,IAAMJ,GAAalV,OACxBzN,KAAKgjB,QAAU,IAAI/d,IACnBjF,KAAKsjB,aAAe,IAAIjgB,EACxBrD,KAAKujB,YAAcvjB,KAAKsjB,aAAavf,MACrC/D,KAAKwjB,UAAY,IAAIngB,EACrBrD,KAAKyjB,SAAWzjB,KAAKwjB,UAAUzf,MAC/B/D,KAAK0jB,sBAAwB,IAAIrgB,EACjCrD,KAAK2jB,qBAAuB3jB,KAAK0jB,sBAAsB3f,MACvD/D,KAAK4jB,mBAAqB,IAAIvgB,EAC9BrD,KAAK6jB,kBAAoB7jB,KAAK4jB,mBAAmB7f,MACjD/D,KAAK8jB,yBAA2B,IAAI1e,EACpCpF,KAAK+jB,kBAAoB/jB,KAAK8jB,yBAAyBte,QACvDxF,KAAKgkB,yCAA2C,IAAI5e,EACpDpF,KAAKikB,wCAA0CjkB,KAAKgkB,yCAAyCxe,QAC7FxF,KAAK4E,QAAQ+G,MAAMrB,OAAS,OAC5BtK,KAAK4E,QAAQ+G,MAAMtB,MAAQ,OAC3BrK,KAAKgM,YAAc,IAAID,EAAW/L,KAAK4E,SACvC5E,KAAKgM,YAAYC,cAA2C,QAA5BtJ,EAAKiB,EAAQ4E,iBAA8B,IAAP7F,EAAgBA,EAAK,IAEzFgM,EAAUmF,YAAY9T,KAAK4E,SAC3B5E,KAAKmjB,SAAW,IAAIhF,KAAWva,EAAQ6P,mBAAoB7P,EAAQmQ,OAAQnQ,EAAQiM,YAAajM,EAAQ0a,OAAQ1a,EAAQiN,QACxH7Q,KAAKmjB,SAAS7E,SAAW1a,EAAQ0a,OACjCte,KAAK4E,QAAQkP,YAAY9T,KAAKmjB,SAASve,SACvC5E,KAAKoX,OAAO,EAAG,GAAG,GAClBpX,KAAKkG,eAAelG,KAAKmjB,SAASlC,0BAA0Bld,IACxD/D,KAAK0jB,sBAAsBnf,KAAK,CAC5B2f,MAAOngB,EAAMqK,KACbmR,YAAaxb,EAAMwb,aACrB,IACFvf,KAAKmjB,SAASnC,2BAA0B,IAAMhhB,KAAKgkB,yCAAyCzf,SAASvE,KAAKikB,yCAAwC,KAClJjkB,KAAKoX,OAAOpX,KAAKqK,MAAOrK,KAAKsK,QAAQ,EAAK,IAC1CnJ,EAAWwE,MAAK,KAChB,IAAIhD,EACkC,QAArCA,EAAK3C,KAAK4E,QAAQoY,qBAAkC,IAAPra,GAAyBA,EAAG+S,YAAY1V,KAAK4E,QAAQ,IACnG5E,KAAKmjB,SAASvc,aAAY,KAC1B5G,KAAK8jB,yBAAyBvf,MAAM,IACpCrD,EAAME,IAAIpB,KAAKyjB,SAAUzjB,KAAKujB,YAAavjB,KAAK6jB,kBAAhD3iB,EAAmE,KACnElB,KAAK8jB,yBAAyBvf,MAAM,IACpCvE,KAAK0jB,sBAAuB1jB,KAAKgkB,yCAA0ChkB,KAAK8jB,yBACxF,CACAlV,UAAAA,CAAWsV,EAAOhW,GACdlO,KAAKmjB,SAASzO,eAAeqI,GAAgBmH,EAAMtf,SAAUsJ,GAC7DlO,KAAK8jB,yBAAyBvf,MAClC,CACA4f,SAAAA,CAAUD,GACN,OAAOlkB,KAAKmjB,SAAS1O,cAAcsI,GAAgBmH,EAAMtf,SAC7D,CACAwf,aAAAA,CAAcxgB,GACV,IAAIjB,EAAIoO,EAAIsT,EAAIC,EACL1gB,EAAQ6P,mBAGf7P,EAAQiM,cACR7P,KAAKmjB,SAAStT,YAAcjM,EAAQiM,aAKpC,oBAAqBjM,IACrB5D,KAAKmiB,gBAAyD,QAAtCxf,EAAKiB,EAAQ2V,2BAAwC,IAAP5W,GAAgBA,GAEtF,WAAYiB,IACZ5D,KAAKse,OAAmC,QAAzBvN,EAAKnN,EAAQ0a,cAA2B,IAAPvN,GAAgBA,GAEhE,WAAYnN,IACZ5D,KAAKmjB,SAAStS,OAAmC,QAAzBwT,EAAKzgB,EAAQiN,cAA2B,IAAPwT,EAAgBA,EAAK,GAE9E,cAAezgB,GACf5D,KAAKgM,YAAYC,cAA2C,QAA5BqY,EAAK1gB,EAAQ4E,iBAA8B,IAAP8b,EAAgBA,EAAK,GAEjG,CACAC,aAAAA,CAAcL,GACVlkB,KAAKmjB,SAASrE,aAAaoF,GAC3BlkB,KAAKwkB,iBAAiBN,EAC1B,CACAO,gBAAAA,CAAiBP,GACb,OAAOlkB,KAAKmjB,SAASzE,kBAAoBwF,CAC7C,CACAQ,kBAAAA,GACI1kB,KAAKmjB,SAASnE,mBAClB,CACA2F,iBAAAA,GACI,OAAO3kB,KAAKmjB,SAAStE,kBACzB,CACA+F,UAAAA,CAAWC,EAAOrH,EAAgBtY,QAAR,IAARsY,IAAAA,EAAW,CAAC,IAC1Bxd,KAAKmjB,SAAS/O,QAAQyQ,EAAO3f,QAAmCA,EAAO+J,EAAOC,WAAYsO,GAC1Fxd,KAAKwjB,UAAUjf,KAAKsgB,EACxB,CACAC,aAAAA,CAAcD,EAAOjhB,GACjB,IAAK5D,KAAKgjB,QAAQ+B,IAAIF,EAAM/B,IACxB,MAAM,IAAIlgB,MAAM,qBAEpB,MAAMuN,EAAOnQ,KAAKgjB,QAAQlX,IAAI+Y,EAAM/B,IAC9B1U,EAAOpO,KAAKmjB,SAAS9a,OAAOwc,EAAO5V,EAAOC,YAOhD,GANIiB,KAAUvM,aAAyC,EAASA,EAAQyW,eACpElK,EAAK3J,WAAW1E,UAChBqO,EAAKrN,MAAMhB,UACX9B,KAAKgjB,QAAQte,OAAOmgB,EAAM/B,IAC1B9iB,KAAKsjB,aAAa/e,KAAKsgB,MAErBjhB,aAAyC,EAASA,EAAQohB,aAAehlB,KAAKqjB,eAAiBwB,EAAO,CACxG,MAAM5B,EAASzhB,MAAMmE,KAAK3F,KAAKgjB,QAAQE,UACvCljB,KAAKwkB,iBAAiBvB,EAAO1hB,OAAS,EAAI0hB,EAAO,GAAGngB,WAAQrC,EAChE,CACA,OAAO2N,CACX,CACA6W,QAAAA,CAASnC,GACL,IAAIngB,EACJ,OAAuC,QAA/BA,EAAK3C,KAAKgjB,QAAQlX,IAAIgX,UAAwB,IAAPngB,OAAgB,EAASA,EAAGG,KAC/E,CACA0hB,gBAAAA,CAAiBK,GACT7kB,KAAKqjB,eAAiBwB,IAGtB7kB,KAAKqjB,cACLrjB,KAAKqjB,aAAa6B,WAAU,GAE5BL,GACAA,EAAMK,WAAU,GAEpBllB,KAAKqjB,aAAewB,EACpB7kB,KAAK4jB,mBAAmBrf,KAAKsgB,GACjC,CACAM,WAAAA,CAAYN,GACR7kB,KAAK8kB,cAAcD,EACvB,CACAO,UAAAA,CAAWxhB,GACP,IAAIjB,EAIJ,GAHKiB,IACDA,EAAU,CAAC,IAEVA,EAAQihB,MAAO,CAChB,IAAK7kB,KAAKojB,YACN,OAEJxf,EAAQihB,MAAQ7kB,KAAKojB,WACzB,CACA,MAAM5F,EAAWT,GAAgBnZ,EAAQihB,MAAMjgB,SACzC6I,EAA+C,QAAvC9K,EAAK3C,KAAKmjB,SAAS1V,KAAK+P,UAA8B,IAAP7a,OAAgB,EAASA,EAAGyL,KACzFpO,KAAKwkB,iBAAiB/W,EAC1B,CACA4X,cAAAA,CAAezhB,GACX,IAAIjB,EAIJ,GAHKiB,IACDA,EAAU,CAAC,IAEVA,EAAQihB,MAAO,CAChB,IAAK7kB,KAAKojB,YACN,OAEJxf,EAAQihB,MAAQ7kB,KAAKojB,WACzB,CACA,MAAM5F,EAAWT,GAAgBnZ,EAAQihB,MAAMjgB,SACzC6I,EAAmD,QAA3C9K,EAAK3C,KAAKmjB,SAAS/K,SAASoF,UAA8B,IAAP7a,OAAgB,EAASA,EAAGyL,KAC7FpO,KAAKwkB,iBAAiB/W,EAC1B,CACA2J,MAAAA,CAAO/M,EAAOC,EAAQgb,IACAA,GAAejb,IAAUrK,KAAKqK,OAASC,IAAWtK,KAAKsK,UAIzEtK,KAAKmjB,SAASve,QAAQ+G,MAAMrB,OAAU,GAAEA,MACxCtK,KAAKmjB,SAASve,QAAQ+G,MAAMtB,MAAS,GAAEA,MACvCrK,KAAKmjB,SAAS/L,OAAO/M,EAAOC,GAChC,CACAxI,OAAAA,GACI9B,KAAK4jB,mBAAmB9hB,UACxB9B,KAAKwjB,UAAU1hB,UACf9B,KAAKsjB,aAAaxhB,UAClB,IAAK,MAAM+iB,KAAS7kB,KAAKijB,OACrB4B,EAAM/iB,UAEV9B,KAAKmjB,SAASrhB,UACd/B,MAAM+B,SACV,EC7OG,MAAMyjB,GAIT,eAAIpX,GACA,OAAOnO,KAAKwlB,UAAUrX,WAC1B,CAIA,eAAIG,GACA,OAAOtO,KAAKwlB,UAAUlX,WAC1B,CAIA,SAAIjE,GACA,OAAOrK,KAAKwlB,UAAUnb,KAC1B,CAIA,UAAIC,GACA,OAAOtK,KAAKwlB,UAAUlb,MAC1B,CAIA,UAAI/I,GACA,OAAOvB,KAAKwlB,UAAUjkB,MAC1B,CAIA,eAAIsO,GACA,OAAO7P,KAAKwlB,UAAU3V,WAC1B,CAIA,UAAI4V,GACA,OAAOzlB,KAAKwlB,UAAUC,MAC1B,CAIA,uBAAIC,GACA,OAAO1lB,KAAKwlB,UAAUE,mBAC1B,CAKA,qBAAI3B,GACA,OAAO/jB,KAAKwlB,UAAUzB,iBAC1B,CAIA,gBAAI1S,GACA,OAAOrR,KAAKwlB,UAAUnU,YAC1B,CAIA,mBAAIE,GACA,OAAOvR,KAAKwlB,UAAUjU,eAC1B,CACA5R,WAAAA,CAAY6lB,GACRxlB,KAAKwlB,UAAYA,CACrB,CAKAG,WAAAA,CAAYzB,EAAO/P,GACfnU,KAAKwlB,UAAUG,YAAYzB,EAAO/P,EACtC,CAIAyR,KAAAA,GACI5lB,KAAKwlB,UAAUI,OACnB,CAIAX,QAAAA,CAASnC,GACL,OAAO9iB,KAAKwlB,UAAUP,SAASnC,EACnC,CAIA1L,MAAAA,CAAO/M,EAAOC,GACV,OAAOtK,KAAKwlB,UAAUpO,OAAO/M,EAAOC,EACxC,CAIAub,QAAAA,CAASjiB,GACL,OAAO5D,KAAKwlB,UAAUK,SAASjiB,EACnC,CAIAkiB,SAAAA,CAAUngB,EAAMiI,GACZ5N,KAAKwlB,UAAUM,UAAUngB,EAAMiI,EACnC,CAIAwS,QAAAA,CAAS1f,GACLV,KAAKwlB,UAAUpF,SAAS1f,EAC5B,CAEAwd,MAAAA,GACI,OAAOle,KAAKwlB,UAAUtH,QAC1B,CAIAxa,KAAAA,GACI1D,KAAKwlB,UAAU9hB,OACnB,CAIA0gB,aAAAA,CAAcxgB,GACV5D,KAAKwlB,UAAUpB,cAAcxgB,EACjC,CAIA9B,OAAAA,GACI9B,KAAKwlB,UAAU1jB,SACnB,EAEG,MAAMikB,GAIT,eAAI5X,GACA,OAAOnO,KAAKwlB,UAAUrX,WAC1B,CAIA,eAAIG,GACA,OAAOtO,KAAKwlB,UAAUlX,WAC1B,CAIA,SAAIjE,GACA,OAAOrK,KAAKwlB,UAAUnb,KAC1B,CAIA,UAAIC,GACA,OAAOtK,KAAKwlB,UAAUlb,MAC1B,CAIA,UAAImb,GACA,OAAOzlB,KAAKwlB,UAAUC,MAC1B,CAIA,qBAAI1B,GACA,OAAO/jB,KAAKwlB,UAAUzB,iBAC1B,CAIA,uBAAI2B,GACA,OAAO1lB,KAAKwlB,UAAUE,mBAC1B,CAIA,gBAAIrU,GACA,OAAOrR,KAAKwlB,UAAUnU,YAC1B,CAIA,mBAAIE,GACA,OAAOvR,KAAKwlB,UAAUjU,eAC1B,CAIA,aAAIyU,GACA,OAAOhmB,KAAKwlB,UAAUQ,SAC1B,CACA,4BAAIC,GACA,OAAOjmB,KAAKwlB,UAAUS,wBAC1B,CACAtmB,WAAAA,CAAY6lB,GACRxlB,KAAKwlB,UAAYA,CACrB,CAIAG,WAAAA,CAAYzB,GACRlkB,KAAKwlB,UAAUG,YAAYzB,EAC/B,CAIAe,QAAAA,CAASnC,GACL,OAAO9iB,KAAKwlB,UAAUP,SAASnC,EACnC,CAIAgD,SAAAA,CAAUngB,EAAMiI,GACZ5N,KAAKwlB,UAAUM,UAAUngB,EAAMiI,EACnC,CAIAgY,KAAAA,GACI5lB,KAAKwlB,UAAUI,OACnB,CAIAxO,MAAAA,CAAO/M,EAAOC,GACVtK,KAAKwlB,UAAUpO,OAAO/M,EAAOC,EACjC,CAIAub,QAAAA,CAASjiB,GACL,OAAO5D,KAAKwlB,UAAUK,SAASjiB,EACnC,CAIAwc,QAAAA,CAAS1f,GACLV,KAAKwlB,UAAUpF,SAAS1f,EAC5B,CAIAwd,MAAAA,GACI,OAAOle,KAAKwlB,UAAUtH,QAC1B,CAIAxa,KAAAA,GACI1D,KAAKwlB,UAAU9hB,OACnB,CAIA0gB,aAAAA,CAAcxgB,GACV5D,KAAKwlB,UAAUpB,cAAcxgB,EACjC,CAIA9B,OAAAA,GACI9B,KAAKwlB,UAAU1jB,SACnB,EAEG,MAAMokB,GAIT,SAAI7b,GACA,OAAOrK,KAAKwlB,UAAUnb,KAC1B,CAIA,UAAIC,GACA,OAAOtK,KAAKwlB,UAAUlb,MAC1B,CAIA,iBAAIqQ,GACA,OAAO3a,KAAKwlB,UAAU7K,aAC1B,CAIA,iBAAIC,GACA,OAAO5a,KAAKwlB,UAAU5K,aAC1B,CAIA,gBAAIH,GACA,OAAOza,KAAKwlB,UAAU/K,YAC1B,CAIA,gBAAIC,GACA,OAAO1a,KAAKwlB,UAAU9K,YAC1B,CAIA,qBAAIqJ,GACA,OAAO/jB,KAAKwlB,UAAUzB,iBAC1B,CAIA,iBAAIoC,GACA,OAAOnmB,KAAKwlB,UAAUY,aAC1B,CAIA,oBAAIC,GACA,OAAOrmB,KAAKwlB,UAAUc,gBAC1B,CAIA,0BAAIC,GACA,OAAOvmB,KAAKwlB,UAAUgB,sBAC1B,CAIA,uBAAId,GACA,OAAO1lB,KAAKwlB,UAAUE,mBAC1B,CAIA,UAAID,GACA,OAAOzlB,KAAKwlB,UAAUvC,MAC1B,CAIA,eAAIpT,GACA,OAAO7P,KAAKwlB,UAAU3V,WAC1B,CACA,eAAIA,CAAY/M,GACZ9C,KAAKwlB,UAAUpB,cAAc,CAAEvU,YAAa/M,GAChD,CACAnD,WAAAA,CAAY6lB,GACRxlB,KAAKwlB,UAAYA,CACrB,CAIAI,KAAAA,GACI5lB,KAAKwlB,UAAUI,OACnB,CAIAxO,MAAAA,CAAO/M,EAAOC,EAAQmc,QAAK,IAALA,IAAAA,GAAQ,GAC1BzmB,KAAKwlB,UAAUpO,OAAO/M,EAAOC,EAAQmc,EACzC,CAIAZ,QAAAA,CAASjiB,GACL,OAAO5D,KAAKwlB,UAAUK,SAASjiB,EACnC,CAIA+hB,WAAAA,CAAYzB,EAAO/P,GACfnU,KAAKwlB,UAAUG,YAAYzB,EAAO/P,EACtC,CAIA2R,SAAAA,CAAU5B,EAAOtgB,GACb5D,KAAKwlB,UAAUM,UAAU5B,EAAOtgB,EACpC,CAIAqhB,QAAAA,CAASnC,GACL,OAAO9iB,KAAKwlB,UAAUP,SAASnC,EACnC,CAIA1C,QAAAA,CAAS1f,GACL,OAAOV,KAAKwlB,UAAUpF,SAAS1f,EACnC,CAIAwd,MAAAA,GACI,OAAOle,KAAKwlB,UAAUtH,QAC1B,CAIAxa,KAAAA,GACI1D,KAAKwlB,UAAU9hB,OACnB,CACA0gB,aAAAA,CAAcxgB,GACV5D,KAAKwlB,UAAUpB,cAAcxgB,EACjC,CAIA9B,OAAAA,GACI9B,KAAKwlB,UAAU1jB,SACnB,EAEG,MAAM4kB,GAIT,MAAI5D,GACA,OAAO9iB,KAAKwlB,UAAU1C,EAC1B,CAIA,SAAIzY,GACA,OAAOrK,KAAKwlB,UAAUnb,KAC1B,CAIA,UAAIC,GACA,OAAOtK,KAAKwlB,UAAUlb,MAC1B,CAIA,iBAAIqQ,GACA,OAAO3a,KAAKwlB,UAAU7K,aAC1B,CAIA,iBAAIC,GACA,OAAO5a,KAAKwlB,UAAU5K,aAC1B,CAIA,gBAAIH,GACA,OAAOza,KAAKwlB,UAAU/K,YAC1B,CAIA,gBAAIC,GACA,OAAO1a,KAAKwlB,UAAU9K,YAC1B,CAIA,QAAIxV,GACA,OAAOlF,KAAKwlB,UAAUtgB,IAC1B,CAIA,eAAIyhB,GACA,OAAO3mB,KAAKwlB,UAAUmB,WAC1B,CAIA,0BAAIH,GACA,OAAOxmB,KAAKwlB,UAAUgB,sBAC1B,CAIA,iBAAIJ,GACA,OAAOpmB,KAAKwlB,UAAUY,aAC1B,CAIA,oBAAIE,GACA,OAAOtmB,KAAKwlB,UAAUc,gBAC1B,CAIA,0BAAIC,GACA,OAAOvmB,KAAKwlB,UAAUe,sBAC1B,CAIA,iBAAIJ,GACA,OAAOnmB,KAAKwlB,UAAUW,aAC1B,CAIA,oBAAIE,GACA,OAAOrmB,KAAKwlB,UAAUa,gBAC1B,CACA,kBAAIO,GACA,OAAO5mB,KAAKwlB,UAAUoB,cAC1B,CAIA,uBAAIlB,GACA,OAAO1lB,KAAKwlB,UAAUE,mBAC1B,CAIA,qBAAI3B,GACA,OAAO/jB,KAAKwlB,UAAUzB,iBAC1B,CAIA,aAAIiC,GACA,OAAOhmB,KAAKwlB,UAAUQ,SAC1B,CAOA,cAAIa,GACA,OAAO7mB,KAAKwlB,UAAUqB,UAC1B,CAOA,qBAAIC,GACA,OAAO9mB,KAAKwlB,UAAUsB,iBAC1B,CAOA,mBAAIC,GACA,OAAO/mB,KAAKwlB,UAAUuB,eAC1B,CAMA,mBAAIC,GACA,OAAOhnB,KAAKwlB,UAAUwB,eAC1B,CACA,4BAAIf,GACA,OAAOjmB,KAAKwlB,UAAUS,wBAC1B,CACA,8BAAIgB,GACA,OAAOjnB,KAAKwlB,UAAUyB,0BAC1B,CACA,kCAAIC,GACA,OAAOlnB,KAAKwlB,UAAU0B,8BAC1B,CACA,6BAAIC,GACA,OAAOnnB,KAAKwlB,UAAU2B,yBAC1B,CAIA,UAAI1B,GACA,OAAOzlB,KAAKwlB,UAAUC,MAC1B,CAIA,UAAIxC,GACA,OAAOjjB,KAAKwlB,UAAUvC,MAC1B,CAIA,eAAImE,GACA,OAAOpnB,KAAKwlB,UAAU4B,WAC1B,CAIA,eAAIhE,GACA,OAAOpjB,KAAKwlB,UAAUpC,WAC1B,CACAzjB,WAAAA,CAAY6lB,GACRxlB,KAAKwlB,UAAYA,CACrB,CAIAI,KAAAA,GACI5lB,KAAKwlB,UAAUI,OACnB,CAIAX,QAAAA,CAASnC,GACL,OAAO9iB,KAAKwlB,UAAU6B,cAAcvE,EACxC,CAIA1L,MAAAA,CAAO/M,EAAOC,EAAQmc,QAAK,IAALA,IAAAA,GAAQ,GAC1BzmB,KAAKwlB,UAAUpO,OAAO/M,