dockview-core 1.7.0 → 1.7.2

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 (430) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -52
  3. package/dist/cjs/api/component.api.d.ts +144 -145
  4. package/dist/cjs/api/component.api.d.ts.map +1 -0
  5. package/dist/cjs/api/component.api.js +572 -578
  6. package/dist/cjs/api/component.api.js.map +1 -1
  7. package/dist/cjs/api/dockviewPanelApi.d.ts +35 -34
  8. package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -0
  9. package/dist/cjs/api/dockviewPanelApi.js +83 -83
  10. package/dist/cjs/api/gridviewPanelApi.d.ts +38 -37
  11. package/dist/cjs/api/gridviewPanelApi.d.ts.map +1 -0
  12. package/dist/cjs/api/gridviewPanelApi.js +47 -47
  13. package/dist/cjs/api/panelApi.d.ts +89 -88
  14. package/dist/cjs/api/panelApi.d.ts.map +1 -0
  15. package/dist/cjs/api/panelApi.js +137 -137
  16. package/dist/cjs/api/paneviewPanelApi.d.ts +27 -26
  17. package/dist/cjs/api/paneviewPanelApi.d.ts.map +1 -0
  18. package/dist/cjs/api/paneviewPanelApi.js +57 -57
  19. package/dist/cjs/api/splitviewPanelApi.d.ts +33 -32
  20. package/dist/cjs/api/splitviewPanelApi.d.ts.map +1 -0
  21. package/dist/cjs/api/splitviewPanelApi.js +47 -47
  22. package/dist/cjs/array.d.ts +13 -12
  23. package/dist/cjs/array.d.ts.map +1 -0
  24. package/dist/cjs/array.js +58 -58
  25. package/dist/cjs/dnd/abstractDragHandler.d.ts +12 -11
  26. package/dist/cjs/dnd/abstractDragHandler.d.ts.map +1 -0
  27. package/dist/cjs/dnd/abstractDragHandler.js +125 -125
  28. package/dist/cjs/dnd/dataTransfer.d.ts +32 -31
  29. package/dist/cjs/dnd/dataTransfer.d.ts.map +1 -0
  30. package/dist/cjs/dnd/dataTransfer.js +100 -100
  31. package/dist/cjs/dnd/dnd.d.ts +28 -27
  32. package/dist/cjs/dnd/dnd.d.ts.map +1 -0
  33. package/dist/cjs/dnd/dnd.js +59 -59
  34. package/dist/cjs/dnd/droptarget.d.ts +43 -42
  35. package/dist/cjs/dnd/droptarget.d.ts.map +1 -0
  36. package/dist/cjs/dnd/droptarget.js +280 -280
  37. package/dist/cjs/dnd/ghost.d.ts +2 -1
  38. package/dist/cjs/dnd/ghost.d.ts.map +1 -0
  39. package/dist/cjs/dnd/ghost.js +15 -15
  40. package/dist/cjs/dnd/groupDragHandler.d.ts +12 -11
  41. package/dist/cjs/dnd/groupDragHandler.d.ts.map +1 -0
  42. package/dist/cjs/dnd/groupDragHandler.js +61 -61
  43. package/dist/cjs/dockview/components/panel/content.d.ts +31 -30
  44. package/dist/cjs/dockview/components/panel/content.d.ts.map +1 -0
  45. package/dist/cjs/dockview/components/panel/content.js +100 -100
  46. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +22 -21
  47. package/dist/cjs/dockview/components/tab/defaultTab.d.ts.map +1 -0
  48. package/dist/cjs/dockview/components/tab/defaultTab.js +105 -105
  49. package/dist/cjs/dockview/components/tab/tab.d.ts +32 -31
  50. package/dist/cjs/dockview/components/tab/tab.d.ts.map +1 -0
  51. package/dist/cjs/dockview/components/tab/tab.js +124 -124
  52. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +60 -63
  53. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts.map +1 -0
  54. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +230 -247
  55. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
  56. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +16 -15
  57. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts.map +1 -0
  58. package/dist/cjs/dockview/components/titlebar/voidContainer.js +73 -73
  59. package/dist/cjs/dockview/components/watermark/watermark.d.ts +19 -18
  60. package/dist/cjs/dockview/components/watermark/watermark.d.ts.map +1 -0
  61. package/dist/cjs/dockview/components/watermark/watermark.js +87 -86
  62. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  63. package/dist/cjs/dockview/deserializer.d.ts +13 -12
  64. package/dist/cjs/dockview/deserializer.d.ts.map +1 -0
  65. package/dist/cjs/dockview/deserializer.js +33 -45
  66. package/dist/cjs/dockview/deserializer.js.map +1 -1
  67. package/dist/cjs/dockview/dockviewComponent.d.ts +121 -126
  68. package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -0
  69. package/dist/cjs/dockview/dockviewComponent.js +749 -771
  70. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  71. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +32 -31
  72. package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -0
  73. package/dist/cjs/dockview/dockviewGroupPanel.js +96 -96
  74. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +175 -176
  75. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -0
  76. package/dist/cjs/dockview/dockviewGroupPanelModel.js +578 -578
  77. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
  78. package/dist/cjs/dockview/dockviewPanel.d.ts +41 -40
  79. package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -0
  80. package/dist/cjs/dockview/dockviewPanel.js +146 -149
  81. package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
  82. package/dist/cjs/dockview/dockviewPanelModel.d.ts +35 -34
  83. package/dist/cjs/dockview/dockviewPanelModel.d.ts.map +1 -0
  84. package/dist/cjs/dockview/dockviewPanelModel.js +98 -92
  85. package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -1
  86. package/dist/cjs/dockview/options.d.ts +117 -116
  87. package/dist/cjs/dockview/options.d.ts.map +1 -0
  88. package/dist/cjs/dockview/options.js +31 -31
  89. package/dist/cjs/dockview/types.d.ts +68 -67
  90. package/dist/cjs/dockview/types.d.ts.map +1 -0
  91. package/dist/cjs/dockview/types.js +10 -10
  92. package/dist/cjs/dom.d.ts +15 -14
  93. package/dist/cjs/dom.d.ts.map +1 -0
  94. package/dist/cjs/dom.js +189 -182
  95. package/dist/cjs/dom.js.map +1 -1
  96. package/dist/cjs/events.d.ts +31 -30
  97. package/dist/cjs/events.d.ts.map +1 -0
  98. package/dist/cjs/events.js +129 -129
  99. package/dist/cjs/gridview/baseComponentGridview.d.ts +88 -87
  100. package/dist/cjs/gridview/baseComponentGridview.d.ts.map +1 -0
  101. package/dist/cjs/gridview/baseComponentGridview.js +271 -279
  102. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  103. package/dist/cjs/gridview/basePanelView.d.ts +41 -40
  104. package/dist/cjs/gridview/basePanelView.d.ts.map +1 -0
  105. package/dist/cjs/gridview/basePanelView.js +123 -123
  106. package/dist/cjs/gridview/branchNode.d.ts +50 -49
  107. package/dist/cjs/gridview/branchNode.d.ts.map +1 -0
  108. package/dist/cjs/gridview/branchNode.js +342 -342
  109. package/dist/cjs/gridview/gridview.d.ts +134 -133
  110. package/dist/cjs/gridview/gridview.d.ts.map +1 -0
  111. package/dist/cjs/gridview/gridview.js +517 -510
  112. package/dist/cjs/gridview/gridview.js.map +1 -1
  113. package/dist/cjs/gridview/gridviewComponent.d.ts +81 -80
  114. package/dist/cjs/gridview/gridviewComponent.d.ts.map +1 -0
  115. package/dist/cjs/gridview/gridviewComponent.js +325 -324
  116. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  117. package/dist/cjs/gridview/gridviewPanel.d.ts +66 -65
  118. package/dist/cjs/gridview/gridviewPanel.d.ts.map +1 -0
  119. package/dist/cjs/gridview/gridviewPanel.js +214 -214
  120. package/dist/cjs/gridview/leafNode.d.ts +35 -34
  121. package/dist/cjs/gridview/leafNode.d.ts.map +1 -0
  122. package/dist/cjs/gridview/leafNode.js +170 -170
  123. package/dist/cjs/gridview/options.d.ts +19 -18
  124. package/dist/cjs/gridview/options.d.ts.map +1 -0
  125. package/dist/cjs/gridview/options.js +2 -2
  126. package/dist/cjs/gridview/types.d.ts +4 -3
  127. package/dist/cjs/gridview/types.d.ts.map +1 -0
  128. package/dist/cjs/gridview/types.js +2 -2
  129. package/dist/cjs/index.d.ts +42 -41
  130. package/dist/cjs/index.d.ts.map +1 -0
  131. package/dist/cjs/index.js +63 -63
  132. package/dist/cjs/lifecycle.d.ts +25 -22
  133. package/dist/cjs/lifecycle.d.ts.map +1 -0
  134. package/dist/cjs/lifecycle.js +97 -88
  135. package/dist/cjs/lifecycle.js.map +1 -1
  136. package/dist/cjs/math.d.ts +6 -5
  137. package/dist/cjs/math.d.ts.map +1 -0
  138. package/dist/cjs/math.js +34 -34
  139. package/dist/cjs/panel/componentFactory.d.ts +11 -10
  140. package/dist/cjs/panel/componentFactory.d.ts.map +1 -0
  141. package/dist/cjs/panel/componentFactory.js +30 -30
  142. package/dist/cjs/panel/types.d.ts +34 -33
  143. package/dist/cjs/panel/types.d.ts.map +1 -0
  144. package/dist/cjs/panel/types.js +2 -2
  145. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +22 -21
  146. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts.map +1 -0
  147. package/dist/cjs/paneview/defaultPaneviewHeader.js +90 -90
  148. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +22 -21
  149. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts.map +1 -0
  150. package/dist/cjs/paneview/draggablePaneviewPanel.js +131 -131
  151. package/dist/cjs/paneview/options.d.ts +29 -27
  152. package/dist/cjs/paneview/options.d.ts.map +1 -0
  153. package/dist/cjs/paneview/options.js +2 -2
  154. package/dist/cjs/paneview/paneview.d.ts +41 -40
  155. package/dist/cjs/paneview/paneview.d.ts.map +1 -0
  156. package/dist/cjs/paneview/paneview.js +201 -201
  157. package/dist/cjs/paneview/paneviewComponent.d.ts +130 -129
  158. package/dist/cjs/paneview/paneviewComponent.d.ts.map +1 -0
  159. package/dist/cjs/paneview/paneviewComponent.js +394 -394
  160. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  161. package/dist/cjs/paneview/paneviewPanel.d.ts +93 -92
  162. package/dist/cjs/paneview/paneviewPanel.d.ts.map +1 -0
  163. package/dist/cjs/paneview/paneviewPanel.js +275 -275
  164. package/dist/cjs/resizable.d.ts +8 -0
  165. package/dist/cjs/resizable.d.ts.map +1 -0
  166. package/dist/cjs/resizable.js +57 -0
  167. package/dist/cjs/resizable.js.map +1 -0
  168. package/dist/cjs/splitview/options.d.ts +28 -26
  169. package/dist/cjs/splitview/options.d.ts.map +1 -0
  170. package/dist/cjs/splitview/options.js +2 -2
  171. package/dist/cjs/splitview/splitview.d.ts +128 -127
  172. package/dist/cjs/splitview/splitview.d.ts.map +1 -0
  173. package/dist/cjs/splitview/splitview.js +908 -908
  174. package/dist/cjs/splitview/splitviewComponent.d.ts +102 -101
  175. package/dist/cjs/splitview/splitviewComponent.d.ts.map +1 -0
  176. package/dist/cjs/splitview/splitviewComponent.js +373 -373
  177. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  178. package/dist/cjs/splitview/splitviewPanel.d.ts +46 -45
  179. package/dist/cjs/splitview/splitviewPanel.d.ts.map +1 -0
  180. package/dist/cjs/splitview/splitviewPanel.js +179 -179
  181. package/dist/cjs/splitview/viewItem.d.ts +26 -25
  182. package/dist/cjs/splitview/viewItem.d.ts.map +1 -0
  183. package/dist/cjs/splitview/viewItem.js +119 -119
  184. package/dist/cjs/svg.d.ts +4 -3
  185. package/dist/cjs/svg.d.ts.map +1 -0
  186. package/dist/cjs/svg.js +43 -43
  187. package/dist/cjs/types.d.ts +3 -2
  188. package/dist/cjs/types.d.ts.map +1 -0
  189. package/dist/cjs/types.js +2 -2
  190. package/dist/dockview-core.amd.js +6340 -6339
  191. package/dist/dockview-core.amd.min.js +2 -2
  192. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  193. package/dist/dockview-core.amd.noStyle.js +6307 -6306
  194. package/dist/dockview-core.cjs.js +6336 -6335
  195. package/dist/dockview-core.esm.js +6336 -6335
  196. package/dist/dockview-core.esm.min.js +2 -2
  197. package/dist/dockview-core.js +6340 -6339
  198. package/dist/dockview-core.min.js +2 -2
  199. package/dist/dockview-core.min.noStyle.js +2 -2
  200. package/dist/dockview-core.noStyle.js +6307 -6306
  201. package/dist/esm/api/component.api.d.ts +144 -145
  202. package/dist/esm/api/component.api.d.ts.map +1 -0
  203. package/dist/esm/api/component.api.js +324 -329
  204. package/dist/esm/api/component.api.js.map +1 -0
  205. package/dist/esm/api/dockviewPanelApi.d.ts +35 -34
  206. package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -0
  207. package/dist/esm/api/dockviewPanelApi.js +49 -48
  208. package/dist/esm/api/dockviewPanelApi.js.map +1 -0
  209. package/dist/esm/api/gridviewPanelApi.d.ts +38 -37
  210. package/dist/esm/api/gridviewPanelApi.d.ts.map +1 -0
  211. package/dist/esm/api/gridviewPanelApi.js +26 -25
  212. package/dist/esm/api/gridviewPanelApi.js.map +1 -0
  213. package/dist/esm/api/panelApi.d.ts +89 -88
  214. package/dist/esm/api/panelApi.d.ts.map +1 -0
  215. package/dist/esm/api/panelApi.js +96 -95
  216. package/dist/esm/api/panelApi.js.map +1 -0
  217. package/dist/esm/api/paneviewPanelApi.d.ts +27 -26
  218. package/dist/esm/api/paneviewPanelApi.d.ts.map +1 -0
  219. package/dist/esm/api/paneviewPanelApi.js +28 -27
  220. package/dist/esm/api/paneviewPanelApi.js.map +1 -0
  221. package/dist/esm/api/splitviewPanelApi.d.ts +33 -32
  222. package/dist/esm/api/splitviewPanelApi.d.ts.map +1 -0
  223. package/dist/esm/api/splitviewPanelApi.js +26 -25
  224. package/dist/esm/api/splitviewPanelApi.js.map +1 -0
  225. package/dist/esm/array.d.ts +13 -12
  226. package/dist/esm/array.d.ts.map +1 -0
  227. package/dist/esm/array.js +50 -49
  228. package/dist/esm/array.js.map +1 -0
  229. package/dist/esm/dnd/abstractDragHandler.d.ts +12 -11
  230. package/dist/esm/dnd/abstractDragHandler.d.ts.map +1 -0
  231. package/dist/esm/dnd/abstractDragHandler.js +48 -47
  232. package/dist/esm/dnd/abstractDragHandler.js.map +1 -0
  233. package/dist/esm/dnd/dataTransfer.d.ts +32 -31
  234. package/dist/esm/dnd/dataTransfer.d.ts.map +1 -0
  235. package/dist/esm/dnd/dataTransfer.js +70 -69
  236. package/dist/esm/dnd/dataTransfer.js.map +1 -0
  237. package/dist/esm/dnd/dnd.d.ts +28 -27
  238. package/dist/esm/dnd/dnd.d.ts.map +1 -0
  239. package/dist/esm/dnd/dnd.js +37 -36
  240. package/dist/esm/dnd/dnd.js.map +1 -0
  241. package/dist/esm/dnd/droptarget.d.ts +43 -42
  242. package/dist/esm/dnd/droptarget.d.ts.map +1 -0
  243. package/dist/esm/dnd/droptarget.js +251 -250
  244. package/dist/esm/dnd/droptarget.js.map +1 -0
  245. package/dist/esm/dnd/ghost.d.ts +2 -1
  246. package/dist/esm/dnd/ghost.d.ts.map +1 -0
  247. package/dist/esm/dnd/ghost.js +12 -11
  248. package/dist/esm/dnd/ghost.js.map +1 -0
  249. package/dist/esm/dnd/groupDragHandler.d.ts +12 -11
  250. package/dist/esm/dnd/groupDragHandler.d.ts.map +1 -0
  251. package/dist/esm/dnd/groupDragHandler.js +39 -38
  252. package/dist/esm/dnd/groupDragHandler.js.map +1 -0
  253. package/dist/esm/dockview/components/panel/content.d.ts +31 -30
  254. package/dist/esm/dockview/components/panel/content.d.ts.map +1 -0
  255. package/dist/esm/dockview/components/panel/content.js +74 -73
  256. package/dist/esm/dockview/components/panel/content.js.map +1 -0
  257. package/dist/esm/dockview/components/tab/defaultTab.d.ts +22 -21
  258. package/dist/esm/dockview/components/tab/defaultTab.d.ts.map +1 -0
  259. package/dist/esm/dockview/components/tab/defaultTab.js +68 -67
  260. package/dist/esm/dockview/components/tab/defaultTab.js.map +1 -0
  261. package/dist/esm/dockview/components/tab/tab.d.ts +32 -31
  262. package/dist/esm/dockview/components/tab/tab.d.ts.map +1 -0
  263. package/dist/esm/dockview/components/tab/tab.js +95 -94
  264. package/dist/esm/dockview/components/tab/tab.js.map +1 -0
  265. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +60 -63
  266. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts.map +1 -0
  267. package/dist/esm/dockview/components/titlebar/tabsContainer.js +167 -179
  268. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -0
  269. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +16 -15
  270. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts.map +1 -0
  271. package/dist/esm/dockview/components/titlebar/voidContainer.js +48 -47
  272. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -0
  273. package/dist/esm/dockview/components/watermark/watermark.d.ts +19 -18
  274. package/dist/esm/dockview/components/watermark/watermark.d.ts.map +1 -0
  275. package/dist/esm/dockview/components/watermark/watermark.js +62 -60
  276. package/dist/esm/dockview/components/watermark/watermark.js.map +1 -0
  277. package/dist/esm/dockview/deserializer.d.ts +13 -12
  278. package/dist/esm/dockview/deserializer.d.ts.map +1 -0
  279. package/dist/esm/dockview/deserializer.js +29 -40
  280. package/dist/esm/dockview/deserializer.js.map +1 -0
  281. package/dist/esm/dockview/dockviewComponent.d.ts +121 -126
  282. package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -0
  283. package/dist/esm/dockview/dockviewComponent.js +595 -612
  284. package/dist/esm/dockview/dockviewComponent.js.map +1 -0
  285. package/dist/esm/dockview/dockviewGroupPanel.d.ts +32 -31
  286. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -0
  287. package/dist/esm/dockview/dockviewGroupPanel.js +51 -50
  288. package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -0
  289. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +175 -176
  290. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -0
  291. package/dist/esm/dockview/dockviewGroupPanelModel.js +450 -449
  292. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -0
  293. package/dist/esm/dockview/dockviewPanel.d.ts +41 -40
  294. package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -0
  295. package/dist/esm/dockview/dockviewPanel.js +102 -104
  296. package/dist/esm/dockview/dockviewPanel.js.map +1 -0
  297. package/dist/esm/dockview/dockviewPanelModel.d.ts +35 -34
  298. package/dist/esm/dockview/dockviewPanelModel.d.ts.map +1 -0
  299. package/dist/esm/dockview/dockviewPanelModel.js +75 -68
  300. package/dist/esm/dockview/dockviewPanelModel.js.map +1 -0
  301. package/dist/esm/dockview/options.d.ts +117 -116
  302. package/dist/esm/dockview/options.d.ts.map +1 -0
  303. package/dist/esm/dockview/options.js +25 -24
  304. package/dist/esm/dockview/options.js.map +1 -0
  305. package/dist/esm/dockview/types.d.ts +68 -67
  306. package/dist/esm/dockview/types.d.ts.map +1 -0
  307. package/dist/esm/dockview/types.js +8 -7
  308. package/dist/esm/dockview/types.js.map +1 -0
  309. package/dist/esm/dom.d.ts +15 -14
  310. package/dist/esm/dom.d.ts.map +1 -0
  311. package/dist/esm/dom.js +121 -113
  312. package/dist/esm/dom.js.map +1 -0
  313. package/dist/esm/events.d.ts +31 -30
  314. package/dist/esm/events.d.ts.map +1 -0
  315. package/dist/esm/events.js +89 -88
  316. package/dist/esm/events.js.map +1 -0
  317. package/dist/esm/gridview/baseComponentGridview.d.ts +88 -87
  318. package/dist/esm/gridview/baseComponentGridview.d.ts.map +1 -0
  319. package/dist/esm/gridview/baseComponentGridview.js +186 -189
  320. package/dist/esm/gridview/baseComponentGridview.js.map +1 -0
  321. package/dist/esm/gridview/basePanelView.d.ts +41 -40
  322. package/dist/esm/gridview/basePanelView.d.ts.map +1 -0
  323. package/dist/esm/gridview/basePanelView.js +75 -74
  324. package/dist/esm/gridview/basePanelView.js.map +1 -0
  325. package/dist/esm/gridview/branchNode.d.ts +50 -49
  326. package/dist/esm/gridview/branchNode.d.ts.map +1 -0
  327. package/dist/esm/gridview/branchNode.js +219 -218
  328. package/dist/esm/gridview/branchNode.js.map +1 -0
  329. package/dist/esm/gridview/gridview.d.ts +134 -133
  330. package/dist/esm/gridview/gridview.d.ts.map +1 -0
  331. package/dist/esm/gridview/gridview.js +431 -423
  332. package/dist/esm/gridview/gridview.js.map +1 -0
  333. package/dist/esm/gridview/gridviewComponent.d.ts +81 -80
  334. package/dist/esm/gridview/gridviewComponent.d.ts.map +1 -0
  335. package/dist/esm/gridview/gridviewComponent.js +239 -237
  336. package/dist/esm/gridview/gridviewComponent.js.map +1 -0
  337. package/dist/esm/gridview/gridviewPanel.d.ts +66 -65
  338. package/dist/esm/gridview/gridviewPanel.d.ts.map +1 -0
  339. package/dist/esm/gridview/gridviewPanel.js +152 -151
  340. package/dist/esm/gridview/gridviewPanel.js.map +1 -0
  341. package/dist/esm/gridview/leafNode.d.ts +35 -34
  342. package/dist/esm/gridview/leafNode.d.ts.map +1 -0
  343. package/dist/esm/gridview/leafNode.js +104 -103
  344. package/dist/esm/gridview/leafNode.js.map +1 -0
  345. package/dist/esm/gridview/options.d.ts +19 -18
  346. package/dist/esm/gridview/options.d.ts.map +1 -0
  347. package/dist/esm/gridview/options.js +2 -1
  348. package/dist/esm/gridview/options.js.map +1 -0
  349. package/dist/esm/gridview/types.d.ts +4 -3
  350. package/dist/esm/gridview/types.d.ts.map +1 -0
  351. package/dist/esm/gridview/types.js +2 -1
  352. package/dist/esm/gridview/types.js.map +1 -0
  353. package/dist/esm/index.d.ts +42 -41
  354. package/dist/esm/index.d.ts.map +1 -0
  355. package/dist/esm/index.js +36 -35
  356. package/dist/esm/index.js.map +1 -0
  357. package/dist/esm/lifecycle.d.ts +25 -22
  358. package/dist/esm/lifecycle.d.ts.map +1 -0
  359. package/dist/esm/lifecycle.js +45 -39
  360. package/dist/esm/lifecycle.js.map +1 -0
  361. package/dist/esm/math.d.ts +6 -5
  362. package/dist/esm/math.d.ts.map +1 -0
  363. package/dist/esm/math.js +29 -28
  364. package/dist/esm/math.js.map +1 -0
  365. package/dist/esm/panel/componentFactory.d.ts +11 -10
  366. package/dist/esm/panel/componentFactory.d.ts.map +1 -0
  367. package/dist/esm/panel/componentFactory.js +25 -24
  368. package/dist/esm/panel/componentFactory.js.map +1 -0
  369. package/dist/esm/panel/types.d.ts +34 -33
  370. package/dist/esm/panel/types.d.ts.map +1 -0
  371. package/dist/esm/panel/types.js +2 -1
  372. package/dist/esm/panel/types.js.map +1 -0
  373. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +22 -21
  374. package/dist/esm/paneview/defaultPaneviewHeader.d.ts.map +1 -0
  375. package/dist/esm/paneview/defaultPaneviewHeader.js +64 -63
  376. package/dist/esm/paneview/defaultPaneviewHeader.js.map +1 -0
  377. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +22 -21
  378. package/dist/esm/paneview/draggablePaneviewPanel.d.ts.map +1 -0
  379. package/dist/esm/paneview/draggablePaneviewPanel.js +93 -92
  380. package/dist/esm/paneview/draggablePaneviewPanel.js.map +1 -0
  381. package/dist/esm/paneview/options.d.ts +29 -27
  382. package/dist/esm/paneview/options.d.ts.map +1 -0
  383. package/dist/esm/paneview/options.js +2 -1
  384. package/dist/esm/paneview/options.js.map +1 -0
  385. package/dist/esm/paneview/paneview.d.ts +41 -40
  386. package/dist/esm/paneview/paneview.d.ts.map +1 -0
  387. package/dist/esm/paneview/paneview.js +146 -145
  388. package/dist/esm/paneview/paneview.js.map +1 -0
  389. package/dist/esm/paneview/paneviewComponent.d.ts +130 -129
  390. package/dist/esm/paneview/paneviewComponent.d.ts.map +1 -0
  391. package/dist/esm/paneview/paneviewComponent.js +271 -270
  392. package/dist/esm/paneview/paneviewComponent.js.map +1 -0
  393. package/dist/esm/paneview/paneviewPanel.d.ts +93 -92
  394. package/dist/esm/paneview/paneviewPanel.d.ts.map +1 -0
  395. package/dist/esm/paneview/paneviewPanel.js +193 -192
  396. package/dist/esm/paneview/paneviewPanel.js.map +1 -0
  397. package/dist/esm/resizable.d.ts +8 -0
  398. package/dist/esm/resizable.d.ts.map +1 -0
  399. package/dist/esm/resizable.js +31 -0
  400. package/dist/esm/resizable.js.map +1 -0
  401. package/dist/esm/splitview/options.d.ts +28 -26
  402. package/dist/esm/splitview/options.d.ts.map +1 -0
  403. package/dist/esm/splitview/options.js +2 -1
  404. package/dist/esm/splitview/options.js.map +1 -0
  405. package/dist/esm/splitview/splitview.d.ts +128 -127
  406. package/dist/esm/splitview/splitview.d.ts.map +1 -0
  407. package/dist/esm/splitview/splitview.js +690 -689
  408. package/dist/esm/splitview/splitview.js.map +1 -0
  409. package/dist/esm/splitview/splitviewComponent.d.ts +102 -101
  410. package/dist/esm/splitview/splitviewComponent.d.ts.map +1 -0
  411. package/dist/esm/splitview/splitviewComponent.js +250 -249
  412. package/dist/esm/splitview/splitviewComponent.js.map +1 -0
  413. package/dist/esm/splitview/splitviewPanel.d.ts +46 -45
  414. package/dist/esm/splitview/splitviewPanel.d.ts.map +1 -0
  415. package/dist/esm/splitview/splitviewPanel.js +109 -108
  416. package/dist/esm/splitview/splitviewPanel.js.map +1 -0
  417. package/dist/esm/splitview/viewItem.d.ts +26 -25
  418. package/dist/esm/splitview/viewItem.d.ts.map +1 -0
  419. package/dist/esm/splitview/viewItem.js +75 -74
  420. package/dist/esm/splitview/viewItem.js.map +1 -0
  421. package/dist/esm/svg.d.ts +4 -3
  422. package/dist/esm/svg.d.ts.map +1 -0
  423. package/dist/esm/svg.js +32 -31
  424. package/dist/esm/svg.js.map +1 -0
  425. package/dist/esm/types.d.ts +3 -2
  426. package/dist/esm/types.d.ts.map +1 -0
  427. package/dist/esm/types.js +2 -1
  428. package/dist/esm/types.js.map +1 -0
  429. package/dist/styles/dockview.css +4 -0
  430. package/package.json +4 -4
@@ -1,511 +1,518 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:
4
- * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid
5
- *--------------------------------------------------------------------------------------------*/
6
- var __read = (this && this.__read) || function (o, n) {
7
- var m = typeof Symbol === "function" && o[Symbol.iterator];
8
- if (!m) return o;
9
- var i = m.call(o), r, ar = [], e;
10
- try {
11
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
- }
13
- catch (error) { e = { error: error }; }
14
- finally {
15
- try {
16
- if (r && !r.done && (m = i["return"])) m.call(i);
17
- }
18
- finally { if (e) throw e.error; }
19
- }
20
- return ar;
21
- };
22
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
23
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
24
- if (ar || !(i in from)) {
25
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
26
- ar[i] = from[i];
27
- }
28
- }
29
- return to.concat(ar || Array.prototype.slice.call(from));
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.Gridview = exports.isGridBranchNode = exports.orthogonal = exports.getLocationOrientation = exports.getDirectionOrientation = exports.getRelativeLocation = exports.getGridLocation = exports.indexInParent = void 0;
33
- var splitview_1 = require("../splitview/splitview");
34
- var array_1 = require("../array");
35
- var leafNode_1 = require("./leafNode");
36
- var branchNode_1 = require("./branchNode");
37
- var events_1 = require("../events");
38
- var lifecycle_1 = require("../lifecycle");
39
- function findLeaf(candiateNode, last) {
40
- if (candiateNode instanceof leafNode_1.LeafNode) {
41
- return candiateNode;
42
- }
43
- if (candiateNode instanceof branchNode_1.BranchNode) {
44
- return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);
45
- }
46
- throw new Error('invalid node');
47
- }
48
- function flipNode(node, size, orthogonalSize) {
49
- if (node instanceof branchNode_1.BranchNode) {
50
- var result = new branchNode_1.BranchNode((0, exports.orthogonal)(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
51
- var totalSize = 0;
52
- for (var i = node.children.length - 1; i >= 0; i--) {
53
- var child = node.children[i];
54
- var childSize = child instanceof branchNode_1.BranchNode ? child.orthogonalSize : child.size;
55
- var newSize = node.size === 0
56
- ? 0
57
- : Math.round((size * childSize) / node.size);
58
- totalSize += newSize;
59
- // The last view to add should adjust to rounding errors
60
- if (i === 0) {
61
- newSize += size - totalSize;
62
- }
63
- result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);
64
- }
65
- return result;
66
- }
67
- else {
68
- return new leafNode_1.LeafNode(node.view, (0, exports.orthogonal)(node.orientation), orthogonalSize);
69
- }
70
- }
71
- function indexInParent(element) {
72
- var parentElement = element.parentElement;
73
- if (!parentElement) {
74
- throw new Error('Invalid grid element');
75
- }
76
- var el = parentElement.firstElementChild;
77
- var index = 0;
78
- while (el !== element && el !== parentElement.lastElementChild && el) {
79
- el = el.nextElementSibling;
80
- index++;
81
- }
82
- return index;
83
- }
84
- exports.indexInParent = indexInParent;
85
- /**
86
- * Find the grid location of a specific DOM element by traversing the parent
87
- * chain and finding each child index on the way.
88
- *
89
- * This will break as soon as DOM structures of the Splitview or Gridview change.
90
- */
91
- function getGridLocation(element) {
92
- var parentElement = element.parentElement;
93
- if (!parentElement) {
94
- throw new Error('Invalid grid element');
95
- }
96
- if (/\bgrid-view\b/.test(parentElement.className)) {
97
- return [];
98
- }
99
- var index = indexInParent(parentElement);
100
- var ancestor = parentElement.parentElement.parentElement.parentElement;
101
- return __spreadArray(__spreadArray([], __read(getGridLocation(ancestor)), false), [index], false);
102
- }
103
- exports.getGridLocation = getGridLocation;
104
- function getRelativeLocation(rootOrientation, location, direction) {
105
- var orientation = getLocationOrientation(rootOrientation, location);
106
- var directionOrientation = getDirectionOrientation(direction);
107
- if (orientation === directionOrientation) {
108
- var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], _index = _a[1];
109
- var index = _index;
110
- if (direction === 'right' || direction === 'bottom') {
111
- index += 1;
112
- }
113
- return __spreadArray(__spreadArray([], __read(rest), false), [index], false);
114
- }
115
- else {
116
- var index = direction === 'right' || direction === 'bottom' ? 1 : 0;
117
- return __spreadArray(__spreadArray([], __read(location), false), [index], false);
118
- }
119
- }
120
- exports.getRelativeLocation = getRelativeLocation;
121
- function getDirectionOrientation(direction) {
122
- return direction === 'top' || direction === 'bottom'
123
- ? splitview_1.Orientation.VERTICAL
124
- : splitview_1.Orientation.HORIZONTAL;
125
- }
126
- exports.getDirectionOrientation = getDirectionOrientation;
127
- function getLocationOrientation(rootOrientation, location) {
128
- return location.length % 2 === 0
129
- ? (0, exports.orthogonal)(rootOrientation)
130
- : rootOrientation;
131
- }
132
- exports.getLocationOrientation = getLocationOrientation;
133
- var orthogonal = function (orientation) {
134
- return orientation === splitview_1.Orientation.HORIZONTAL
135
- ? splitview_1.Orientation.VERTICAL
136
- : splitview_1.Orientation.HORIZONTAL;
137
- };
138
- exports.orthogonal = orthogonal;
139
- function isGridBranchNode(node) {
140
- return !!node.children;
141
- }
142
- exports.isGridBranchNode = isGridBranchNode;
143
- var serializeBranchNode = function (node, orientation) {
144
- var size = orientation === splitview_1.Orientation.VERTICAL ? node.box.width : node.box.height;
145
- if (!isGridBranchNode(node)) {
146
- if (typeof node.cachedVisibleSize === 'number') {
147
- return {
148
- type: 'leaf',
149
- data: node.view.toJSON(),
150
- size: node.cachedVisibleSize,
151
- visible: false,
152
- };
153
- }
154
- return { type: 'leaf', data: node.view.toJSON(), size: size };
155
- }
156
- return {
157
- type: 'branch',
158
- data: node.children.map(function (c) {
159
- return serializeBranchNode(c, (0, exports.orthogonal)(orientation));
160
- }),
161
- size: size,
162
- };
163
- };
164
- var Gridview = /** @class */ (function () {
165
- function Gridview(proportionalLayout, styles, orientation) {
166
- this.proportionalLayout = proportionalLayout;
167
- this.styles = styles;
168
- this.disposable = new lifecycle_1.MutableDisposable();
169
- this._onDidChange = new events_1.Emitter();
170
- this.onDidChange = this._onDidChange.event;
171
- this.element = document.createElement('div');
172
- this.element.className = 'grid-view';
173
- this.root = new branchNode_1.BranchNode(orientation, proportionalLayout, styles, 0, 0);
174
- }
175
- Object.defineProperty(Gridview.prototype, "length", {
176
- get: function () {
177
- return this._root ? this._root.children.length : 0;
178
- },
179
- enumerable: false,
180
- configurable: true
181
- });
182
- Object.defineProperty(Gridview.prototype, "orientation", {
183
- get: function () {
184
- return this.root.orientation;
185
- },
186
- set: function (orientation) {
187
- if (this.root.orientation === orientation) {
188
- return;
189
- }
190
- var _a = this.root, size = _a.size, orthogonalSize = _a.orthogonalSize;
191
- this.root = flipNode(this.root, orthogonalSize, size);
192
- this.root.layout(size, orthogonalSize);
193
- },
194
- enumerable: false,
195
- configurable: true
196
- });
197
- Object.defineProperty(Gridview.prototype, "width", {
198
- get: function () {
199
- return this.root.width;
200
- },
201
- enumerable: false,
202
- configurable: true
203
- });
204
- Object.defineProperty(Gridview.prototype, "height", {
205
- get: function () {
206
- return this.root.height;
207
- },
208
- enumerable: false,
209
- configurable: true
210
- });
211
- Object.defineProperty(Gridview.prototype, "minimumWidth", {
212
- get: function () {
213
- return this.root.minimumWidth;
214
- },
215
- enumerable: false,
216
- configurable: true
217
- });
218
- Object.defineProperty(Gridview.prototype, "minimumHeight", {
219
- get: function () {
220
- return this.root.minimumHeight;
221
- },
222
- enumerable: false,
223
- configurable: true
224
- });
225
- Object.defineProperty(Gridview.prototype, "maximumWidth", {
226
- get: function () {
227
- return this.root.maximumHeight;
228
- },
229
- enumerable: false,
230
- configurable: true
231
- });
232
- Object.defineProperty(Gridview.prototype, "maximumHeight", {
233
- get: function () {
234
- return this.root.maximumHeight;
235
- },
236
- enumerable: false,
237
- configurable: true
238
- });
239
- Gridview.prototype.serialize = function () {
240
- var root = serializeBranchNode(this.getView(), this.orientation);
241
- return {
242
- root: root,
243
- width: this.width,
244
- height: this.height,
245
- orientation: this.orientation,
246
- };
247
- };
248
- Gridview.prototype.dispose = function () {
249
- this.disposable.dispose();
250
- this._onDidChange.dispose();
251
- this.root.dispose();
252
- this.element.remove();
253
- };
254
- Gridview.prototype.clear = function () {
255
- var orientation = this.root.orientation;
256
- this.root = new branchNode_1.BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
257
- };
258
- Gridview.prototype.deserialize = function (json, deserializer) {
259
- var orientation = json.orientation;
260
- var height = orientation === splitview_1.Orientation.VERTICAL ? json.height : json.width;
261
- this._deserialize(json.root, orientation, deserializer, height);
262
- };
263
- Gridview.prototype._deserialize = function (root, orientation, deserializer, orthogonalSize) {
264
- this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize, true);
265
- };
266
- Gridview.prototype._deserializeNode = function (node, orientation, deserializer, orthogonalSize, isRoot) {
267
- var _this = this;
268
- if (isRoot === void 0) { isRoot = false; }
269
- var result;
270
- if (node.type === 'branch') {
271
- var serializedChildren = node.data;
272
- var children = serializedChildren.map(function (serializedChild) {
273
- return {
274
- node: _this._deserializeNode(serializedChild, (0, exports.orthogonal)(orientation), deserializer, node.size),
275
- visible: serializedChild.visible,
276
- };
277
- });
278
- // HORIZONTAL => height=orthogonalsize width=size
279
- // VERTICAL => height=size width=orthogonalsize
280
- result = new branchNode_1.BranchNode(orientation, this.proportionalLayout, this.styles, isRoot ? orthogonalSize : node.size, isRoot ? node.size : orthogonalSize, children);
281
- }
282
- else {
283
- result = new leafNode_1.LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
284
- }
285
- return result;
286
- };
287
- Object.defineProperty(Gridview.prototype, "root", {
288
- get: function () {
289
- return this._root;
290
- },
291
- set: function (root) {
292
- var _this = this;
293
- var oldRoot = this._root;
294
- if (oldRoot) {
295
- oldRoot.dispose();
296
- this.element.removeChild(oldRoot.element);
297
- }
298
- this._root = root;
299
- this.element.appendChild(this._root.element);
300
- this.disposable.value = this._root.onDidChange(function (e) {
301
- _this._onDidChange.fire(e);
302
- });
303
- },
304
- enumerable: false,
305
- configurable: true
306
- });
307
- /**
308
- * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node
309
- * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node
310
- */
311
- Gridview.prototype.insertOrthogonalSplitviewAtRoot = function () {
312
- var _this = this;
313
- if (!this._root) {
314
- return;
315
- }
316
- var oldRoot = this.root;
317
- oldRoot.element.remove();
318
- this._root = new branchNode_1.BranchNode((0, exports.orthogonal)(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
319
- if (oldRoot.children.length === 1) {
320
- // can remove one level of redundant branching if there is only a single child
321
- var childReference = oldRoot.children[0];
322
- oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root
323
- oldRoot.dispose();
324
- this._root.addChild(childReference, splitview_1.Sizing.Distribute, 0);
325
- }
326
- else {
327
- this._root.addChild(oldRoot, splitview_1.Sizing.Distribute, 0);
328
- }
329
- this.element.appendChild(this._root.element);
330
- this.disposable.value = this._root.onDidChange(function (e) {
331
- _this._onDidChange.fire(e);
332
- });
333
- };
334
- Gridview.prototype.next = function (location) {
335
- return this.progmaticSelect(location);
336
- };
337
- Gridview.prototype.previous = function (location) {
338
- return this.progmaticSelect(location, true);
339
- };
340
- Gridview.prototype.getView = function (location) {
341
- var node = location ? this.getNode(location)[1] : this.root;
342
- return this._getViews(node, this.orientation);
343
- };
344
- Gridview.prototype._getViews = function (node, orientation, cachedVisibleSize) {
345
- var box = { height: node.height, width: node.width };
346
- if (node instanceof leafNode_1.LeafNode) {
347
- return { box: box, view: node.view, cachedVisibleSize: cachedVisibleSize };
348
- }
349
- var children = [];
350
- for (var i = 0; i < node.children.length; i++) {
351
- var child = node.children[i];
352
- var nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);
353
- children.push(this._getViews(child, (0, exports.orthogonal)(orientation), nodeCachedVisibleSize));
354
- }
355
- return { box: box, children: children };
356
- };
357
- Gridview.prototype.progmaticSelect = function (location, reverse) {
358
- if (reverse === void 0) { reverse = false; }
359
- var _a = __read(this.getNode(location), 2), path = _a[0], node = _a[1];
360
- if (!(node instanceof leafNode_1.LeafNode)) {
361
- throw new Error('invalid location');
362
- }
363
- for (var i = path.length - 1; i > -1; i--) {
364
- var n = path[i];
365
- var l = location[i] || 0;
366
- var canProgressInCurrentLevel = reverse
367
- ? l - 1 > -1
368
- : l + 1 < n.children.length;
369
- if (canProgressInCurrentLevel) {
370
- return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);
371
- }
372
- }
373
- return findLeaf(this.root, reverse);
374
- };
375
- Gridview.prototype.isViewVisible = function (location) {
376
- var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
377
- var _b = __read(this.getNode(rest), 2), parent = _b[1];
378
- if (!(parent instanceof branchNode_1.BranchNode)) {
379
- throw new Error('Invalid from location');
380
- }
381
- return parent.isChildVisible(index);
382
- };
383
- Gridview.prototype.setViewVisible = function (location, visible) {
384
- var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
385
- var _b = __read(this.getNode(rest), 2), parent = _b[1];
386
- if (!(parent instanceof branchNode_1.BranchNode)) {
387
- throw new Error('Invalid from location');
388
- }
389
- parent.setChildVisible(index, visible);
390
- };
391
- Gridview.prototype.moveView = function (parentLocation, from, to) {
392
- var _a = __read(this.getNode(parentLocation), 2), parent = _a[1];
393
- if (!(parent instanceof branchNode_1.BranchNode)) {
394
- throw new Error('Invalid location');
395
- }
396
- parent.moveChild(from, to);
397
- };
398
- Gridview.prototype.addView = function (view, size, location) {
399
- var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
400
- var _b = __read(this.getNode(rest), 2), pathToParent = _b[0], parent = _b[1];
401
- if (parent instanceof branchNode_1.BranchNode) {
402
- var node = new leafNode_1.LeafNode(view, (0, exports.orthogonal)(parent.orientation), parent.orthogonalSize);
403
- parent.addChild(node, size, index);
404
- }
405
- else {
406
- var _c = __read(__spreadArray([], __read(pathToParent), false).reverse()), grandParent = _c[0], _ = _c.slice(1);
407
- var _d = __read(__spreadArray([], __read(rest), false).reverse()), parentIndex = _d[0], __ = _d.slice(1);
408
- var newSiblingSize = 0;
409
- var newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);
410
- if (typeof newSiblingCachedVisibleSize === 'number') {
411
- newSiblingSize = splitview_1.Sizing.Invisible(newSiblingCachedVisibleSize);
412
- }
413
- grandParent.removeChild(parentIndex);
414
- var newParent = new branchNode_1.BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
415
- grandParent.addChild(newParent, parent.size, parentIndex);
416
- var newSibling = new leafNode_1.LeafNode(parent.view, grandParent.orientation, parent.size);
417
- newParent.addChild(newSibling, newSiblingSize, 0);
418
- if (typeof size !== 'number' && size.type === 'split') {
419
- size = { type: 'split', index: 0 };
420
- }
421
- var node = new leafNode_1.LeafNode(view, grandParent.orientation, parent.size);
422
- newParent.addChild(node, size, index);
423
- }
424
- };
425
- Gridview.prototype.remove = function (view, sizing) {
426
- var location = getGridLocation(view.element);
427
- return this.removeView(location, sizing);
428
- };
429
- Gridview.prototype.removeView = function (location, sizing) {
430
- var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
431
- var _b = __read(this.getNode(rest), 2), pathToParent = _b[0], parent = _b[1];
432
- if (!(parent instanceof branchNode_1.BranchNode)) {
433
- throw new Error('Invalid location');
434
- }
435
- var node = parent.children[index];
436
- if (!(node instanceof leafNode_1.LeafNode)) {
437
- throw new Error('Invalid location');
438
- }
439
- parent.removeChild(index, sizing);
440
- if (parent.children.length === 0) {
441
- return node.view;
442
- }
443
- if (parent.children.length > 1) {
444
- return node.view;
445
- }
446
- var sibling = parent.children[0];
447
- if (pathToParent.length === 0) {
448
- // parent is root
449
- if (sibling instanceof leafNode_1.LeafNode) {
450
- return node.view;
451
- }
452
- // we must promote sibling to be the new root
453
- parent.removeChild(0, sizing);
454
- this.root = sibling;
455
- return node.view;
456
- }
457
- var _c = __read(__spreadArray([], __read(pathToParent), false).reverse()), grandParent = _c[0], _ = _c.slice(1);
458
- var _d = __read(__spreadArray([], __read(rest), false).reverse()), parentIndex = _d[0], __ = _d.slice(1);
459
- var isSiblingVisible = parent.isChildVisible(0);
460
- parent.removeChild(0, sizing);
461
- var sizes = grandParent.children.map(function (_size, i) {
462
- return grandParent.getChildSize(i);
463
- });
464
- grandParent.removeChild(parentIndex, sizing);
465
- if (sibling instanceof branchNode_1.BranchNode) {
466
- sizes.splice.apply(sizes, __spreadArray([parentIndex,
467
- 1], __read(sibling.children.map(function (c) { return c.size; })), false));
468
- for (var i = 0; i < sibling.children.length; i++) {
469
- var child = sibling.children[i];
470
- grandParent.addChild(child, child.size, parentIndex + i);
471
- }
472
- }
473
- else {
474
- var newSibling = new leafNode_1.LeafNode(sibling.view, (0, exports.orthogonal)(sibling.orientation), sibling.size);
475
- var siblingSizing = isSiblingVisible
476
- ? sibling.orthogonalSize
477
- : splitview_1.Sizing.Invisible(sibling.orthogonalSize);
478
- grandParent.addChild(newSibling, siblingSizing, parentIndex);
479
- }
480
- for (var i = 0; i < sizes.length; i++) {
481
- grandParent.resizeChild(i, sizes[i]);
482
- }
483
- return node.view;
484
- };
485
- Gridview.prototype.layout = function (width, height) {
486
- var _a = __read(this.root.orientation === splitview_1.Orientation.HORIZONTAL
487
- ? [height, width]
488
- : [width, height], 2), size = _a[0], orthogonalSize = _a[1];
489
- this.root.layout(size, orthogonalSize);
490
- };
491
- Gridview.prototype.getNode = function (location, node, path) {
492
- if (node === void 0) { node = this.root; }
493
- if (path === void 0) { path = []; }
494
- if (location.length === 0) {
495
- return [path, node];
496
- }
497
- if (!(node instanceof branchNode_1.BranchNode)) {
498
- throw new Error('Invalid location');
499
- }
500
- var _a = __read(location), index = _a[0], rest = _a.slice(1);
501
- if (index < 0 || index >= node.children.length) {
502
- throw new Error('Invalid location');
503
- }
504
- var child = node.children[index];
505
- path.push(node);
506
- return this.getNode(rest, child, path);
507
- };
508
- return Gridview;
509
- }());
510
- exports.Gridview = Gridview;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Accreditation: This file is largly based upon the MIT licenced VSCode sourcecode found at:
4
+ * https://github.com/microsoft/vscode/tree/main/src/vs/base/browser/ui/grid
5
+ *--------------------------------------------------------------------------------------------*/
6
+ var __read = (this && this.__read) || function (o, n) {
7
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
8
+ if (!m) return o;
9
+ var i = m.call(o), r, ar = [], e;
10
+ try {
11
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
+ }
13
+ catch (error) { e = { error: error }; }
14
+ finally {
15
+ try {
16
+ if (r && !r.done && (m = i["return"])) m.call(i);
17
+ }
18
+ finally { if (e) throw e.error; }
19
+ }
20
+ return ar;
21
+ };
22
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
23
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
24
+ if (ar || !(i in from)) {
25
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
26
+ ar[i] = from[i];
27
+ }
28
+ }
29
+ return to.concat(ar || Array.prototype.slice.call(from));
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.Gridview = exports.isGridBranchNode = exports.orthogonal = exports.getLocationOrientation = exports.getDirectionOrientation = exports.getRelativeLocation = exports.getGridLocation = exports.indexInParent = void 0;
33
+ var splitview_1 = require("../splitview/splitview");
34
+ var array_1 = require("../array");
35
+ var leafNode_1 = require("./leafNode");
36
+ var branchNode_1 = require("./branchNode");
37
+ var events_1 = require("../events");
38
+ var lifecycle_1 = require("../lifecycle");
39
+ function findLeaf(candiateNode, last) {
40
+ if (candiateNode instanceof leafNode_1.LeafNode) {
41
+ return candiateNode;
42
+ }
43
+ if (candiateNode instanceof branchNode_1.BranchNode) {
44
+ return findLeaf(candiateNode.children[last ? candiateNode.children.length - 1 : 0], last);
45
+ }
46
+ throw new Error('invalid node');
47
+ }
48
+ function flipNode(node, size, orthogonalSize) {
49
+ if (node instanceof branchNode_1.BranchNode) {
50
+ var result = new branchNode_1.BranchNode((0, exports.orthogonal)(node.orientation), node.proportionalLayout, node.styles, size, orthogonalSize);
51
+ var totalSize = 0;
52
+ for (var i = node.children.length - 1; i >= 0; i--) {
53
+ var child = node.children[i];
54
+ var childSize = child instanceof branchNode_1.BranchNode ? child.orthogonalSize : child.size;
55
+ var newSize = node.size === 0
56
+ ? 0
57
+ : Math.round((size * childSize) / node.size);
58
+ totalSize += newSize;
59
+ // The last view to add should adjust to rounding errors
60
+ if (i === 0) {
61
+ newSize += size - totalSize;
62
+ }
63
+ result.addChild(flipNode(child, orthogonalSize, newSize), newSize, 0, true);
64
+ }
65
+ return result;
66
+ }
67
+ else {
68
+ return new leafNode_1.LeafNode(node.view, (0, exports.orthogonal)(node.orientation), orthogonalSize);
69
+ }
70
+ }
71
+ function indexInParent(element) {
72
+ var parentElement = element.parentElement;
73
+ if (!parentElement) {
74
+ throw new Error('Invalid grid element');
75
+ }
76
+ var el = parentElement.firstElementChild;
77
+ var index = 0;
78
+ while (el !== element && el !== parentElement.lastElementChild && el) {
79
+ el = el.nextElementSibling;
80
+ index++;
81
+ }
82
+ return index;
83
+ }
84
+ exports.indexInParent = indexInParent;
85
+ /**
86
+ * Find the grid location of a specific DOM element by traversing the parent
87
+ * chain and finding each child index on the way.
88
+ *
89
+ * This will break as soon as DOM structures of the Splitview or Gridview change.
90
+ */
91
+ function getGridLocation(element) {
92
+ var parentElement = element.parentElement;
93
+ if (!parentElement) {
94
+ throw new Error('Invalid grid element');
95
+ }
96
+ if (/\bgrid-view\b/.test(parentElement.className)) {
97
+ return [];
98
+ }
99
+ var index = indexInParent(parentElement);
100
+ var ancestor = parentElement.parentElement.parentElement.parentElement;
101
+ return __spreadArray(__spreadArray([], __read(getGridLocation(ancestor)), false), [index], false);
102
+ }
103
+ exports.getGridLocation = getGridLocation;
104
+ function getRelativeLocation(rootOrientation, location, direction) {
105
+ var orientation = getLocationOrientation(rootOrientation, location);
106
+ var directionOrientation = getDirectionOrientation(direction);
107
+ if (orientation === directionOrientation) {
108
+ var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], _index = _a[1];
109
+ var index = _index;
110
+ if (direction === 'right' || direction === 'bottom') {
111
+ index += 1;
112
+ }
113
+ return __spreadArray(__spreadArray([], __read(rest), false), [index], false);
114
+ }
115
+ else {
116
+ var index = direction === 'right' || direction === 'bottom' ? 1 : 0;
117
+ return __spreadArray(__spreadArray([], __read(location), false), [index], false);
118
+ }
119
+ }
120
+ exports.getRelativeLocation = getRelativeLocation;
121
+ function getDirectionOrientation(direction) {
122
+ return direction === 'top' || direction === 'bottom'
123
+ ? splitview_1.Orientation.VERTICAL
124
+ : splitview_1.Orientation.HORIZONTAL;
125
+ }
126
+ exports.getDirectionOrientation = getDirectionOrientation;
127
+ function getLocationOrientation(rootOrientation, location) {
128
+ return location.length % 2 === 0
129
+ ? (0, exports.orthogonal)(rootOrientation)
130
+ : rootOrientation;
131
+ }
132
+ exports.getLocationOrientation = getLocationOrientation;
133
+ var orthogonal = function (orientation) {
134
+ return orientation === splitview_1.Orientation.HORIZONTAL
135
+ ? splitview_1.Orientation.VERTICAL
136
+ : splitview_1.Orientation.HORIZONTAL;
137
+ };
138
+ exports.orthogonal = orthogonal;
139
+ function isGridBranchNode(node) {
140
+ return !!node.children;
141
+ }
142
+ exports.isGridBranchNode = isGridBranchNode;
143
+ var serializeBranchNode = function (node, orientation) {
144
+ var size = orientation === splitview_1.Orientation.VERTICAL ? node.box.width : node.box.height;
145
+ if (!isGridBranchNode(node)) {
146
+ if (typeof node.cachedVisibleSize === 'number') {
147
+ return {
148
+ type: 'leaf',
149
+ data: node.view.toJSON(),
150
+ size: node.cachedVisibleSize,
151
+ visible: false,
152
+ };
153
+ }
154
+ return { type: 'leaf', data: node.view.toJSON(), size: size };
155
+ }
156
+ return {
157
+ type: 'branch',
158
+ data: node.children.map(function (c) {
159
+ return serializeBranchNode(c, (0, exports.orthogonal)(orientation));
160
+ }),
161
+ size: size,
162
+ };
163
+ };
164
+ var Gridview = /** @class */ (function () {
165
+ function Gridview(proportionalLayout, styles, orientation) {
166
+ this.proportionalLayout = proportionalLayout;
167
+ this.styles = styles;
168
+ this.disposable = new lifecycle_1.MutableDisposable();
169
+ this._onDidChange = new events_1.Emitter();
170
+ this.onDidChange = this._onDidChange.event;
171
+ this.element = document.createElement('div');
172
+ this.element.className = 'grid-view';
173
+ this.root = new branchNode_1.BranchNode(orientation, proportionalLayout, styles, 0, 0);
174
+ }
175
+ Object.defineProperty(Gridview.prototype, "length", {
176
+ get: function () {
177
+ return this._root ? this._root.children.length : 0;
178
+ },
179
+ enumerable: false,
180
+ configurable: true
181
+ });
182
+ Object.defineProperty(Gridview.prototype, "orientation", {
183
+ get: function () {
184
+ return this.root.orientation;
185
+ },
186
+ set: function (orientation) {
187
+ if (this.root.orientation === orientation) {
188
+ return;
189
+ }
190
+ var _a = this.root, size = _a.size, orthogonalSize = _a.orthogonalSize;
191
+ this.root = flipNode(this.root, orthogonalSize, size);
192
+ this.root.layout(size, orthogonalSize);
193
+ },
194
+ enumerable: false,
195
+ configurable: true
196
+ });
197
+ Object.defineProperty(Gridview.prototype, "width", {
198
+ get: function () {
199
+ return this.root.width;
200
+ },
201
+ enumerable: false,
202
+ configurable: true
203
+ });
204
+ Object.defineProperty(Gridview.prototype, "height", {
205
+ get: function () {
206
+ return this.root.height;
207
+ },
208
+ enumerable: false,
209
+ configurable: true
210
+ });
211
+ Object.defineProperty(Gridview.prototype, "minimumWidth", {
212
+ get: function () {
213
+ return this.root.minimumWidth;
214
+ },
215
+ enumerable: false,
216
+ configurable: true
217
+ });
218
+ Object.defineProperty(Gridview.prototype, "minimumHeight", {
219
+ get: function () {
220
+ return this.root.minimumHeight;
221
+ },
222
+ enumerable: false,
223
+ configurable: true
224
+ });
225
+ Object.defineProperty(Gridview.prototype, "maximumWidth", {
226
+ get: function () {
227
+ return this.root.maximumHeight;
228
+ },
229
+ enumerable: false,
230
+ configurable: true
231
+ });
232
+ Object.defineProperty(Gridview.prototype, "maximumHeight", {
233
+ get: function () {
234
+ return this.root.maximumHeight;
235
+ },
236
+ enumerable: false,
237
+ configurable: true
238
+ });
239
+ Gridview.prototype.serialize = function () {
240
+ var root = serializeBranchNode(this.getView(), this.orientation);
241
+ return {
242
+ root: root,
243
+ width: this.width,
244
+ height: this.height,
245
+ orientation: this.orientation,
246
+ };
247
+ };
248
+ Gridview.prototype.dispose = function () {
249
+ this.disposable.dispose();
250
+ this._onDidChange.dispose();
251
+ this.root.dispose();
252
+ this.element.remove();
253
+ };
254
+ Gridview.prototype.clear = function () {
255
+ var orientation = this.root.orientation;
256
+ this.root = new branchNode_1.BranchNode(orientation, this.proportionalLayout, this.styles, this.root.size, this.root.orthogonalSize);
257
+ };
258
+ Gridview.prototype.deserialize = function (json, deserializer) {
259
+ var orientation = json.orientation;
260
+ var height = orientation === splitview_1.Orientation.VERTICAL ? json.height : json.width;
261
+ this._deserialize(json.root, orientation, deserializer, height);
262
+ };
263
+ Gridview.prototype._deserialize = function (root, orientation, deserializer, orthogonalSize) {
264
+ this.root = this._deserializeNode(root, orientation, deserializer, orthogonalSize, true);
265
+ };
266
+ Gridview.prototype._deserializeNode = function (node, orientation, deserializer, orthogonalSize, isRoot) {
267
+ var _this = this;
268
+ if (isRoot === void 0) { isRoot = false; }
269
+ var result;
270
+ if (node.type === 'branch') {
271
+ var serializedChildren = node.data;
272
+ var children = serializedChildren.map(function (serializedChild) {
273
+ return {
274
+ node: _this._deserializeNode(serializedChild, (0, exports.orthogonal)(orientation), deserializer, node.size),
275
+ visible: serializedChild.visible,
276
+ };
277
+ });
278
+ // HORIZONTAL => height=orthogonalsize width=size
279
+ // VERTICAL => height=size width=orthogonalsize
280
+ result = new branchNode_1.BranchNode(orientation, this.proportionalLayout, this.styles, isRoot ? orthogonalSize : node.size, isRoot ? node.size : orthogonalSize, children);
281
+ }
282
+ else {
283
+ result = new leafNode_1.LeafNode(deserializer.fromJSON(node), orientation, orthogonalSize, node.size);
284
+ }
285
+ return result;
286
+ };
287
+ Object.defineProperty(Gridview.prototype, "root", {
288
+ get: function () {
289
+ return this._root;
290
+ },
291
+ set: function (root) {
292
+ var _this = this;
293
+ var oldRoot = this._root;
294
+ if (oldRoot) {
295
+ oldRoot.dispose();
296
+ this.element.removeChild(oldRoot.element);
297
+ }
298
+ this._root = root;
299
+ this.element.appendChild(this._root.element);
300
+ this.disposable.value = this._root.onDidChange(function (e) {
301
+ _this._onDidChange.fire(e);
302
+ });
303
+ },
304
+ enumerable: false,
305
+ configurable: true
306
+ });
307
+ /**
308
+ * If the root is orientated as a VERTICAL node then nest the existing root within a new HORIZIONTAL root node
309
+ * If the root is orientated as a HORIZONTAL node then nest the existing root within a new VERITCAL root node
310
+ */
311
+ Gridview.prototype.insertOrthogonalSplitviewAtRoot = function () {
312
+ var _this = this;
313
+ if (!this._root) {
314
+ return;
315
+ }
316
+ var oldRoot = this.root;
317
+ oldRoot.element.remove();
318
+ this._root = new branchNode_1.BranchNode((0, exports.orthogonal)(oldRoot.orientation), this.proportionalLayout, this.styles, this.root.orthogonalSize, this.root.size);
319
+ if (oldRoot.children.length === 1) {
320
+ // can remove one level of redundant branching if there is only a single child
321
+ var childReference = oldRoot.children[0];
322
+ oldRoot.removeChild(0); // remove to prevent disposal when disposing of unwanted root
323
+ oldRoot.dispose();
324
+ this._root.addChild(
325
+ /**
326
+ * the child node will have the same orientation as the new root since
327
+ * we are removing the inbetween node.
328
+ * the entire 'tree' must be flipped recursively to ensure that the orientation
329
+ * flips at each level
330
+ */
331
+ flipNode(childReference, childReference.orthogonalSize, childReference.size), splitview_1.Sizing.Distribute, 0);
332
+ }
333
+ else {
334
+ this._root.addChild(oldRoot, splitview_1.Sizing.Distribute, 0);
335
+ }
336
+ this.element.appendChild(this._root.element);
337
+ this.disposable.value = this._root.onDidChange(function (e) {
338
+ _this._onDidChange.fire(e);
339
+ });
340
+ };
341
+ Gridview.prototype.next = function (location) {
342
+ return this.progmaticSelect(location);
343
+ };
344
+ Gridview.prototype.previous = function (location) {
345
+ return this.progmaticSelect(location, true);
346
+ };
347
+ Gridview.prototype.getView = function (location) {
348
+ var node = location ? this.getNode(location)[1] : this.root;
349
+ return this._getViews(node, this.orientation);
350
+ };
351
+ Gridview.prototype._getViews = function (node, orientation, cachedVisibleSize) {
352
+ var box = { height: node.height, width: node.width };
353
+ if (node instanceof leafNode_1.LeafNode) {
354
+ return { box: box, view: node.view, cachedVisibleSize: cachedVisibleSize };
355
+ }
356
+ var children = [];
357
+ for (var i = 0; i < node.children.length; i++) {
358
+ var child = node.children[i];
359
+ var nodeCachedVisibleSize = node.getChildCachedVisibleSize(i);
360
+ children.push(this._getViews(child, (0, exports.orthogonal)(orientation), nodeCachedVisibleSize));
361
+ }
362
+ return { box: box, children: children };
363
+ };
364
+ Gridview.prototype.progmaticSelect = function (location, reverse) {
365
+ if (reverse === void 0) { reverse = false; }
366
+ var _a = __read(this.getNode(location), 2), path = _a[0], node = _a[1];
367
+ if (!(node instanceof leafNode_1.LeafNode)) {
368
+ throw new Error('invalid location');
369
+ }
370
+ for (var i = path.length - 1; i > -1; i--) {
371
+ var n = path[i];
372
+ var l = location[i] || 0;
373
+ var canProgressInCurrentLevel = reverse
374
+ ? l - 1 > -1
375
+ : l + 1 < n.children.length;
376
+ if (canProgressInCurrentLevel) {
377
+ return findLeaf(n.children[reverse ? l - 1 : l + 1], reverse);
378
+ }
379
+ }
380
+ return findLeaf(this.root, reverse);
381
+ };
382
+ Gridview.prototype.isViewVisible = function (location) {
383
+ var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
384
+ var _b = __read(this.getNode(rest), 2), parent = _b[1];
385
+ if (!(parent instanceof branchNode_1.BranchNode)) {
386
+ throw new Error('Invalid from location');
387
+ }
388
+ return parent.isChildVisible(index);
389
+ };
390
+ Gridview.prototype.setViewVisible = function (location, visible) {
391
+ var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
392
+ var _b = __read(this.getNode(rest), 2), parent = _b[1];
393
+ if (!(parent instanceof branchNode_1.BranchNode)) {
394
+ throw new Error('Invalid from location');
395
+ }
396
+ parent.setChildVisible(index, visible);
397
+ };
398
+ Gridview.prototype.moveView = function (parentLocation, from, to) {
399
+ var _a = __read(this.getNode(parentLocation), 2), parent = _a[1];
400
+ if (!(parent instanceof branchNode_1.BranchNode)) {
401
+ throw new Error('Invalid location');
402
+ }
403
+ parent.moveChild(from, to);
404
+ };
405
+ Gridview.prototype.addView = function (view, size, location) {
406
+ var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
407
+ var _b = __read(this.getNode(rest), 2), pathToParent = _b[0], parent = _b[1];
408
+ if (parent instanceof branchNode_1.BranchNode) {
409
+ var node = new leafNode_1.LeafNode(view, (0, exports.orthogonal)(parent.orientation), parent.orthogonalSize);
410
+ parent.addChild(node, size, index);
411
+ }
412
+ else {
413
+ var _c = __read(__spreadArray([], __read(pathToParent), false).reverse()), grandParent = _c[0], _ = _c.slice(1);
414
+ var _d = __read(__spreadArray([], __read(rest), false).reverse()), parentIndex = _d[0], __ = _d.slice(1);
415
+ var newSiblingSize = 0;
416
+ var newSiblingCachedVisibleSize = grandParent.getChildCachedVisibleSize(parentIndex);
417
+ if (typeof newSiblingCachedVisibleSize === 'number') {
418
+ newSiblingSize = splitview_1.Sizing.Invisible(newSiblingCachedVisibleSize);
419
+ }
420
+ grandParent.removeChild(parentIndex);
421
+ var newParent = new branchNode_1.BranchNode(parent.orientation, this.proportionalLayout, this.styles, parent.size, parent.orthogonalSize);
422
+ grandParent.addChild(newParent, parent.size, parentIndex);
423
+ var newSibling = new leafNode_1.LeafNode(parent.view, grandParent.orientation, parent.size);
424
+ newParent.addChild(newSibling, newSiblingSize, 0);
425
+ if (typeof size !== 'number' && size.type === 'split') {
426
+ size = { type: 'split', index: 0 };
427
+ }
428
+ var node = new leafNode_1.LeafNode(view, grandParent.orientation, parent.size);
429
+ newParent.addChild(node, size, index);
430
+ }
431
+ };
432
+ Gridview.prototype.remove = function (view, sizing) {
433
+ var location = getGridLocation(view.element);
434
+ return this.removeView(location, sizing);
435
+ };
436
+ Gridview.prototype.removeView = function (location, sizing) {
437
+ var _a = __read((0, array_1.tail)(location), 2), rest = _a[0], index = _a[1];
438
+ var _b = __read(this.getNode(rest), 2), pathToParent = _b[0], parent = _b[1];
439
+ if (!(parent instanceof branchNode_1.BranchNode)) {
440
+ throw new Error('Invalid location');
441
+ }
442
+ var node = parent.children[index];
443
+ if (!(node instanceof leafNode_1.LeafNode)) {
444
+ throw new Error('Invalid location');
445
+ }
446
+ parent.removeChild(index, sizing);
447
+ if (parent.children.length === 0) {
448
+ return node.view;
449
+ }
450
+ if (parent.children.length > 1) {
451
+ return node.view;
452
+ }
453
+ var sibling = parent.children[0];
454
+ if (pathToParent.length === 0) {
455
+ // parent is root
456
+ if (sibling instanceof leafNode_1.LeafNode) {
457
+ return node.view;
458
+ }
459
+ // we must promote sibling to be the new root
460
+ parent.removeChild(0, sizing);
461
+ this.root = sibling;
462
+ return node.view;
463
+ }
464
+ var _c = __read(__spreadArray([], __read(pathToParent), false).reverse()), grandParent = _c[0], _ = _c.slice(1);
465
+ var _d = __read(__spreadArray([], __read(rest), false).reverse()), parentIndex = _d[0], __ = _d.slice(1);
466
+ var isSiblingVisible = parent.isChildVisible(0);
467
+ parent.removeChild(0, sizing);
468
+ var sizes = grandParent.children.map(function (_size, i) {
469
+ return grandParent.getChildSize(i);
470
+ });
471
+ grandParent.removeChild(parentIndex, sizing);
472
+ if (sibling instanceof branchNode_1.BranchNode) {
473
+ sizes.splice.apply(sizes, __spreadArray([parentIndex,
474
+ 1], __read(sibling.children.map(function (c) { return c.size; })), false));
475
+ for (var i = 0; i < sibling.children.length; i++) {
476
+ var child = sibling.children[i];
477
+ grandParent.addChild(child, child.size, parentIndex + i);
478
+ }
479
+ }
480
+ else {
481
+ var newSibling = new leafNode_1.LeafNode(sibling.view, (0, exports.orthogonal)(sibling.orientation), sibling.size);
482
+ var siblingSizing = isSiblingVisible
483
+ ? sibling.orthogonalSize
484
+ : splitview_1.Sizing.Invisible(sibling.orthogonalSize);
485
+ grandParent.addChild(newSibling, siblingSizing, parentIndex);
486
+ }
487
+ for (var i = 0; i < sizes.length; i++) {
488
+ grandParent.resizeChild(i, sizes[i]);
489
+ }
490
+ return node.view;
491
+ };
492
+ Gridview.prototype.layout = function (width, height) {
493
+ var _a = __read(this.root.orientation === splitview_1.Orientation.HORIZONTAL
494
+ ? [height, width]
495
+ : [width, height], 2), size = _a[0], orthogonalSize = _a[1];
496
+ this.root.layout(size, orthogonalSize);
497
+ };
498
+ Gridview.prototype.getNode = function (location, node, path) {
499
+ if (node === void 0) { node = this.root; }
500
+ if (path === void 0) { path = []; }
501
+ if (location.length === 0) {
502
+ return [path, node];
503
+ }
504
+ if (!(node instanceof branchNode_1.BranchNode)) {
505
+ throw new Error('Invalid location');
506
+ }
507
+ var _a = __read(location), index = _a[0], rest = _a.slice(1);
508
+ if (index < 0 || index >= node.children.length) {
509
+ throw new Error('Invalid location');
510
+ }
511
+ var child = node.children[index];
512
+ path.push(node);
513
+ return this.getNode(rest, child, path);
514
+ };
515
+ return Gridview;
516
+ }());
517
+ exports.Gridview = Gridview;
511
518
  //# sourceMappingURL=gridview.js.map