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
  */
@@ -59,7 +59,7 @@ function styleInject(css, ref) {
59
59
  }
60
60
  }
61
61
 
62
- 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}";
62
+ 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}";
63
63
  styleInject(css_248z);
64
64
 
65
65
  class TransferObject {
@@ -2713,6 +2713,7 @@ class Tab extends CompositeDisposable {
2713
2713
  constructor(panelId, accessor, group) {
2714
2714
  super();
2715
2715
  this.panelId = panelId;
2716
+ this.accessor = accessor;
2716
2717
  this.group = group;
2717
2718
  this._onChanged = new Emitter();
2718
2719
  this.onChanged = this._onChanged.event;
@@ -2763,7 +2764,7 @@ class Tab extends CompositeDisposable {
2763
2764
  validOverlays: 'none',
2764
2765
  canDisplayOverlay: (event) => {
2765
2766
  const data = getPanelData();
2766
- if (data) {
2767
+ if (data && this.accessor.id === data.viewId) {
2767
2768
  return this.panelId !== data.panelId;
2768
2769
  }
2769
2770
  return this.group.model.canDisplayOverlay(event, exports.DockviewDropTargets.Tab);
@@ -2821,7 +2822,7 @@ class TabsContainer extends CompositeDisposable {
2821
2822
  canDisplayOverlay: (event) => {
2822
2823
  var _a;
2823
2824
  const data = getPanelData();
2824
- if (data) {
2825
+ if (data && this.accessor.id === data.viewId) {
2825
2826
  // don't show the overlay if the tab being dragged is the last panel of this group
2826
2827
  return ((_a = last(this.tabs)) === null || _a === void 0 ? void 0 : _a.value.panelId) !== data.panelId;
2827
2828
  }
@@ -2978,12 +2979,6 @@ class TabsContainer extends CompositeDisposable {
2978
2979
  }
2979
2980
  }
2980
2981
 
2981
- exports.GroupChangeKind2 = void 0;
2982
- (function (GroupChangeKind2) {
2983
- GroupChangeKind2["ADD_PANEL"] = "ADD_PANEL";
2984
- GroupChangeKind2["REMOVE_PANEL"] = "REMOVE_PANEL";
2985
- GroupChangeKind2["PANEL_ACTIVE"] = "PANEL_ACTIVE";
2986
- })(exports.GroupChangeKind2 || (exports.GroupChangeKind2 = {}));
2987
2982
  class Groupview extends CompositeDisposable {
2988
2983
  constructor(container, accessor, id, options, parent) {
2989
2984
  super();
@@ -3002,12 +2997,15 @@ class Groupview extends CompositeDisposable {
3002
2997
  this._panels = [];
3003
2998
  this._onMove = new Emitter();
3004
2999
  this.onMove = this._onMove.event;
3005
- this._onDidGroupChange = new Emitter();
3006
- this.onDidGroupChange = this._onDidGroupChange.event;
3007
3000
  this._onDidDrop = new Emitter();
3008
3001
  this.onDidDrop = this._onDidDrop.event;
3002
+ this._onDidAddPanel = new Emitter();
3003
+ this.onDidAddPanel = this._onDidAddPanel.event;
3004
+ this._onDidRemovePanel = new Emitter();
3005
+ this.onDidRemovePanel = this._onDidRemovePanel.event;
3006
+ this._onDidActivePanelChange = new Emitter();
3007
+ this.onDidActivePanelChange = this._onDidActivePanelChange.event;
3009
3008
  this.container.classList.add('groupview');
3010
- this.addDisposables(this._onMove, this._onDidGroupChange, this._onDidChange, this._onDidDrop);
3011
3009
  this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
3012
3010
  tabHeight: options.tabHeight,
3013
3011
  });
@@ -3019,7 +3017,7 @@ class Groupview extends CompositeDisposable {
3019
3017
  return false;
3020
3018
  }
3021
3019
  const data = getPanelData();
3022
- if (data) {
3020
+ if (data && data.viewId === this.accessor.id) {
3023
3021
  const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
3024
3022
  return !groupHasOnePanelAndIsActiveDragElement;
3025
3023
  }
@@ -3029,7 +3027,7 @@ class Groupview extends CompositeDisposable {
3029
3027
  container.append(this.tabsContainer.element, this.contentContainer.element);
3030
3028
  this.header.hidden = !!options.hideHeader;
3031
3029
  this.locked = !!options.locked;
3032
- this.addDisposables(this._onMove, this._onDidGroupChange, this.tabsContainer.onDrop((event) => {
3030
+ this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
3033
3031
  this.handleDropEvent(event.event, exports.Position.Center, event.index);
3034
3032
  }), this.contentContainer.onDidFocus(() => {
3035
3033
  this.accessor.doSetGroupActive(this.parent, true);
@@ -3101,6 +3099,15 @@ class Groupview extends CompositeDisposable {
3101
3099
  // correctly initialized
3102
3100
  this.setActive(this.isActive, true, true);
3103
3101
  this.updateContainer();
3102
+ if (this.accessor.options.createGroupControlElement) {
3103
+ this._control = this.accessor.options.createGroupControlElement(this.parent);
3104
+ this.addDisposables(this._control);
3105
+ this._control.init({
3106
+ containerApi: new DockviewApi(this.accessor),
3107
+ api: this.parent.api,
3108
+ });
3109
+ this.tabsContainer.setActionElement(this._control.element);
3110
+ }
3104
3111
  }
3105
3112
  indexOf(panel) {
3106
3113
  return this.tabsContainer.indexOf(panel.id);
@@ -3231,14 +3238,8 @@ class Groupview extends CompositeDisposable {
3231
3238
  isPanelActive(panel) {
3232
3239
  return this._activePanel === panel;
3233
3240
  }
3234
- updateActions() {
3235
- var _a, _b;
3236
- if (this.isActive && ((_b = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.view) === null || _b === void 0 ? void 0 : _b.actions)) {
3237
- this.tabsContainer.setActionElement(this._activePanel.view.actions.element);
3238
- }
3239
- else {
3240
- this.tabsContainer.setActionElement(undefined);
3241
- }
3241
+ updateActions(element) {
3242
+ this.tabsContainer.setActionElement(element);
3242
3243
  }
3243
3244
  setActive(isGroupActive, skipFocus = false, force = false) {
3244
3245
  var _a, _b;
@@ -3294,10 +3295,7 @@ class Groupview extends CompositeDisposable {
3294
3295
  if (this.mostRecentlyUsed.includes(panel)) {
3295
3296
  this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
3296
3297
  }
3297
- this._onDidGroupChange.fire({
3298
- kind: exports.GroupChangeKind2.REMOVE_PANEL,
3299
- panel,
3300
- });
3298
+ this._onDidRemovePanel.fire({ panel });
3301
3299
  }
3302
3300
  doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
3303
3301
  const existingPanel = this._panels.indexOf(panel);
@@ -3314,10 +3312,7 @@ class Groupview extends CompositeDisposable {
3314
3312
  }
3315
3313
  this.updateMru(panel);
3316
3314
  this.panels.splice(index, 0, panel);
3317
- this._onDidGroupChange.fire({
3318
- kind: exports.GroupChangeKind2.ADD_PANEL,
3319
- panel,
3320
- });
3315
+ this._onDidAddPanel.fire({ panel });
3321
3316
  }
3322
3317
  doSetActivePanel(panel) {
3323
3318
  this._activePanel = panel;
@@ -3325,10 +3320,7 @@ class Groupview extends CompositeDisposable {
3325
3320
  this.tabsContainer.setActivePanel(panel);
3326
3321
  panel.layout(this._width, this._height);
3327
3322
  this.updateMru(panel);
3328
- this._onDidGroupChange.fire({
3329
- kind: exports.GroupChangeKind2.PANEL_ACTIVE,
3330
- panel,
3331
- });
3323
+ this._onDidActivePanelChange.fire({ panel });
3332
3324
  }
3333
3325
  }
3334
3326
  updateMru(panel) {
@@ -3338,7 +3330,6 @@ class Groupview extends CompositeDisposable {
3338
3330
  this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
3339
3331
  }
3340
3332
  updateContainer() {
3341
- this.updateActions();
3342
3333
  toggleClass(this.container, 'empty', this.isEmpty);
3343
3334
  this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
3344
3335
  if (this.isEmpty && !this.watermark) {
@@ -3375,6 +3366,7 @@ class Groupview extends CompositeDisposable {
3375
3366
  nativeEvent: event,
3376
3367
  target,
3377
3368
  group: this.accessor.getPanel(this.id),
3369
+ getData: getPanelData,
3378
3370
  });
3379
3371
  }
3380
3372
  return false;
@@ -3423,7 +3415,7 @@ class Groupview extends CompositeDisposable {
3423
3415
  }
3424
3416
  }
3425
3417
 
3426
- const nextLayoutId = sequentialNumberGenerator();
3418
+ const nextLayoutId$1 = sequentialNumberGenerator();
3427
3419
  function toTarget(direction) {
3428
3420
  switch (direction) {
3429
3421
  case 'left':
@@ -3443,7 +3435,7 @@ class BaseGrid extends CompositeDisposable {
3443
3435
  constructor(_element, options) {
3444
3436
  super();
3445
3437
  this._element = _element;
3446
- this._id = nextLayoutId.next();
3438
+ this._id = nextLayoutId$1.next();
3447
3439
  this._groups = new Map();
3448
3440
  this._onDidLayoutChange = new Emitter();
3449
3441
  this.onDidLayoutChange = this._onDidLayoutChange.event;
@@ -3903,6 +3895,38 @@ class ActionContainer {
3903
3895
  }
3904
3896
  }
3905
3897
 
3898
+ const createSvgElementFromPath = (params) => {
3899
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
3900
+ svg.setAttributeNS(null, 'height', params.height);
3901
+ svg.setAttributeNS(null, 'width', params.width);
3902
+ svg.setAttributeNS(null, 'viewBox', params.viewbox);
3903
+ svg.setAttributeNS(null, 'aria-hidden', 'false');
3904
+ svg.setAttributeNS(null, 'focusable', 'false');
3905
+ svg.classList.add('dockview-svg');
3906
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
3907
+ path.setAttributeNS(null, 'd', params.path);
3908
+ svg.appendChild(path);
3909
+ return svg;
3910
+ };
3911
+ const createCloseButton = () => createSvgElementFromPath({
3912
+ width: '11',
3913
+ height: '11',
3914
+ viewbox: '0 0 28 28',
3915
+ 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',
3916
+ });
3917
+ const createExpandMoreButton = () => createSvgElementFromPath({
3918
+ width: '11',
3919
+ height: '11',
3920
+ viewbox: '0 0 24 15',
3921
+ path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
3922
+ });
3923
+ const createChevronRightButton = () => createSvgElementFromPath({
3924
+ width: '11',
3925
+ height: '11',
3926
+ viewbox: '0 0 15 25',
3927
+ path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
3928
+ });
3929
+
3906
3930
  class Watermark extends CompositeDisposable {
3907
3931
  constructor() {
3908
3932
  super();
@@ -3919,8 +3943,9 @@ class Watermark extends CompositeDisposable {
3919
3943
  const actions = new ActionContainer();
3920
3944
  title.appendChild(emptySpace);
3921
3945
  title.appendChild(actions.element);
3922
- const closeAnchor = document.createElement('a');
3946
+ const closeAnchor = document.createElement('div');
3923
3947
  closeAnchor.className = 'close-action';
3948
+ closeAnchor.appendChild(createCloseButton());
3924
3949
  actions.add(closeAnchor);
3925
3950
  this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
3926
3951
  var _a;
@@ -3993,6 +4018,7 @@ function createComponent(id, componentName, components = {}, frameworkComponents
3993
4018
  return new Component(id, componentName);
3994
4019
  }
3995
4020
 
4021
+ const DEFAULT_TAB_IDENTIFIER = '__default__tab__';
3996
4022
  class DefaultTab extends CompositeDisposable {
3997
4023
  constructor() {
3998
4024
  super();
@@ -4012,8 +4038,9 @@ class DefaultTab extends CompositeDisposable {
4012
4038
  this._list = document.createElement('ul');
4013
4039
  this._list.className = 'tab-list';
4014
4040
  //
4015
- this.action = document.createElement('a');
4041
+ this.action = document.createElement('div');
4016
4042
  this.action.className = 'tab-action';
4043
+ this.action.appendChild(createCloseButton());
4017
4044
  //
4018
4045
  this._element.appendChild(this._content);
4019
4046
  this._element.appendChild(this._actionContainer);
@@ -4029,7 +4056,7 @@ class DefaultTab extends CompositeDisposable {
4029
4056
  return this._element;
4030
4057
  }
4031
4058
  get id() {
4032
- return '__DEFAULT_TAB__';
4059
+ return DEFAULT_TAB_IDENTIFIER;
4033
4060
  }
4034
4061
  update(event) {
4035
4062
  this.params = Object.assign(Object.assign({}, this.params), event.params);
@@ -4346,16 +4373,6 @@ class DefaultGroupPanelView {
4346
4373
  var _a;
4347
4374
  this._content = renderers.content;
4348
4375
  this._tab = (_a = renderers.tab) !== null && _a !== void 0 ? _a : new DefaultTab();
4349
- this._actions =
4350
- renderers.actions ||
4351
- (this.content.actions
4352
- ? {
4353
- element: this.content.actions,
4354
- dispose: () => {
4355
- //
4356
- },
4357
- }
4358
- : undefined);
4359
4376
  }
4360
4377
  get content() {
4361
4378
  return this._content;
@@ -4363,9 +4380,6 @@ class DefaultGroupPanelView {
4363
4380
  get tab() {
4364
4381
  return this._tab;
4365
4382
  }
4366
- get actions() {
4367
- return this._actions;
4368
- }
4369
4383
  init(params) {
4370
4384
  this.content.init(Object.assign(Object.assign({}, params), { tab: this.tab }));
4371
4385
  this.tab.init(params);
@@ -4383,16 +4397,18 @@ class DefaultGroupPanelView {
4383
4397
  this.tab.update(event);
4384
4398
  }
4385
4399
  toJSON() {
4400
+ let tab = this.tab instanceof DefaultTab ? undefined : this.tab.toJSON();
4401
+ if (tab && Object.keys(tab).length === 0) {
4402
+ tab = undefined;
4403
+ }
4386
4404
  return {
4387
4405
  content: this.content.toJSON(),
4388
- tab: this.tab instanceof DefaultTab ? undefined : this.tab.toJSON(),
4406
+ tab,
4389
4407
  };
4390
4408
  }
4391
4409
  dispose() {
4392
- var _a;
4393
4410
  this.content.dispose();
4394
4411
  this.tab.dispose();
4395
- (_a = this.actions) === null || _a === void 0 ? void 0 : _a.dispose();
4396
4412
  }
4397
4413
  }
4398
4414
 
@@ -4807,22 +4823,12 @@ class DockviewComponent extends BaseGrid {
4807
4823
  this.moveGroupOrPanel(view, groupId, itemId, target, index);
4808
4824
  }), view.model.onDidDrop((event) => {
4809
4825
  this._onDidDrop.fire(Object.assign(Object.assign({}, event), { api: this._api, group: view }));
4810
- }), view.model.onDidGroupChange((event) => {
4811
- switch (event.kind) {
4812
- case exports.GroupChangeKind2.ADD_PANEL:
4813
- if (event.panel) {
4814
- this._onDidAddPanel.fire(event.panel);
4815
- }
4816
- break;
4817
- case exports.GroupChangeKind2.REMOVE_PANEL:
4818
- if (event.panel) {
4819
- this._onDidRemovePanel.fire(event.panel);
4820
- }
4821
- break;
4822
- case exports.GroupChangeKind2.PANEL_ACTIVE:
4823
- this._onDidActivePanelChange.fire(event.panel);
4824
- break;
4825
- }
4826
+ }), view.model.onDidAddPanel((event) => {
4827
+ this._onDidAddPanel.fire(event.panel);
4828
+ }), view.model.onDidRemovePanel((event) => {
4829
+ this._onDidRemovePanel.fire(event.panel);
4830
+ }), view.model.onDidActivePanelChange((event) => {
4831
+ this._onDidActivePanelChange.fire(event.panel);
4826
4832
  }));
4827
4833
  this._groups.set(view.id, { value: view, disposable });
4828
4834
  }
@@ -4837,7 +4843,7 @@ class DockviewComponent extends BaseGrid {
4837
4843
  createPanel(options, group) {
4838
4844
  const view = new DefaultGroupPanelView({
4839
4845
  content: this.createContentComponent(options.id, options.component),
4840
- tab: this.createTabComponent(options.id, options.tabComponent),
4846
+ tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
4841
4847
  });
4842
4848
  const panel = new DockviewGroupPanel(options.id, this, this._api, group);
4843
4849
  panel.init({
@@ -5590,8 +5596,9 @@ class PaneviewPanel extends BasePanelView {
5590
5596
  }
5591
5597
 
5592
5598
  class DraggablePaneviewPanel extends PaneviewPanel {
5593
- constructor(id, component, headerComponent, orientation, isExpanded, disableDnd) {
5599
+ constructor(accessor, id, component, headerComponent, orientation, isExpanded, disableDnd) {
5594
5600
  super(id, component, headerComponent, orientation, isExpanded, true);
5601
+ this.accessor = accessor;
5595
5602
  this._onDidDrop = new Emitter();
5596
5603
  this.onDidDrop = this._onDidDrop.event;
5597
5604
  if (!disableDnd) {
@@ -5603,10 +5610,11 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5603
5610
  return;
5604
5611
  }
5605
5612
  const id = this.id;
5613
+ const accessorId = this.accessor.id;
5606
5614
  this.header.draggable = true;
5607
5615
  this.handler = new (class PaneDragHandler extends DragHandler {
5608
5616
  getData() {
5609
- LocalSelectionTransfer.getInstance().setData([new PaneTransfer('paneview', id)], PaneTransfer.prototype);
5617
+ LocalSelectionTransfer.getInstance().setData([new PaneTransfer(accessorId, id)], PaneTransfer.prototype);
5610
5618
  return {
5611
5619
  dispose: () => {
5612
5620
  LocalSelectionTransfer.getInstance().clearData(PaneTransfer.prototype);
@@ -5616,12 +5624,22 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5616
5624
  })(this.header);
5617
5625
  this.target = new Droptarget(this.element, {
5618
5626
  validOverlays: 'vertical',
5619
- canDisplayOverlay: () => {
5627
+ canDisplayOverlay: (event) => {
5620
5628
  const data = getPaneData();
5621
- if (!data) {
5622
- return true;
5629
+ if (data) {
5630
+ if (data.paneId !== this.id &&
5631
+ data.viewId === this.accessor.id) {
5632
+ return true;
5633
+ }
5634
+ }
5635
+ if (this.accessor.options.showDndOverlay) {
5636
+ return this.accessor.options.showDndOverlay({
5637
+ nativeEvent: event,
5638
+ getData: getPaneData,
5639
+ panel: this,
5640
+ });
5623
5641
  }
5624
- return data.paneId !== this.id;
5642
+ return false;
5625
5643
  },
5626
5644
  });
5627
5645
  this.addDisposables(this._onDidDrop, this.handler, this.target, this.target.onDrop((event) => {
@@ -5630,8 +5648,10 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5630
5648
  }
5631
5649
  onDrop(event) {
5632
5650
  const data = getPaneData();
5633
- if (!data) {
5634
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5651
+ if (!data || data.viewId !== this.accessor.id) {
5652
+ // if there is no local drag event for this panel
5653
+ // or if the drag event was creating by another Paneview instance
5654
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5635
5655
  return;
5636
5656
  }
5637
5657
  const containerApi = this._params
@@ -5639,7 +5659,8 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5639
5659
  const panelId = data.paneId;
5640
5660
  const existingPanel = containerApi.getPanel(panelId);
5641
5661
  if (!existingPanel) {
5642
- this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: () => getPaneData() }));
5662
+ // if the panel doesn't exist
5663
+ this._onDidDrop.fire(Object.assign(Object.assign({}, event), { panel: this, getData: getPaneData }));
5643
5664
  return;
5644
5665
  }
5645
5666
  const allPanels = containerApi.panels;
@@ -5663,12 +5684,15 @@ class DraggablePaneviewPanel extends PaneviewPanel {
5663
5684
  class DefaultHeader extends CompositeDisposable {
5664
5685
  constructor() {
5665
5686
  super();
5687
+ this._expandedIcon = createExpandMoreButton();
5688
+ this._collapsedIcon = createChevronRightButton();
5666
5689
  this.disposable = new MutableDisposable();
5667
5690
  this.apiRef = { api: null };
5668
5691
  this._element = document.createElement('div');
5669
5692
  this.element.className = 'default-header';
5670
5693
  this._content = document.createElement('span');
5671
- this._expander = document.createElement('a');
5694
+ this._expander = document.createElement('div');
5695
+ this._expander.className = 'dockview-pane-header-icon';
5672
5696
  this.element.appendChild(this._expander);
5673
5697
  this.element.appendChild(this._content);
5674
5698
  this.addDisposables(addDisposableListener(this._element, 'click', () => {
@@ -5682,12 +5706,32 @@ class DefaultHeader extends CompositeDisposable {
5682
5706
  init(params) {
5683
5707
  this.apiRef.api = params.api;
5684
5708
  this._content.textContent = params.title;
5685
- this._expander.textContent = '▼';
5686
- toggleClass(this._expander, 'collapsed', !params.api.isExpanded);
5687
- this.disposable.value = params.api.onDidExpansionChange((e) => {
5688
- toggleClass(this._expander, 'collapsed', !e.isExpanded);
5709
+ this.updateIcon();
5710
+ this.disposable.value = params.api.onDidExpansionChange(() => {
5711
+ this.updateIcon();
5689
5712
  });
5690
5713
  }
5714
+ updateIcon() {
5715
+ var _a;
5716
+ const isExpanded = !!((_a = this.apiRef.api) === null || _a === void 0 ? void 0 : _a.isExpanded);
5717
+ toggleClass(this._expander, 'collapsed', !isExpanded);
5718
+ if (isExpanded) {
5719
+ if (this._expander.contains(this._collapsedIcon)) {
5720
+ this._collapsedIcon.remove();
5721
+ }
5722
+ if (!this._expander.contains(this._expandedIcon)) {
5723
+ this._expander.appendChild(this._expandedIcon);
5724
+ }
5725
+ }
5726
+ else {
5727
+ if (this._expander.contains(this._expandedIcon)) {
5728
+ this._expandedIcon.remove();
5729
+ }
5730
+ if (!this._expander.contains(this._collapsedIcon)) {
5731
+ this._expander.appendChild(this._collapsedIcon);
5732
+ }
5733
+ }
5734
+ }
5691
5735
  update(_params) {
5692
5736
  //
5693
5737
  }
@@ -5697,9 +5741,10 @@ class DefaultHeader extends CompositeDisposable {
5697
5741
  }
5698
5742
  }
5699
5743
 
5744
+ const nextLayoutId = sequentialNumberGenerator();
5700
5745
  class PaneFramework extends DraggablePaneviewPanel {
5701
5746
  constructor(options) {
5702
- super(options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5747
+ super(options.accessor, options.id, options.component, options.headerComponent, options.orientation, options.isExpanded, options.disableDnd);
5703
5748
  this.options = options;
5704
5749
  }
5705
5750
  getBodyComponent() {
@@ -5713,6 +5758,7 @@ class PaneviewComponent extends CompositeDisposable {
5713
5758
  constructor(element, options) {
5714
5759
  super();
5715
5760
  this.element = element;
5761
+ this._id = nextLayoutId.next();
5716
5762
  this._disposable = new MutableDisposable();
5717
5763
  this._viewDisposables = new Map();
5718
5764
  this._onDidLayoutfromJSON = new Emitter();
@@ -5739,6 +5785,9 @@ class PaneviewComponent extends CompositeDisposable {
5739
5785
  });
5740
5786
  this.addDisposables(this._disposable);
5741
5787
  }
5788
+ get id() {
5789
+ return this._id;
5790
+ }
5742
5791
  get panels() {
5743
5792
  return this.paneview.getPanes();
5744
5793
  }
@@ -5803,6 +5852,7 @@ class PaneviewComponent extends CompositeDisposable {
5803
5852
  orientation: exports.Orientation.VERTICAL,
5804
5853
  isExpanded: !!options.isExpanded,
5805
5854
  disableDnd: !!this.options.disableDnd,
5855
+ accessor: this,
5806
5856
  });
5807
5857
  this.doAddPanel(view);
5808
5858
  const size = typeof options.size === 'number' ? options.size : exports.Sizing.Distribute;
@@ -5897,6 +5947,7 @@ class PaneviewComponent extends CompositeDisposable {
5897
5947
  orientation: exports.Orientation.VERTICAL,
5898
5948
  isExpanded: !!view.expanded,
5899
5949
  disableDnd: !!this.options.disableDnd,
5950
+ accessor: this,
5900
5951
  });
5901
5952
  this.doAddPanel(panel);
5902
5953
  queue.push(() => {
@@ -6096,15 +6147,21 @@ class ReactPart {
6096
6147
  this.component = component;
6097
6148
  this.parameters = parameters;
6098
6149
  this.context = context;
6150
+ this._initialProps = {};
6099
6151
  this.disposed = false;
6100
6152
  this.createPortal();
6101
6153
  }
6102
6154
  update(props) {
6103
- var _a;
6104
6155
  if (this.disposed) {
6105
6156
  throw new Error('invalid operation: resource is already disposed');
6106
6157
  }
6107
- (_a = this.componentInstance) === null || _a === void 0 ? void 0 : _a.update(props);
6158
+ if (!this.componentInstance) {
6159
+ // if the component is yet to be mounted store the props
6160
+ this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);
6161
+ }
6162
+ else {
6163
+ this.componentInstance.update(props);
6164
+ }
6108
6165
  }
6109
6166
  createPortal() {
6110
6167
  if (this.disposed) {
@@ -6124,6 +6181,10 @@ class ReactPart {
6124
6181
  componentProps: this.parameters,
6125
6182
  ref: (element) => {
6126
6183
  this.componentInstance = element;
6184
+ if (Object.keys(this._initialProps).length > 0) {
6185
+ this.componentInstance.update(this._initialProps);
6186
+ this._initialProps = {}; // don't keep a reference to the users object once no longer required
6187
+ }
6127
6188
  },
6128
6189
  });
6129
6190
  const node = this.context
@@ -6180,30 +6241,19 @@ class ReactPanelContentPart {
6180
6241
  this.onDidBlur = this._onDidBlur.event;
6181
6242
  this._element = document.createElement('div');
6182
6243
  this._element.className = 'dockview-react-part';
6183
- this._actionsElement = document.createElement('div');
6184
- this._actionsElement.className = 'dockview-react-part';
6185
6244
  }
6186
6245
  get element() {
6187
6246
  return this._element;
6188
6247
  }
6189
- get actions() {
6190
- return this._actionsElement;
6191
- }
6192
6248
  focus() {
6193
6249
  // TODO
6194
6250
  }
6195
6251
  init(parameters) {
6196
- const context = {
6197
- api: parameters.api,
6198
- containerApi: parameters.containerApi,
6199
- actionsPortalElement: this._actionsElement,
6200
- tabPortalElement: parameters.tab,
6201
- };
6202
6252
  this.part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6203
6253
  params: parameters.params,
6204
6254
  api: parameters.api,
6205
6255
  containerApi: parameters.containerApi,
6206
- }, context);
6256
+ });
6207
6257
  }
6208
6258
  toJSON() {
6209
6259
  return {
@@ -6221,11 +6271,10 @@ class ReactPanelContentPart {
6221
6271
  // noop
6222
6272
  }
6223
6273
  dispose() {
6224
- var _a, _b;
6274
+ var _a;
6225
6275
  this._onDidFocus.dispose();
6226
6276
  this._onDidBlur.dispose();
6227
6277
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.dispose();
6228
- (_b = this.actionsPart) === null || _b === void 0 ? void 0 : _b.dispose();
6229
6278
  }
6230
6279
  }
6231
6280
 
@@ -6255,6 +6304,9 @@ class ReactPanelHeaderPart {
6255
6304
  (_a = this.part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6256
6305
  }
6257
6306
  toJSON() {
6307
+ if (this.id === DEFAULT_TAB_IDENTIFIER) {
6308
+ return {};
6309
+ }
6258
6310
  return {
6259
6311
  id: this.id,
6260
6312
  };
@@ -6276,17 +6328,25 @@ class ReactPanelDeserialzier {
6276
6328
  this.layout = layout;
6277
6329
  }
6278
6330
  fromJSON(panelData, group) {
6279
- var _a, _b, _c;
6331
+ var _a, _b, _c, _d;
6280
6332
  const panelId = panelData.id;
6281
6333
  const params = panelData.params;
6282
6334
  const title = panelData.title;
6283
6335
  const suppressClosable = panelData.suppressClosable;
6284
6336
  const viewData = panelData.view;
6337
+ let tab;
6338
+ if ((_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id) {
6339
+ 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());
6340
+ }
6341
+ else if (this.layout.options.defaultTabComponent) {
6342
+ 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());
6343
+ }
6344
+ else {
6345
+ tab = new DefaultTab();
6346
+ }
6285
6347
  const view = new DefaultGroupPanelView({
6286
- 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),
6287
- tab: ((_b = viewData.tab) === null || _b === void 0 ? void 0 : _b.id)
6288
- ? 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)
6289
- : new DefaultTab(),
6348
+ 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),
6349
+ tab,
6290
6350
  });
6291
6351
  const panel = new DockviewGroupPanel(panelId, this.layout, new DockviewApi(this.layout), group);
6292
6352
  panel.init({
@@ -6354,6 +6414,80 @@ class ReactWatermarkPart {
6354
6414
  }
6355
6415
  }
6356
6416
 
6417
+ class ReactGroupControlsRendererPart {
6418
+ constructor(component, reactPortalStore, _group) {
6419
+ this.component = component;
6420
+ this.reactPortalStore = reactPortalStore;
6421
+ this._group = _group;
6422
+ this.mutableDisposable = new MutableDisposable();
6423
+ this._element = document.createElement('div');
6424
+ this._element.className = 'dockview-react-part';
6425
+ }
6426
+ get element() {
6427
+ return this._element;
6428
+ }
6429
+ get part() {
6430
+ return this._part;
6431
+ }
6432
+ get group() {
6433
+ return this._group;
6434
+ }
6435
+ focus() {
6436
+ // TODO
6437
+ }
6438
+ init(parameters) {
6439
+ this.mutableDisposable.value = new CompositeDisposable(this._group.model.onDidAddPanel(() => {
6440
+ this.updatePanels();
6441
+ }), this._group.model.onDidRemovePanel(() => {
6442
+ this.updatePanels();
6443
+ }), this._group.model.onDidActivePanelChange(() => {
6444
+ this.updateActivePanel();
6445
+ }), parameters.api.onDidActiveChange(() => {
6446
+ this.updateGroupActive();
6447
+ }));
6448
+ this._part = new ReactPart(this.element, this.reactPortalStore, this.component, {
6449
+ api: parameters.api,
6450
+ containerApi: parameters.containerApi,
6451
+ panels: this._group.model.panels,
6452
+ activePanel: this._group.model.activePanel,
6453
+ isGroupActive: this._group.api.isActive,
6454
+ });
6455
+ }
6456
+ update(event) {
6457
+ var _a;
6458
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.update(event.params);
6459
+ }
6460
+ dispose() {
6461
+ var _a;
6462
+ this.mutableDisposable.dispose();
6463
+ (_a = this._part) === null || _a === void 0 ? void 0 : _a.dispose();
6464
+ }
6465
+ updatePanels() {
6466
+ this.update({ params: { panels: this._group.model.panels } });
6467
+ }
6468
+ updateActivePanel() {
6469
+ this.update({
6470
+ params: {
6471
+ activePanel: this._group.model.activePanel,
6472
+ },
6473
+ });
6474
+ }
6475
+ updateGroupActive() {
6476
+ this.update({
6477
+ params: {
6478
+ isGroupActive: this._group.api.isActive,
6479
+ },
6480
+ });
6481
+ }
6482
+ }
6483
+
6484
+ function createGroupControlElement(component, store) {
6485
+ return component
6486
+ ? (groupPanel) => {
6487
+ return new ReactGroupControlsRendererPart(component, store, groupPanel);
6488
+ }
6489
+ : undefined;
6490
+ }
6357
6491
  const DockviewReact = React__namespace.forwardRef((props, ref) => {
6358
6492
  const domRef = React__namespace.useRef(null);
6359
6493
  const dockviewRef = React__namespace.useRef();
@@ -6403,12 +6537,15 @@ const DockviewReact = React__namespace.forwardRef((props, ref) => {
6403
6537
  const dockview = new DockviewComponent(element, {
6404
6538
  frameworkComponentFactory: factory,
6405
6539
  frameworkComponents: props.components,
6406
- frameworkTabComponents: props.tabComponents,
6540
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6407
6541
  tabHeight: props.tabHeight,
6408
6542
  watermarkFrameworkComponent: props.watermarkComponent,
6543
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6409
6544
  styles: props.hideBorders
6410
6545
  ? { separatorBorder: 'transparent' }
6411
6546
  : undefined,
6547
+ showDndOverlay: props.showDndOverlay,
6548
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6412
6549
  });
6413
6550
  (_a = domRef.current) === null || _a === void 0 ? void 0 : _a.appendChild(dockview.element);
6414
6551
  dockview.deserializer = new ReactPanelDeserialzier(dockview);
@@ -6485,10 +6622,79 @@ const DockviewReact = React__namespace.forwardRef((props, ref) => {
6485
6622
  disposable.dispose();
6486
6623
  };
6487
6624
  }, [props.onTabContextMenu]);
6625
+ React__namespace.useEffect(() => {
6626
+ if (!dockviewRef.current) {
6627
+ return;
6628
+ }
6629
+ dockviewRef.current.updateOptions({
6630
+ defaultTabComponent: DEFAULT_TAB_IDENTIFIER,
6631
+ frameworkTabComponents: Object.assign(Object.assign({}, (props.tabComponents || {})), { [DEFAULT_TAB_IDENTIFIER]: props.defaultTabComponent }),
6632
+ });
6633
+ }, [props.defaultTabComponent]);
6634
+ React__namespace.useEffect(() => {
6635
+ if (!dockviewRef.current) {
6636
+ return;
6637
+ }
6638
+ dockviewRef.current.updateOptions({
6639
+ createGroupControlElement: createGroupControlElement(props.groupControlComponent, { addPortal }),
6640
+ });
6641
+ }, [props.groupControlComponent]);
6488
6642
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6489
6643
  });
6490
6644
  DockviewReact.displayName = 'DockviewComponent';
6491
6645
 
6646
+ /******************************************************************************
6647
+ Copyright (c) Microsoft Corporation.
6648
+
6649
+ Permission to use, copy, modify, and/or distribute this software for any
6650
+ purpose with or without fee is hereby granted.
6651
+
6652
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
6653
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
6654
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
6655
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
6656
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
6657
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
6658
+ PERFORMANCE OF THIS SOFTWARE.
6659
+ ***************************************************************************** */
6660
+
6661
+ function __rest(s, e) {
6662
+ var t = {};
6663
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
6664
+ t[p] = s[p];
6665
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6666
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
6667
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
6668
+ t[p[i]] = s[p[i]];
6669
+ }
6670
+ return t;
6671
+ }
6672
+
6673
+ const CloseButton = () => (React__namespace.createElement("svg", { height: "11", width: "11", viewBox: "0 0 28 28", "aria-hidden": 'false', focusable: false, className: "dockview-svg" },
6674
+ React__namespace.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" })));
6675
+
6676
+ const DockviewDefaultTab = (_a) => {
6677
+ var { api, containerApi: _containerApi, params: _params } = _a, rest = __rest(_a, ["api", "containerApi", "params"]);
6678
+ const onClose = React__namespace.useCallback((event) => {
6679
+ event.stopPropagation();
6680
+ api.close();
6681
+ }, [api]);
6682
+ const onClick = React__namespace.useCallback((event) => {
6683
+ api.setActive();
6684
+ if (rest.onClick) {
6685
+ rest.onClick(event);
6686
+ }
6687
+ }, [api, rest.onClick]);
6688
+ const iconClassname = React__namespace.useMemo(() => {
6689
+ const cn = ['dockview-react-tab-action'];
6690
+ return cn.join(',');
6691
+ }, [api.suppressClosable]);
6692
+ return (React__namespace.createElement("div", Object.assign({}, rest, { onClick: onClick, className: "dockview-react-tab" }),
6693
+ React__namespace.createElement("span", { className: "dockview-react-tab-title" }, api.title),
6694
+ React__namespace.createElement("div", { className: iconClassname, onClick: onClose },
6695
+ React__namespace.createElement(CloseButton, null))));
6696
+ };
6697
+
6492
6698
  class ReactPanelView extends SplitviewPanel {
6493
6699
  constructor(id, component, reactComponent, reactPortalStore) {
6494
6700
  super(id, component);
@@ -6718,6 +6924,7 @@ const PaneviewReact = React__namespace.forwardRef((props, ref) => {
6718
6924
  createComponent,
6719
6925
  },
6720
6926
  },
6927
+ showDndOverlay: props.showDndOverlay,
6721
6928
  });
6722
6929
  const api = new PaneviewApi(paneview);
6723
6930
  const { clientWidth, clientHeight } = domRef.current;
@@ -6762,6 +6969,14 @@ const PaneviewReact = React__namespace.forwardRef((props, ref) => {
6762
6969
  disposable.dispose();
6763
6970
  };
6764
6971
  }, [props.onDidDrop]);
6972
+ React__namespace.useEffect(() => {
6973
+ if (!paneviewRef.current) {
6974
+ return;
6975
+ }
6976
+ paneviewRef.current.updateOptions({
6977
+ showDndOverlay: props.showDndOverlay,
6978
+ });
6979
+ }, [props.showDndOverlay]);
6765
6980
  return (React__namespace.createElement("div", { className: props.className, style: { height: '100%', width: '100%' }, ref: domRef }, portals));
6766
6981
  });
6767
6982
  PaneviewReact.displayName = 'PaneviewComponent';
@@ -6770,6 +6985,7 @@ exports.BaseGrid = BaseGrid;
6770
6985
  exports.ContentContainer = ContentContainer;
6771
6986
  exports.DockviewApi = DockviewApi;
6772
6987
  exports.DockviewComponent = DockviewComponent;
6988
+ exports.DockviewDefaultTab = DockviewDefaultTab;
6773
6989
  exports.DockviewReact = DockviewReact;
6774
6990
  exports.Gridview = Gridview;
6775
6991
  exports.GridviewApi = GridviewApi;
@@ -6786,8 +7002,6 @@ exports.PaneviewApi = PaneviewApi;
6786
7002
  exports.PaneviewComponent = PaneviewComponent;
6787
7003
  exports.PaneviewPanel = PaneviewPanel;
6788
7004
  exports.PaneviewReact = PaneviewReact;
6789
- exports.ReactPanelContentPart = ReactPanelContentPart;
6790
- exports.ReactPanelHeaderPart = ReactPanelHeaderPart;
6791
7005
  exports.ReactPart = ReactPart;
6792
7006
  exports.ReactPartContext = ReactPartContext;
6793
7007
  exports.Splitview = Splitview;