dockview 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +1 -0
  3. package/dist/cjs/dockview/components/tab/defaultTab.js +6 -3
  4. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  5. package/dist/cjs/dockview/components/watermark/watermark.js +3 -1
  6. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  7. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +1 -5
  8. package/dist/cjs/dockview/defaultGroupPanelView.js +5 -20
  9. package/dist/cjs/dockview/defaultGroupPanelView.js.map +1 -1
  10. package/dist/cjs/dockview/dockviewComponent.d.ts +1 -1
  11. package/dist/cjs/dockview/dockviewComponent.js +7 -18
  12. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  13. package/dist/cjs/dockview/options.d.ts +5 -0
  14. package/dist/cjs/groupview/groupview.d.ts +16 -15
  15. package/dist/cjs/groupview/groupview.js +24 -33
  16. package/dist/cjs/groupview/groupview.js.map +1 -1
  17. package/dist/cjs/groupview/tab.d.ts +1 -0
  18. package/dist/cjs/groupview/tab.js +2 -1
  19. package/dist/cjs/groupview/tab.js.map +1 -1
  20. package/dist/cjs/groupview/titlebar/tabsContainer.js +1 -1
  21. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  22. package/dist/cjs/groupview/types.d.ts +0 -4
  23. package/dist/cjs/index.d.ts +1 -0
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +3 -0
  26. package/dist/cjs/paneview/defaultPaneviewHeader.js +29 -5
  27. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  28. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +3 -1
  29. package/dist/cjs/paneview/draggablePaneviewPanel.js +24 -9
  30. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  31. package/dist/cjs/paneview/options.d.ts +2 -0
  32. package/dist/cjs/paneview/paneviewComponent.d.ts +12 -1
  33. package/dist/cjs/paneview/paneviewComponent.js +13 -1
  34. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  35. package/dist/cjs/react/deserializer.js +13 -5
  36. package/dist/cjs/react/deserializer.js.map +1 -1
  37. package/dist/cjs/react/dockview/defaultTab.d.ts +4 -0
  38. package/dist/cjs/react/dockview/defaultTab.js +73 -0
  39. package/dist/cjs/react/dockview/defaultTab.js.map +1 -0
  40. package/dist/cjs/react/dockview/dockview.d.ts +3 -0
  41. package/dist/cjs/react/dockview/dockview.js +45 -3
  42. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  43. package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +43 -0
  44. package/dist/cjs/react/dockview/groupControlsRenderer.js +87 -0
  45. package/dist/cjs/react/dockview/groupControlsRenderer.js.map +1 -0
  46. package/dist/cjs/react/dockview/reactContentPart.d.ts +1 -16
  47. package/dist/cjs/react/dockview/reactContentPart.js +2 -18
  48. package/dist/cjs/react/dockview/reactContentPart.js.map +1 -1
  49. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +2 -0
  50. package/dist/cjs/react/dockview/reactHeaderPart.js +4 -0
  51. package/dist/cjs/react/dockview/reactHeaderPart.js.map +1 -1
  52. package/dist/cjs/react/index.d.ts +2 -2
  53. package/dist/cjs/react/index.js +1 -2
  54. package/dist/cjs/react/index.js.map +1 -1
  55. package/dist/cjs/react/paneview/paneview.d.ts +2 -0
  56. package/dist/cjs/react/paneview/paneview.js +9 -0
  57. package/dist/cjs/react/paneview/paneview.js.map +1 -1
  58. package/dist/cjs/react/react.d.ts +1 -0
  59. package/dist/cjs/react/react.js +12 -2
  60. package/dist/cjs/react/react.js.map +1 -1
  61. package/dist/cjs/react/svg.d.ts +3 -0
  62. package/dist/cjs/react/svg.js +36 -0
  63. package/dist/cjs/react/svg.js.map +1 -0
  64. package/dist/cjs/svg.d.ts +3 -0
  65. package/dist/cjs/svg.js +44 -0
  66. package/dist/cjs/svg.js.map +1 -0
  67. package/dist/dockview.amd.js +327 -113
  68. package/dist/dockview.amd.min.js +2 -2
  69. package/dist/dockview.amd.min.noStyle.js +2 -2
  70. package/dist/dockview.amd.noStyle.js +326 -112
  71. package/dist/dockview.cjs.js +327 -113
  72. package/dist/dockview.esm.js +327 -112
  73. package/dist/dockview.esm.min.js +2 -2
  74. package/dist/dockview.js +327 -113
  75. package/dist/dockview.min.js +2 -2
  76. package/dist/dockview.min.noStyle.js +2 -2
  77. package/dist/dockview.noStyle.js +326 -112
  78. package/dist/esm/dockview/components/tab/defaultTab.d.ts +1 -0
  79. package/dist/esm/dockview/components/tab/defaultTab.js +5 -2
  80. package/dist/esm/dockview/components/watermark/watermark.js +3 -1
  81. package/dist/esm/dockview/defaultGroupPanelView.d.ts +1 -5
  82. package/dist/esm/dockview/defaultGroupPanelView.js +5 -16
  83. package/dist/esm/dockview/dockviewComponent.d.ts +1 -1
  84. package/dist/esm/dockview/dockviewComponent.js +7 -18
  85. package/dist/esm/dockview/options.d.ts +5 -0
  86. package/dist/esm/groupview/groupview.d.ts +16 -15
  87. package/dist/esm/groupview/groupview.js +23 -32
  88. package/dist/esm/groupview/tab.d.ts +1 -0
  89. package/dist/esm/groupview/tab.js +2 -1
  90. package/dist/esm/groupview/titlebar/tabsContainer.js +1 -1
  91. package/dist/esm/groupview/types.d.ts +0 -4
  92. package/dist/esm/index.d.ts +1 -0
  93. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +3 -0
  94. package/dist/esm/paneview/defaultPaneviewHeader.js +29 -5
  95. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +3 -1
  96. package/dist/esm/paneview/draggablePaneviewPanel.js +24 -9
  97. package/dist/esm/paneview/options.d.ts +2 -0
  98. package/dist/esm/paneview/paneviewComponent.d.ts +12 -1
  99. package/dist/esm/paneview/paneviewComponent.js +9 -1
  100. package/dist/esm/react/deserializer.js +13 -5
  101. package/dist/esm/react/dockview/defaultTab.d.ts +4 -0
  102. package/dist/esm/react/dockview/defaultTab.js +34 -0
  103. package/dist/esm/react/dockview/dockview.d.ts +3 -0
  104. package/dist/esm/react/dockview/dockview.js +30 -1
  105. package/dist/esm/react/dockview/groupControlsRenderer.d.ts +43 -0
  106. package/dist/esm/react/dockview/groupControlsRenderer.js +68 -0
  107. package/dist/esm/react/dockview/reactContentPart.d.ts +1 -16
  108. package/dist/esm/react/dockview/reactContentPart.js +2 -14
  109. package/dist/esm/react/dockview/reactHeaderPart.d.ts +2 -0
  110. package/dist/esm/react/dockview/reactHeaderPart.js +4 -0
  111. package/dist/esm/react/index.d.ts +2 -2
  112. package/dist/esm/react/index.js +1 -2
  113. package/dist/esm/react/paneview/paneview.d.ts +2 -0
  114. package/dist/esm/react/paneview/paneview.js +9 -0
  115. package/dist/esm/react/react.d.ts +1 -0
  116. package/dist/esm/react/react.js +12 -2
  117. package/dist/esm/react/svg.d.ts +3 -0
  118. package/dist/esm/react/svg.js +7 -0
  119. package/dist/esm/svg.d.ts +3 -0
  120. package/dist/esm/svg.js +31 -0
  121. package/dist/styles/dockview.css +155 -42
  122. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * dockview
3
- * @version 1.4.3
3
+ * @version 1.5.0
4
4
  * @link https://github.com/mathuo/dockview
5
5
  * @license MIT
6
6
  */
@@ -34,7 +34,7 @@ function styleInject(css, ref) {
34
34
  }
35
35
  }
36
36
 
37
- var css_248z = ".dockview-theme-dark {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-tab-close-icon: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>');\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-tab-close-icon: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>');\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-tab-close-icon: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"/></svg>');\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-activegroup-visiblepanel-tab-background-color: dodgerblue;\n --dv-tabs-and-actions-container-height: 18px;\n --dv-tabs-and-actions-container-font-size: 11px;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.actions-bar {\n text-align: right;\n width: 28px;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.actions-bar .actions-container {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.actions-bar .actions-container a:active {\n -webkit-mask-size: 100% 100% !important;\n mask-size: 100% 100% !important;\n}\n.actions-bar .actions-container .close-action {\n background-color: white;\n height: 16px;\n width: 16px;\n display: block;\n -webkit-mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n margin-right: \"0.5em\";\n cursor: pointer;\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 10000;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.left {\n transform: translateX(-25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.right {\n transform: translateX(25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.top {\n transform: translateY(-25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.bottom {\n transform: translateY(25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.custom-dragging {\n height: 24px;\n line-height: 24px;\n font-size: 11px;\n width: 100px;\n background-color: dodgerblue;\n color: ghostwhite;\n border-radius: 11px;\n position: absolute;\n padding-left: 10px;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab .tab-action {\n background-color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab .tab-action {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab .tab-action {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .collapsed {\n transform: rotate(-90deg);\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.dockview-react-part {\n height: 100%;\n width: 100%;\n}\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dragged {\n transform: translate3d(0px, 0px, 0px);\n /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding-left: 10px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n width: 28px;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list a:active:hover {\n -webkit-mask-size: 100% 100% !important;\n mask-size: 100% 100% !important;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n height: 16px;\n width: 16px;\n display: block;\n -webkit-mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n mask: var(--dv-tab-close-icon) 50% 50%/90% 90% no-repeat;\n margin-right: \"0.5em\";\n}\n.tab .default-tab .action-container .tab-list .tab-action.disable-close {\n display: none;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-bar {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}";
37
+ var css_248z = ".dockview-svg {\n display: inline-block;\n fill: currentcolor;\n line-height: 1;\n stroke: currentcolor;\n stroke-width: 0;\n}\n.dockview-theme-dark {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n}\n\n.dockview-theme-light {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: white;\n --dv-tabs-and-actions-container-background-color: #f3f3f3;\n --dv-activegroup-visiblepanel-tab-background-color: white;\n --dv-activegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-inactivegroup-visiblepanel-tab-background-color: white;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;\n --dv-tab-divider-color: white;\n --dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);\n --dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, 0.7);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, 0.35);\n --dv-separator-border: rgba(128, 128, 128, 0.35);\n --dv-paneview-header-border-color: rgb(51, 51, 51);\n}\n\n.dockview-theme-vs {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #1e1e1e;\n --dv-tabs-and-actions-container-background-color: #252526;\n --dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;\n --dv-tab-divider-color: #1e1e1e;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: #969696;\n --dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;\n --dv-inactivegroup-hiddenpanel-tab-color: #626262;\n --dv-separator-border: rgb(68, 68, 68);\n --dv-paneview-header-border-color: rgba(204, 204, 204, 0.2);\n --dv-tabs-and-actions-container-background-color: #2d2d30;\n --dv-tabs-and-actions-container-height: 20px;\n --dv-tabs-and-actions-container-font-size: 11px;\n --dv-activegroup-visiblepanel-tab-background-color: #007acc;\n --dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: white;\n --dv-inactivegroup-visiblepanel-tab-color: white;\n --dv-inactivegroup-hiddenpanel-tab-color: white;\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-activegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.active-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-activegroup-hiddenpanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container {\n box-sizing: content-box;\n border-bottom: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.active-tab {\n border-top: 2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color);\n}\n.dockview-theme-vs .groupview.inactive-group > .tabs-and-actions-container .tab.inactive-tab {\n border-top: 2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n}\n\n.dockview-theme-abyss {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #000c18;\n --dv-tabs-and-actions-container-background-color: #1c1c2a;\n --dv-activegroup-visiblepanel-tab-background-color: #000c18;\n --dv-activegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #000c18;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #10192c;\n --dv-tab-divider-color: #2b2b4a;\n --dv-activegroup-visiblepanel-tab-color: white;\n --dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, 0.25);\n --dv-separator-border: #2b2b4a;\n --dv-paneview-header-border-color: #2b2b4a;\n --dv-paneview-active-outline-color: #596f99;\n}\n\n.dockview-theme-dracula {\n --dv-paneview-active-outline-color: dodgerblue;\n --dv-tabs-and-actions-container-font-size: 13px;\n --dv-tabs-and-actions-container-height: 35px;\n --dv-drag-over-background-color: rgba(83, 89, 93, 0.5);\n --dv-drag-over-border-color: white;\n --dv-tabs-container-scrollbar-color: #888;\n --dv-icon-hover-background-color: rgba(90, 93, 94, 0.31);\n --dv-group-view-background-color: #282a36;\n --dv-tabs-and-actions-container-background-color: #191a21;\n --dv-activegroup-visiblepanel-tab-background-color: #282a36;\n --dv-activegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-inactivegroup-visiblepanel-tab-background-color: #282a36;\n --dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;\n --dv-tab-divider-color: #191a21;\n --dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);\n --dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);\n --dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, 0.5);\n --dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, 0.5);\n --dv-separator-border: #bd93f9;\n --dv-paneview-header-border-color: #bd93f9;\n --dv-paneview-active-outline-color: #6272a4;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n top: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #94527e;\n z-index: 999;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n position: relative;\n}\n.dockview-theme-dracula .groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab::after {\n position: absolute;\n left: 0px;\n bottom: 0px;\n content: \"\";\n width: 100%;\n height: 1px;\n background-color: #5e3d5a;\n z-index: 999;\n}\n.actions-bar {\n text-align: right;\n width: 28px;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.actions-bar .actions-container {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.actions-bar .actions-container .close-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n cursor: pointer;\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.actions-bar .actions-container .close-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.drop-target {\n position: relative;\n}\n.drop-target > .drop-target-dropzone {\n position: absolute;\n left: 0px;\n top: 0px;\n height: 100%;\n width: 100%;\n z-index: 10000;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection {\n position: relative;\n box-sizing: border-box;\n height: 100%;\n width: 100%;\n background-color: var(--dv-drag-over-background-color);\n transition: top 70ms ease-out, left 70ms ease-out, width 70ms ease-out, height 70ms ease-out, opacity 0.15s ease-out;\n will-change: transform;\n pointer-events: none;\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.left {\n transform: translateX(-25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.right {\n transform: translateX(25%) scaleX(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.top {\n transform: translateY(-25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.bottom {\n transform: translateY(25%) scaleY(0.5);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-top {\n border-top: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-bottom {\n border-bottom: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-left {\n border-left: 1px solid var(--dv-drag-over-border-color);\n}\n.drop-target > .drop-target-dropzone > .drop-target-selection.small-right {\n border-right: 1px solid var(--dv-drag-over-border-color);\n}\n.custom-dragging {\n height: 24px;\n line-height: 24px;\n font-size: 11px;\n width: 100px;\n background-color: dodgerblue;\n color: ghostwhite;\n border-radius: 11px;\n position: absolute;\n padding-left: 10px;\n}\n\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.groupview.active-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-activegroup-hiddenpanel-tab-background-color);\n color: var(--dv-activegroup-hiddenpanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.active-tab {\n background-color: var(--dv-inactivegroup-visiblepanel-tab-background-color);\n color: var(--dv-inactivegroup-visiblepanel-tab-color);\n}\n.groupview.inactive-group > .tabs-and-actions-container > .tabs-container > .tab.inactive-tab {\n background-color: var(--dv-inactivegroup-hiddenpanel-tab-background-color);\n color: var(--dv-inactivegroup-hiddenpanel-tab-color);\n}\n\n/**\n * when a tab is dragged we lose the above stylings because they are conditional on parent elements\n * therefore we also set some stylings for the dragging event\n **/\n.tab.dragging {\n background-color: var(--dv-activegroup-visiblepanel-tab-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.grid-view,\n.branch-node {\n height: 100%;\n width: 100%;\n}\n.groupview {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: var(--dv-group-view-background-color);\n overflow: hidden;\n}\n.groupview:focus {\n outline: none;\n}\n.groupview.empty > .tabs-and-actions-container {\n display: none;\n}\n.groupview > .content-container {\n flex-grow: 1;\n overflow: hidden;\n outline: none;\n}\n.pane-container {\n height: 100%;\n width: 100%;\n}\n.pane-container.animated .view {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.pane-container .view {\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 0px !important;\n}\n.pane-container .view:not(:first-child)::before {\n background-color: transparent !important;\n}\n.pane-container .view:not(:first-child) .pane > .pane-header {\n border-top: 1px solid var(--dv-paneview-header-border-color);\n}\n.pane-container .view .default-header {\n background-color: var(--dv-group-view-background-color);\n color: var(--dv-activegroup-visiblepanel-tab-color);\n display: flex;\n padding: 0px 8px;\n cursor: pointer;\n}\n.pane-container .view .default-header .dockview-pane-header-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.pane-container .view .default-header > span {\n padding-left: 8px;\n flex-grow: 1;\n}\n.pane-container:first-of-type > .pane > .pane-header {\n border-top: none !important;\n}\n.pane-container .pane {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n height: 100%;\n}\n.pane-container .pane .pane-header {\n box-sizing: border-box;\n user-select: none;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-header.pane-draggable {\n cursor: pointer;\n}\n.pane-container .pane .pane-header:focus:before, .pane-container .pane .pane-header:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.pane-container .pane .pane-body {\n overflow-y: auto;\n overflow-x: hidden;\n flex-grow: 1;\n position: relative;\n outline: none;\n}\n.pane-container .pane .pane-body:focus:before, .pane-container .pane .pane-body:focus-within:before {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n content: \"\";\n pointer-events: none;\n outline: 1px solid;\n outline-width: -1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--dv-paneview-active-outline-color);\n}\n.tabs-and-actions-container {\n display: flex;\n background-color: var(--dv-tabs-and-actions-container-background-color);\n flex-shrink: 0;\n box-sizing: border-box;\n height: var(--dv-tabs-and-actions-container-height);\n font-size: var(--dv-tabs-and-actions-container-font-size);\n}\n.tabs-and-actions-container.hidden {\n display: none;\n}\n.tabs-and-actions-container .void-container {\n display: flex;\n flex-grow: 1;\n}\n.tabs-and-actions-container .tabs-container {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n scrollbar-width: thin;\n /* Track */\n /* Handle */\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar {\n height: 3px;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-track {\n background: transparent;\n}\n.tabs-and-actions-container .tabs-container::-webkit-scrollbar-thumb {\n background: var(--dv-tabs-container-scrollbar-color);\n}\n.tabs-and-actions-container .tabs-container .tab {\n -webkit-user-drag: element;\n outline: none;\n min-width: 75px;\n cursor: pointer;\n position: relative;\n box-sizing: border-box;\n}\n.tabs-and-actions-container .tabs-container .tab:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-tab-divider-color);\n width: 1px;\n height: 100%;\n}\n.tab .dockview-react-tab {\n display: flex;\n padding: 0px 8px;\n align-items: center;\n height: 100%;\n}\n.tab .dockview-react-tab .dockview-react-tab-title {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .dockview-react-tab .dockview-react-tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .dockview-react-tab .dockview-react-tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tab.inactive-tab:not(:hover) .dockview-react-tab-action {\n visibility: hidden;\n}\n.dockview-react-part {\n height: 100%;\n width: 100%;\n}\n.split-view-container {\n position: relative;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n.split-view-container.animation .view,\n.split-view-container.animation .sash {\n transition-duration: 0.15s;\n transition-timing-function: ease-out;\n}\n.split-view-container.horizontal {\n height: 100%;\n}\n.split-view-container.horizontal > .sash-container > .sash {\n height: 100%;\n width: 4px;\n}\n.split-view-container.horizontal > .sash-container > .sash.enabled {\n cursor: ew-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.horizontal > .sash-container > .sash.maximum {\n cursor: w-resize;\n}\n.split-view-container.horizontal > .sash-container > .sash.minimum {\n cursor: e-resize;\n}\n.split-view-container.horizontal > .view-container > .view:not(:first-child)::before {\n height: 100%;\n width: 1px;\n}\n.split-view-container.vertical {\n width: 100%;\n}\n.split-view-container.vertical > .sash-container > .sash {\n width: 100%;\n height: 4px;\n}\n.split-view-container.vertical > .sash-container > .sash.enabled {\n cursor: ns-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.disabled {\n cursor: default;\n}\n.split-view-container.vertical > .sash-container > .sash.maximum {\n cursor: n-resize;\n}\n.split-view-container.vertical > .sash-container > .sash.minimum {\n cursor: s-resize;\n}\n.split-view-container.vertical > .view-container > .view {\n width: 100%;\n}\n.split-view-container.vertical > .view-container > .view:not(:first-child)::before {\n height: 1px;\n width: 100%;\n}\n.split-view-container .sash-container {\n height: 100%;\n width: 100%;\n position: absolute;\n}\n.split-view-container .sash-container .sash {\n position: absolute;\n z-index: 99;\n outline: none;\n}\n.split-view-container .sash-container .sash:active {\n transition: background-color 0.1s ease-in-out;\n background-color: var(--dv-active-sash-color, transparent);\n}\n.split-view-container .sash-container .sash:hover {\n background-color: var(--dv-active-sash-color, transparent);\n transition: background-color 0.1s ease-in-out;\n transition-delay: 0.5s;\n}\n.split-view-container .view-container {\n position: relative;\n height: 100%;\n width: 100%;\n}\n.split-view-container .view-container .view {\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n position: absolute;\n}\n.split-view-container.separator-border .view:not(:first-child)::before {\n content: \" \";\n position: absolute;\n top: 0;\n left: 0;\n z-index: 5;\n pointer-events: none;\n background-color: var(--dv-separator-border);\n}\n.dragged {\n transform: translate3d(0px, 0px, 0px);\n /* forces tab to be drawn on a separate layer (see https://github.com/microsoft/vscode/issues/18733) */\n}\n\n.tab {\n flex-shrink: 0;\n}\n.tab.dragging .tab-action {\n background-color: var(--dv-activegroup-visiblepanel-tab-color);\n}\n.tab.active-tab > .default-tab .tab-action {\n visibility: visible;\n}\n.tab.inactive-tab > .default-tab .tab-action {\n visibility: hidden;\n}\n.tab.inactive-tab > .default-tab:hover .tab-action {\n visibility: visible;\n}\n.tab .default-tab {\n position: relative;\n height: 100%;\n display: flex;\n min-width: 80px;\n align-items: center;\n padding: 0px 8px;\n white-space: nowrap;\n text-overflow: elipsis;\n}\n.tab .default-tab .tab-content {\n padding: 0px 8px;\n flex-grow: 1;\n}\n.tab .default-tab .action-container {\n text-align: right;\n display: flex;\n}\n.tab .default-tab .action-container .tab-list {\n display: flex;\n padding: 0px;\n margin: 0px;\n justify-content: flex-end;\n}\n.tab .default-tab .action-container .tab-list .tab-action {\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n.tab .default-tab .action-container .tab-list .tab-action:hover {\n border-radius: 2px;\n background-color: var(--dv-icon-hover-background-color);\n}\n.tab .default-tab .action-container .tab-list .tab-action.disable-close {\n display: none;\n}\n.watermark {\n display: flex;\n width: 100%;\n}\n.watermark.has-actions .watermark-title .actions-bar {\n display: none;\n}\n.watermark .watermark-title {\n height: 35px;\n width: 100%;\n display: flex;\n}\n.watermark .watermark-content {\n flex-grow: 1;\n}";
38
38
  styleInject(css_248z);
39
39
 
40
40
  class TransferObject {
@@ -2688,6 +2688,7 @@ class Tab extends CompositeDisposable {
2688
2688
  constructor(panelId, accessor, group) {
2689
2689
  super();
2690
2690
  this.panelId = panelId;
2691
+ this.accessor = accessor;
2691
2692
  this.group = group;
2692
2693
  this._onChanged = new Emitter();
2693
2694
  this.onChanged = this._onChanged.event;
@@ -2738,7 +2739,7 @@ class Tab extends CompositeDisposable {
2738
2739
  validOverlays: 'none',
2739
2740
  canDisplayOverlay: (event) => {
2740
2741
  const data = getPanelData();
2741
- if (data) {
2742
+ if (data && this.accessor.id === data.viewId) {
2742
2743
  return this.panelId !== data.panelId;
2743
2744
  }
2744
2745
  return this.group.model.canDisplayOverlay(event, DockviewDropTargets.Tab);
@@ -2796,7 +2797,7 @@ class TabsContainer extends CompositeDisposable {
2796
2797
  canDisplayOverlay: (event) => {
2797
2798
  var _a;
2798
2799
  const data = getPanelData();
2799
- if (data) {
2800
+ if (data && this.accessor.id === data.viewId) {
2800
2801
  // don't show the overlay if the tab being dragged is the last panel of this group
2801
2802
  return ((_a = last(this.tabs)) === null || _a === void 0 ? void 0 : _a.value.panelId) !== data.panelId;
2802
2803
  }
@@ -2953,12 +2954,6 @@ class TabsContainer extends CompositeDisposable {
2953
2954
  }
2954
2955
  }
2955
2956
 
2956
- var GroupChangeKind2;
2957
- (function (GroupChangeKind2) {
2958
- GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
2959
- GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
2960
- GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
2961
- })(GroupChangeKind2 || (GroupChangeKind2 = {}));
2962
2957
  class Groupview extends CompositeDisposable {
2963
2958
  constructor(container, accessor, id, options, parent) {
2964
2959
  super();
@@ -2977,12 +2972,15 @@ class Groupview extends CompositeDisposable {
2977
2972
  this._panels = [];
2978
2973
  this._onMove = new Emitter();
2979
2974
  this.onMove = this._onMove.event;
2980
- this._onDidGroupChange = new Emitter();
2981
- this.onDidGroupChange = this._onDidGroupChange.event;
2982
2975
  this._onDidDrop = new Emitter();
2983
2976
  this.onDidDrop = this._onDidDrop.event;
2977
+ this._onDidAddPanel = new Emitter();
2978
+ this.onDidAddPanel = this._onDidAddPanel.event;
2979
+ this._onDidRemovePanel = new Emitter();
2980
+ this.onDidRemovePanel = this._onDidRemovePanel.event;
2981
+ this._onDidActivePanelChange = new Emitter();
2982
+ this.onDidActivePanelChange = this._onDidActivePanelChange.event;
2984
2983
  this.container.classList.add('groupview');
2985
- this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
2986
2984
  this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
2987
2985
  tabHeight: options.tabHeight,
2988
2986
  });
@@ -2994,7 +2992,7 @@ class Groupview extends CompositeDisposable {
2994
2992
  return false;
2995
2993
  }
2996
2994
  const data = getPanelData();
2997
- if (data) {
2995
+ if (data && data.viewId === this.accessor.id) {
2998
2996
  const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
2999
2997
  return !groupHasOnePanelAndIsActiveDragElement;
3000
2998
  }
@@ -3004,7 +3002,7 @@ class Groupview extends CompositeDisposable {
3004
3002
  container.append(this.tabsContainer.element, this.contentContainer.element);
3005
3003
  this.header.hidden = !!options.hideHeader;
3006
3004
  this.locked = !!options.locked;
3007
- this.addDisposables(this._onMove, this._onDidGroupChange, this.tabsContainer.onDrop((event) => {
3005
+ this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
3008
3006
  this.handleDropEvent(event.event, Position.Center, event.index);
3009
3007
  }), this.contentContainer.onDidFocus(() => {
3010
3008
  this.accessor.doSetGroupActive(this.parent, true);
@@ -3076,6 +3074,15 @@ class Groupview extends CompositeDisposable {
3076
3074
  // correctly initialized
3077
3075
  this.setActive(this.isActive, true, true);
3078
3076
  this.updateContainer();
3077
+ if (this.accessor.options.createGroupControlElement) {
3078
+ this._control = this.accessor.options.createGroupControlElement(this.parent);
3079
+ this.addDisposables(this._control);
3080
+ this._control.init({
3081
+ containerApi: new DockviewApi(this.accessor),
3082
+ api: this.parent.api,
3083
+ });
3084
+ this.tabsContainer.setActionElement(this._control.element);
3085
+ }
3079
3086
  }
3080
3087
  indexOf(panel) {
3081
3088
  return this.tabsContainer.indexOf(panel.id);
@@ -3206,14 +3213,8 @@ class Groupview extends CompositeDisposable {
3206
3213
  isPanelActive(panel) {
3207
3214
  return this._activePanel === panel;
3208
3215
  }
3209
- updateActions() {
3210
- var _a, _b;
3211
- if (this.isActive && ((_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.actions)) {
3212
- this.tabsContainer.setActionElement(this._activePanel.view.actions.element);
3213
- }
3214
- else {
3215
- this.tabsContainer.setActionElement(undefined);
3216
- }
3216
+ updateActions(element) {
3217
+ this.tabsContainer.setActionElement(element);
3217
3218
  }
3218
3219
  setActive(isGroupActive, skipFocus = false, force = false) {
3219
3220
  var _a, _b;
@@ -3269,10 +3270,7 @@ class Groupview extends CompositeDisposable {
3269
3270
  if (this.mostRecentlyUsed.includes(panel)) {
3270
3271
  this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
3271
3272
  }
3272
- this._onDidGroupChange.fire({
3273
- kind: GroupChangeKind2.REMOVE_PANEL,
3274
- panel,
3275
- });
3273
+ this._onDidRemovePanel.fire({ panel });
3276
3274
  }
3277
3275
  doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
3278
3276
  const existingPanel = this._panels.indexOf(panel);
@@ -3289,10 +3287,7 @@ class Groupview extends CompositeDisposable {
3289
3287
  }
3290
3288
  this.updateMru(panel);
3291
3289
  this.panels.splice(index, 0, panel);
3292
- this._onDidGroupChange.fire({
3293
- kind: GroupChangeKind2.ADD_PANEL,
3294
- panel,
3295
- });
3290
+ this._onDidAddPanel.fire({ panel });
3296
3291
  }
3297
3292
  doSetActivePanel(panel) {
3298
3293
  this._activePanel = panel;
@@ -3300,10 +3295,7 @@ class Groupview extends CompositeDisposable {
3300
3295
  this.tabsContainer.setActivePanel(panel);
3301
3296
  panel.layout(this._width, this._height);
3302
3297
  this.updateMru(panel);
3303
- this._onDidGroupChange.fire({
3304
- kind: GroupChangeKind2.PANEL_ACTIVE,
3305
- panel,
3306
- });
3298
+ this._onDidActivePanelChange.fire({ panel });
3307
3299
  }
3308
3300
  }
3309
3301
  updateMru(panel) {
@@ -3313,7 +3305,6 @@ class Groupview extends CompositeDisposable {
3313
3305
  this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
3314
3306
  }
3315
3307
  updateContainer() {
3316
- this.updateActions();
3317
3308
  toggleClass(this.container, 'empty', this.isEmpty);
3318
3309
  this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
3319
3310
  if (this.isEmpty && !this.watermark) {
@@ -3350,6 +3341,7 @@ class Groupview extends CompositeDisposable {
3350
3341
  nativeEvent: event,
3351
3342
  target,
3352
3343
  group: this.accessor.getPanel(this.id),
3344
+ getData: getPanelData,
3353
3345
  });
3354
3346
  }
3355
3347
  return false;
@@ -3398,7 +3390,7 @@ class Groupview extends CompositeDisposable {
3398
3390
  }
3399
3391
  }
3400
3392
 
3401
- const nextLayoutId = sequentialNumberGenerator();
3393
+ const nextLayoutId$1 = sequentialNumberGenerator();
3402
3394
  function toTarget(direction) {
3403
3395
  switch (direction) {
3404
3396
  case 'left':
@@ -3418,7 +3410,7 @@ class BaseGrid extends CompositeDisposable {
3418
3410
  constructor(_element, options) {
3419
3411
  super();
3420
3412
  this._element = _element;
3421
- this._id = nextLayoutId.next();
3413
+ this._id = nextLayoutId$1.next();
3422
3414
  this._groups = new Map();
3423
3415
  this._onDidLayoutChange = new Emitter();
3424
3416
  this.onDidLayoutChange = this._onDidLayoutChange.event;
@@ -3878,6 +3870,38 @@ class ActionContainer {
3878
3870
  }
3879
3871
  }
3880
3872
 
3873
+ const createSvgElementFromPath = (params) => {
3874
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
3875
+ svg.setAttributeNS(null, 'height', params.height);
3876
+ svg.setAttributeNS(null, 'width', params.width);
3877
+ svg.setAttributeNS(null, 'viewBox', params.viewbox);
3878
+ svg.setAttributeNS(null, 'aria-hidden', 'false');
3879
+ svg.setAttributeNS(null, 'focusable', 'false');
3880
+ svg.classList.add('dockview-svg');
3881
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
3882
+ path.setAttributeNS(null, 'd', params.path);
3883
+ svg.appendChild(path);
3884
+ return svg;
3885
+ };
3886
+ const createCloseButton = () => createSvgElementFromPath({
3887
+ width: '11',
3888
+ height: '11',
3889
+ viewbox: '0 0 28 28',
3890
+ 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',
3891
+ });
3892
+ const createExpandMoreButton = () => createSvgElementFromPath({
3893
+ width: '11',
3894
+ height: '11',
3895
+ viewbox: '0 0 24 15',
3896
+ path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
3897
+ });
3898
+ const createChevronRightButton = () => createSvgElementFromPath({
3899
+ width: '11',
3900
+ height: '11',
3901
+ viewbox: '0 0 15 25',
3902
+ path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
3903
+ });
3904
+
3881
3905
  class Watermark extends CompositeDisposable {
3882
3906
  constructor() {
3883
3907
  super();
@@ -3894,8 +3918,9 @@ class Watermark extends CompositeDisposable {
3894
3918
  const actions = new ActionContainer();
3895
3919
  title.appendChild(emptySpace);
3896
3920
  title.appendChild(actions.element);
3897
- const closeAnchor = document.createElement('a');
3921
+ const closeAnchor = document.createElement('div');
3898
3922
  closeAnchor.className = 'close-action';
3923
+ closeAnchor.appendChild(createCloseButton());
3899
3924
  actions.add(closeAnchor);
3900
3925
  this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
3901
3926
  var _a;
@@ -3968,6 +3993,7 @@ function createComponent(id, componentName, components = {}, frameworkComponents
3968
3993
  return new Component(id, componentName);
3969
3994
  }
3970
3995
 
3996
+ const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
3971
3997
  class DefaultTab extends CompositeDisposable {
3972
3998
  constructor() {
3973
3999
  super();
@@ -3987,8 +4013,9 @@ class DefaultTab extends CompositeDisposable {
3987
4013
  this._list = document.createElement('ul');
3988
4014
  this._list.className = 'tab-list';
3989
4015
  //
3990
- this.action = document.createElement('a');
4016
+ this.action = document.createElement('div');
3991
4017
  this.action.className = 'tab-action';
4018
+ this.action.appendChild(createCloseButton());
3992
4019
  //
3993
4020
  this._element.appendChild(this._content);
3994
4021
  this._element.appendChild(this._actionContainer);
@@ -4004,7 +4031,7 @@ class DefaultTab extends CompositeDisposable {
4004
4031
  return this._element;
4005
4032
  }
4006
4033
  get id() {
4007
- return '__DEFAULT_TAB__';
4034
+ return DEFAULT_TAB_IDENTIFIER;
4008
4035
  }
4009
4036
  update(event) {
4010
4037
  this.params = Object.assign(Object.assign({}, this.params), event.params);
@@ -4321,16 +4348,6 @@ class DefaultGroupPanelView {
4321
4348
  var _a;
4322
4349
  this._content = renderers.content;
4323
4350
  this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
4324
- this._actions =
4325
- renderers.actions ||
4326
- (this.content.actions
4327
- ? {
4328
- element: this.content.actions,
4329
- dispose: () => {
4330
- //
4331
- },
4332
- }
4333
- : undefined);
4334
4351
  }
4335
4352
  get content() {
4336
4353
  return this._content;
@@ -4338,9 +4355,6 @@ class DefaultGroupPanelView {
4338
4355
  get tab() {
4339
4356
  return this._tab;
4340
4357
  }
4341
- get actions() {
4342
- return this._actions;
4343
- }
4344
4358
  init(params) {
4345
4359
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
4346
4360
  this.tab.init(params);
@@ -4358,16 +4372,18 @@ class DefaultGroupPanelView {
4358
4372
  this.tab.update(event);
4359
4373
  }
4360
4374
  toJSON() {
4375
+ let tab = this.tab instanceof DefaultTab ? undefined : this.tab.toJSON();
4376
+ if (tab && Object.keys(tab).length === 0) {
4377
+ tab = undefined;
4378
+ }
4361
4379
  return {
4362
4380
  content: this.content.toJSON(),
4363
- tab: this.tab instanceof DefaultTab ? undefined : this.tab.toJSON(),
4381
+ tab,
4364
4382
  };
4365
4383
  }
4366
4384
  dispose() {
4367
- var _a;
4368
4385
  this.content.dispose();
4369
4386
  this.tab.dispose();
4370
- (_a = this.actions) === null || _a === void 0 ? void 0 : _a.dispose();
4371
4387
  }
4372
4388
  }
4373
4389
 
@@ -4782,22 +4798,12 @@ class DockviewComponent extends BaseGrid {
4782
4798
  this.moveGroupOrPanel(view, groupId, itemId, target, index);
4783
4799
  }), view.model.onDidDrop((event) => {
4784
4800
  this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
4785
- }), view.model.onDidGroupChange((event) => {
4786
- switch (event.kind) {
4787
- case GroupChangeKind2.ADD_PANEL:
4788
- if (event.panel) {
4789
- this._onDidAddPanel.fire(event.panel);
4790
- }
4791
- break;
4792
- case GroupChangeKind2.REMOVE_PANEL:
4793
- if (event.panel) {
4794
- this._onDidRemovePanel.fire(event.panel);
4795
- }
4796
- break;
4797
- case GroupChangeKind2.PANEL_ACTIVE:
4798
- this._onDidActivePanelChange.fire(event.panel);
4799
- break;
4800
- }
4801
+ }), view.model.onDidAddPanel((event) => {
4802
+ this._onDidAddPanel.fire(event.panel);
4803
+ }), view.model.onDidRemovePanel((event) => {
4804
+ this._onDidRemovePanel.fire(event.panel);
4805
+ }), view.model.onDidActivePanelChange((event) => {
4806
+ this._onDidActivePanelChange.fire(event.panel);
4801
4807
  }));
4802
4808
  this._groups.set(view.id, { value: view, disposable });
4803
4809
  }
@@ -4812,7 +4818,7 @@ class DockviewComponent extends BaseGrid {
4812
4818
  createPanel(options, group) {
4813
4819
  const view = new DefaultGroupPanelView({
4814
4820
  content: this.createContentComponent(options.id, options.component),
4815
- tab: this.createTabComponent(options.id, options.tabComponent),
4821
+ tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
4816
4822
  });
4817
4823
  const panel = new DockviewGroupPanel(options.id, this, this._api, group);
4818
4824
  panel.init({
@@ -5565,8 +5571,9 @@ class PaneviewPanel extends BasePanelView {
5565
5571
  }
5566
5572
 
5567
5573
  class DraggablePaneviewPanel extends PaneviewPanel {
5568
- constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
5574
+ constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
5569
5575
  super(id, component, headerComponent, orientation, isExpanded, true);
5576
+ this.accessor = accessor;
5570
5577
  this._onDidDrop = new Emitter();
5571
5578
  this.onDidDrop = this._onDidDrop.event;
5572
5579
  if (!disableDnd) {
@@ -5578,10 +5585,11 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5578
5585
  return;
5579
5586
  }
5580
5587
  const id = this.id;
5588
+ const accessorId = this.accessor.id;
5581
5589
  this.header.draggable = true;
5582
5590
  this.handler = new (class PaneDragHandler extends DragHandler {
5583
5591
  getData() {
5584
- LocalSelectionTransfer.getInstance().setData([new PaneTransfer('paneview', id)], PaneTransfer.prototype);
5592
+ LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);
5585
5593
  return {
5586
5594
  dispose: () => {
5587
5595
  LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);
@@ -5591,12 +5599,22 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5591
5599
  })(this.header);
5592
5600
  this.target = new Droptarget(this.element, {
5593
5601
  validOverlays: 'vertical',
5594
- canDisplayOverlay: () => {
5602
+ canDisplayOverlay: (event) => {
5595
5603
  const data = getPaneData();
5596
- if (!data) {
5597
- return true;
5604
+ if (data) {
5605
+ if (data.paneId !== this.id &&
5606
+ data.viewId === this.accessor.id) {
5607
+ return true;
5608
+ }
5609
+ }
5610
+ if (this.accessor.options.showDndOverlay) {
5611
+ return this.accessor.options.showDndOverlay({
5612
+ nativeEvent: event,
5613
+ getData: getPaneData,
5614
+ panel: this,
5615
+ });
5598
5616
  }
5599
- return data.paneId !== this.id;
5617
+ return false;
5600
5618
  },
5601
5619
  });
5602
5620
  this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
@@ -5605,8 +5623,10 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5605
5623
  }
5606
5624
  onDrop(event) {
5607
5625
  const data = getPaneData();
5608
- if (!data) {
5609
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5626
+ if (!data || data.viewId !== this.accessor.id) {
5627
+ // if there is no local drag event for this panel
5628
+ // or if the drag event was creating by another Paneview instance
5629
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5610
5630
  return;
5611
5631
  }
5612
5632
  const containerApi = this._params
@@ -5614,7 +5634,8 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5614
5634
  const panelId = data.paneId;
5615
5635
  const existingPanel = containerApi.getPanel(panelId);
5616
5636
  if (!existingPanel) {
5617
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5637
+ // if the panel doesn't exist
5638
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5618
5639
  return;
5619
5640
  }
5620
5641
  const allPanels = containerApi.panels;
@@ -5638,12 +5659,15 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5638
5659
  class DefaultHeader extends CompositeDisposable {
5639
5660
  constructor() {
5640
5661
  super();
5662
+ this._expandedIcon = createExpandMoreButton();
5663
+ this._collapsedIcon = createChevronRightButton();
5641
5664
  this.disposable = new MutableDisposable();
5642
5665
  this.apiRef = { api: null };
5643
5666
  this._element = document.createElement('div');
5644
5667
  this.element.className = 'default-header';
5645
5668
  this._content = document.createElement('span');
5646
- this._expander = document.createElement('a');
5669
+ this._expander = document.createElement('div');
5670
+ this._expander.className = 'dockview-pane-header-icon';
5647
5671
  this.element.appendChild(this._expander);
5648
5672
  this.element.appendChild(this._content);
5649
5673
  this.addDisposables(addDisposableListener(this._element, 'click', () => {
@@ -5657,12 +5681,32 @@ class DefaultHeader extends CompositeDisposable {
5657
5681
  init(params) {
5658
5682
  this.apiRef.api = params.api;
5659
5683
  this._content.textContent = params.title;
5660
- this._expander.textContent = '▼';
5661
- toggleClass(this._expander, 'collapsed', !params.api.isExpanded);
5662
- this.disposable.value = params.api.onDidExpansionChange((e) => {
5663
- toggleClass(this._expander, 'collapsed', !e.isExpanded);
5684
+ this.updateIcon();
5685
+ this.disposable.value = params.api.onDidExpansionChange(() => {
5686
+ this.updateIcon();
5664
5687
  });
5665
5688
  }
5689
+ updateIcon() {
5690
+ var _a;
5691
+ const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);
5692
+ toggleClass(this._expander, 'collapsed', !isExpanded);
5693
+ if (isExpanded) {
5694
+ if (this._expander.contains(this._collapsedIcon)) {
5695
+ this._collapsedIcon.remove();
5696
+ }
5697
+ if (!this._expander.contains(this._expandedIcon)) {
5698
+ this._expander.appendChild(this._expandedIcon);
5699
+ }
5700
+ }
5701
+ else {
5702
+ if (this._expander.contains(this._expandedIcon)) {
5703
+ this._expandedIcon.remove();
5704
+ }
5705
+ if (!this._expander.contains(this._collapsedIcon)) {
5706
+ this._expander.appendChild(this._collapsedIcon);
5707
+ }
5708
+ }
5709
+ }
5666
5710
  update(_params) {
5667
5711
  //
5668
5712
  }
@@ -5672,9 +5716,10 @@ class DefaultHeader extends CompositeDisposable {
5672
5716
  }
5673
5717
  }
5674
5718
 
5719
+ const nextLayoutId = sequentialNumberGenerator();
5675
5720
  class PaneFramework extends DraggablePaneviewPanel {
5676
5721
  constructor(options) {
5677
- super(options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5722
+ super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5678
5723
  this.options = options;
5679
5724
  }
5680
5725
  getBodyComponent() {
@@ -5688,6 +5733,7 @@ class PaneviewComponent extends CompositeDisposable {
5688
5733
  constructor(element, options) {
5689
5734
  super();
5690
5735
  this.element = element;
5736
+ this._id = nextLayoutId.next();
5691
5737
  this._disposable = new MutableDisposable();
5692
5738
  this._viewDisposables = new Map();
5693
5739
  this._onDidLayoutfromJSON = new Emitter();
@@ -5714,6 +5760,9 @@ class PaneviewComponent extends CompositeDisposable {
5714
5760
  });
5715
5761
  this.addDisposables(this._disposable);
5716
5762
  }
5763
+ get id() {
5764
+ return this._id;
5765
+ }
5717
5766
  get panels() {
5718
5767
  return this.paneview.getPanes();
5719
5768
  }
@@ -5778,6 +5827,7 @@ class PaneviewComponent extends CompositeDisposable {
5778
5827
  orientation: Orientation.VERTICAL,
5779
5828
  isExpanded: !!options.isExpanded,
5780
5829
  disableDnd: !!this.options.disableDnd,
5830
+ accessor: this,
5781
5831
  });
5782
5832
  this.doAddPanel(view);
5783
5833
  const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
@@ -5872,6 +5922,7 @@ class PaneviewComponent extends CompositeDisposable {
5872
5922
  orientation: Orientation.VERTICAL,
5873
5923
  isExpanded: !!view.expanded,
5874
5924
  disableDnd: !!this.options.disableDnd,
5925
+ accessor: this,
5875
5926
  });
5876
5927
  this.doAddPanel(panel);
5877
5928
  queue.push(() => {
@@ -6071,15 +6122,21 @@ class ReactPart {
6071
6122
  this.component = component;
6072
6123
  this.parameters = parameters;
6073
6124
  this.context = context;
6125
+ this._initialProps = {};
6074
6126
  this.disposed = false;
6075
6127
  this.createPortal();
6076
6128
  }
6077
6129
  update(props) {
6078
- var _a;
6079
6130
  if (this.disposed) {
6080
6131
  throw new Error('invalid operation: resource is already disposed');
6081
6132
  }
6082
- (_a = this.componentInstance) === null || _a === void 0 ? void 0 : _a.update(props);
6133
+ if (!this.componentInstance) {
6134
+ // if the component is yet to be mounted store the props
6135
+ this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);
6136
+ }
6137
+ else {
6138
+ this.componentInstance.update(props);
6139
+ }
6083
6140
  }
6084
6141
  createPortal() {
6085
6142
  if (this.disposed) {
@@ -6099,6 +6156,10 @@ class ReactPart {
6099
6156
  componentProps: this.parameters,
6100
6157
  ref: (element) => {
6101
6158
  this.componentInstance = element;
6159
+ if (Object.keys(this._initialProps).length > 0) {
6160
+ this.componentInstance.update(this._initialProps);
6161
+ this._initialProps = {}; // don't keep a reference to the users object once no longer required
6162
+ }
6102
6163
  },
6103
6164
  });
6104
6165
  const node = this.context
@@ -6155,30 +6216,19 @@ class ReactPanelContentPart {
6155
6216
  this.onDidBlur = this._onDidBlur.event;
6156
6217
  this._element = document.createElement('div');
6157
6218
  this._element.className = 'dockview-react-part';
6158
- this._actionsElement = document.createElement('div');
6159
- this._actionsElement.className = 'dockview-react-part';
6160
6219
  }
6161
6220
  get element() {
6162
6221
  return this._element;
6163
6222
  }
6164
- get actions() {
6165
- return this._actionsElement;
6166
- }
6167
6223
  focus() {
6168
6224
  // TODO
6169
6225
  }
6170
6226
  init(parameters) {
6171
- const context = {
6172
- api: parameters.api,
6173
- containerApi: parameters.containerApi,
6174
- actionsPortalElement: this._actionsElement,
6175
- tabPortalElement: parameters.tab,
6176
- };
6177
6227
  this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6178
6228
  params: parameters.params,
6179
6229
  api: parameters.api,
6180
6230
  containerApi: parameters.containerApi,
6181
- }, context);
6231
+ });
6182
6232
  }
6183
6233
  toJSON() {
6184
6234
  return {
@@ -6196,11 +6246,10 @@ class ReactPanelContentPart {
6196
6246
  // noop
6197
6247
  }
6198
6248
  dispose() {
6199
- var _a, _b;
6249
+ var _a;
6200
6250
  this._onDidFocus.dispose();
6201
6251
  this._onDidBlur.dispose();
6202
6252
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6203
- (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6204
6253
  }
6205
6254
  }
6206
6255
 
@@ -6230,6 +6279,9 @@ class ReactPanelHeaderPart {
6230
6279
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6231
6280
  }
6232
6281
  toJSON() {
6282
+ if (this.id === DEFAULT_TAB_IDENTIFIER) {
6283
+ return {};
6284
+ }
6233
6285
  return {
6234
6286
  id: this.id,
6235
6287
  };
@@ -6251,17 +6303,25 @@ class ReactPanelDeserialzier {
6251
6303
  this.layout = layout;
6252
6304
  }
6253
6305
  fromJSON(panelData, group) {
6254
- var _a, _b, _c;
6306
+ var _a, _b, _c, _d;
6255
6307
  const panelId = panelData.id;
6256
6308
  const params = panelData.params;
6257
6309
  const title = panelData.title;
6258
6310
  const suppressClosable = panelData.suppressClosable;
6259
6311
  const viewData = panelData.view;
6312
+ let tab;
6313
+ if ((_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id) {
6314
+ tab = createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_b = this.layout.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());
6315
+ }
6316
+ else if (this.layout.options.defaultTabComponent) {
6317
+ tab = createComponent(this.layout.options.defaultTabComponent, this.layout.options.defaultTabComponent, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab, () => new DefaultTab());
6318
+ }
6319
+ else {
6320
+ tab = new DefaultTab();
6321
+ }
6260
6322
  const view = new DefaultGroupPanelView({
6261
- content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (_a = this.layout.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content),
6262
- tab: ((_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id)
6263
- ? createComponent(viewData.tab.id, viewData.tab.id, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab)
6264
- : new DefaultTab(),
6323
+ content: createComponent(viewData.content.id, viewData.content.id, this.layout.options.components, this.layout.options.frameworkComponents, (_d = this.layout.options.frameworkComponentFactory) === null || _d === void 0 ? void 0 : _d.content),
6324
+ tab,
6265
6325
  });
6266
6326
  const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout), group);
6267
6327
  panel.init({
@@ -6329,6 +6389,80 @@ class ReactWatermarkPart {
6329
6389
  }
6330
6390
  }
6331
6391
 
6392
+ class ReactGroupControlsRendererPart {
6393
+ constructor(component, reactPortalStore, _group) {
6394
+ this.component = component;
6395
+ this.reactPortalStore = reactPortalStore;
6396
+ this._group = _group;
6397
+ this.mutableDisposable = new MutableDisposable();
6398
+ this._element = document.createElement('div');
6399
+ this._element.className = 'dockview-react-part';
6400
+ }
6401
+ get element() {
6402
+ return this._element;
6403
+ }
6404
+ get part() {
6405
+ return this._part;
6406
+ }
6407
+ get group() {
6408
+ return this._group;
6409
+ }
6410
+ focus() {
6411
+ // TODO
6412
+ }
6413
+ init(parameters) {
6414
+ this.mutableDisposable.value = new CompositeDisposable(this._group.model.onDidAddPanel(() => {
6415
+ this.updatePanels();
6416
+ }), this._group.model.onDidRemovePanel(() => {
6417
+ this.updatePanels();
6418
+ }), this._group.model.onDidActivePanelChange(() => {
6419
+ this.updateActivePanel();
6420
+ }), parameters.api.onDidActiveChange(() => {
6421
+ this.updateGroupActive();
6422
+ }));
6423
+ this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6424
+ api: parameters.api,
6425
+ containerApi: parameters.containerApi,
6426
+ panels: this._group.model.panels,
6427
+ activePanel: this._group.model.activePanel,
6428
+ isGroupActive: this._group.api.isActive,
6429
+ });
6430
+ }
6431
+ update(event) {
6432
+ var _a;
6433
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6434
+ }
6435
+ dispose() {
6436
+ var _a;
6437
+ this.mutableDisposable.dispose();
6438
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();
6439
+ }
6440
+ updatePanels() {
6441
+ this.update({ params: { panels: this._group.model.panels } });
6442
+ }
6443
+ updateActivePanel() {
6444
+ this.update({
6445
+ params: {
6446
+ activePanel: this._group.model.activePanel,
6447
+ },
6448
+ });
6449
+ }
6450
+ updateGroupActive() {
6451
+ this.update({
6452
+ params: {
6453
+ isGroupActive: this._group.api.isActive,
6454
+ },
6455
+ });
6456
+ }
6457
+ }
6458
+
6459
+ function createGroupControlElement(component, store) {
6460
+ return component
6461
+ ? (groupPanel) => {
6462
+ return new ReactGroupControlsRendererPart(component, store, groupPanel);
6463
+ }
6464
+ : undefined;
6465
+ }
6332
6466
  const DockviewReact = React.forwardRef((props, ref) => {
6333
6467
  const domRef = React.useRef(null);
6334
6468
  const dockviewRef = React.useRef();
@@ -6378,12 +6512,15 @@ const DockviewReact = React.forwardRef((props, ref) => {
6378
6512
  const dockview = new DockviewComponent(element, {
6379
6513
  frameworkComponentFactory: factory,
6380
6514
  frameworkComponents: props.components,
6381
- frameworkTabComponents: props.tabComponents,
6515
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6382
6516
  tabHeight: props.tabHeight,
6383
6517
  watermarkFrameworkComponent: props.watermarkComponent,
6518
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6384
6519
  styles: props.hideBorders
6385
6520
  ? { separatorBorder: 'transparent' }
6386
6521
  : undefined,
6522
+ showDndOverlay: props.showDndOverlay,
6523
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6387
6524
  });
6388
6525
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6389
6526
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
@@ -6460,10 +6597,79 @@ const DockviewReact = React.forwardRef((props, ref) => {
6460
6597
  disposable.dispose();
6461
6598
  };
6462
6599
  }, [props.onTabContextMenu]);
6600
+ React.useEffect(() => {
6601
+ if (!dockviewRef.current) {
6602
+ return;
6603
+ }
6604
+ dockviewRef.current.updateOptions({
6605
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6606
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6607
+ });
6608
+ }, [props.defaultTabComponent]);
6609
+ React.useEffect(() => {
6610
+ if (!dockviewRef.current) {
6611
+ return;
6612
+ }
6613
+ dockviewRef.current.updateOptions({
6614
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6615
+ });
6616
+ }, [props.groupControlComponent]);
6463
6617
  return (React.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6464
6618
  });
6465
6619
  DockviewReact.displayName = 'DockviewComponent';
6466
6620
 
6621
+ /******************************************************************************
6622
+ Copyright (c) Microsoft Corporation.
6623
+
6624
+ Permission to use, copy, modify, and/or distribute this software for any
6625
+ purpose with or without fee is hereby granted.
6626
+
6627
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6628
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6629
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6630
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6631
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6632
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6633
+ PERFORMANCE OF THIS SOFTWARE.
6634
+ ***************************************************************************** */
6635
+
6636
+ function __rest(s, e) {
6637
+ var t = {};
6638
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6639
+ t[p] = s[p];
6640
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6641
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
6642
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
6643
+ t[p[i]] = s[p[i]];
6644
+ }
6645
+ return t;
6646
+ }
6647
+
6648
+ const CloseButton = () => (React.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "dockview-svg" },
6649
+ 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" })));
6650
+
6651
+ const DockviewDefaultTab = (_a) => {
6652
+ var { api, containerApi: _containerApi, params: _params } = _a, rest = __rest(_a, ["api", "containerApi", "params"]);
6653
+ const onClose = React.useCallback((event) => {
6654
+ event.stopPropagation();
6655
+ api.close();
6656
+ }, [api]);
6657
+ const onClick = React.useCallback((event) => {
6658
+ api.setActive();
6659
+ if (rest.onClick) {
6660
+ rest.onClick(event);
6661
+ }
6662
+ }, [api, rest.onClick]);
6663
+ const iconClassname = React.useMemo(() => {
6664
+ const cn = ['dockview-react-tab-action'];
6665
+ return cn.join(',');
6666
+ }, [api.suppressClosable]);
6667
+ return (React.createElement("div", Object.assign({}, rest, { onClick: onClick, className: "dockview-react-tab" }),
6668
+ React.createElement("span", { className: "dockview-react-tab-title" }, api.title),
6669
+ React.createElement("div", { className: iconClassname, onClick: onClose },
6670
+ React.createElement(CloseButton, null))));
6671
+ };
6672
+
6467
6673
  class ReactPanelView extends SplitviewPanel {
6468
6674
  constructor(id, component, reactComponent, reactPortalStore) {
6469
6675
  super(id, component);
@@ -6693,6 +6899,7 @@ const PaneviewReact = React.forwardRef((props, ref) => {
6693
6899
  createComponent,
6694
6900
  },
6695
6901
  },
6902
+ showDndOverlay: props.showDndOverlay,
6696
6903
  });
6697
6904
  const api = new PaneviewApi(paneview);
6698
6905
  const { clientWidth, clientHeight } = domRef.current;
@@ -6737,8 +6944,16 @@ const PaneviewReact = React.forwardRef((props, ref) => {
6737
6944
  disposable.dispose();
6738
6945
  };
6739
6946
  }, [props.onDidDrop]);
6947
+ React.useEffect(() => {
6948
+ if (!paneviewRef.current) {
6949
+ return;
6950
+ }
6951
+ paneviewRef.current.updateOptions({
6952
+ showDndOverlay: props.showDndOverlay,
6953
+ });
6954
+ }, [props.showDndOverlay]);
6740
6955
  return (React.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6741
6956
  });
6742
6957
  PaneviewReact.displayName = 'PaneviewComponent';
6743
6958
 
6744
- export { BaseGrid, ContentContainer, DockviewApi, DockviewComponent, DockviewDropTargets, DockviewReact, Event, Gridview, GridviewApi, GridviewComponent, GridviewPanel, GridviewReact, GroupChangeKind2, Groupview, LayoutPriority, LocalSelectionTransfer, MouseEventKind, Orientation, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, PaneviewReact, Position, ReactPanelContentPart, ReactPanelHeaderPart, ReactPart, ReactPartContext, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, SplitviewReact, Tab, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isReactElement, orthogonal, toTarget, usePortalsLifecycle };
6959
+ export { BaseGrid, ContentContainer, DockviewApi, DockviewComponent, DockviewDefaultTab, DockviewDropTargets, DockviewReact, Event, Gridview, GridviewApi, GridviewComponent, GridviewPanel, GridviewReact, Groupview, LayoutPriority, LocalSelectionTransfer, MouseEventKind, Orientation, PaneFramework, PaneTransfer, PanelTransfer, Paneview, PaneviewApi, PaneviewComponent, PaneviewPanel, PaneviewReact, Position, ReactPart, ReactPartContext, SashState, Sizing, Splitview, SplitviewApi, SplitviewComponent, SplitviewPanel, SplitviewReact, Tab, getDirectionOrientation, getGridLocation, getLocationOrientation, getPaneData, getPanelData, getRelativeLocation, indexInParent, isGridBranchNode, isReactElement, orthogonal, toTarget, usePortalsLifecycle };