flexlayout-react 0.8.11 → 0.8.13

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 (473) hide show
  1. package/README.md +16 -5
  2. package/declarations/Attribute.d.ts +25 -1
  3. package/declarations/AttributeDefinitions.d.ts +18 -1
  4. package/declarations/DockLocation.d.ts +22 -0
  5. package/declarations/I18nLabel.d.ts +2 -1
  6. package/declarations/Orientation.d.ts +4 -0
  7. package/declarations/Rect.d.ts +3 -0
  8. package/declarations/index.d.ts +1 -0
  9. package/declarations/model/BorderNode.d.ts +53 -0
  10. package/declarations/model/BorderSet.d.ts +28 -0
  11. package/declarations/model/IDraggable.d.ts +4 -0
  12. package/declarations/model/IDropTarget.d.ts +10 -0
  13. package/declarations/model/LayoutWindow.d.ts +16 -0
  14. package/declarations/model/Model.d.ts +55 -0
  15. package/declarations/model/Node.d.ts +61 -0
  16. package/declarations/model/RowNode.d.ts +67 -0
  17. package/declarations/model/TabNode.d.ts +79 -0
  18. package/declarations/model/TabSetNode.d.ts +60 -0
  19. package/declarations/model/Utils.d.ts +8 -0
  20. package/declarations/view/BorderButton.d.ts +13 -1
  21. package/declarations/view/BorderTab.d.ts +8 -0
  22. package/declarations/view/BorderTabSet.d.ts +10 -1
  23. package/declarations/view/DragContainer.d.ts +9 -1
  24. package/declarations/view/ErrorBoundary.d.ts +22 -1
  25. package/declarations/view/Icons.d.ts +1 -0
  26. package/declarations/view/Layout.d.ts +143 -1
  27. package/declarations/view/Overlay.d.ts +8 -1
  28. package/declarations/view/PopoutWindow.d.ts +14 -1
  29. package/declarations/view/PopupMenu.d.ts +12 -1
  30. package/declarations/view/Row.d.ts +9 -1
  31. package/declarations/view/Splitter.d.ts +14 -1
  32. package/declarations/view/Tab.d.ts +11 -1
  33. package/declarations/view/TabButton.d.ts +11 -1
  34. package/declarations/view/TabButtonStamp.d.ts +9 -1
  35. package/declarations/view/TabOverflowHook.d.ts +16 -1
  36. package/declarations/view/TabSet.d.ts +9 -1
  37. package/declarations/view/Utils.d.ts +13 -0
  38. package/lib/index.js +6410 -22
  39. package/package.json +34 -26
  40. package/ChangeLog.txt +0 -370
  41. package/declarations/DragDrop.d.ts +0 -15
  42. package/declarations/PopupMenu.d.ts +0 -1
  43. package/declarations/model/SplitterNode.d.ts +0 -5
  44. package/declarations/model/WindowLayout.d.ts +0 -24
  45. package/declarations/src/Attribute.d.ts +0 -1
  46. package/declarations/src/AttributeDefinitions.d.ts +0 -1
  47. package/declarations/src/DockLocation.d.ts +0 -12
  48. package/declarations/src/DropInfo.d.ts +0 -12
  49. package/declarations/src/I18nLabel.d.ts +0 -10
  50. package/declarations/src/Orientation.d.ts +0 -7
  51. package/declarations/src/PopupMenu.d.ts +0 -1
  52. package/declarations/src/Rect.d.ts +0 -31
  53. package/declarations/src/Types.d.ts +0 -92
  54. package/declarations/src/index.d.ts +0 -20
  55. package/declarations/src/model/Action.d.ts +0 -5
  56. package/declarations/src/model/Actions.d.ts +0 -110
  57. package/declarations/src/model/BorderNode.d.ts +0 -28
  58. package/declarations/src/model/BorderSet.d.ts +0 -3
  59. package/declarations/src/model/ICloseType.d.ts +0 -5
  60. package/declarations/src/model/IDraggable.d.ts +0 -2
  61. package/declarations/src/model/IDropTarget.d.ts +0 -2
  62. package/declarations/src/model/IJsonModel.d.ts +0 -153
  63. package/declarations/src/model/Model.d.ts +0 -98
  64. package/declarations/src/model/Node.d.ts +0 -16
  65. package/declarations/src/model/RowNode.d.ts +0 -11
  66. package/declarations/src/model/TabNode.d.ts +0 -36
  67. package/declarations/src/model/TabSetNode.d.ts +0 -37
  68. package/declarations/src/model/Utils.d.ts +0 -1
  69. package/declarations/src/view/BorderButton.d.ts +0 -1
  70. package/declarations/src/view/BorderTab.d.ts +0 -2
  71. package/declarations/src/view/BorderTabSet.d.ts +0 -1
  72. package/declarations/src/view/DragContainer.d.ts +0 -1
  73. package/declarations/src/view/ErrorBoundary.d.ts +0 -1
  74. package/declarations/src/view/FloatingWindow.d.ts +0 -1
  75. package/declarations/src/view/Icons.d.ts +0 -7
  76. package/declarations/src/view/Layout.d.ts +0 -113
  77. package/declarations/src/view/Overlay.d.ts +0 -1
  78. package/declarations/src/view/PopupMenu.d.ts +0 -1
  79. package/declarations/src/view/Row.d.ts +0 -1
  80. package/declarations/src/view/Splitter.d.ts +0 -1
  81. package/declarations/src/view/Tab.d.ts +0 -1
  82. package/declarations/src/view/TabButton.d.ts +0 -1
  83. package/declarations/src/view/TabButtonStamp.d.ts +0 -1
  84. package/declarations/src/view/TabOverflowHook.d.ts +0 -1
  85. package/declarations/src/view/TabSet.d.ts +0 -1
  86. package/declarations/src/view/Utils.d.ts +0 -4
  87. package/declarations/view/ExtendedResizeObserver.d.ts +0 -23
  88. package/declarations/view/FloatingWindow.d.ts +0 -1
  89. package/declarations/view/FloatingWindowTab.d.ts +0 -1
  90. package/declarations/view/TabFloating.d.ts +0 -1
  91. package/dist/flexlayout.js +0 -610
  92. package/dist/flexlayout_min.js +0 -2
  93. package/dist/flexlayout_min.js.LICENSE.txt +0 -29
  94. package/dist/src/Attribute.js +0 -43
  95. package/dist/src/Attribute.js.map +0 -1
  96. package/dist/src/AttributeDefinitions.js +0 -132
  97. package/dist/src/AttributeDefinitions.js.map +0 -1
  98. package/dist/src/DockLocation.js +0 -121
  99. package/dist/src/DockLocation.js.map +0 -1
  100. package/dist/src/DropInfo.js +0 -10
  101. package/dist/src/DropInfo.js.map +0 -1
  102. package/dist/src/I18nLabel.js +0 -14
  103. package/dist/src/I18nLabel.js.map +0 -1
  104. package/dist/src/Orientation.js +0 -23
  105. package/dist/src/Orientation.js.map +0 -1
  106. package/dist/src/Rect.js +0 -111
  107. package/dist/src/Rect.js.map +0 -1
  108. package/dist/src/Types.js +0 -95
  109. package/dist/src/Types.js.map +0 -1
  110. package/dist/src/index.js +0 -22
  111. package/dist/src/index.js.map +0 -1
  112. package/dist/src/model/Action.js +0 -7
  113. package/dist/src/model/Action.js.map +0 -1
  114. package/dist/src/model/Actions.js +0 -170
  115. package/dist/src/model/Actions.js.map +0 -1
  116. package/dist/src/model/BorderNode.js +0 -390
  117. package/dist/src/model/BorderNode.js.map +0 -1
  118. package/dist/src/model/BorderSet.js +0 -67
  119. package/dist/src/model/BorderSet.js.map +0 -1
  120. package/dist/src/model/ICloseType.js +0 -7
  121. package/dist/src/model/ICloseType.js.map +0 -1
  122. package/dist/src/model/IDraggable.js +0 -2
  123. package/dist/src/model/IDraggable.js.map +0 -1
  124. package/dist/src/model/IDropTarget.js +0 -2
  125. package/dist/src/model/IDropTarget.js.map +0 -1
  126. package/dist/src/model/IJsonModel.js +0 -2
  127. package/dist/src/model/IJsonModel.js.map +0 -1
  128. package/dist/src/model/LayoutWindow.js +0 -81
  129. package/dist/src/model/LayoutWindow.js.map +0 -1
  130. package/dist/src/model/Model.js +0 -608
  131. package/dist/src/model/Model.js.map +0 -1
  132. package/dist/src/model/Node.js +0 -218
  133. package/dist/src/model/Node.js.map +0 -1
  134. package/dist/src/model/RowNode.js +0 -492
  135. package/dist/src/model/RowNode.js.map +0 -1
  136. package/dist/src/model/TabNode.js +0 -293
  137. package/dist/src/model/TabNode.js.map +0 -1
  138. package/dist/src/model/TabSetNode.js +0 -469
  139. package/dist/src/model/TabSetNode.js.map +0 -1
  140. package/dist/src/model/Utils.js +0 -48
  141. package/dist/src/model/Utils.js.map +0 -1
  142. package/dist/src/view/BorderButton.js +0 -126
  143. package/dist/src/view/BorderButton.js.map +0 -1
  144. package/dist/src/view/BorderTab.js +0 -44
  145. package/dist/src/view/BorderTab.js.map +0 -1
  146. package/dist/src/view/BorderTabSet.js +0 -138
  147. package/dist/src/view/BorderTabSet.js.map +0 -1
  148. package/dist/src/view/DragContainer.js +0 -16
  149. package/dist/src/view/DragContainer.js.map +0 -1
  150. package/dist/src/view/ErrorBoundary.js +0 -24
  151. package/dist/src/view/ErrorBoundary.js.map +0 -1
  152. package/dist/src/view/Icons.js +0 -29
  153. package/dist/src/view/Icons.js.map +0 -1
  154. package/dist/src/view/Layout.js +0 -881
  155. package/dist/src/view/Layout.js.map +0 -1
  156. package/dist/src/view/Overlay.js +0 -9
  157. package/dist/src/view/Overlay.js.map +0 -1
  158. package/dist/src/view/PopoutWindow.js +0 -129
  159. package/dist/src/view/PopoutWindow.js.map +0 -1
  160. package/dist/src/view/PopupMenu.js +0 -89
  161. package/dist/src/view/PopupMenu.js.map +0 -1
  162. package/dist/src/view/Row.js +0 -46
  163. package/dist/src/view/Row.js.map +0 -1
  164. package/dist/src/view/SizeTracker.js +0 -12
  165. package/dist/src/view/SizeTracker.js.map +0 -1
  166. package/dist/src/view/Splitter.js +0 -192
  167. package/dist/src/view/Splitter.js.map +0 -1
  168. package/dist/src/view/Tab.js +0 -91
  169. package/dist/src/view/Tab.js.map +0 -1
  170. package/dist/src/view/TabButton.js +0 -124
  171. package/dist/src/view/TabButton.js.map +0 -1
  172. package/dist/src/view/TabButtonStamp.js +0 -15
  173. package/dist/src/view/TabButtonStamp.js.map +0 -1
  174. package/dist/src/view/TabOverflowHook.js +0 -266
  175. package/dist/src/view/TabOverflowHook.js.map +0 -1
  176. package/dist/src/view/TabSet.js +0 -256
  177. package/dist/src/view/TabSet.js.map +0 -1
  178. package/dist/src/view/Utils.js +0 -110
  179. package/dist/src/view/Utils.js.map +0 -1
  180. package/lib/Attribute.js +0 -43
  181. package/lib/Attribute.js.map +0 -1
  182. package/lib/AttributeDefinitions.js +0 -132
  183. package/lib/AttributeDefinitions.js.map +0 -1
  184. package/lib/DockLocation.js +0 -121
  185. package/lib/DockLocation.js.map +0 -1
  186. package/lib/DropInfo.js +0 -10
  187. package/lib/DropInfo.js.map +0 -1
  188. package/lib/I18nLabel.js +0 -14
  189. package/lib/I18nLabel.js.map +0 -1
  190. package/lib/Orientation.js +0 -23
  191. package/lib/Orientation.js.map +0 -1
  192. package/lib/Rect.js +0 -111
  193. package/lib/Rect.js.map +0 -1
  194. package/lib/Types.js +0 -95
  195. package/lib/Types.js.map +0 -1
  196. package/lib/index.js.map +0 -1
  197. package/lib/model/Action.js +0 -7
  198. package/lib/model/Action.js.map +0 -1
  199. package/lib/model/Actions.js +0 -170
  200. package/lib/model/Actions.js.map +0 -1
  201. package/lib/model/BorderNode.js +0 -390
  202. package/lib/model/BorderNode.js.map +0 -1
  203. package/lib/model/BorderSet.js +0 -67
  204. package/lib/model/BorderSet.js.map +0 -1
  205. package/lib/model/ICloseType.js +0 -7
  206. package/lib/model/ICloseType.js.map +0 -1
  207. package/lib/model/IDraggable.js +0 -2
  208. package/lib/model/IDraggable.js.map +0 -1
  209. package/lib/model/IDropTarget.js +0 -2
  210. package/lib/model/IDropTarget.js.map +0 -1
  211. package/lib/model/IJsonModel.js +0 -2
  212. package/lib/model/IJsonModel.js.map +0 -1
  213. package/lib/model/LayoutWindow.js +0 -81
  214. package/lib/model/LayoutWindow.js.map +0 -1
  215. package/lib/model/Model.js +0 -608
  216. package/lib/model/Model.js.map +0 -1
  217. package/lib/model/Node.js +0 -218
  218. package/lib/model/Node.js.map +0 -1
  219. package/lib/model/RowNode.js +0 -492
  220. package/lib/model/RowNode.js.map +0 -1
  221. package/lib/model/TabNode.js +0 -293
  222. package/lib/model/TabNode.js.map +0 -1
  223. package/lib/model/TabSetNode.js +0 -469
  224. package/lib/model/TabSetNode.js.map +0 -1
  225. package/lib/model/Utils.js +0 -48
  226. package/lib/model/Utils.js.map +0 -1
  227. package/lib/view/BorderButton.js +0 -126
  228. package/lib/view/BorderButton.js.map +0 -1
  229. package/lib/view/BorderTab.js +0 -56
  230. package/lib/view/BorderTab.js.map +0 -1
  231. package/lib/view/BorderTabSet.js +0 -138
  232. package/lib/view/BorderTabSet.js.map +0 -1
  233. package/lib/view/DragContainer.js +0 -16
  234. package/lib/view/DragContainer.js.map +0 -1
  235. package/lib/view/ErrorBoundary.js +0 -24
  236. package/lib/view/ErrorBoundary.js.map +0 -1
  237. package/lib/view/Icons.js +0 -29
  238. package/lib/view/Icons.js.map +0 -1
  239. package/lib/view/Layout.js +0 -881
  240. package/lib/view/Layout.js.map +0 -1
  241. package/lib/view/Overlay.js +0 -9
  242. package/lib/view/Overlay.js.map +0 -1
  243. package/lib/view/PopoutWindow.js +0 -129
  244. package/lib/view/PopoutWindow.js.map +0 -1
  245. package/lib/view/PopupMenu.js +0 -89
  246. package/lib/view/PopupMenu.js.map +0 -1
  247. package/lib/view/Row.js +0 -46
  248. package/lib/view/Row.js.map +0 -1
  249. package/lib/view/SizeTracker.js +0 -12
  250. package/lib/view/SizeTracker.js.map +0 -1
  251. package/lib/view/Splitter.js +0 -197
  252. package/lib/view/Splitter.js.map +0 -1
  253. package/lib/view/Tab.js +0 -91
  254. package/lib/view/Tab.js.map +0 -1
  255. package/lib/view/TabButton.js +0 -124
  256. package/lib/view/TabButton.js.map +0 -1
  257. package/lib/view/TabButtonStamp.js +0 -15
  258. package/lib/view/TabButtonStamp.js.map +0 -1
  259. package/lib/view/TabOverflowHook.js +0 -266
  260. package/lib/view/TabOverflowHook.js.map +0 -1
  261. package/lib/view/TabSet.js +0 -269
  262. package/lib/view/TabSet.js.map +0 -1
  263. package/lib/view/Utils.js +0 -110
  264. package/lib/view/Utils.js.map +0 -1
  265. package/playwright-report/data/01f8ff379b7b7c06b0f8dbd65cbd55e95f8ca470.zip +0 -0
  266. package/playwright-report/data/02a706b995d751dee8ac0429e29eafb796a23f96.zip +0 -0
  267. package/playwright-report/data/04468c5a7304bad1acbe32d3376bfc5038e172d9.zip +0 -0
  268. package/playwright-report/data/04ffe14721deea0c6402bb96c78055475f6cd687.zip +0 -0
  269. package/playwright-report/data/07e1bb8bd6407ceafa7a1051839d398f34b41a52.zip +0 -0
  270. package/playwright-report/data/0d17b99e2ddd975da4868f295b370a9fc9b55993.zip +0 -0
  271. package/playwright-report/data/108805618d29c7800d55d7dd8da36829fec366bd.zip +0 -0
  272. package/playwright-report/data/1271fd2bc76809c25b62351f4321b396e745a199.zip +0 -0
  273. package/playwright-report/data/16bd316f5e3e9ad6c9dc2a6a0388f3425c1a61d9.zip +0 -0
  274. package/playwright-report/data/1a1b06cebe59d981e21198164093230b0a1704fd.zip +0 -0
  275. package/playwright-report/data/1b3b6bba4aca415bc586b2a0abb18410af26fbf1.zip +0 -0
  276. package/playwright-report/data/1ce927369a55edf14ec99e0029d1a342cb0fcfa4.zip +0 -0
  277. package/playwright-report/data/20a694648a90f0a805a4397b73699142e5dd50c1.zip +0 -0
  278. package/playwright-report/data/211f1c8fc3f5d052d935906201f29a1e42a2fbd8.zip +0 -0
  279. package/playwright-report/data/2176124681e769fbba593a272e67331fd69e56ef.zip +0 -0
  280. package/playwright-report/data/2487db6273b09acd9a62a9ecfa8f1e411cc769df.zip +0 -0
  281. package/playwright-report/data/25abefed6606e15cac6dc83e3ea4e85896233020.zip +0 -0
  282. package/playwright-report/data/2752051b8593d432be1a623813f2dbee043dc959.zip +0 -0
  283. package/playwright-report/data/2d72001a7f57a11282fe741ca22501b34f7576a2.zip +0 -0
  284. package/playwright-report/data/308de4d252afe1db5aeda783ea3eaf09368aa812.zip +0 -0
  285. package/playwright-report/data/30f265807a34ee9bb2ddd931970be6f572a42ffe.zip +0 -0
  286. package/playwright-report/data/326599ace543d3340403f5eaa0f28ef73f7d3cfc.zip +0 -0
  287. package/playwright-report/data/3662fcf1839c6bb164e1aceea5e25b410bae6286.zip +0 -0
  288. package/playwright-report/data/38cdebbb090386af04f96f13bf45b2a23feb6cf5.zip +0 -0
  289. package/playwright-report/data/3b45c7876ca7a4208061f69fa0cce9f9e619557c.zip +0 -0
  290. package/playwright-report/data/3c6115f8ff03527f3b888e8c6626d086146bb961.zip +0 -0
  291. package/playwright-report/data/3e976a69f9bc188048c96969507a28fc5411da40.zip +0 -0
  292. package/playwright-report/data/420bd6c0ed97c53e6ee5108c11c337690ed9dd71.zip +0 -0
  293. package/playwright-report/data/424c925f1d020f7918c5b1d4e93a3aff4ffd0d35.zip +0 -0
  294. package/playwright-report/data/4459657c233583f0bb5f541ba2a56d14fc04324f.zip +0 -0
  295. package/playwright-report/data/45dbca16424f69b6af3f201fd918186e66e6a921.zip +0 -0
  296. package/playwright-report/data/4c7242437d15e34066b69d5f3a71e21f436d81bb.zip +0 -0
  297. package/playwright-report/data/56f84e2288e6485b68f0f78f79af97016d066eea.zip +0 -0
  298. package/playwright-report/data/679d4cfcb398dd2d19703be59bbf1de72f73fa3e.zip +0 -0
  299. package/playwright-report/data/686279f3ccdca1213fe91a9901f1ca469a41db4b.zip +0 -0
  300. package/playwright-report/data/69403980b98daeb052c732f3d984b7ccc51022aa.zip +0 -0
  301. package/playwright-report/data/6d91e10cd5dc95944881ea0f875bf0e531c63164.zip +0 -0
  302. package/playwright-report/data/6f362695f59905c3acdcafb6eeacfa4b068bc030.zip +0 -0
  303. package/playwright-report/data/71dd5897288168b0f7fb2e187f2b543e880733b1.zip +0 -0
  304. package/playwright-report/data/7540a41a9c123cffc1750447ccb69d9fb8cc8ba5.zip +0 -0
  305. package/playwright-report/data/78f8483a26c47ca761f43b1f142a9fb9d001b27e.zip +0 -0
  306. package/playwright-report/data/7e8bd5ba547094dcf303d450853b2f74f41749b2.zip +0 -0
  307. package/playwright-report/data/7fbec8e63ea2ee1702a94fe4d837067192e661f0.zip +0 -0
  308. package/playwright-report/data/87f2ea42a46cbd21813358d7d6e31d9999fca953.zip +0 -0
  309. package/playwright-report/data/8db527a1f9b753036cf63bb4afc96a765007fe82.zip +0 -0
  310. package/playwright-report/data/8e5ccd4bd56f3843f4e788c5e9842165221c2748.zip +0 -0
  311. package/playwright-report/data/8fc12e2795e02ee2ad773ec7be25f94b6ca697ed.zip +0 -0
  312. package/playwright-report/data/9d10ab1649ded4751d19014847e110b0b03ad126.zip +0 -0
  313. package/playwright-report/data/ab82c3994c6614fa6873fc92fd44ca78cb45f9d6.zip +0 -0
  314. package/playwright-report/data/ac554655d509fe64199a053e715def4ce4bbd618.zip +0 -0
  315. package/playwright-report/data/ad8e5a0cec5ec3369478099a58b7652c0dd636f1.zip +0 -0
  316. package/playwright-report/data/ae30baf5dea2dc0dd2ca87ffa08afb936b27fef1.zip +0 -0
  317. package/playwright-report/data/bc7631ffd4df693573a3233ec403a1f9cbcb00a9.zip +0 -0
  318. package/playwright-report/data/bcfe71e7532702969ecdde584a294907ed21525e.zip +0 -0
  319. package/playwright-report/data/bf020e09e20d0cd6e1b8aa82153e84f9d40c7f74.zip +0 -0
  320. package/playwright-report/data/c3452f499f82ef644c3d314626d3d9c762ff5c20.zip +0 -0
  321. package/playwright-report/data/c5dfbb00ea0965a4214f02cde22245958bb31c86.zip +0 -0
  322. package/playwright-report/data/c716ede7c5174d8a83653a6862605eca04783bad.zip +0 -0
  323. package/playwright-report/data/c95ca5869740edf6d1d627d120aa9ba26b1d3415.zip +0 -0
  324. package/playwright-report/data/cc17390169d327b4dfc2a9b3a8279e74ff975b1d.zip +0 -0
  325. package/playwright-report/data/d0ff6b9f342d792119f1513cc53c9f315a56251b.zip +0 -0
  326. package/playwright-report/data/d26377153bff611b5ba5a1148fc8858f7bb2cb7b.zip +0 -0
  327. package/playwright-report/data/dc0608de1b624a691f2f393bf450fc01591076ef.zip +0 -0
  328. package/playwright-report/data/dee4c585c248f4827601afbde02d3732761bdd8b.zip +0 -0
  329. package/playwright-report/data/e4cdfceef70735028de78f94f7e07a1e65fa317d.zip +0 -0
  330. package/playwright-report/data/e64d89424643af3f746a091f7567db49b0b45f3c.zip +0 -0
  331. package/playwright-report/data/e70483c7d13bb871f5c5b4aa54149172d58bf0c0.zip +0 -0
  332. package/playwright-report/data/e8333b653df262d800ee7b5329503b975d420e87.zip +0 -0
  333. package/playwright-report/data/ed1bd19a957a6165ba73a644af4959590b23eed9.zip +0 -0
  334. package/playwright-report/data/f35cf046cdf897abd96f318f79443407e58b8f0b.zip +0 -0
  335. package/playwright-report/data/f8793a7c69b939ac07422cf41aac45ebe4a86908.zip +0 -0
  336. package/playwright-report/data/fb2a383b96839380e90e0137363a574e665aed38.zip +0 -0
  337. package/playwright-report/data/fede8e774c66e329bdac055d6d67e73aa75b14fc.zip +0 -0
  338. package/playwright-report/index.html +0 -71
  339. package/playwright-report/trace/assets/codeMirrorModule-DpJ-EmBQ.js +0 -24
  340. package/playwright-report/trace/assets/defaultSettingsView-DTenqiGw.js +0 -259
  341. package/playwright-report/trace/codeMirrorModule.C3UTv-Ge.css +0 -1
  342. package/playwright-report/trace/codicon.DCmgc-ay.ttf +0 -0
  343. package/playwright-report/trace/defaultSettingsView.5fN5lw10.css +0 -1
  344. package/playwright-report/trace/index.CFOW-Ezb.css +0 -1
  345. package/playwright-report/trace/index.CUq7VgrV.js +0 -2
  346. package/playwright-report/trace/index.html +0 -43
  347. package/playwright-report/trace/playwright-logo.svg +0 -9
  348. package/playwright-report/trace/snapshot.html +0 -21
  349. package/playwright-report/trace/sw.bundle.js +0 -3
  350. package/playwright-report/trace/uiMode.BatfzHMG.css +0 -1
  351. package/playwright-report/trace/uiMode.CHJSAD7F.js +0 -5
  352. package/playwright-report/trace/uiMode.html +0 -17
  353. package/playwright-report/trace/xtermModule.Beg8tuEN.css +0 -32
  354. package/playwright.config.ts +0 -79
  355. package/screenshots/PlaywrightUI.png +0 -0
  356. package/src/Attribute.ts +0 -64
  357. package/src/AttributeDefinitions.ts +0 -144
  358. package/src/DockLocation.ts +0 -133
  359. package/src/DropInfo.ts +0 -20
  360. package/src/I18nLabel.ts +0 -12
  361. package/src/Orientation.ts +0 -28
  362. package/src/Rect.ts +0 -147
  363. package/src/Types.ts +0 -112
  364. package/src/index.ts +0 -23
  365. package/src/model/Action.ts +0 -9
  366. package/src/model/Actions.ts +0 -188
  367. package/src/model/BorderNode.ts +0 -458
  368. package/src/model/BorderSet.ts +0 -87
  369. package/src/model/ICloseType.ts +0 -5
  370. package/src/model/IDraggable.ts +0 -7
  371. package/src/model/IDropTarget.ts +0 -14
  372. package/src/model/IJsonModel.ts +0 -967
  373. package/src/model/LayoutWindow.ts +0 -119
  374. package/src/model/Model.ts +0 -704
  375. package/src/model/Node.ts +0 -280
  376. package/src/model/RowNode.ts +0 -559
  377. package/src/model/TabNode.ts +0 -424
  378. package/src/model/TabSetNode.ts +0 -592
  379. package/src/model/Utils.ts +0 -52
  380. package/src/view/BorderButton.tsx +0 -201
  381. package/src/view/BorderTab.tsx +0 -81
  382. package/src/view/BorderTabSet.tsx +0 -259
  383. package/src/view/DragContainer.tsx +0 -32
  384. package/src/view/ErrorBoundary.tsx +0 -42
  385. package/src/view/Icons.tsx +0 -57
  386. package/src/view/Layout.tsx +0 -1334
  387. package/src/view/Overlay.tsx +0 -21
  388. package/src/view/PopoutWindow.tsx +0 -152
  389. package/src/view/PopupMenu.tsx +0 -156
  390. package/src/view/Row.tsx +0 -68
  391. package/src/view/SizeTracker.tsx +0 -20
  392. package/src/view/Splitter.tsx +0 -262
  393. package/src/view/Tab.tsx +0 -128
  394. package/src/view/TabButton.tsx +0 -200
  395. package/src/view/TabButtonStamp.tsx +0 -42
  396. package/src/view/TabOverflowHook.tsx +0 -305
  397. package/src/view/TabSet.tsx +0 -475
  398. package/src/view/Utils.tsx +0 -135
  399. package/test-results/view-Add-methods-add-to-active-tabset-chromium/trace.zip +0 -0
  400. package/test-results/view-Add-methods-drag-to-border-chromium/trace.zip +0 -0
  401. package/test-results/view-Add-methods-drag-to-tabset-chromium/trace.zip +0 -0
  402. package/test-results/view-Delete-methods-delete-all-tabs-chromium/trace.zip +0 -0
  403. package/test-results/view-Delete-methods-delete-tab-chromium/trace.zip +0 -0
  404. package/test-results/view-Extended-App-onRenderTab-chromium/trace.zip +0 -0
  405. package/test-results/view-Extended-App-onRenderTab-in-border-chromium/trace.zip +0 -0
  406. package/test-results/view-Extended-App-onRenderTabSet-chromium/trace.zip +0 -0
  407. package/test-results/view-Extended-App-onRenderTabSet-for-border-chromium/trace.zip +0 -0
  408. package/test-results/view-Extended-App-onRenderTabSet-sticky-buttons-chromium/trace.zip +0 -0
  409. package/test-results/view-Extended-layout2-borders-autohide-left-chromium/trace.zip +0 -0
  410. package/test-results/view-Extended-layout2-borders-autohide-top-chromium/trace.zip +0 -0
  411. package/test-results/view-Extended-layout2-check-border-bottom-min-size-chromium/trace.zip +0 -0
  412. package/test-results/view-Extended-layout2-check-border-left-min-size-chromium/trace.zip +0 -0
  413. package/test-results/view-Extended-layout2-check-border-right-min-size-chromium/trace.zip +0 -0
  414. package/test-results/view-Extended-layout2-check-border-top-min-size-chromium/trace.zip +0 -0
  415. package/test-results/view-Extended-layout2-check-tabset-min-size-chromium/trace.zip +0 -0
  416. package/test-results/view-Extended-layout2-tabset-close-chromium/trace.zip +0 -0
  417. package/test-results/view-Maximize-methods-maximize-tabset-using-double-click-chromium/trace.zip +0 -0
  418. package/test-results/view-Maximize-methods-maximize-tabset-using-max-button-chromium/trace.zip +0 -0
  419. package/test-results/view-Others-click-on-tab-button-causes-tabset-activate-chromium/trace.zip +0 -0
  420. package/test-results/view-Others-click-on-tab-contents-causes-tabset-activate-chromium/trace.zip +0 -0
  421. package/test-results/view-Others-click-on-tabstrip-causes-tabset-activate-chromium/trace.zip +0 -0
  422. package/test-results/view-Others-rename-tab-cancelled-with-esc-chromium/trace.zip +0 -0
  423. package/test-results/view-Others-rename-tab-chromium/trace.zip +0 -0
  424. package/test-results/view-Overflow-menu-show-menu-chromium/trace.zip +0 -0
  425. package/test-results/view-Splitters-horizontal--5a358-ter-to-bottom-edge-and-back-chromium/trace.zip +0 -0
  426. package/test-results/view-Splitters-horizontal--f02d2-litter-to-top-edge-and-back-chromium/trace.zip +0 -0
  427. package/test-results/view-Splitters-horizontal-resizes-with-hsplitter-chromium/trace.zip +0 -0
  428. package/test-results/view-Splitters-vsplitter-chromium/trace.zip +0 -0
  429. package/test-results/view-Splitters-vsplitter-to-edge-chromium/trace.zip +0 -0
  430. package/test-results/view-Splitters-vsplitter-to-edge-left-chromium/trace.zip +0 -0
  431. package/test-results/view-borders-border-bottom-to-tab-chromium/trace.zip +0 -0
  432. package/test-results/view-borders-border-left-to-tab-chromium/trace.zip +0 -0
  433. package/test-results/view-borders-border-right-to-tab-chromium/trace.zip +0 -0
  434. package/test-results/view-borders-border-top-to-tab-chromium/trace.zip +0 -0
  435. package/test-results/view-borders-move-tab-in-border-bottom-chromium/trace.zip +0 -0
  436. package/test-results/view-borders-move-tab-in-border-left-chromium/trace.zip +0 -0
  437. package/test-results/view-borders-move-tab-in-border-right-chromium/trace.zip +0 -0
  438. package/test-results/view-borders-move-tab-in-border-top-chromium/trace.zip +0 -0
  439. package/test-results/view-borders-tab-to-border-bottom-chromium/trace.zip +0 -0
  440. package/test-results/view-borders-tab-to-border-left-chromium/trace.zip +0 -0
  441. package/test-results/view-borders-tab-to-border-right-chromium/trace.zip +0 -0
  442. package/test-results/view-borders-tab-to-border-top-chromium/trace.zip +0 -0
  443. package/test-results/view-borders-tab-to-open-border-bottom-center-chromium/trace.zip +0 -0
  444. package/test-results/view-borders-tab-to-open-border-bottom-chromium/trace.zip +0 -0
  445. package/test-results/view-borders-tab-to-open-border-left-center-chromium/trace.zip +0 -0
  446. package/test-results/view-borders-tab-to-open-border-left-chromium/trace.zip +0 -0
  447. package/test-results/view-borders-tab-to-open-border-right-center-chromium/trace.zip +0 -0
  448. package/test-results/view-borders-tab-to-open-border-right-chromium/trace.zip +0 -0
  449. package/test-results/view-borders-tab-to-open-border-top-center-chromium/trace.zip +0 -0
  450. package/test-results/view-borders-tab-to-open-border-top-chromium/trace.zip +0 -0
  451. package/test-results/view-drag-tests-two-tabs-tab-to-edge-chromium/trace.zip +0 -0
  452. package/test-results/view-drag-tests-two-tabs-tab-to-tab-bottom-chromium/trace.zip +0 -0
  453. package/test-results/view-drag-tests-two-tabs-tab-to-tab-center-chromium/trace.zip +0 -0
  454. package/test-results/view-drag-tests-two-tabs-tab-to-tab-left-chromium/trace.zip +0 -0
  455. package/test-results/view-drag-tests-two-tabs-tab-to-tab-right-chromium/trace.zip +0 -0
  456. package/test-results/view-drag-tests-two-tabs-tab-to-tab-top-chromium/trace.zip +0 -0
  457. package/test-results/view-tab-can-have-icon-chromium/trace.zip +0 -0
  458. package/test-results/view-three-tabs-move-tab-in-tabstrip-chromium/trace.zip +0 -0
  459. package/test-results/view-three-tabs-move-tabstrip-chromium/trace.zip +0 -0
  460. package/test-results/view-three-tabs-row-to-column-chromium/trace.zip +0 -0
  461. package/test-results/view-three-tabs-row-to-single-tabset-chromium/trace.zip +0 -0
  462. package/test-results/view-three-tabs-tab-to-edge-bottom-chromium/trace.zip +0 -0
  463. package/test-results/view-three-tabs-tab-to-edge-left-chromium/trace.zip +0 -0
  464. package/test-results/view-three-tabs-tab-to-edge-right-chromium/trace.zip +0 -0
  465. package/test-results/view-three-tabs-tab-to-edge-top-chromium/trace.zip +0 -0
  466. package/test-results/view-three-tabs-tab-to-tab-bottom-chromium/trace.zip +0 -0
  467. package/test-results/view-three-tabs-tab-to-tab-center-chromium/trace.zip +0 -0
  468. package/test-results/view-three-tabs-tab-to-tab-left-chromium/trace.zip +0 -0
  469. package/test-results/view-three-tabs-tab-to-tab-right-chromium/trace.zip +0 -0
  470. package/test-results/view-three-tabs-tab-to-tab-top-chromium/trace.zip +0 -0
  471. package/test-results/view-three-tabs-tab-to-tabset-chromium/trace.zip +0 -0
  472. package/tests-playwright/helpers.ts +0 -124
  473. package/tests-playwright/view.spec.ts +0 -911
@@ -1,21 +0,0 @@
1
- import { LayoutInternal } from "./Layout";
2
- import { CLASSES } from "../Types";
3
-
4
- /** @internal */
5
- export interface IOverlayProps {
6
- layout: LayoutInternal;
7
- show: boolean;
8
- }
9
-
10
- /** @internal */
11
- export const Overlay = (props: IOverlayProps) => {
12
- const {layout, show} = props;
13
-
14
- return (
15
- <div
16
- className={layout.getClassName(CLASSES.FLEXLAYOUT__LAYOUT_OVERLAY)}
17
- style={{display: (show ? "flex" : "none")
18
- }}
19
- />
20
- );
21
- }
@@ -1,152 +0,0 @@
1
- import * as React from "react";
2
- import { createPortal } from "react-dom";
3
- import { CLASSES } from "../Types";
4
- import { LayoutInternal } from "./Layout";
5
- import { LayoutWindow } from "../model/LayoutWindow";
6
-
7
- /** @internal */
8
- export interface IPopoutWindowProps {
9
- title: string;
10
- layout: LayoutInternal;
11
- layoutWindow: LayoutWindow;
12
- url: string;
13
- onCloseWindow: (layoutWindow: LayoutWindow) => void;
14
- onSetWindow: (layoutWindow: LayoutWindow, window: Window) => void;
15
- }
16
-
17
- /** @internal */
18
- export const PopoutWindow = (props: React.PropsWithChildren<IPopoutWindowProps>) => {
19
- const { title, layout, layoutWindow, url, onCloseWindow, onSetWindow, children } = props; const popoutWindow = React.useRef<Window | null>(null);
20
- const [content, setContent] = React.useState<HTMLElement | undefined>(undefined);
21
- // map from main docs style -> this docs equivalent style
22
- const styleMap = new Map<HTMLElement, HTMLElement>();
23
-
24
- React.useLayoutEffect(() => {
25
- if (!popoutWindow.current) { // only create window once, even in strict mode
26
- const windowId = layoutWindow.windowId;
27
- const rect = layoutWindow.rect;
28
-
29
- popoutWindow.current = window.open(url, windowId, `left=${rect.x},top=${rect.y},width=${rect.width},height=${rect.height}`);
30
-
31
- if (popoutWindow.current) {
32
- layoutWindow.window = popoutWindow.current;
33
- onSetWindow(layoutWindow, popoutWindow.current);
34
-
35
- // listen for parent unloading to remove all popouts
36
- window.addEventListener("beforeunload", () => {
37
- if (popoutWindow.current) {
38
- const closedWindow = popoutWindow.current;
39
- popoutWindow.current = null; // need to set to null before close, since this will trigger popup window before unload...
40
- closedWindow.close();
41
- }
42
- });
43
-
44
- popoutWindow.current.addEventListener("load", () => {
45
- if (popoutWindow.current) {
46
- popoutWindow.current.focus();
47
-
48
- // note: resizeto must be before moveto in chrome otherwise the window will end up at 0,0
49
- popoutWindow.current.resizeTo(rect.width, rect.height);
50
- popoutWindow.current.moveTo(rect.x, rect.y);
51
-
52
- const popoutDocument = popoutWindow.current.document;
53
- popoutDocument.title = title;
54
- const popoutContent = popoutDocument.createElement("div");
55
- popoutContent.className = CLASSES.FLEXLAYOUT__FLOATING_WINDOW_CONTENT;
56
- popoutDocument.body.appendChild(popoutContent);
57
- copyStyles(popoutDocument, styleMap).then(() => {
58
- setContent(popoutContent); // re-render once link styles loaded
59
- });
60
-
61
- // listen for style mutations
62
- const observer = new MutationObserver((mutationsList: any) => handleStyleMutations(mutationsList, popoutDocument, styleMap));
63
- observer.observe(document.head, { childList: true });
64
-
65
- // listen for popout unloading (needs to be after load for safari)
66
- popoutWindow.current.addEventListener("beforeunload", () => {
67
- if (popoutWindow.current) {
68
- onCloseWindow(layoutWindow); // remove the layoutWindow in the model
69
- popoutWindow.current = null;
70
- observer.disconnect();
71
- }
72
- });
73
- }
74
- });
75
- } else {
76
- console.warn(`Unable to open window ${url}`);
77
- onCloseWindow(layoutWindow); // remove the layoutWindow in the model
78
- }
79
- }
80
- return () => {
81
- // only close popoutWindow if windowId has been removed from the model (ie this was due to model change)
82
- if (!layout.getModel().getwindowsMap().has(layoutWindow.windowId)) {
83
- popoutWindow.current?.close();
84
- popoutWindow.current = null;
85
- }
86
- }
87
- }, []);
88
-
89
- if (content !== undefined) {
90
- return createPortal(children, content!);
91
- } else {
92
- return null;
93
- }
94
- };
95
-
96
- function handleStyleMutations(mutationsList: any, popoutDocument: Document, styleMap: Map<HTMLElement, HTMLElement>) {
97
- for (const mutation of mutationsList) {
98
- if (mutation.type === 'childList') {
99
- for (const addition of mutation.addedNodes) {
100
- if (addition instanceof HTMLLinkElement || addition instanceof HTMLStyleElement) {
101
- copyStyle(popoutDocument, addition, styleMap);
102
- }
103
- }
104
- for (const removal of mutation.removedNodes) {
105
- if (removal instanceof HTMLLinkElement || removal instanceof HTMLStyleElement) {
106
- const popoutStyle = styleMap.get(removal);
107
- if (popoutStyle) {
108
- popoutDocument.head.removeChild(popoutStyle);
109
- }
110
- }
111
- }
112
- }
113
- }
114
- };
115
-
116
-
117
-
118
- /** @internal */
119
- function copyStyles(popoutDoc: Document, styleMap: Map<HTMLElement, HTMLElement>): Promise<boolean[]> {
120
- const promises: Promise<boolean>[] = [];
121
- const styleElements = document.querySelectorAll('style, link[rel="stylesheet"]') as NodeListOf<HTMLElement>
122
- for (const element of styleElements) {
123
- copyStyle(popoutDoc, element, styleMap, promises);
124
- }
125
- return Promise.all(promises);
126
- }
127
-
128
- /** @internal */
129
- function copyStyle(popoutDoc: Document, element: HTMLElement, styleMap: Map<HTMLElement, HTMLElement>, promises?: Promise<boolean>[]) {
130
- if (element instanceof HTMLLinkElement) {
131
- // prefer links since they will keep paths to images etc
132
- const linkElement = element.cloneNode(true) as HTMLLinkElement;
133
- popoutDoc.head.appendChild(linkElement);
134
- styleMap.set(element, linkElement);
135
-
136
- if (promises) {
137
- promises.push(new Promise((resolve) => {
138
- linkElement.onload = () => resolve(true);
139
- }));
140
- }
141
- } else if (element instanceof HTMLStyleElement) {
142
- try {
143
- const styleElement = element.cloneNode(true) as HTMLStyleElement;
144
- popoutDoc.head.appendChild(styleElement);
145
- styleMap.set(element, styleElement);
146
- } catch (e) {
147
- // can throw an exception
148
- }
149
- }
150
- }
151
-
152
-
@@ -1,156 +0,0 @@
1
- import * as React from "react";
2
- import { TabNode } from "../model/TabNode";
3
- import { CLASSES } from "../Types";
4
- import { LayoutInternal } from "./Layout";
5
- import { TabButtonStamp } from "./TabButtonStamp";
6
- import { TabSetNode } from "../model/TabSetNode";
7
- import { BorderNode } from "../model/BorderNode";
8
- import { useEffect, useRef } from "react";
9
-
10
- /** @internal */
11
- export function showPopup(
12
- triggerElement: Element,
13
- parentNode: TabSetNode | BorderNode,
14
- items: { index: number; node: TabNode }[],
15
- onSelect: (item: { index: number; node: TabNode }) => void,
16
- layout: LayoutInternal,
17
- ) {
18
- const layoutDiv = layout.getRootDiv();
19
- const classNameMapper = layout.getClassName;
20
- const currentDocument = triggerElement.ownerDocument;
21
- const triggerRect = triggerElement.getBoundingClientRect();
22
- const layoutRect = layoutDiv?.getBoundingClientRect() ?? new DOMRect(0, 0, 100, 100);
23
-
24
- const elm = currentDocument.createElement("div");
25
- elm.className = classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU_CONTAINER);
26
- if (triggerRect.left < layoutRect.left + layoutRect.width / 2) {
27
- elm.style.left = triggerRect.left - layoutRect.left + "px";
28
- } else {
29
- elm.style.right = layoutRect.right - triggerRect.right + "px";
30
- }
31
-
32
- if (triggerRect.top < layoutRect.top + layoutRect.height / 2) {
33
- elm.style.top = triggerRect.top - layoutRect.top + "px";
34
- } else {
35
- elm.style.bottom = layoutRect.bottom - triggerRect.bottom + "px";
36
- }
37
-
38
- layout.showOverlay(true);
39
-
40
- if (layoutDiv) {
41
- layoutDiv.appendChild(elm);
42
- }
43
-
44
- const onHide = () => {
45
- layout.hideControlInPortal();
46
- layout.showOverlay(false);
47
- if (layoutDiv) {
48
- layoutDiv.removeChild(elm);
49
- }
50
- elm.removeEventListener("pointerdown", onElementPointerDown);
51
- currentDocument.removeEventListener("pointerdown", onDocPointerDown);
52
- };
53
-
54
- const onElementPointerDown = (event: Event) => {
55
- event.stopPropagation();
56
- };
57
-
58
- const onDocPointerDown = (_event: Event) => {
59
- onHide();
60
- };
61
-
62
- elm.addEventListener("pointerdown", onElementPointerDown);
63
- currentDocument.addEventListener("pointerdown", onDocPointerDown);
64
-
65
- layout.showControlInPortal(<PopupMenu
66
- currentDocument={currentDocument}
67
- parentNode={parentNode}
68
- onSelect={onSelect}
69
- onHide={onHide}
70
- items={items}
71
- classNameMapper={classNameMapper}
72
- layout={layout}
73
- />, elm);
74
- }
75
-
76
- /** @internal */
77
- interface IPopupMenuProps {
78
- parentNode: TabSetNode | BorderNode;
79
- items: { index: number; node: TabNode }[];
80
- currentDocument: Document;
81
- onHide: () => void;
82
- onSelect: (item: { index: number; node: TabNode }) => void;
83
- classNameMapper: (defaultClassName: string) => string;
84
- layout: LayoutInternal;
85
- }
86
-
87
- /** @internal */
88
- const PopupMenu = (props: IPopupMenuProps) => {
89
- const { parentNode, items, onHide, onSelect, classNameMapper, layout } = props;
90
- const divRef = useRef<HTMLDivElement>(null);
91
-
92
- useEffect(() => {
93
- // Set focus when the component mounts
94
- if (divRef.current) {
95
- divRef.current.focus();
96
- }
97
- }, []);
98
-
99
- const onItemClick = (item: { index: number; node: TabNode }, event: React.MouseEvent<HTMLElement, MouseEvent>) => {
100
- onSelect(item);
101
- onHide();
102
- event.stopPropagation();
103
- };
104
-
105
- const onDragStart = (event: React.DragEvent<HTMLElement>, node: TabNode) => {
106
- event.stopPropagation(); // prevent starting a tabset drag as well
107
- layout.setDragNode(event.nativeEvent, node as TabNode);
108
- setTimeout(() => {
109
- onHide();
110
- }, 0);
111
-
112
- };
113
-
114
- const onDragEnd = (event: React.DragEvent<HTMLElement>) => {
115
- layout.clearDragMain();
116
- };
117
-
118
- const handleKeyDown = (event: React.KeyboardEvent) => {
119
- if (event.key === "Escape") {
120
- onHide();
121
- }
122
- };
123
-
124
- const itemElements = items.map((item, i) => {
125
- let classes = classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU_ITEM);
126
- if (parentNode.getSelected() === item.index) {
127
- classes += " " + classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU_ITEM__SELECTED);
128
- }
129
- return (
130
- <div key={item.index}
131
- className={classes}
132
- data-layout-path={"/popup-menu/tb" + i}
133
- onClick={(event) => onItemClick(item, event)}
134
- draggable={true}
135
- onDragStart={(e) => onDragStart(e, item.node)}
136
- onDragEnd={onDragEnd}
137
- title={item.node.getHelpText()} >
138
- <TabButtonStamp
139
- node={item.node}
140
- layout={layout}
141
- />
142
- </div>
143
- )
144
- }
145
- );
146
-
147
- return (
148
- <div className={classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU)}
149
- ref={divRef}
150
- tabIndex={0} // Make div focusable
151
- onKeyDown={handleKeyDown}
152
- data-layout-path="/popup-menu"
153
- >
154
- {itemElements}
155
- </div>);
156
- };
package/src/view/Row.tsx DELETED
@@ -1,68 +0,0 @@
1
- import * as React from "react";
2
- import { RowNode } from "../model/RowNode";
3
- import { TabSetNode } from "../model/TabSetNode";
4
- import { CLASSES } from "../Types";
5
- import { LayoutInternal } from "./Layout";
6
- import { TabSet } from "./TabSet";
7
- import { Splitter } from "./Splitter";
8
- import { Orientation } from "../Orientation";
9
-
10
- /** @internal */
11
- export interface IRowProps {
12
- layout: LayoutInternal;
13
- node: RowNode;
14
- }
15
-
16
- /** @internal */
17
- export const Row = (props: IRowProps) => {
18
- const { layout, node } = props;
19
- const selfRef = React.useRef<HTMLDivElement | null>(null);
20
-
21
- const horizontal = node.getOrientation() === Orientation.HORZ;
22
-
23
- React.useLayoutEffect(() => {
24
- node.setRect(layout.getBoundingClientRect(selfRef.current!));
25
- });
26
-
27
- const items: React.ReactNode[] = [];
28
-
29
- let i = 0;
30
-
31
- for (const child of node.getChildren()) {
32
- if (i > 0) {
33
- items.push(<Splitter key={"splitter" + i} layout={layout} node={node} index={i} horizontal={horizontal} />)
34
- }
35
- if (child instanceof RowNode) {
36
- items.push(<Row key={child.getId()} layout={layout} node={child} />);
37
- } else if (child instanceof TabSetNode) {
38
- items.push(<TabSet key={child.getId()} layout={layout} node={child} />);
39
- }
40
- i++;
41
- }
42
-
43
- const style: Record<string, any> = {
44
- flexGrow: Math.max(1, node.getWeight()*1000), // NOTE: flex-grow cannot have values < 1 otherwise will not fill parent, need to normalize
45
- minWidth: node.getMinWidth(),
46
- minHeight: node.getMinHeight(),
47
- maxWidth: node.getMaxWidth(),
48
- maxHeight: node.getMaxHeight(),
49
- };
50
-
51
- if (horizontal) {
52
- style.flexDirection = "row";
53
- } else {
54
- style.flexDirection = "column";
55
- }
56
-
57
- return (
58
- <div
59
- ref={selfRef}
60
- className={layout.getClassName(CLASSES.FLEXLAYOUT__ROW)}
61
- style={style}
62
- >
63
- {items}
64
- </div>
65
- );
66
- };
67
-
68
-
@@ -1,20 +0,0 @@
1
- import * as React from "react";
2
- import { Rect } from "../Rect";
3
-
4
- export interface ISizeTrackerProps {
5
- rect: Rect;
6
- selected: boolean;
7
- forceRevision: number;
8
- tabsRevision: number;
9
- children: React.ReactNode;
10
- }
11
- // only render if size changed or forceRevision changed or tabsRevision changed
12
- export const SizeTracker = React.memo(({ children }: ISizeTrackerProps) => {
13
- return <>{children}</>
14
- }, (prevProps, nextProps) => {
15
- return prevProps.rect.equalSize(nextProps.rect) &&
16
- prevProps.selected === nextProps.selected &&
17
- prevProps.forceRevision === nextProps.forceRevision &&
18
- prevProps.tabsRevision === nextProps.tabsRevision
19
- });
20
-
@@ -1,262 +0,0 @@
1
- import * as React from "react";
2
- import { Actions } from "../model/Actions";
3
- import { BorderNode } from "../model/BorderNode";
4
- import { RowNode } from "../model/RowNode";
5
- import { Orientation } from "../Orientation";
6
- import { CLASSES } from "../Types";
7
- import { LayoutInternal } from "./Layout";
8
- import { enablePointerOnIFrames, isDesktop, startDrag } from "./Utils";
9
- import { Rect } from "../Rect";
10
-
11
- /** @internal */
12
- export interface ISplitterProps {
13
- layout: LayoutInternal;
14
- node: RowNode | BorderNode;
15
- index: number;
16
- horizontal: boolean;
17
- }
18
-
19
- /** @internal */
20
- export let splitterDragging:boolean = false; // used in tabset & borderTab
21
-
22
- /** @internal */
23
- export const Splitter = (props: ISplitterProps) => {
24
- const { layout, node, index, horizontal } = props;
25
-
26
- const [dragging, setDragging] = React.useState<boolean>(false);
27
- const selfRef = React.useRef<HTMLDivElement | null>(null);
28
- const extendedRef = React.useRef<HTMLDivElement | null>(null);
29
- const pBounds = React.useRef<number[]>([]);
30
- const outlineDiv = React.useRef<HTMLDivElement | undefined>(undefined);
31
- const handleDiv = React.useRef<HTMLDivElement | undefined>(undefined);
32
- const dragStartX = React.useRef<number>(0);
33
- const dragStartY = React.useRef<number>(0);
34
- const initalSizes = React.useRef<{ initialSizes: number[], sum: number, startPosition: number }>({ initialSizes: [], sum: 0, startPosition: 0 })
35
- // const throttleTimer = React.useRef<NodeJS.Timeout | undefined>(undefined);
36
-
37
- const size = node.getModel().getSplitterSize();
38
- let extra = node.getModel().getSplitterExtra();
39
-
40
- if (!isDesktop()) {
41
- // make hit test area on mobile at least 20px
42
- extra = Math.max(20, extra + size) - size;
43
- }
44
-
45
- React.useEffect(() => {
46
- // Android fix: must have passive touchstart handler to prevent default handling
47
- selfRef.current?.addEventListener("touchstart", onTouchStart, { passive: false });
48
- extendedRef.current?.addEventListener("touchstart", onTouchStart, { passive: false });
49
- return () => {
50
- selfRef.current?.removeEventListener("touchstart", onTouchStart);
51
- extendedRef.current?.removeEventListener("touchstart", onTouchStart);
52
- }
53
- }, []);
54
-
55
- const onTouchStart = (event: TouchEvent) => {
56
- event.preventDefault();
57
- event.stopImmediatePropagation();
58
- }
59
-
60
- const onPointerDown = (event: React.PointerEvent<HTMLElement>) => {
61
- event.stopPropagation();
62
- if (node instanceof RowNode) {
63
- initalSizes.current = node.getSplitterInitials(index);
64
- }
65
-
66
- enablePointerOnIFrames(false, layout.getCurrentDocument()!);
67
- startDrag(event.currentTarget.ownerDocument, event, onDragMove, onDragEnd, onDragCancel);
68
-
69
- pBounds.current = node.getSplitterBounds(index, true);
70
- const rootdiv = layout.getRootDiv();
71
- outlineDiv.current = layout.getCurrentDocument()!.createElement("div");
72
- outlineDiv.current.style.flexDirection = horizontal ? "row" : "column";
73
- outlineDiv.current.className = layout.getClassName(CLASSES.FLEXLAYOUT__SPLITTER_DRAG);
74
- outlineDiv.current.style.cursor = node.getOrientation() === Orientation.VERT ? "ns-resize" : "ew-resize";
75
-
76
- if (node.getModel().isSplitterEnableHandle()) {
77
- handleDiv.current = layout.getCurrentDocument()!.createElement("div");
78
- handleDiv.current.className = cm(CLASSES.FLEXLAYOUT__SPLITTER_HANDLE) + " " +
79
- (horizontal ? cm(CLASSES.FLEXLAYOUT__SPLITTER_HANDLE_HORZ) : cm(CLASSES.FLEXLAYOUT__SPLITTER_HANDLE_VERT));
80
- outlineDiv.current.appendChild(handleDiv.current);
81
- }
82
-
83
- const r = selfRef.current?.getBoundingClientRect()!;
84
- const rect = new Rect(
85
- r.x - layout.getDomRect()!.x,
86
- r.y - layout.getDomRect()!.y,
87
- r.width,
88
- r.height
89
- );
90
-
91
- dragStartX.current = event.clientX - r.x;
92
- dragStartY.current = event.clientY - r.y;
93
-
94
- rect.positionElement(outlineDiv.current);
95
- if (rootdiv) {
96
- rootdiv.appendChild(outlineDiv.current);
97
- }
98
-
99
- setDragging(true);
100
- splitterDragging = true;
101
- };
102
-
103
- const onDragCancel = () => {
104
- const rootdiv = layout.getRootDiv();
105
- if (rootdiv && outlineDiv.current) {
106
- rootdiv.removeChild(outlineDiv.current as Element);
107
- }
108
- outlineDiv.current = undefined;
109
- setDragging(false);
110
- splitterDragging = false;
111
- };
112
-
113
- const onDragMove = (x: number, y: number) => {
114
-
115
- if (outlineDiv.current) {
116
- const clientRect = layout.getDomRect();
117
- if (!clientRect) {
118
- return;
119
- }
120
- if (node.getOrientation() === Orientation.VERT) {
121
- outlineDiv.current!.style.top = getBoundPosition(y - clientRect.y - dragStartY.current) + "px";
122
- } else {
123
- outlineDiv.current!.style.left = getBoundPosition(x - clientRect.x - dragStartX.current) + "px";
124
- }
125
-
126
- if (layout.isRealtimeResize()) {
127
- updateLayout(true);
128
- }
129
- }
130
- };
131
-
132
- const onDragEnd = () => {
133
- if (outlineDiv.current) {
134
- updateLayout(false);
135
-
136
- const rootdiv = layout.getRootDiv();
137
- if (rootdiv && outlineDiv.current) {
138
- rootdiv.removeChild(outlineDiv.current as HTMLElement);
139
- }
140
- outlineDiv.current = undefined;
141
- }
142
- enablePointerOnIFrames(true, layout.getCurrentDocument()!);
143
- setDragging(false);
144
- splitterDragging = false;
145
- };
146
-
147
- const updateLayout = (realtime: boolean) => {
148
-
149
- const redraw = () => {
150
- if (outlineDiv.current) {
151
- let value = 0;
152
- if (node.getOrientation() === Orientation.VERT) {
153
- value = outlineDiv.current!.offsetTop;
154
- } else {
155
- value = outlineDiv.current!.offsetLeft;
156
- }
157
-
158
-
159
- if (node instanceof BorderNode) {
160
- const pos = (node as BorderNode).calculateSplit(node, value);
161
- layout.doAction(Actions.adjustBorderSplit(node.getId(), pos));
162
- } else {
163
- const init = initalSizes.current;
164
- const weights = node.calculateSplit(index, value, init.initialSizes, init.sum, init.startPosition);
165
- layout.doAction(Actions.adjustWeights(node.getId(), weights));
166
- }
167
- }
168
- };
169
-
170
- redraw();
171
- };
172
-
173
- const getBoundPosition = (p: number) => {
174
- const bounds = pBounds.current as number[];
175
- let rtn = p;
176
- if (p < bounds[0]) {
177
- rtn = bounds[0];
178
- }
179
- if (p > bounds[1]) {
180
- rtn = bounds[1];
181
- }
182
-
183
- return rtn;
184
- };
185
-
186
- const cm = layout.getClassName;
187
- const style: Record<string, any> = {
188
- cursor: horizontal ? "ew-resize" : "ns-resize",
189
- flexDirection: horizontal ? "column" : "row"
190
- };
191
- let className = cm(CLASSES.FLEXLAYOUT__SPLITTER) + " " + cm(CLASSES.FLEXLAYOUT__SPLITTER_ + node.getOrientation().getName());
192
-
193
- if (node instanceof BorderNode) {
194
- className += " " + cm(CLASSES.FLEXLAYOUT__SPLITTER_BORDER);
195
- } else {
196
- if (node.getModel().getMaximizedTabset(layout.getWindowId()) !== undefined) {
197
- style.display = "none";
198
- }
199
- }
200
-
201
- if (horizontal) {
202
- style.width = size + "px";
203
- style.minWidth = size + "px";
204
- } else {
205
- style.height = size + "px";
206
- style.minHeight = size + "px";
207
- }
208
-
209
- let handle;
210
- if (!dragging && node.getModel().isSplitterEnableHandle()) {
211
- handle = (
212
- <div
213
- className={cm(CLASSES.FLEXLAYOUT__SPLITTER_HANDLE) + " " +
214
- (horizontal ? cm(CLASSES.FLEXLAYOUT__SPLITTER_HANDLE_HORZ) : cm(CLASSES.FLEXLAYOUT__SPLITTER_HANDLE_VERT))
215
- }>
216
- </div>
217
- );
218
- }
219
-
220
- if (extra === 0) {
221
- return (<div
222
- className={className}
223
- style={style}
224
- ref={selfRef}
225
- data-layout-path={node.getPath() + "/s" + (index - 1)}
226
- onPointerDown={onPointerDown}>
227
- {handle}
228
- </div>);
229
- } else {
230
- // add extended transparent div for hit testing
231
-
232
- const style2: Record<string, any> = {};
233
- if (node.getOrientation() === Orientation.HORZ) {
234
- style2.height = "100%";
235
- style2.width = size + extra + "px";
236
- style2.cursor = "ew-resize";
237
- } else {
238
- style2.height = size + extra + "px";
239
- style2.width = "100%";
240
- style2.cursor = "ns-resize";
241
- }
242
-
243
- const className2 = cm(CLASSES.FLEXLAYOUT__SPLITTER_EXTRA);
244
-
245
- return (
246
- <div
247
- className={className}
248
- style={style}
249
- ref={selfRef}
250
- data-layout-path={node.getPath() + "/s" + (index - 1)}
251
- onPointerDown={onPointerDown}
252
- >
253
- <div
254
- style={style2}
255
- ref={extendedRef}
256
- className={className2}
257
- onPointerDown={onPointerDown}>
258
- </div>
259
- </div>);
260
- }
261
- };
262
-