dockview 0.0.28 → 1.0.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 (342) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +60 -0
  3. package/dist/cjs/actionbar/actionsContainer.d.ts +7 -7
  4. package/dist/cjs/actionbar/actionsContainer.js +26 -26
  5. package/dist/cjs/api/component.api.d.ts +131 -131
  6. package/dist/cjs/api/component.api.js +444 -444
  7. package/dist/cjs/api/gridviewPanelApi.d.ts +36 -36
  8. package/dist/cjs/api/gridviewPanelApi.js +46 -46
  9. package/dist/cjs/api/groupPanelApi.d.ts +44 -44
  10. package/dist/cjs/api/groupPanelApi.js +94 -94
  11. package/dist/cjs/api/groupPanelApi.js.map +1 -1
  12. package/dist/cjs/api/panelApi.d.ts +107 -107
  13. package/dist/cjs/api/panelApi.js +140 -140
  14. package/dist/cjs/api/paneviewPanelApi.d.ts +26 -26
  15. package/dist/cjs/api/paneviewPanelApi.js +56 -56
  16. package/dist/cjs/api/splitviewPanelApi.d.ts +33 -33
  17. package/dist/cjs/api/splitviewPanelApi.js +51 -51
  18. package/dist/cjs/array.d.ts +13 -13
  19. package/dist/cjs/array.js +77 -77
  20. package/dist/cjs/dnd/abstractDragHandler.d.ts +11 -11
  21. package/dist/cjs/dnd/abstractDragHandler.js +115 -115
  22. package/dist/cjs/dnd/dataTransfer.d.ts +56 -56
  23. package/dist/cjs/dnd/dataTransfer.js +144 -144
  24. package/dist/cjs/dnd/dataTransfer.js.map +1 -1
  25. package/dist/cjs/dnd/dnd.d.ts +40 -40
  26. package/dist/cjs/dnd/dnd.js +142 -142
  27. package/dist/cjs/dnd/droptarget.d.ts +37 -37
  28. package/dist/cjs/dnd/droptarget.js +177 -177
  29. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +44 -44
  30. package/dist/cjs/dockview/components/tab/defaultTab.js +186 -186
  31. package/dist/cjs/dockview/components/watermark/watermark.d.ts +20 -20
  32. package/dist/cjs/dockview/components/watermark/watermark.js +99 -99
  33. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +34 -34
  34. package/dist/cjs/dockview/defaultGroupPanelView.js +83 -83
  35. package/dist/cjs/dockview/deserializer.d.ts +14 -14
  36. package/dist/cjs/dockview/deserializer.js +47 -47
  37. package/dist/cjs/dockview/dockviewComponent.d.ts +121 -121
  38. package/dist/cjs/dockview/dockviewComponent.js +692 -692
  39. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  40. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +35 -35
  41. package/dist/cjs/dockview/dockviewGroupPanel.js +195 -195
  42. package/dist/cjs/dockview/options.d.ts +79 -79
  43. package/dist/cjs/dockview/options.js +2 -2
  44. package/dist/cjs/dom.d.ts +14 -14
  45. package/dist/cjs/dom.js +182 -182
  46. package/dist/cjs/events.d.ts +23 -23
  47. package/dist/cjs/events.js +87 -87
  48. package/dist/cjs/footnote.d.ts +1 -1
  49. package/dist/cjs/footnote.js +19 -19
  50. package/dist/cjs/footnote.js.map +1 -1
  51. package/dist/cjs/functions.d.ts +1 -1
  52. package/dist/cjs/functions.js +41 -41
  53. package/dist/cjs/gridview/baseComponentGridview.d.ts +98 -98
  54. package/dist/cjs/gridview/baseComponentGridview.js +292 -292
  55. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  56. package/dist/cjs/gridview/basePanelView.d.ts +46 -46
  57. package/dist/cjs/gridview/basePanelView.js +115 -115
  58. package/dist/cjs/gridview/branchNode.d.ts +46 -46
  59. package/dist/cjs/gridview/branchNode.js +342 -342
  60. package/dist/cjs/gridview/gridview.d.ts +123 -123
  61. package/dist/cjs/gridview/gridview.js +477 -477
  62. package/dist/cjs/gridview/gridviewComponent.d.ts +88 -88
  63. package/dist/cjs/gridview/gridviewComponent.js +303 -303
  64. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  65. package/dist/cjs/gridview/gridviewPanel.d.ts +62 -62
  66. package/dist/cjs/gridview/gridviewPanel.js +205 -205
  67. package/dist/cjs/gridview/leafNode.d.ts +31 -31
  68. package/dist/cjs/gridview/leafNode.js +164 -164
  69. package/dist/cjs/gridview/options.d.ts +18 -18
  70. package/dist/cjs/gridview/options.js +2 -2
  71. package/dist/cjs/gridview/types.d.ts +3 -3
  72. package/dist/cjs/gridview/types.js +2 -2
  73. package/dist/cjs/groupview/dnd.d.ts +5 -5
  74. package/dist/cjs/groupview/dnd.js +9 -9
  75. package/dist/cjs/groupview/groupPanel.d.ts +41 -41
  76. package/dist/cjs/groupview/groupPanel.js +2 -2
  77. package/dist/cjs/groupview/groupview.d.ts +154 -154
  78. package/dist/cjs/groupview/groupview.js +633 -633
  79. package/dist/cjs/groupview/groupviewPanel.d.ts +18 -18
  80. package/dist/cjs/groupview/groupviewPanel.js +83 -83
  81. package/dist/cjs/groupview/panel/content.d.ts +30 -30
  82. package/dist/cjs/groupview/panel/content.js +99 -99
  83. package/dist/cjs/groupview/panel/hostedPanel.d.ts +22 -22
  84. package/dist/cjs/groupview/panel/hostedPanel.js +56 -56
  85. package/dist/cjs/groupview/panel/hostedPanel.js.map +1 -1
  86. package/dist/cjs/groupview/tab.d.ts +44 -44
  87. package/dist/cjs/groupview/tab.js +182 -182
  88. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +66 -66
  89. package/dist/cjs/groupview/titlebar/tabsContainer.js +260 -260
  90. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  91. package/dist/cjs/groupview/types.d.ts +59 -59
  92. package/dist/cjs/groupview/types.js +2 -2
  93. package/dist/cjs/hostedContainer.d.ts +23 -23
  94. package/dist/cjs/hostedContainer.js +73 -73
  95. package/dist/cjs/hostedContainer.js.map +1 -1
  96. package/dist/cjs/index.d.ts +29 -26
  97. package/dist/cjs/index.js +38 -35
  98. package/dist/cjs/index.js.map +1 -1
  99. package/dist/cjs/json.d.ts +1 -1
  100. package/dist/cjs/json.js +13 -13
  101. package/dist/cjs/lifecycle.d.ts +22 -22
  102. package/dist/cjs/lifecycle.js +87 -87
  103. package/dist/cjs/math.d.ts +4 -4
  104. package/dist/cjs/math.js +15 -15
  105. package/dist/cjs/math.js.map +1 -1
  106. package/dist/cjs/panel/componentFactory.d.ts +8 -8
  107. package/dist/cjs/panel/componentFactory.js +30 -30
  108. package/dist/cjs/panel/componentFactory.js.map +1 -1
  109. package/dist/cjs/panel/types.d.ts +34 -34
  110. package/dist/cjs/panel/types.js +2 -2
  111. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +18 -18
  112. package/dist/cjs/paneview/defaultPaneviewHeader.js +64 -64
  113. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +17 -17
  114. package/dist/cjs/paneview/draggablePaneviewPanel.js +111 -111
  115. package/dist/cjs/paneview/options.d.ts +25 -25
  116. package/dist/cjs/paneview/options.js +2 -2
  117. package/dist/cjs/paneview/paneview.d.ts +38 -38
  118. package/dist/cjs/paneview/paneview.js +198 -198
  119. package/dist/cjs/paneview/paneviewComponent.d.ts +113 -113
  120. package/dist/cjs/paneview/paneviewComponent.js +338 -338
  121. package/dist/cjs/paneview/paneviewPanel.d.ts +85 -85
  122. package/dist/cjs/paneview/paneviewPanel.js +262 -262
  123. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  124. package/dist/cjs/react/deserializer.d.ts +8 -8
  125. package/dist/cjs/react/deserializer.js +39 -39
  126. package/dist/cjs/react/dockview/components.d.ts +11 -11
  127. package/dist/cjs/react/dockview/components.js +76 -76
  128. package/dist/cjs/react/dockview/dockview.d.ts +34 -34
  129. package/dist/cjs/react/dockview/dockview.js +135 -135
  130. package/dist/cjs/react/dockview/reactContentPart.d.ts +47 -47
  131. package/dist/cjs/react/dockview/reactContentPart.js +88 -88
  132. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +24 -24
  133. package/dist/cjs/react/dockview/reactHeaderPart.js +50 -50
  134. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +30 -30
  135. package/dist/cjs/react/dockview/reactWatermarkPart.js +66 -66
  136. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +30 -30
  137. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +90 -90
  138. package/dist/cjs/react/dockview/v2/reactGroupPanelView.d.ts +7 -7
  139. package/dist/cjs/react/dockview/v2/reactGroupPanelView.js +34 -34
  140. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +18 -18
  141. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +45 -45
  142. package/dist/cjs/react/gridview/gridview.d.ts +24 -24
  143. package/dist/cjs/react/gridview/gridview.js +96 -96
  144. package/dist/cjs/react/gridview/view.d.ts +10 -10
  145. package/dist/cjs/react/gridview/view.js +40 -40
  146. package/dist/cjs/react/index.d.ts +9 -9
  147. package/dist/cjs/react/index.js +21 -21
  148. package/dist/cjs/react/paneview/paneview.d.ts +28 -28
  149. package/dist/cjs/react/paneview/paneview.js +138 -138
  150. package/dist/cjs/react/paneview/view.d.ts +20 -20
  151. package/dist/cjs/react/paneview/view.js +44 -44
  152. package/dist/cjs/react/react.d.ts +35 -35
  153. package/dist/cjs/react/react.js +181 -181
  154. package/dist/cjs/react/react.js.map +1 -1
  155. package/dist/cjs/react/splitview/splitview.d.ts +24 -24
  156. package/dist/cjs/react/splitview/splitview.js +93 -93
  157. package/dist/cjs/react/splitview/view.d.ts +10 -10
  158. package/dist/cjs/react/splitview/view.js +40 -40
  159. package/dist/cjs/react/types.d.ts +7 -7
  160. package/dist/cjs/react/types.js +2 -2
  161. package/dist/cjs/splitview/core/options.d.ts +26 -26
  162. package/dist/cjs/splitview/core/options.js +2 -2
  163. package/dist/cjs/splitview/core/splitview.d.ts +124 -124
  164. package/dist/cjs/splitview/core/splitview.js +908 -908
  165. package/dist/cjs/splitview/core/splitview.js.map +1 -1
  166. package/dist/cjs/splitview/core/viewItem.d.ts +25 -25
  167. package/dist/cjs/splitview/core/viewItem.js +124 -124
  168. package/dist/cjs/splitview/splitviewComponent.d.ts +100 -100
  169. package/dist/cjs/splitview/splitviewComponent.js +327 -327
  170. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  171. package/dist/cjs/splitview/splitviewPanel.d.ts +47 -47
  172. package/dist/cjs/splitview/splitviewPanel.js +178 -178
  173. package/dist/cjs/types.d.ts +7 -7
  174. package/dist/cjs/types.js +2 -2
  175. package/dist/dockview.amd.js +6714 -6711
  176. package/dist/dockview.amd.min.js +3 -3
  177. package/dist/dockview.amd.min.noStyle.js +3 -3
  178. package/dist/dockview.amd.noStyle.js +6706 -6703
  179. package/dist/dockview.cjs.js +6708 -6705
  180. package/dist/dockview.esm.js +6706 -6706
  181. package/dist/dockview.esm.min.js +3 -3
  182. package/dist/dockview.js +6714 -6711
  183. package/dist/dockview.min.js +3 -3
  184. package/dist/dockview.min.noStyle.js +3 -3
  185. package/dist/dockview.noStyle.js +6706 -6703
  186. package/dist/esm/actionbar/actionsContainer.d.ts +7 -7
  187. package/dist/esm/actionbar/actionsContainer.js +17 -17
  188. package/dist/esm/api/component.api.d.ts +131 -131
  189. package/dist/esm/api/component.api.js +287 -287
  190. package/dist/esm/api/gridviewPanelApi.d.ts +36 -36
  191. package/dist/esm/api/gridviewPanelApi.js +24 -24
  192. package/dist/esm/api/groupPanelApi.d.ts +44 -44
  193. package/dist/esm/api/groupPanelApi.js +52 -52
  194. package/dist/esm/api/panelApi.d.ts +107 -107
  195. package/dist/esm/api/panelApi.js +98 -98
  196. package/dist/esm/api/paneviewPanelApi.d.ts +26 -26
  197. package/dist/esm/api/paneviewPanelApi.js +26 -26
  198. package/dist/esm/api/splitviewPanelApi.d.ts +33 -33
  199. package/dist/esm/api/splitviewPanelApi.js +29 -29
  200. package/dist/esm/array.d.ts +13 -13
  201. package/dist/esm/array.js +67 -67
  202. package/dist/esm/dnd/abstractDragHandler.d.ts +11 -11
  203. package/dist/esm/dnd/abstractDragHandler.js +37 -37
  204. package/dist/esm/dnd/dataTransfer.d.ts +56 -56
  205. package/dist/esm/dnd/dataTransfer.js +109 -109
  206. package/dist/esm/dnd/dnd.d.ts +40 -40
  207. package/dist/esm/dnd/dnd.js +109 -109
  208. package/dist/esm/dnd/droptarget.d.ts +37 -37
  209. package/dist/esm/dnd/droptarget.js +143 -143
  210. package/dist/esm/dockview/components/tab/defaultTab.d.ts +44 -44
  211. package/dist/esm/dockview/components/tab/defaultTab.js +130 -130
  212. package/dist/esm/dockview/components/watermark/watermark.d.ts +20 -20
  213. package/dist/esm/dockview/components/watermark/watermark.js +68 -68
  214. package/dist/esm/dockview/defaultGroupPanelView.d.ts +34 -34
  215. package/dist/esm/dockview/defaultGroupPanelView.js +55 -55
  216. package/dist/esm/dockview/deserializer.d.ts +14 -14
  217. package/dist/esm/dockview/deserializer.js +20 -20
  218. package/dist/esm/dockview/dockviewComponent.d.ts +121 -121
  219. package/dist/esm/dockview/dockviewComponent.js +533 -533
  220. package/dist/esm/dockview/dockviewGroupPanel.d.ts +35 -35
  221. package/dist/esm/dockview/dockviewGroupPanel.js +145 -145
  222. package/dist/esm/dockview/options.d.ts +79 -79
  223. package/dist/esm/dockview/options.js +1 -1
  224. package/dist/esm/dom.d.ts +14 -14
  225. package/dist/esm/dom.js +113 -113
  226. package/dist/esm/events.d.ts +23 -23
  227. package/dist/esm/events.js +71 -71
  228. package/dist/esm/footnote.d.ts +1 -1
  229. package/dist/esm/footnote.js +19 -19
  230. package/dist/esm/functions.d.ts +1 -1
  231. package/dist/esm/functions.js +8 -8
  232. package/dist/esm/gridview/baseComponentGridview.d.ts +98 -98
  233. package/dist/esm/gridview/baseComponentGridview.js +224 -224
  234. package/dist/esm/gridview/basePanelView.d.ts +46 -46
  235. package/dist/esm/gridview/basePanelView.js +70 -70
  236. package/dist/esm/gridview/branchNode.d.ts +46 -46
  237. package/dist/esm/gridview/branchNode.js +218 -218
  238. package/dist/esm/gridview/gridview.d.ts +123 -123
  239. package/dist/esm/gridview/gridview.js +396 -396
  240. package/dist/esm/gridview/gridviewComponent.d.ts +88 -88
  241. package/dist/esm/gridview/gridviewComponent.js +238 -238
  242. package/dist/esm/gridview/gridviewPanel.d.ts +62 -62
  243. package/dist/esm/gridview/gridviewPanel.js +141 -141
  244. package/dist/esm/gridview/leafNode.d.ts +31 -31
  245. package/dist/esm/gridview/leafNode.js +97 -97
  246. package/dist/esm/gridview/options.d.ts +18 -18
  247. package/dist/esm/gridview/options.js +1 -1
  248. package/dist/esm/gridview/types.d.ts +3 -3
  249. package/dist/esm/gridview/types.js +1 -1
  250. package/dist/esm/groupview/dnd.d.ts +5 -5
  251. package/dist/esm/groupview/dnd.js +6 -6
  252. package/dist/esm/groupview/groupPanel.d.ts +41 -41
  253. package/dist/esm/groupview/groupPanel.js +1 -1
  254. package/dist/esm/groupview/groupview.d.ts +154 -154
  255. package/dist/esm/groupview/groupview.js +448 -448
  256. package/dist/esm/groupview/groupviewPanel.d.ts +18 -18
  257. package/dist/esm/groupview/groupviewPanel.js +41 -41
  258. package/dist/esm/groupview/panel/content.d.ts +30 -30
  259. package/dist/esm/groupview/panel/content.js +72 -72
  260. package/dist/esm/groupview/panel/hostedPanel.d.ts +22 -22
  261. package/dist/esm/groupview/panel/hostedPanel.js +43 -43
  262. package/dist/esm/groupview/tab.d.ts +44 -44
  263. package/dist/esm/groupview/tab.js +101 -101
  264. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +66 -66
  265. package/dist/esm/groupview/titlebar/tabsContainer.js +185 -185
  266. package/dist/esm/groupview/types.d.ts +59 -59
  267. package/dist/esm/groupview/types.js +1 -1
  268. package/dist/esm/hostedContainer.d.ts +23 -23
  269. package/dist/esm/hostedContainer.js +63 -63
  270. package/dist/esm/index.d.ts +29 -26
  271. package/dist/esm/index.js +24 -21
  272. package/dist/esm/json.d.ts +1 -1
  273. package/dist/esm/json.js +9 -9
  274. package/dist/esm/lifecycle.d.ts +22 -22
  275. package/dist/esm/lifecycle.js +38 -38
  276. package/dist/esm/math.d.ts +4 -4
  277. package/dist/esm/math.js +10 -10
  278. package/dist/esm/panel/componentFactory.d.ts +8 -8
  279. package/dist/esm/panel/componentFactory.js +24 -24
  280. package/dist/esm/panel/types.d.ts +34 -34
  281. package/dist/esm/panel/types.js +1 -1
  282. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +18 -18
  283. package/dist/esm/paneview/defaultPaneviewHeader.js +37 -37
  284. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +17 -17
  285. package/dist/esm/paneview/draggablePaneviewPanel.js +72 -72
  286. package/dist/esm/paneview/options.d.ts +25 -25
  287. package/dist/esm/paneview/options.js +1 -1
  288. package/dist/esm/paneview/paneview.d.ts +38 -38
  289. package/dist/esm/paneview/paneview.js +144 -144
  290. package/dist/esm/paneview/paneviewComponent.d.ts +113 -113
  291. package/dist/esm/paneview/paneviewComponent.js +247 -247
  292. package/dist/esm/paneview/paneviewPanel.d.ts +85 -85
  293. package/dist/esm/paneview/paneviewPanel.js +183 -183
  294. package/dist/esm/react/deserializer.d.ts +8 -8
  295. package/dist/esm/react/deserializer.js +34 -34
  296. package/dist/esm/react/dockview/components.d.ts +11 -11
  297. package/dist/esm/react/dockview/components.js +54 -54
  298. package/dist/esm/react/dockview/dockview.d.ts +34 -34
  299. package/dist/esm/react/dockview/dockview.js +97 -97
  300. package/dist/esm/react/dockview/reactContentPart.d.ts +47 -47
  301. package/dist/esm/react/dockview/reactContentPart.js +75 -75
  302. package/dist/esm/react/dockview/reactHeaderPart.d.ts +24 -24
  303. package/dist/esm/react/dockview/reactHeaderPart.js +41 -41
  304. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +30 -30
  305. package/dist/esm/react/dockview/reactWatermarkPart.js +56 -56
  306. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +30 -30
  307. package/dist/esm/react/dockview/v2/reactContentRenderer.js +72 -72
  308. package/dist/esm/react/dockview/v2/reactGroupPanelView.d.ts +7 -7
  309. package/dist/esm/react/dockview/v2/reactGroupPanelView.js +12 -12
  310. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +18 -18
  311. package/dist/esm/react/dockview/v2/webviewContentRenderer.js +36 -36
  312. package/dist/esm/react/gridview/gridview.d.ts +24 -24
  313. package/dist/esm/react/gridview/gridview.js +58 -58
  314. package/dist/esm/react/gridview/view.d.ts +10 -10
  315. package/dist/esm/react/gridview/view.js +18 -18
  316. package/dist/esm/react/index.d.ts +9 -9
  317. package/dist/esm/react/index.js +9 -9
  318. package/dist/esm/react/paneview/paneview.d.ts +28 -28
  319. package/dist/esm/react/paneview/paneview.js +87 -87
  320. package/dist/esm/react/paneview/view.d.ts +20 -20
  321. package/dist/esm/react/paneview/view.js +35 -35
  322. package/dist/esm/react/react.d.ts +35 -35
  323. package/dist/esm/react/react.js +116 -116
  324. package/dist/esm/react/splitview/splitview.d.ts +24 -24
  325. package/dist/esm/react/splitview/splitview.js +55 -55
  326. package/dist/esm/react/splitview/view.d.ts +10 -10
  327. package/dist/esm/react/splitview/view.js +18 -18
  328. package/dist/esm/react/types.d.ts +7 -7
  329. package/dist/esm/react/types.js +1 -1
  330. package/dist/esm/splitview/core/options.d.ts +26 -26
  331. package/dist/esm/splitview/core/options.js +1 -1
  332. package/dist/esm/splitview/core/splitview.d.ts +124 -124
  333. package/dist/esm/splitview/core/splitview.js +689 -689
  334. package/dist/esm/splitview/core/viewItem.d.ts +25 -25
  335. package/dist/esm/splitview/core/viewItem.js +79 -79
  336. package/dist/esm/splitview/splitviewComponent.d.ts +100 -100
  337. package/dist/esm/splitview/splitviewComponent.js +241 -241
  338. package/dist/esm/splitview/splitviewPanel.d.ts +47 -47
  339. package/dist/esm/splitview/splitviewPanel.js +107 -107
  340. package/dist/esm/types.d.ts +7 -7
  341. package/dist/esm/types.js +1 -1
  342. package/package.json +75 -75
@@ -1,693 +1,693 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
- return new (P || (P = Promise))(function (resolve, reject) {
31
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
- step((generator = generator.apply(thisArg, _arguments || [])).next());
35
- });
36
- };
37
- var __generator = (this && this.__generator) || function (thisArg, body) {
38
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
- function verb(n) { return function (v) { return step([n, v]); }; }
41
- function step(op) {
42
- if (f) throw new TypeError("Generator is already executing.");
43
- while (_) try {
44
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
- if (y = 0, t) op = [op[0] & 2, t.value];
46
- switch (op[0]) {
47
- case 0: case 1: t = op; break;
48
- case 4: _.label++; return { value: op[1], done: false };
49
- case 5: _.label++; y = op[1]; op = [0]; continue;
50
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
- default:
52
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
- if (t[2]) _.ops.pop();
57
- _.trys.pop(); continue;
58
- }
59
- op = body.call(thisArg, _);
60
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
- }
63
- };
64
- var __values = (this && this.__values) || function(o) {
65
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
66
- if (m) return m.call(o);
67
- if (o && typeof o.length === "number") return {
68
- next: function () {
69
- if (o && i >= o.length) o = void 0;
70
- return { value: o && o[i++], done: !o };
71
- }
72
- };
73
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
74
- };
75
- var __read = (this && this.__read) || function (o, n) {
76
- var m = typeof Symbol === "function" && o[Symbol.iterator];
77
- if (!m) return o;
78
- var i = m.call(o), r, ar = [], e;
79
- try {
80
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
81
- }
82
- catch (error) { e = { error: error }; }
83
- finally {
84
- try {
85
- if (r && !r.done && (m = i["return"])) m.call(i);
86
- }
87
- finally { if (e) throw e.error; }
88
- }
89
- return ar;
90
- };
91
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
92
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
93
- if (ar || !(i in from)) {
94
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
95
- ar[i] = from[i];
96
- }
97
- }
98
- return to.concat(ar || Array.prototype.slice.call(from));
99
- };
100
- Object.defineProperty(exports, "__esModule", { value: true });
101
- exports.DockviewComponent = void 0;
102
- var gridview_1 = require("../gridview/gridview");
103
- var droptarget_1 = require("../dnd/droptarget");
104
- var array_1 = require("../array");
105
- var dockviewGroupPanel_1 = require("./dockviewGroupPanel");
106
- var lifecycle_1 = require("../lifecycle");
107
- var events_1 = require("../events");
108
- var watermark_1 = require("./components/watermark/watermark");
109
- var functions_1 = require("../functions");
110
- var math_1 = require("../math");
111
- var deserializer_1 = require("./deserializer");
112
- var componentFactory_1 = require("../panel/componentFactory");
113
- var baseComponentGridview_1 = require("../gridview/baseComponentGridview");
114
- var component_api_1 = require("../api/component.api");
115
- var tab_1 = require("../groupview/tab");
116
- var splitview_1 = require("../splitview/core/splitview");
117
- var defaultTab_1 = require("./components/tab/defaultTab");
118
- var groupview_1 = require("../groupview/groupview");
119
- var groupviewPanel_1 = require("../groupview/groupviewPanel");
120
- var defaultGroupPanelView_1 = require("./defaultGroupPanelView");
121
- var nextGroupId = (0, math_1.sequentialNumberGenerator)();
122
- var DockviewComponent = /** @class */ (function (_super) {
123
- __extends(DockviewComponent, _super);
124
- function DockviewComponent(element, options) {
125
- var _this = _super.call(this, element, {
126
- proportionalLayout: true,
127
- orientation: options.orientation || splitview_1.Orientation.HORIZONTAL,
128
- styles: options.styles,
129
- }) || this;
130
- _this._panels = new Map();
131
- _this.dirtyPanels = new Set();
132
- _this.debouncedDeque = (0, functions_1.debounce)(_this.syncConfigs.bind(_this), 5000);
133
- // events
134
- _this._onTabInteractionEvent = new events_1.Emitter();
135
- _this.onTabInteractionEvent = _this._onTabInteractionEvent.event;
136
- _this._onTabContextMenu = new events_1.Emitter();
137
- _this.onTabContextMenu = _this._onTabContextMenu.event;
138
- _this.panelState = {};
139
- _this._options = options;
140
- if (!_this.options.components) {
141
- _this.options.components = {};
142
- }
143
- if (!_this.options.frameworkComponents) {
144
- _this.options.frameworkComponents = {};
145
- }
146
- if (!_this.options.frameworkTabComponents) {
147
- _this.options.frameworkTabComponents = {};
148
- }
149
- if (!_this.options.tabComponents) {
150
- _this.options.tabComponents = {};
151
- }
152
- if (!_this.options.watermarkComponent &&
153
- !_this.options.watermarkFrameworkComponent) {
154
- _this.options.watermarkComponent = watermark_1.Watermark;
155
- }
156
- _this._api = new component_api_1.DockviewApi(_this);
157
- return _this;
158
- }
159
- Object.defineProperty(DockviewComponent.prototype, "totalPanels", {
160
- get: function () {
161
- return this._panels.size;
162
- },
163
- enumerable: false,
164
- configurable: true
165
- });
166
- Object.defineProperty(DockviewComponent.prototype, "panels", {
167
- get: function () {
168
- return Array.from(this._panels.values()).map(function (_) { return _.value; });
169
- },
170
- enumerable: false,
171
- configurable: true
172
- });
173
- Object.defineProperty(DockviewComponent.prototype, "deserializer", {
174
- get: function () {
175
- return this._deserializer;
176
- },
177
- set: function (value) {
178
- this._deserializer = value;
179
- },
180
- enumerable: false,
181
- configurable: true
182
- });
183
- Object.defineProperty(DockviewComponent.prototype, "options", {
184
- get: function () {
185
- return this._options;
186
- },
187
- enumerable: false,
188
- configurable: true
189
- });
190
- Object.defineProperty(DockviewComponent.prototype, "activePanel", {
191
- get: function () {
192
- var activeGroup = this.activeGroup;
193
- if (!activeGroup) {
194
- return undefined;
195
- }
196
- return activeGroup.model.activePanel;
197
- },
198
- enumerable: false,
199
- configurable: true
200
- });
201
- Object.defineProperty(DockviewComponent.prototype, "tabHeight", {
202
- get: function () {
203
- return this.options.tabHeight;
204
- },
205
- set: function (height) {
206
- this.options.tabHeight = height;
207
- this._groups.forEach(function (value) {
208
- value.value.model.tabHeight = height;
209
- });
210
- },
211
- enumerable: false,
212
- configurable: true
213
- });
214
- DockviewComponent.prototype.updateOptions = function (options) {
215
- var hasOrientationChanged = typeof options.orientation === 'string' &&
216
- this.options.orientation !== options.orientation;
217
- // TODO support style update
218
- // const hasStylesChanged =
219
- // typeof options.styles === 'object' &&
220
- // this.options.styles !== options.styles;
221
- this._options = __assign(__assign({}, this.options), options);
222
- if (hasOrientationChanged) {
223
- this.gridview.orientation = options.orientation;
224
- }
225
- this.layout(this.gridview.width, this.gridview.height, true);
226
- };
227
- DockviewComponent.prototype.focus = function () {
228
- var _a;
229
- (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
230
- };
231
- DockviewComponent.prototype.getGroupPanel = function (id) {
232
- var _a;
233
- return (_a = this._panels.get(id)) === null || _a === void 0 ? void 0 : _a.value;
234
- };
235
- DockviewComponent.prototype.setActivePanel = function (panel) {
236
- if (!panel.group) {
237
- throw new Error("Panel " + panel.id + " has no associated group");
238
- }
239
- this.doSetGroupActive(panel.group);
240
- panel.group.model.openPanel(panel);
241
- };
242
- DockviewComponent.prototype.moveToNext = function (options) {
243
- var _a;
244
- if (options === void 0) { options = {}; }
245
- if (!options.group) {
246
- if (!this.activeGroup) {
247
- return;
248
- }
249
- options.group = this.activeGroup;
250
- }
251
- if (options.includePanel && options.group) {
252
- if (options.group.model.activePanel !==
253
- options.group.model.panels[options.group.model.panels.length - 1]) {
254
- options.group.model.moveToNext({ suppressRoll: true });
255
- return;
256
- }
257
- }
258
- var location = (0, gridview_1.getGridLocation)(options.group.element);
259
- var next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
260
- this.doSetGroupActive(next);
261
- };
262
- DockviewComponent.prototype.moveToPrevious = function (options) {
263
- var _a;
264
- if (options === void 0) { options = {}; }
265
- if (!options.group) {
266
- if (!this.activeGroup) {
267
- return;
268
- }
269
- options.group = this.activeGroup;
270
- }
271
- if (options.includePanel && options.group) {
272
- if (options.group.model.activePanel !==
273
- options.group.model.panels[0]) {
274
- options.group.model.moveToPrevious({ suppressRoll: true });
275
- return;
276
- }
277
- }
278
- var location = (0, gridview_1.getGridLocation)(options.group.element);
279
- var next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
280
- if (next) {
281
- this.doSetGroupActive(next);
282
- }
283
- };
284
- DockviewComponent.prototype.registerPanel = function (panel) {
285
- var _this = this;
286
- if (this._panels.has(panel.id)) {
287
- throw new Error("panel " + panel.id + " already exists");
288
- }
289
- var disposable = new lifecycle_1.CompositeDisposable(panel.onDidStateChange(function () { return _this.addDirtyPanel(panel); }));
290
- this._panels.set(panel.id, { value: panel, disposable: disposable });
291
- };
292
- DockviewComponent.prototype.unregisterPanel = function (panel) {
293
- if (!this._panels.has(panel.id)) {
294
- throw new Error("panel " + panel.id + " doesn't exist");
295
- }
296
- var item = this._panels.get(panel.id);
297
- if (item) {
298
- item.disposable.dispose();
299
- item.value.dispose();
300
- }
301
- this._panels.delete(panel.id);
302
- };
303
- /**
304
- * Serialize the current state of the layout
305
- *
306
- * @returns A JSON respresentation of the layout
307
- */
308
- DockviewComponent.prototype.toJSON = function () {
309
- var _this = this;
310
- var _a;
311
- this.syncConfigs();
312
- var data = this.gridview.serialize();
313
- var panels = Array.from(this._panels.values()).reduce(function (collection, panel) {
314
- if (!_this.panelState[panel.value.id]) {
315
- collection[panel.value.id] = panel.value.toJSON();
316
- }
317
- return collection;
318
- }, {});
319
- return {
320
- grid: data,
321
- panels: panels,
322
- activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
323
- options: { tabHeight: this.tabHeight },
324
- };
325
- };
326
- DockviewComponent.prototype.fromJSON = function (data) {
327
- var _this = this;
328
- this.gridview.clear();
329
- this._panels.forEach(function (panel) {
330
- panel.disposable.dispose();
331
- panel.value.dispose();
332
- });
333
- this._panels.clear();
334
- this._groups.clear();
335
- if (!this.deserializer) {
336
- throw new Error('invalid deserializer');
337
- }
338
- var grid = data.grid, panels = data.panels, options = data.options, activeGroup = data.activeGroup;
339
- if (typeof (options === null || options === void 0 ? void 0 : options.tabHeight) === 'number') {
340
- this.tabHeight = options.tabHeight;
341
- }
342
- if (!this.deserializer) {
343
- throw new Error('no deserializer provided');
344
- }
345
- this.gridview.deserialize(grid, new deserializer_1.DefaultDeserializer(this, {
346
- createPanel: function (id) {
347
- var panelData = panels[id];
348
- var panel = _this.deserializer.fromJSON(panelData);
349
- _this.registerPanel(panel);
350
- return panel;
351
- },
352
- }));
353
- if (typeof activeGroup === 'string') {
354
- var panel = this.getPanel(activeGroup);
355
- if (panel) {
356
- this.doSetGroupActive(panel);
357
- }
358
- }
359
- this.gridview.layout(this.width, this.height);
360
- this._onGridEvent.fire({ kind: baseComponentGridview_1.GroupChangeKind.LAYOUT_FROM_JSON });
361
- };
362
- DockviewComponent.prototype.closeAllGroups = function () {
363
- return __awaiter(this, void 0, void 0, function () {
364
- var _a, _b, entry, _c, _, group, didCloseAll, e_1_1;
365
- var e_1, _d;
366
- return __generator(this, function (_e) {
367
- switch (_e.label) {
368
- case 0:
369
- _e.trys.push([0, 5, 6, 7]);
370
- _a = __values(this._groups.entries()), _b = _a.next();
371
- _e.label = 1;
372
- case 1:
373
- if (!!_b.done) return [3 /*break*/, 4];
374
- entry = _b.value;
375
- _c = __read(entry, 2), _ = _c[0], group = _c[1];
376
- return [4 /*yield*/, group.value.model.closeAllPanels()];
377
- case 2:
378
- didCloseAll = _e.sent();
379
- if (!didCloseAll) {
380
- return [2 /*return*/, false];
381
- }
382
- _e.label = 3;
383
- case 3:
384
- _b = _a.next();
385
- return [3 /*break*/, 1];
386
- case 4: return [3 /*break*/, 7];
387
- case 5:
388
- e_1_1 = _e.sent();
389
- e_1 = { error: e_1_1 };
390
- return [3 /*break*/, 7];
391
- case 6:
392
- try {
393
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
394
- }
395
- finally { if (e_1) throw e_1.error; }
396
- return [7 /*endfinally*/];
397
- case 7: return [2 /*return*/, true];
398
- }
399
- });
400
- });
401
- };
402
- DockviewComponent.prototype.fireMouseEvent = function (event) {
403
- switch (event.kind) {
404
- case tab_1.MouseEventKind.CONTEXT_MENU:
405
- if (event.tab && event.panel) {
406
- this._onTabContextMenu.fire({
407
- event: event.event,
408
- api: this._api,
409
- panel: event.panel,
410
- });
411
- }
412
- break;
413
- }
414
- };
415
- DockviewComponent.prototype.addPanel = function (options) {
416
- var _a, _b;
417
- var panel = this._addPanel(options);
418
- var referenceGroup;
419
- if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
420
- var referencePanel = this.getGroupPanel(options.position.referencePanel);
421
- if (!referencePanel) {
422
- throw new Error("referencePanel " + options.position.referencePanel + " does not exist");
423
- }
424
- referenceGroup = this.findGroup(referencePanel);
425
- }
426
- else {
427
- referenceGroup = this.activeGroup;
428
- }
429
- if (referenceGroup) {
430
- var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
431
- if (target === droptarget_1.Position.Center) {
432
- referenceGroup.model.openPanel(panel);
433
- }
434
- else {
435
- var location_1 = (0, gridview_1.getGridLocation)(referenceGroup.element);
436
- var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_1, target);
437
- this.addPanelToNewGroup(panel, relativeLocation);
438
- }
439
- }
440
- else {
441
- this.addPanelToNewGroup(panel);
442
- }
443
- return panel;
444
- };
445
- DockviewComponent.prototype.removePanel = function (panel) {
446
- this.unregisterPanel(panel);
447
- var group = panel.group;
448
- if (!group) {
449
- throw new Error("cannot remove panel " + panel.id + ". it's missing a group.");
450
- }
451
- group.model.removePanel(panel);
452
- if (group.model.size === 0) {
453
- this.removeGroup(group);
454
- }
455
- };
456
- DockviewComponent.prototype.createWatermarkComponent = function () {
457
- var _a;
458
- return (0, componentFactory_1.createComponent)('watermark-id', 'watermark-name', this.options.watermarkComponent
459
- ? { 'watermark-name': this.options.watermarkComponent }
460
- : {}, this.options.watermarkFrameworkComponent
461
- ? { 'watermark-name': this.options.watermarkFrameworkComponent }
462
- : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
463
- };
464
- DockviewComponent.prototype.addEmptyGroup = function (options) {
465
- var _a;
466
- var group = this.createGroup();
467
- if (options) {
468
- var referencePanel = (_a = this._panels.get(options.referencePanel)) === null || _a === void 0 ? void 0 : _a.value;
469
- if (!referencePanel) {
470
- throw new Error("reference panel " + options.referencePanel + " does not exist");
471
- }
472
- var referenceGroup = this.findGroup(referencePanel);
473
- if (!referenceGroup) {
474
- throw new Error("reference group for reference panel " + options.referencePanel + " does not exist");
475
- }
476
- var target = (0, baseComponentGridview_1.toTarget)(options.direction || 'within');
477
- var location_2 = (0, gridview_1.getGridLocation)(referenceGroup.element);
478
- var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_2, target);
479
- this.doAddGroup(group, relativeLocation);
480
- }
481
- else {
482
- this.doAddGroup(group);
483
- }
484
- };
485
- DockviewComponent.prototype.removeGroup = function (group) {
486
- var _this = this;
487
- var panels = __spreadArray([], __read(group.model.panels), false); // reassign since group panels will mutate
488
- panels.forEach(function (panel) {
489
- _this.removePanel(panel);
490
- });
491
- if (this._groups.size === 1) {
492
- this._activeGroup = group;
493
- return;
494
- }
495
- _super.prototype.removeGroup.call(this, group);
496
- };
497
- DockviewComponent.prototype.moveGroupOrPanel = function (referenceGroup, groupId, itemId, target, index) {
498
- var _a, _b, _c;
499
- var sourceGroup = groupId
500
- ? (_a = this._groups.get(groupId)) === null || _a === void 0 ? void 0 : _a.value
501
- : undefined;
502
- if (!target || target === droptarget_1.Position.Center) {
503
- var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
504
- ((_b = this._panels.get(itemId)) === null || _b === void 0 ? void 0 : _b.value);
505
- if (!groupItem) {
506
- throw new Error("No panel with id " + itemId);
507
- }
508
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
509
- this.doRemoveGroup(sourceGroup);
510
- }
511
- referenceGroup.model.openPanel(groupItem, { index: index });
512
- }
513
- else {
514
- var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
515
- var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
516
- if (sourceGroup && sourceGroup.model.size < 2) {
517
- var _d = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _d[0], to = _d[1];
518
- var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
519
- var _e = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _e[0], from = _e[1];
520
- if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
521
- // special case when 'swapping' two views within same grid location
522
- // if a group has one tab - we are essentially moving the 'group'
523
- // which is equivalent to swapping two views in this case
524
- this.gridview.moveView(sourceParentLocation, from, to);
525
- }
526
- else {
527
- // source group will become empty so delete the group
528
- var targetGroup = this.doRemoveGroup(sourceGroup, {
529
- skipActive: true,
530
- skipDispose: true,
531
- });
532
- // after deleting the group we need to re-evaulate the ref location
533
- var updatedReferenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
534
- var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, target);
535
- this.doAddGroup(targetGroup, location_3);
536
- }
537
- }
538
- else {
539
- var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
540
- ((_c = this._panels.get(itemId)) === null || _c === void 0 ? void 0 : _c.value);
541
- if (!groupItem) {
542
- throw new Error("No panel with id " + itemId);
543
- }
544
- var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
545
- this.addPanelToNewGroup(groupItem, dropLocation);
546
- }
547
- }
548
- };
549
- DockviewComponent.prototype.doSetGroupActive = function (group, skipFocus) {
550
- var _a, _b;
551
- var isGroupAlreadyFocused = this._activeGroup === group;
552
- _super.prototype.doSetGroupActive.call(this, group, skipFocus);
553
- if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.model.activePanel)) {
554
- this._onGridEvent.fire({
555
- kind: baseComponentGridview_1.GroupChangeKind.PANEL_ACTIVE,
556
- panel: (_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel,
557
- });
558
- }
559
- };
560
- DockviewComponent.prototype.createGroup = function (options) {
561
- var _this = this;
562
- if (!options) {
563
- options = { tabHeight: this.tabHeight };
564
- }
565
- if (typeof options.tabHeight !== 'number') {
566
- options.tabHeight = this.tabHeight;
567
- }
568
- var id = options === null || options === void 0 ? void 0 : options.id;
569
- if (id && this._groups.has(options.id)) {
570
- console.warn("Duplicate group id " + (options === null || options === void 0 ? void 0 : options.id) + ". reassigning group id to avoid errors");
571
- id = undefined;
572
- }
573
- if (!id) {
574
- id = nextGroupId.next();
575
- while (this._groups.has(id)) {
576
- id = nextGroupId.next();
577
- }
578
- }
579
- var view = new groupviewPanel_1.GroupviewPanel(this, id, options);
580
- if (!this._groups.has(view.id)) {
581
- var disposable = new lifecycle_1.CompositeDisposable(view.model.onMove(function (event) {
582
- var groupId = event.groupId, itemId = event.itemId, target = event.target, index = event.index;
583
- _this.moveGroupOrPanel(view, groupId, itemId, target, index);
584
- }), view.model.onDidGroupChange(function (event) {
585
- switch (event.kind) {
586
- case groupview_1.GroupChangeKind2.ADD_PANEL:
587
- _this._onGridEvent.fire({
588
- kind: baseComponentGridview_1.GroupChangeKind.ADD_PANEL,
589
- panel: event.panel,
590
- });
591
- break;
592
- case groupview_1.GroupChangeKind2.GROUP_ACTIVE:
593
- _this._onGridEvent.fire({
594
- kind: baseComponentGridview_1.GroupChangeKind.GROUP_ACTIVE,
595
- panel: event.panel,
596
- });
597
- break;
598
- case groupview_1.GroupChangeKind2.REMOVE_PANEL:
599
- _this._onGridEvent.fire({
600
- kind: baseComponentGridview_1.GroupChangeKind.REMOVE_PANEL,
601
- panel: event.panel,
602
- });
603
- break;
604
- case groupview_1.GroupChangeKind2.PANEL_ACTIVE:
605
- _this._onGridEvent.fire({
606
- kind: baseComponentGridview_1.GroupChangeKind.PANEL_ACTIVE,
607
- panel: event.panel,
608
- });
609
- break;
610
- }
611
- }));
612
- this._groups.set(view.id, { value: view, disposable: disposable });
613
- }
614
- // TODO: must be called after the above listeners have been setup,
615
- // not an ideal pattern
616
- view.initialize();
617
- if (typeof this.options.tabHeight === 'number') {
618
- view.model.tabHeight = this.options.tabHeight;
619
- }
620
- return view;
621
- };
622
- DockviewComponent.prototype.dispose = function () {
623
- _super.prototype.dispose.call(this);
624
- this._onGridEvent.dispose();
625
- };
626
- /**
627
- * Ensure the local copy of the layout state is up-to-date
628
- */
629
- DockviewComponent.prototype.syncConfigs = function () {
630
- var _this = this;
631
- var dirtyPanels = Array.from(this.dirtyPanels);
632
- if (dirtyPanels.length === 0) {
633
- //
634
- }
635
- this.dirtyPanels.clear();
636
- var partialPanelState = dirtyPanels
637
- .map(function (panel) { return _this._panels.get(panel.id); })
638
- .filter(function (_) { return !!_; })
639
- .reduce(function (collection, panel) {
640
- collection[panel.value.id] = panel.value.toJSON();
641
- return collection;
642
- }, {});
643
- this.panelState = __assign(__assign({}, this.panelState), partialPanelState);
644
- dirtyPanels
645
- .filter(function (p) { return _this._panels.has(p.id); })
646
- .forEach(function (panel) {
647
- panel.setDirty(false);
648
- });
649
- };
650
- DockviewComponent.prototype._addPanel = function (options) {
651
- var view = new defaultGroupPanelView_1.DefaultGroupPanelView({
652
- content: this.createContentComponent(options.id, options.component),
653
- tab: this.createTabComponent(options.id, options.tabComponent),
654
- });
655
- var panel = new dockviewGroupPanel_1.DockviewGroupPanel(options.id, this._api);
656
- panel.init({
657
- view: view,
658
- title: options.title || options.id,
659
- suppressClosable: options === null || options === void 0 ? void 0 : options.suppressClosable,
660
- params: (options === null || options === void 0 ? void 0 : options.params) || {},
661
- });
662
- this.registerPanel(panel);
663
- return panel;
664
- };
665
- DockviewComponent.prototype.createContentComponent = function (id, componentName) {
666
- var _a;
667
- return (0, componentFactory_1.createComponent)(id, componentName, this.options.components || {}, this.options.frameworkComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);
668
- };
669
- DockviewComponent.prototype.createTabComponent = function (id, componentName) {
670
- var _a;
671
- return (0, componentFactory_1.createComponent)(id, componentName, this.options.tabComponents || {}, this.options.frameworkTabComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, function () { return new defaultTab_1.DefaultTab(); });
672
- };
673
- DockviewComponent.prototype.addPanelToNewGroup = function (panel, location) {
674
- if (location === void 0) { location = [0]; }
675
- var group = this.createGroup();
676
- this.doAddGroup(group, location);
677
- group.model.openPanel(panel);
678
- };
679
- DockviewComponent.prototype.findGroup = function (panel) {
680
- var _a;
681
- return (_a = Array.from(this._groups.values()).find(function (group) {
682
- return group.value.model.containsPanel(panel);
683
- })) === null || _a === void 0 ? void 0 : _a.value;
684
- };
685
- DockviewComponent.prototype.addDirtyPanel = function (panel) {
686
- this.dirtyPanels.add(panel);
687
- panel.setDirty(true);
688
- this.debouncedDeque();
689
- };
690
- return DockviewComponent;
691
- }(baseComponentGridview_1.BaseGrid));
692
- exports.DockviewComponent = DockviewComponent;
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
64
+ var __values = (this && this.__values) || function(o) {
65
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
66
+ if (m) return m.call(o);
67
+ if (o && typeof o.length === "number") return {
68
+ next: function () {
69
+ if (o && i >= o.length) o = void 0;
70
+ return { value: o && o[i++], done: !o };
71
+ }
72
+ };
73
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
74
+ };
75
+ var __read = (this && this.__read) || function (o, n) {
76
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
77
+ if (!m) return o;
78
+ var i = m.call(o), r, ar = [], e;
79
+ try {
80
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
81
+ }
82
+ catch (error) { e = { error: error }; }
83
+ finally {
84
+ try {
85
+ if (r && !r.done && (m = i["return"])) m.call(i);
86
+ }
87
+ finally { if (e) throw e.error; }
88
+ }
89
+ return ar;
90
+ };
91
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
92
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
93
+ if (ar || !(i in from)) {
94
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
95
+ ar[i] = from[i];
96
+ }
97
+ }
98
+ return to.concat(ar || Array.prototype.slice.call(from));
99
+ };
100
+ Object.defineProperty(exports, "__esModule", { value: true });
101
+ exports.DockviewComponent = void 0;
102
+ var gridview_1 = require("../gridview/gridview");
103
+ var droptarget_1 = require("../dnd/droptarget");
104
+ var array_1 = require("../array");
105
+ var dockviewGroupPanel_1 = require("./dockviewGroupPanel");
106
+ var lifecycle_1 = require("../lifecycle");
107
+ var events_1 = require("../events");
108
+ var watermark_1 = require("./components/watermark/watermark");
109
+ var functions_1 = require("../functions");
110
+ var math_1 = require("../math");
111
+ var deserializer_1 = require("./deserializer");
112
+ var componentFactory_1 = require("../panel/componentFactory");
113
+ var baseComponentGridview_1 = require("../gridview/baseComponentGridview");
114
+ var component_api_1 = require("../api/component.api");
115
+ var tab_1 = require("../groupview/tab");
116
+ var splitview_1 = require("../splitview/core/splitview");
117
+ var defaultTab_1 = require("./components/tab/defaultTab");
118
+ var groupview_1 = require("../groupview/groupview");
119
+ var groupviewPanel_1 = require("../groupview/groupviewPanel");
120
+ var defaultGroupPanelView_1 = require("./defaultGroupPanelView");
121
+ var nextGroupId = (0, math_1.sequentialNumberGenerator)();
122
+ var DockviewComponent = /** @class */ (function (_super) {
123
+ __extends(DockviewComponent, _super);
124
+ function DockviewComponent(element, options) {
125
+ var _this = _super.call(this, element, {
126
+ proportionalLayout: true,
127
+ orientation: options.orientation || splitview_1.Orientation.HORIZONTAL,
128
+ styles: options.styles,
129
+ }) || this;
130
+ _this._panels = new Map();
131
+ _this.dirtyPanels = new Set();
132
+ _this.debouncedDeque = (0, functions_1.debounce)(_this.syncConfigs.bind(_this), 5000);
133
+ // events
134
+ _this._onTabInteractionEvent = new events_1.Emitter();
135
+ _this.onTabInteractionEvent = _this._onTabInteractionEvent.event;
136
+ _this._onTabContextMenu = new events_1.Emitter();
137
+ _this.onTabContextMenu = _this._onTabContextMenu.event;
138
+ _this.panelState = {};
139
+ _this._options = options;
140
+ if (!_this.options.components) {
141
+ _this.options.components = {};
142
+ }
143
+ if (!_this.options.frameworkComponents) {
144
+ _this.options.frameworkComponents = {};
145
+ }
146
+ if (!_this.options.frameworkTabComponents) {
147
+ _this.options.frameworkTabComponents = {};
148
+ }
149
+ if (!_this.options.tabComponents) {
150
+ _this.options.tabComponents = {};
151
+ }
152
+ if (!_this.options.watermarkComponent &&
153
+ !_this.options.watermarkFrameworkComponent) {
154
+ _this.options.watermarkComponent = watermark_1.Watermark;
155
+ }
156
+ _this._api = new component_api_1.DockviewApi(_this);
157
+ return _this;
158
+ }
159
+ Object.defineProperty(DockviewComponent.prototype, "totalPanels", {
160
+ get: function () {
161
+ return this._panels.size;
162
+ },
163
+ enumerable: false,
164
+ configurable: true
165
+ });
166
+ Object.defineProperty(DockviewComponent.prototype, "panels", {
167
+ get: function () {
168
+ return Array.from(this._panels.values()).map(function (_) { return _.value; });
169
+ },
170
+ enumerable: false,
171
+ configurable: true
172
+ });
173
+ Object.defineProperty(DockviewComponent.prototype, "deserializer", {
174
+ get: function () {
175
+ return this._deserializer;
176
+ },
177
+ set: function (value) {
178
+ this._deserializer = value;
179
+ },
180
+ enumerable: false,
181
+ configurable: true
182
+ });
183
+ Object.defineProperty(DockviewComponent.prototype, "options", {
184
+ get: function () {
185
+ return this._options;
186
+ },
187
+ enumerable: false,
188
+ configurable: true
189
+ });
190
+ Object.defineProperty(DockviewComponent.prototype, "activePanel", {
191
+ get: function () {
192
+ var activeGroup = this.activeGroup;
193
+ if (!activeGroup) {
194
+ return undefined;
195
+ }
196
+ return activeGroup.model.activePanel;
197
+ },
198
+ enumerable: false,
199
+ configurable: true
200
+ });
201
+ Object.defineProperty(DockviewComponent.prototype, "tabHeight", {
202
+ get: function () {
203
+ return this.options.tabHeight;
204
+ },
205
+ set: function (height) {
206
+ this.options.tabHeight = height;
207
+ this._groups.forEach(function (value) {
208
+ value.value.model.tabHeight = height;
209
+ });
210
+ },
211
+ enumerable: false,
212
+ configurable: true
213
+ });
214
+ DockviewComponent.prototype.updateOptions = function (options) {
215
+ var hasOrientationChanged = typeof options.orientation === 'string' &&
216
+ this.options.orientation !== options.orientation;
217
+ // TODO support style update
218
+ // const hasStylesChanged =
219
+ // typeof options.styles === 'object' &&
220
+ // this.options.styles !== options.styles;
221
+ this._options = __assign(__assign({}, this.options), options);
222
+ if (hasOrientationChanged) {
223
+ this.gridview.orientation = options.orientation;
224
+ }
225
+ this.layout(this.gridview.width, this.gridview.height, true);
226
+ };
227
+ DockviewComponent.prototype.focus = function () {
228
+ var _a;
229
+ (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
230
+ };
231
+ DockviewComponent.prototype.getGroupPanel = function (id) {
232
+ var _a;
233
+ return (_a = this._panels.get(id)) === null || _a === void 0 ? void 0 : _a.value;
234
+ };
235
+ DockviewComponent.prototype.setActivePanel = function (panel) {
236
+ if (!panel.group) {
237
+ throw new Error("Panel ".concat(panel.id, " has no associated group"));
238
+ }
239
+ this.doSetGroupActive(panel.group);
240
+ panel.group.model.openPanel(panel);
241
+ };
242
+ DockviewComponent.prototype.moveToNext = function (options) {
243
+ var _a;
244
+ if (options === void 0) { options = {}; }
245
+ if (!options.group) {
246
+ if (!this.activeGroup) {
247
+ return;
248
+ }
249
+ options.group = this.activeGroup;
250
+ }
251
+ if (options.includePanel && options.group) {
252
+ if (options.group.model.activePanel !==
253
+ options.group.model.panels[options.group.model.panels.length - 1]) {
254
+ options.group.model.moveToNext({ suppressRoll: true });
255
+ return;
256
+ }
257
+ }
258
+ var location = (0, gridview_1.getGridLocation)(options.group.element);
259
+ var next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
260
+ this.doSetGroupActive(next);
261
+ };
262
+ DockviewComponent.prototype.moveToPrevious = function (options) {
263
+ var _a;
264
+ if (options === void 0) { options = {}; }
265
+ if (!options.group) {
266
+ if (!this.activeGroup) {
267
+ return;
268
+ }
269
+ options.group = this.activeGroup;
270
+ }
271
+ if (options.includePanel && options.group) {
272
+ if (options.group.model.activePanel !==
273
+ options.group.model.panels[0]) {
274
+ options.group.model.moveToPrevious({ suppressRoll: true });
275
+ return;
276
+ }
277
+ }
278
+ var location = (0, gridview_1.getGridLocation)(options.group.element);
279
+ var next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
280
+ if (next) {
281
+ this.doSetGroupActive(next);
282
+ }
283
+ };
284
+ DockviewComponent.prototype.registerPanel = function (panel) {
285
+ var _this = this;
286
+ if (this._panels.has(panel.id)) {
287
+ throw new Error("panel ".concat(panel.id, " already exists"));
288
+ }
289
+ var disposable = new lifecycle_1.CompositeDisposable(panel.onDidStateChange(function () { return _this.addDirtyPanel(panel); }));
290
+ this._panels.set(panel.id, { value: panel, disposable: disposable });
291
+ };
292
+ DockviewComponent.prototype.unregisterPanel = function (panel) {
293
+ if (!this._panels.has(panel.id)) {
294
+ throw new Error("panel ".concat(panel.id, " doesn't exist"));
295
+ }
296
+ var item = this._panels.get(panel.id);
297
+ if (item) {
298
+ item.disposable.dispose();
299
+ item.value.dispose();
300
+ }
301
+ this._panels.delete(panel.id);
302
+ };
303
+ /**
304
+ * Serialize the current state of the layout
305
+ *
306
+ * @returns A JSON respresentation of the layout
307
+ */
308
+ DockviewComponent.prototype.toJSON = function () {
309
+ var _this = this;
310
+ var _a;
311
+ this.syncConfigs();
312
+ var data = this.gridview.serialize();
313
+ var panels = Array.from(this._panels.values()).reduce(function (collection, panel) {
314
+ if (!_this.panelState[panel.value.id]) {
315
+ collection[panel.value.id] = panel.value.toJSON();
316
+ }
317
+ return collection;
318
+ }, {});
319
+ return {
320
+ grid: data,
321
+ panels: panels,
322
+ activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
323
+ options: { tabHeight: this.tabHeight },
324
+ };
325
+ };
326
+ DockviewComponent.prototype.fromJSON = function (data) {
327
+ var _this = this;
328
+ this.gridview.clear();
329
+ this._panels.forEach(function (panel) {
330
+ panel.disposable.dispose();
331
+ panel.value.dispose();
332
+ });
333
+ this._panels.clear();
334
+ this._groups.clear();
335
+ if (!this.deserializer) {
336
+ throw new Error('invalid deserializer');
337
+ }
338
+ var grid = data.grid, panels = data.panels, options = data.options, activeGroup = data.activeGroup;
339
+ if (typeof (options === null || options === void 0 ? void 0 : options.tabHeight) === 'number') {
340
+ this.tabHeight = options.tabHeight;
341
+ }
342
+ if (!this.deserializer) {
343
+ throw new Error('no deserializer provided');
344
+ }
345
+ this.gridview.deserialize(grid, new deserializer_1.DefaultDeserializer(this, {
346
+ createPanel: function (id) {
347
+ var panelData = panels[id];
348
+ var panel = _this.deserializer.fromJSON(panelData);
349
+ _this.registerPanel(panel);
350
+ return panel;
351
+ },
352
+ }));
353
+ if (typeof activeGroup === 'string') {
354
+ var panel = this.getPanel(activeGroup);
355
+ if (panel) {
356
+ this.doSetGroupActive(panel);
357
+ }
358
+ }
359
+ this.gridview.layout(this.width, this.height);
360
+ this._onGridEvent.fire({ kind: baseComponentGridview_1.GroupChangeKind.LAYOUT_FROM_JSON });
361
+ };
362
+ DockviewComponent.prototype.closeAllGroups = function () {
363
+ return __awaiter(this, void 0, void 0, function () {
364
+ var _a, _b, entry, _c, _, group, didCloseAll, e_1_1;
365
+ var e_1, _d;
366
+ return __generator(this, function (_e) {
367
+ switch (_e.label) {
368
+ case 0:
369
+ _e.trys.push([0, 5, 6, 7]);
370
+ _a = __values(this._groups.entries()), _b = _a.next();
371
+ _e.label = 1;
372
+ case 1:
373
+ if (!!_b.done) return [3 /*break*/, 4];
374
+ entry = _b.value;
375
+ _c = __read(entry, 2), _ = _c[0], group = _c[1];
376
+ return [4 /*yield*/, group.value.model.closeAllPanels()];
377
+ case 2:
378
+ didCloseAll = _e.sent();
379
+ if (!didCloseAll) {
380
+ return [2 /*return*/, false];
381
+ }
382
+ _e.label = 3;
383
+ case 3:
384
+ _b = _a.next();
385
+ return [3 /*break*/, 1];
386
+ case 4: return [3 /*break*/, 7];
387
+ case 5:
388
+ e_1_1 = _e.sent();
389
+ e_1 = { error: e_1_1 };
390
+ return [3 /*break*/, 7];
391
+ case 6:
392
+ try {
393
+ if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
394
+ }
395
+ finally { if (e_1) throw e_1.error; }
396
+ return [7 /*endfinally*/];
397
+ case 7: return [2 /*return*/, true];
398
+ }
399
+ });
400
+ });
401
+ };
402
+ DockviewComponent.prototype.fireMouseEvent = function (event) {
403
+ switch (event.kind) {
404
+ case tab_1.MouseEventKind.CONTEXT_MENU:
405
+ if (event.tab && event.panel) {
406
+ this._onTabContextMenu.fire({
407
+ event: event.event,
408
+ api: this._api,
409
+ panel: event.panel,
410
+ });
411
+ }
412
+ break;
413
+ }
414
+ };
415
+ DockviewComponent.prototype.addPanel = function (options) {
416
+ var _a, _b;
417
+ var panel = this._addPanel(options);
418
+ var referenceGroup;
419
+ if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
420
+ var referencePanel = this.getGroupPanel(options.position.referencePanel);
421
+ if (!referencePanel) {
422
+ throw new Error("referencePanel ".concat(options.position.referencePanel, " does not exist"));
423
+ }
424
+ referenceGroup = this.findGroup(referencePanel);
425
+ }
426
+ else {
427
+ referenceGroup = this.activeGroup;
428
+ }
429
+ if (referenceGroup) {
430
+ var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
431
+ if (target === droptarget_1.Position.Center) {
432
+ referenceGroup.model.openPanel(panel);
433
+ }
434
+ else {
435
+ var location_1 = (0, gridview_1.getGridLocation)(referenceGroup.element);
436
+ var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_1, target);
437
+ this.addPanelToNewGroup(panel, relativeLocation);
438
+ }
439
+ }
440
+ else {
441
+ this.addPanelToNewGroup(panel);
442
+ }
443
+ return panel;
444
+ };
445
+ DockviewComponent.prototype.removePanel = function (panel) {
446
+ this.unregisterPanel(panel);
447
+ var group = panel.group;
448
+ if (!group) {
449
+ throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
450
+ }
451
+ group.model.removePanel(panel);
452
+ if (group.model.size === 0) {
453
+ this.removeGroup(group);
454
+ }
455
+ };
456
+ DockviewComponent.prototype.createWatermarkComponent = function () {
457
+ var _a;
458
+ return (0, componentFactory_1.createComponent)('watermark-id', 'watermark-name', this.options.watermarkComponent
459
+ ? { 'watermark-name': this.options.watermarkComponent }
460
+ : {}, this.options.watermarkFrameworkComponent
461
+ ? { 'watermark-name': this.options.watermarkFrameworkComponent }
462
+ : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
463
+ };
464
+ DockviewComponent.prototype.addEmptyGroup = function (options) {
465
+ var _a;
466
+ var group = this.createGroup();
467
+ if (options) {
468
+ var referencePanel = (_a = this._panels.get(options.referencePanel)) === null || _a === void 0 ? void 0 : _a.value;
469
+ if (!referencePanel) {
470
+ throw new Error("reference panel ".concat(options.referencePanel, " does not exist"));
471
+ }
472
+ var referenceGroup = this.findGroup(referencePanel);
473
+ if (!referenceGroup) {
474
+ throw new Error("reference group for reference panel ".concat(options.referencePanel, " does not exist"));
475
+ }
476
+ var target = (0, baseComponentGridview_1.toTarget)(options.direction || 'within');
477
+ var location_2 = (0, gridview_1.getGridLocation)(referenceGroup.element);
478
+ var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_2, target);
479
+ this.doAddGroup(group, relativeLocation);
480
+ }
481
+ else {
482
+ this.doAddGroup(group);
483
+ }
484
+ };
485
+ DockviewComponent.prototype.removeGroup = function (group) {
486
+ var _this = this;
487
+ var panels = __spreadArray([], __read(group.model.panels), false); // reassign since group panels will mutate
488
+ panels.forEach(function (panel) {
489
+ _this.removePanel(panel);
490
+ });
491
+ if (this._groups.size === 1) {
492
+ this._activeGroup = group;
493
+ return;
494
+ }
495
+ _super.prototype.removeGroup.call(this, group);
496
+ };
497
+ DockviewComponent.prototype.moveGroupOrPanel = function (referenceGroup, groupId, itemId, target, index) {
498
+ var _a, _b, _c;
499
+ var sourceGroup = groupId
500
+ ? (_a = this._groups.get(groupId)) === null || _a === void 0 ? void 0 : _a.value
501
+ : undefined;
502
+ if (!target || target === droptarget_1.Position.Center) {
503
+ var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
504
+ ((_b = this._panels.get(itemId)) === null || _b === void 0 ? void 0 : _b.value);
505
+ if (!groupItem) {
506
+ throw new Error("No panel with id ".concat(itemId));
507
+ }
508
+ if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
509
+ this.doRemoveGroup(sourceGroup);
510
+ }
511
+ referenceGroup.model.openPanel(groupItem, { index: index });
512
+ }
513
+ else {
514
+ var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
515
+ var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
516
+ if (sourceGroup && sourceGroup.model.size < 2) {
517
+ var _d = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _d[0], to = _d[1];
518
+ var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
519
+ var _e = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _e[0], from = _e[1];
520
+ if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
521
+ // special case when 'swapping' two views within same grid location
522
+ // if a group has one tab - we are essentially moving the 'group'
523
+ // which is equivalent to swapping two views in this case
524
+ this.gridview.moveView(sourceParentLocation, from, to);
525
+ }
526
+ else {
527
+ // source group will become empty so delete the group
528
+ var targetGroup = this.doRemoveGroup(sourceGroup, {
529
+ skipActive: true,
530
+ skipDispose: true,
531
+ });
532
+ // after deleting the group we need to re-evaulate the ref location
533
+ var updatedReferenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
534
+ var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, target);
535
+ this.doAddGroup(targetGroup, location_3);
536
+ }
537
+ }
538
+ else {
539
+ var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
540
+ ((_c = this._panels.get(itemId)) === null || _c === void 0 ? void 0 : _c.value);
541
+ if (!groupItem) {
542
+ throw new Error("No panel with id ".concat(itemId));
543
+ }
544
+ var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
545
+ this.addPanelToNewGroup(groupItem, dropLocation);
546
+ }
547
+ }
548
+ };
549
+ DockviewComponent.prototype.doSetGroupActive = function (group, skipFocus) {
550
+ var _a, _b;
551
+ var isGroupAlreadyFocused = this._activeGroup === group;
552
+ _super.prototype.doSetGroupActive.call(this, group, skipFocus);
553
+ if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.model.activePanel)) {
554
+ this._onGridEvent.fire({
555
+ kind: baseComponentGridview_1.GroupChangeKind.PANEL_ACTIVE,
556
+ panel: (_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.model.activePanel,
557
+ });
558
+ }
559
+ };
560
+ DockviewComponent.prototype.createGroup = function (options) {
561
+ var _this = this;
562
+ if (!options) {
563
+ options = { tabHeight: this.tabHeight };
564
+ }
565
+ if (typeof options.tabHeight !== 'number') {
566
+ options.tabHeight = this.tabHeight;
567
+ }
568
+ var id = options === null || options === void 0 ? void 0 : options.id;
569
+ if (id && this._groups.has(options.id)) {
570
+ console.warn("Duplicate group id ".concat(options === null || options === void 0 ? void 0 : options.id, ". reassigning group id to avoid errors"));
571
+ id = undefined;
572
+ }
573
+ if (!id) {
574
+ id = nextGroupId.next();
575
+ while (this._groups.has(id)) {
576
+ id = nextGroupId.next();
577
+ }
578
+ }
579
+ var view = new groupviewPanel_1.GroupviewPanel(this, id, options);
580
+ if (!this._groups.has(view.id)) {
581
+ var disposable = new lifecycle_1.CompositeDisposable(view.model.onMove(function (event) {
582
+ var groupId = event.groupId, itemId = event.itemId, target = event.target, index = event.index;
583
+ _this.moveGroupOrPanel(view, groupId, itemId, target, index);
584
+ }), view.model.onDidGroupChange(function (event) {
585
+ switch (event.kind) {
586
+ case groupview_1.GroupChangeKind2.ADD_PANEL:
587
+ _this._onGridEvent.fire({
588
+ kind: baseComponentGridview_1.GroupChangeKind.ADD_PANEL,
589
+ panel: event.panel,
590
+ });
591
+ break;
592
+ case groupview_1.GroupChangeKind2.GROUP_ACTIVE:
593
+ _this._onGridEvent.fire({
594
+ kind: baseComponentGridview_1.GroupChangeKind.GROUP_ACTIVE,
595
+ panel: event.panel,
596
+ });
597
+ break;
598
+ case groupview_1.GroupChangeKind2.REMOVE_PANEL:
599
+ _this._onGridEvent.fire({
600
+ kind: baseComponentGridview_1.GroupChangeKind.REMOVE_PANEL,
601
+ panel: event.panel,
602
+ });
603
+ break;
604
+ case groupview_1.GroupChangeKind2.PANEL_ACTIVE:
605
+ _this._onGridEvent.fire({
606
+ kind: baseComponentGridview_1.GroupChangeKind.PANEL_ACTIVE,
607
+ panel: event.panel,
608
+ });
609
+ break;
610
+ }
611
+ }));
612
+ this._groups.set(view.id, { value: view, disposable: disposable });
613
+ }
614
+ // TODO: must be called after the above listeners have been setup,
615
+ // not an ideal pattern
616
+ view.initialize();
617
+ if (typeof this.options.tabHeight === 'number') {
618
+ view.model.tabHeight = this.options.tabHeight;
619
+ }
620
+ return view;
621
+ };
622
+ DockviewComponent.prototype.dispose = function () {
623
+ _super.prototype.dispose.call(this);
624
+ this._onGridEvent.dispose();
625
+ };
626
+ /**
627
+ * Ensure the local copy of the layout state is up-to-date
628
+ */
629
+ DockviewComponent.prototype.syncConfigs = function () {
630
+ var _this = this;
631
+ var dirtyPanels = Array.from(this.dirtyPanels);
632
+ if (dirtyPanels.length === 0) {
633
+ //
634
+ }
635
+ this.dirtyPanels.clear();
636
+ var partialPanelState = dirtyPanels
637
+ .map(function (panel) { return _this._panels.get(panel.id); })
638
+ .filter(function (_) { return !!_; })
639
+ .reduce(function (collection, panel) {
640
+ collection[panel.value.id] = panel.value.toJSON();
641
+ return collection;
642
+ }, {});
643
+ this.panelState = __assign(__assign({}, this.panelState), partialPanelState);
644
+ dirtyPanels
645
+ .filter(function (p) { return _this._panels.has(p.id); })
646
+ .forEach(function (panel) {
647
+ panel.setDirty(false);
648
+ });
649
+ };
650
+ DockviewComponent.prototype._addPanel = function (options) {
651
+ var view = new defaultGroupPanelView_1.DefaultGroupPanelView({
652
+ content: this.createContentComponent(options.id, options.component),
653
+ tab: this.createTabComponent(options.id, options.tabComponent),
654
+ });
655
+ var panel = new dockviewGroupPanel_1.DockviewGroupPanel(options.id, this._api);
656
+ panel.init({
657
+ view: view,
658
+ title: options.title || options.id,
659
+ suppressClosable: options === null || options === void 0 ? void 0 : options.suppressClosable,
660
+ params: (options === null || options === void 0 ? void 0 : options.params) || {},
661
+ });
662
+ this.registerPanel(panel);
663
+ return panel;
664
+ };
665
+ DockviewComponent.prototype.createContentComponent = function (id, componentName) {
666
+ var _a;
667
+ return (0, componentFactory_1.createComponent)(id, componentName, this.options.components || {}, this.options.frameworkComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);
668
+ };
669
+ DockviewComponent.prototype.createTabComponent = function (id, componentName) {
670
+ var _a;
671
+ return (0, componentFactory_1.createComponent)(id, componentName, this.options.tabComponents || {}, this.options.frameworkTabComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, function () { return new defaultTab_1.DefaultTab(); });
672
+ };
673
+ DockviewComponent.prototype.addPanelToNewGroup = function (panel, location) {
674
+ if (location === void 0) { location = [0]; }
675
+ var group = this.createGroup();
676
+ this.doAddGroup(group, location);
677
+ group.model.openPanel(panel);
678
+ };
679
+ DockviewComponent.prototype.findGroup = function (panel) {
680
+ var _a;
681
+ return (_a = Array.from(this._groups.values()).find(function (group) {
682
+ return group.value.model.containsPanel(panel);
683
+ })) === null || _a === void 0 ? void 0 : _a.value;
684
+ };
685
+ DockviewComponent.prototype.addDirtyPanel = function (panel) {
686
+ this.dirtyPanels.add(panel);
687
+ panel.setDirty(true);
688
+ this.debouncedDeque();
689
+ };
690
+ return DockviewComponent;
691
+ }(baseComponentGridview_1.BaseGrid));
692
+ exports.DockviewComponent = DockviewComponent;
693
693
  //# sourceMappingURL=dockviewComponent.js.map