@api-client/ui 0.0.4 → 0.0.5

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 (514) hide show
  1. package/dist/amf/lib/AmfParameters.js +0 -4
  2. package/dist/amf/lib/AmfParameters.js.map +1 -1
  3. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  4. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  5. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  6. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  7. package/dist/amf/store/AmfGraphStore.js +0 -2
  8. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  9. package/dist/amf/store/AmfStore.js +0 -7
  10. package/dist/amf/store/AmfStore.js.map +1 -1
  11. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  12. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  13. package/dist/bindings/base/PlatformBindings.js +6 -10
  14. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  15. package/dist/bindings/base/ProxyBindings.js +9 -6
  16. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  17. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  18. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  19. package/dist/bindings/base/StoreBindings.js +162 -170
  20. package/dist/bindings/base/StoreBindings.js.map +1 -1
  21. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  22. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  23. package/dist/bindings/web/WebFileBindings.js +7 -4
  24. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  25. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  26. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  27. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  28. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  29. package/dist/bindings/web/WebProxyBindings.js +5 -6
  30. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  31. package/dist/bindings/web/WebStoreBindings.js +39 -44
  32. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  33. package/dist/contextual-menu/ContextualMenu.js +10 -19
  34. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  35. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  36. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  37. package/dist/contextual-menu/MenuItem.js +0 -12
  38. package/dist/contextual-menu/MenuItem.js.map +1 -1
  39. package/dist/define/amf/api-annotation-document.js +1 -1
  40. package/dist/define/amf/api-annotation-document.js.map +1 -1
  41. package/dist/define/amf/api-authorization-editor.js +1 -1
  42. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  43. package/dist/define/amf/api-channel-document.js +1 -1
  44. package/dist/define/amf/api-channel-document.js.map +1 -1
  45. package/dist/define/amf/api-documentation-document.js +1 -1
  46. package/dist/define/amf/api-documentation-document.js.map +1 -1
  47. package/dist/define/amf/api-documentation.js +1 -1
  48. package/dist/define/amf/api-documentation.js.map +1 -1
  49. package/dist/define/amf/api-navigation.js +1 -1
  50. package/dist/define/amf/api-navigation.js.map +1 -1
  51. package/dist/define/amf/api-operation-document.js +1 -1
  52. package/dist/define/amf/api-operation-document.js.map +1 -1
  53. package/dist/define/amf/api-parameter-document.js +1 -1
  54. package/dist/define/amf/api-parameter-document.js.map +1 -1
  55. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  56. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  57. package/dist/define/amf/api-payload-document.js +1 -1
  58. package/dist/define/amf/api-payload-document.js.map +1 -1
  59. package/dist/define/amf/api-request-document.js +1 -1
  60. package/dist/define/amf/api-request-document.js.map +1 -1
  61. package/dist/define/amf/api-request-editor.js +1 -1
  62. package/dist/define/amf/api-request-editor.js.map +1 -1
  63. package/dist/define/amf/api-request.js +1 -1
  64. package/dist/define/amf/api-request.js.map +1 -1
  65. package/dist/define/amf/api-resource-document.js +1 -1
  66. package/dist/define/amf/api-resource-document.js.map +1 -1
  67. package/dist/define/amf/api-response-document.js +1 -1
  68. package/dist/define/amf/api-response-document.js.map +1 -1
  69. package/dist/define/amf/api-schema-document.js +1 -1
  70. package/dist/define/amf/api-schema-document.js.map +1 -1
  71. package/dist/define/amf/api-security-document.js +1 -1
  72. package/dist/define/amf/api-security-document.js.map +1 -1
  73. package/dist/define/amf/api-security-requirement-document.js +1 -1
  74. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  75. package/dist/define/amf/api-server-picker.js +1 -1
  76. package/dist/define/amf/api-server-picker.js.map +1 -1
  77. package/dist/define/amf/api-summary.js +1 -1
  78. package/dist/define/amf/api-summary.js.map +1 -1
  79. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  80. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  81. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  82. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  83. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  84. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  85. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  86. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  87. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  88. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  89. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  90. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  91. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  92. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  93. package/dist/define/authorization/apikey-authorization.js +1 -1
  94. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  95. package/dist/define/authorization/basic-authorization.js +1 -1
  96. package/dist/define/authorization/basic-authorization.js.map +1 -1
  97. package/dist/define/authorization/bearer-authorization.js +1 -1
  98. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  99. package/dist/define/authorization/cc-authorization.js +1 -1
  100. package/dist/define/authorization/cc-authorization.js.map +1 -1
  101. package/dist/define/authorization/ntlm-authorization.js +1 -1
  102. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  103. package/dist/define/authorization/oauth2-authorization.js +1 -1
  104. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  105. package/dist/define/authorization/oidc-authorization.js +1 -1
  106. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  107. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  108. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  109. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  110. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  111. package/dist/define/dialog/rename-dialog.js +1 -1
  112. package/dist/define/dialog/rename-dialog.js.map +1 -1
  113. package/dist/define/files/share-file.js +1 -1
  114. package/dist/define/files/share-file.js.map +1 -1
  115. package/dist/define/har/har-viewer.js +1 -1
  116. package/dist/define/har/har-viewer.js.map +1 -1
  117. package/dist/define/highlight/marked-highlight.js +1 -1
  118. package/dist/define/highlight/marked-highlight.js.map +1 -1
  119. package/dist/define/highlight/prism-highlight.js +1 -1
  120. package/dist/define/highlight/prism-highlight.js.map +1 -1
  121. package/dist/define/http/http-assertions.js +1 -1
  122. package/dist/define/http/http-assertions.js.map +1 -1
  123. package/dist/define/http/http-body-editor.js +1 -1
  124. package/dist/define/http/http-body-editor.js.map +1 -1
  125. package/dist/define/http/http-body-multipart-editor.js +1 -1
  126. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  127. package/dist/define/http/http-body-text-editor.js +1 -1
  128. package/dist/define/http/http-body-text-editor.js.map +1 -1
  129. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  130. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  131. package/dist/define/http/http-headers-form.js +1 -1
  132. package/dist/define/http/http-headers-form.js.map +1 -1
  133. package/dist/define/http/http-log-body.js +1 -1
  134. package/dist/define/http/http-log-body.js.map +1 -1
  135. package/dist/define/http/http-log-headers.js +1 -1
  136. package/dist/define/http/http-log-headers.js.map +1 -1
  137. package/dist/define/http/http-log-timings.js +1 -1
  138. package/dist/define/http/http-log-timings.js.map +1 -1
  139. package/dist/define/http/http-request-config.js +1 -1
  140. package/dist/define/http/http-request-config.js.map +1 -1
  141. package/dist/define/http/http-request-editor.js +1 -1
  142. package/dist/define/http/http-request-editor.js.map +1 -1
  143. package/dist/define/http/http-request-log.js +1 -1
  144. package/dist/define/http/http-request-log.js.map +1 -1
  145. package/dist/define/http/http-snippets.js +1 -1
  146. package/dist/define/http/http-snippets.js.map +1 -1
  147. package/dist/define/http/http-url-input.js +1 -1
  148. package/dist/define/http/http-url-input.js.map +1 -1
  149. package/dist/define/http/http-url-params-form.js +1 -1
  150. package/dist/define/http/http-url-params-form.js.map +1 -1
  151. package/dist/define/http-project/http-project-request-history.js +1 -1
  152. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  153. package/dist/define/http-project/http-project-request.js +2 -2
  154. package/dist/define/http-project/http-project-request.js.map +1 -1
  155. package/dist/define/http-project/project-navigation.js +1 -1
  156. package/dist/define/http-project/project-navigation.js.map +1 -1
  157. package/dist/define/http-project/project-run-report.js +1 -1
  158. package/dist/define/http-project/project-run-report.js.map +1 -1
  159. package/dist/define/http-project/project-runner.js +2 -2
  160. package/dist/define/http-project/project-runner.js.map +1 -1
  161. package/dist/define/layout/split-view.js +1 -1
  162. package/dist/define/layout/split-view.js.map +1 -1
  163. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  164. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  165. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  166. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  167. package/dist/define/ui/ui-button.js +1 -1
  168. package/dist/define/ui/ui-button.js.map +1 -1
  169. package/dist/define/ui/ui-chip.js +1 -1
  170. package/dist/define/ui/ui-chip.js.map +1 -1
  171. package/dist/define/ui/ui-collapse.js +1 -1
  172. package/dist/define/ui/ui-collapse.js.map +1 -1
  173. package/dist/define/ui/ui-dialog.js +1 -1
  174. package/dist/define/ui/ui-dialog.js.map +1 -1
  175. package/dist/define/ui/ui-dropdown-list.js +1 -1
  176. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  177. package/dist/define/ui/ui-icon-button.js +1 -1
  178. package/dist/define/ui/ui-icon-button.js.map +1 -1
  179. package/dist/define/ui/ui-icon.js +1 -1
  180. package/dist/define/ui/ui-icon.js.map +1 -1
  181. package/dist/define/ui/ui-list-item.js +1 -1
  182. package/dist/define/ui/ui-list-item.js.map +1 -1
  183. package/dist/define/ui/ui-list.js +1 -1
  184. package/dist/define/ui/ui-list.js.map +1 -1
  185. package/dist/define/ui/ui-listbox.js +1 -1
  186. package/dist/define/ui/ui-listbox.js.map +1 -1
  187. package/dist/define/ui/ui-progress.js +1 -1
  188. package/dist/define/ui/ui-progress.js.map +1 -1
  189. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  190. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  191. package/dist/define/ui/ui-segmented-button.js +1 -1
  192. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  193. package/dist/define/ui/ui-snackbar.js +1 -1
  194. package/dist/define/ui/ui-snackbar.js.map +1 -1
  195. package/dist/define/ui/ui-tab.js +1 -1
  196. package/dist/define/ui/ui-tab.js.map +1 -1
  197. package/dist/define/ui/ui-tabs.js +1 -1
  198. package/dist/define/ui/ui-tabs.js.map +1 -1
  199. package/dist/directives/data-attr.js +0 -1
  200. package/dist/directives/data-attr.js.map +1 -1
  201. package/dist/elements/ApiElement.js +0 -7
  202. package/dist/elements/ApiElement.js.map +1 -1
  203. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  204. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  205. package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
  206. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  207. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  208. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  209. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  210. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  211. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  212. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  213. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  214. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  215. package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
  216. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  217. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  218. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  219. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  220. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  221. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  222. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  223. package/dist/elements/amf/ApiRequest.element.js +0 -78
  224. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  225. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  226. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  227. package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
  228. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  229. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  230. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  231. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  232. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  233. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  234. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  235. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  236. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  237. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  238. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  239. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  240. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  241. package/dist/elements/amf/ApiSummary.element.js +0 -26
  242. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  243. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  244. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  245. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  246. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  247. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  248. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  249. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  250. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  251. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  252. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  253. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  254. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  255. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  256. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  257. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  258. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  259. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  260. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  261. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  262. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  263. package/dist/elements/authorization/ui/Authorization.js +18 -32
  264. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  265. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  266. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  267. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  268. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  269. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  270. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  271. package/dist/elements/code/HttpSnippets.js +9 -8
  272. package/dist/elements/code/HttpSnippets.js.map +1 -1
  273. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  274. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  275. package/dist/elements/dialog/Rename.js +0 -6
  276. package/dist/elements/dialog/Rename.js.map +1 -1
  277. package/dist/elements/environment/EnvironmentEditor.js +8 -11
  278. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  279. package/dist/elements/environment/ServerEditor.js +7 -45
  280. package/dist/elements/environment/ServerEditor.js.map +1 -1
  281. package/dist/elements/environment/VariablesEditor.js +7 -12
  282. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  283. package/dist/elements/files/ShareFile.js +19 -57
  284. package/dist/elements/files/ShareFile.js.map +1 -1
  285. package/dist/elements/har/HarViewer.js +6 -7
  286. package/dist/elements/har/HarViewer.js.map +1 -1
  287. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  288. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  289. package/dist/elements/highlight/PrismHighlight.js +9 -18
  290. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  291. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  292. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  293. package/dist/elements/http/BodyEditor.js +21 -33
  294. package/dist/elements/http/BodyEditor.js.map +1 -1
  295. package/dist/elements/http/BodyMultipartEditor.js +17 -18
  296. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  297. package/dist/elements/http/BodyTextEditor.js +2 -15
  298. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  299. package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
  300. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  301. package/dist/elements/http/HeadersForm.js +16 -17
  302. package/dist/elements/http/HeadersForm.js.map +1 -1
  303. package/dist/elements/http/HttpAssertions.js +8 -6
  304. package/dist/elements/http/HttpAssertions.js.map +1 -1
  305. package/dist/elements/http/LogBody.js +10 -21
  306. package/dist/elements/http/LogBody.js.map +1 -1
  307. package/dist/elements/http/LogHeaders.js +4 -23
  308. package/dist/elements/http/LogHeaders.js.map +1 -1
  309. package/dist/elements/http/LogTimings.js +11 -13
  310. package/dist/elements/http/LogTimings.js.map +1 -1
  311. package/dist/elements/http/RequestConfigElement.js +7 -4
  312. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  313. package/dist/elements/http/RequestEditor.js +54 -88
  314. package/dist/elements/http/RequestEditor.js.map +1 -1
  315. package/dist/elements/http/RequestLog.js +9 -14
  316. package/dist/elements/http/RequestLog.js.map +1 -1
  317. package/dist/elements/http/UrlInput.js +15 -25
  318. package/dist/elements/http/UrlInput.js.map +1 -1
  319. package/dist/elements/http/UrlParamsForm.js +16 -13
  320. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  321. package/dist/elements/layout/LayoutManager.js +16 -24
  322. package/dist/elements/layout/LayoutManager.js.map +1 -1
  323. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  324. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  325. package/dist/elements/layout/SplitItem.js +4 -12
  326. package/dist/elements/layout/SplitItem.js.map +1 -1
  327. package/dist/elements/layout/SplitLayout.js +18 -24
  328. package/dist/elements/layout/SplitLayout.js.map +1 -1
  329. package/dist/elements/layout/SplitPanel.js +10 -16
  330. package/dist/elements/layout/SplitPanel.js.map +1 -1
  331. package/dist/elements/layout/SplitView.js +17 -26
  332. package/dist/elements/layout/SplitView.js.map +1 -1
  333. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  334. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  335. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  336. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  337. package/dist/elements/project/HttpProjectRequest.js +0 -38
  338. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  339. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  340. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  341. package/dist/elements/project/ProjectNavigation.js +0 -4
  342. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  343. package/dist/elements/project/ProjectRunReport.js +4 -15
  344. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  345. package/dist/elements/project/ProjectRunner.js +2 -47
  346. package/dist/elements/project/ProjectRunner.js.map +1 -1
  347. package/dist/elements/schema-design/AssociationFormElement.js +0 -13
  348. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  349. package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
  350. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  351. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  352. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  353. package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
  354. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  355. package/dist/elements/schema-design/EntityFormElement.js +0 -18
  356. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  357. package/dist/elements/schema-design/PropertyFormElement.js +0 -12
  358. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  359. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  360. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  361. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  362. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  363. package/dist/elements/user/UserAvatarElement.js +0 -9
  364. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  365. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  366. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  367. package/dist/http-client/idb/Base.js +5 -10
  368. package/dist/http-client/idb/Base.js.map +1 -1
  369. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  370. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  371. package/dist/http-client/idb/MockedStore.js +3 -1
  372. package/dist/http-client/idb/MockedStore.js.map +1 -1
  373. package/dist/http-client/store/DataImportProcessor.js +0 -3
  374. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  375. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  376. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  377. package/dist/http-client/store/IdbThread.js +23 -20
  378. package/dist/http-client/store/IdbThread.js.map +1 -1
  379. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  380. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  381. package/dist/http-client/store/idb/IdbStore.js +0 -2
  382. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  383. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  384. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  385. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  386. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  387. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  388. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  389. package/dist/mixins/FileDropMixin.js +0 -1
  390. package/dist/mixins/FileDropMixin.js.map +1 -1
  391. package/dist/mixins/RenderableMixin.js +11 -15
  392. package/dist/mixins/RenderableMixin.js.map +1 -1
  393. package/dist/pages/ApplicationScreen.js +34 -55
  394. package/dist/pages/ApplicationScreen.js.map +1 -1
  395. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  396. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  397. package/dist/pages/api-client/Authenticate.screen.js +4 -6
  398. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  399. package/dist/pages/api-client/StoreConfig.screen.js +21 -37
  400. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  401. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  402. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  403. package/dist/pages/api-client/pages/Files.page.js +6 -27
  404. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  405. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  406. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  407. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  408. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  409. package/dist/pages/demo/DemoPage.js +13 -13
  410. package/dist/pages/demo/DemoPage.js.map +1 -1
  411. package/dist/pages/http-project/HttpProject.screen.js +25 -35
  412. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  413. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  414. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  415. package/dist/store/HttpStore.js +0 -3
  416. package/dist/store/HttpStore.js.map +1 -1
  417. package/dist/store/UserCache.js +5 -5
  418. package/dist/store/UserCache.js.map +1 -1
  419. package/dist/ui/UiElement.js +4 -5
  420. package/dist/ui/UiElement.js.map +1 -1
  421. package/dist/ui/button/SegmentedButton.js +9 -11
  422. package/dist/ui/button/SegmentedButton.js.map +1 -1
  423. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  424. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  425. package/dist/ui/button/UiButton.js +17 -39
  426. package/dist/ui/button/UiButton.js.map +1 -1
  427. package/dist/ui/button/UiIconButton.js +9 -35
  428. package/dist/ui/button/UiIconButton.js.map +1 -1
  429. package/dist/ui/chip/UiChip.js +9 -49
  430. package/dist/ui/chip/UiChip.js.map +1 -1
  431. package/dist/ui/collapse/UiCollapse.js +15 -20
  432. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  433. package/dist/ui/controllers/ActionController.js +143 -144
  434. package/dist/ui/controllers/ActionController.js.map +1 -1
  435. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  436. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  437. package/dist/ui/date/DateTime.js +3 -3
  438. package/dist/ui/date/DateTime.js.map +1 -1
  439. package/dist/ui/dialog/UiDialog.js +14 -38
  440. package/dist/ui/dialog/UiDialog.js.map +1 -1
  441. package/dist/ui/effects/ripple.js +20 -18
  442. package/dist/ui/effects/ripple.js.map +1 -1
  443. package/dist/ui/effects/rippleDirective.js +6 -7
  444. package/dist/ui/effects/rippleDirective.js.map +1 -1
  445. package/dist/ui/icons/UiIcon.js +4 -3
  446. package/dist/ui/icons/UiIcon.js.map +1 -1
  447. package/dist/ui/input/CheckboxElement.js +12 -10
  448. package/dist/ui/input/CheckboxElement.js.map +1 -1
  449. package/dist/ui/input/CheckedElement.js +2 -13
  450. package/dist/ui/input/CheckedElement.js.map +1 -1
  451. package/dist/ui/input/Input.js +169 -234
  452. package/dist/ui/input/Input.js.map +1 -1
  453. package/dist/ui/input/RadioElement.js +13 -11
  454. package/dist/ui/input/RadioElement.js.map +1 -1
  455. package/dist/ui/input/SwitchElement.js +0 -18
  456. package/dist/ui/input/SwitchElement.js.map +1 -1
  457. package/dist/ui/input/TextAreaElement.js +0 -15
  458. package/dist/ui/input/TextAreaElement.js.map +1 -1
  459. package/dist/ui/list/DividerElement.js +5 -10
  460. package/dist/ui/list/DividerElement.js.map +1 -1
  461. package/dist/ui/list/UiDropdownList.js +7 -48
  462. package/dist/ui/list/UiDropdownList.js.map +1 -1
  463. package/dist/ui/list/UiList.js +3 -15
  464. package/dist/ui/list/UiList.js.map +1 -1
  465. package/dist/ui/list/UiListItem.js +4 -17
  466. package/dist/ui/list/UiListItem.js.map +1 -1
  467. package/dist/ui/list/UiListbox.js +0 -1
  468. package/dist/ui/list/UiListbox.js.map +1 -1
  469. package/dist/ui/notification/SnackNotifications.js +1 -2
  470. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  471. package/dist/ui/notification/Snackbar.js +27 -51
  472. package/dist/ui/notification/Snackbar.js.map +1 -1
  473. package/dist/ui/progress/Range.js +24 -23
  474. package/dist/ui/progress/Range.js.map +1 -1
  475. package/dist/ui/progress/UiProgress.js +0 -11
  476. package/dist/ui/progress/UiProgress.js.map +1 -1
  477. package/dist/ui/table/DataTable.js +7 -12
  478. package/dist/ui/table/DataTable.js.map +1 -1
  479. package/dist/ui/tabs/UiTab.js +24 -25
  480. package/dist/ui/tabs/UiTab.js.map +1 -1
  481. package/dist/ui/tabs/UiTabs.js +21 -35
  482. package/dist/ui/tabs/UiTabs.js.map +1 -1
  483. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  484. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  485. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  486. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  487. package/dist/visualization/lib/Point.js +0 -2
  488. package/dist/visualization/lib/Point.js.map +1 -1
  489. package/dist/visualization/lib/SelectionManager.js +10 -11
  490. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  491. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  492. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  493. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  494. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  495. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  496. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  497. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  498. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  499. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  500. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  501. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  502. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  503. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  504. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  505. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  506. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  507. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  508. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  509. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  510. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  511. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  512. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  513. package/package.json +3 -2
  514. package/tsconfig.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SplitPanel.js","sourceRoot":"","sources":["../../../src/elements/layout/SplitPanel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-cycle */\nimport { html, TemplateResult } from \"lit\";\nimport { uuidV4 } from \"@api-client/core/build/browser.js\";\nimport { ISplitItem, SplitItem } from \"./SplitItem.js\";\nimport { IPanelObject, LayoutType, PanelState, SplitCloseDirection, SplitDirection, SplitItemRenderCallback, SplitLayoutAddOptions, SplitPanelRemoveItemOptions, SplitPanelSplitOptions, SplitPanelTarget, SplitRegion } from \"./type.js\";\nimport { SplitLayout } from './SplitLayout.js';\nimport missingIndexes from \"../../lib/math/MissingIndexes.js\";\nimport '../../define/layout/split-view.js';\n\nexport interface ISplitPanel {\n /**\n * If already generated, the key of the panel.\n */\n key?: string;\n\n layout: SplitDirection;\n items?: IPanelObject[];\n /**\n * The item being rendered in the panel.\n * Note, this is the `key` of the item and not the `id` of the item.\n */\n selected?: string;\n}\n\n/**\n * The class represents a panel model for the split layout.\n * A panel can only hold other panels or layout items. When a panel\n * defines both, items are ignored.\n * \n * A panel can render ony one item at a time. TO view more items \n * the application needs to add panels to this panel and distribute items among them.\n */\nexport class SplitPanel {\n /**\n * The key used as an internal reference to the definitions map.\n */\n key = uuidV4();\n\n layout: SplitDirection = SplitDirection.horizontal;\n\n items: IPanelObject[] = [];\n\n /**\n * The item being rendered in the panel.\n * Note, this is the `key` of the item and not the `id` of the item.\n */\n selected?: string;\n\n /**\n * The current state of the panel.\n */\n state: PanelState = PanelState.idle;\n\n get hasPanels(): boolean {\n return this.items.some(i => i.type === LayoutType.panel);\n }\n\n get hasItems(): boolean {\n return this.items.some(i => i.type === LayoutType.item);\n }\n\n static fromLayout(manager: SplitLayout, layout = SplitDirection.horizontal): SplitPanel {\n const schema: ISplitPanel = {\n layout,\n };\n return new SplitPanel(manager, schema);\n }\n\n /**\n * @param manager A reference to the manager.\n * @param parentPanel A reference to a parent panel.\n */\n constructor(public manager: SplitLayout, schema?: ISplitPanel) {\n if (schema) {\n this.new(schema);\n }\n }\n\n new(schema: ISplitPanel): void {\n const { key = uuidV4(), layout = SplitDirection.horizontal, items, selected } = schema;\n this.key = key;\n this.layout = layout;\n if (Array.isArray(items)) {\n this.items = items.map(i => ({ ...i }));\n } else {\n this.items = [];\n }\n if (selected) {\n this.selected = selected;\n } else {\n this.selected = undefined;\n }\n this.state = PanelState.idle;\n }\n\n toJSON(): ISplitPanel {\n const result: ISplitPanel = {\n layout: this.layout,\n key: this.key,\n };\n if (Array.isArray(this.items) && this.items.length) {\n result.items = this.items.map(i => ({ ...i }));\n }\n if (this.selected) {\n result.selected = this.selected;\n }\n return result;\n }\n\n getParent(): SplitPanel | undefined {\n return this.manager.getParent(this.key);\n }\n\n /**\n * @returns True when the panel accepts drop events.\n */\n canDrop(): boolean {\n return !!this.items.length;\n }\n\n /**\n * @returns Returns a **copy** of the items array sorted by index.\n */\n sortedItems(): SplitItem[] {\n const { items, manager } = this;\n const splitItems: SplitItem[] = [];\n items.forEach((i) => {\n if (i.type === LayoutType.item) {\n const value = manager.findItem(i.key as string);\n if (value) {\n splitItems.push(value);\n }\n }\n });\n return [...splitItems].sort((a, b) => (a.index || 0) - (b.index || 0));\n }\n\n /**\n * Finds an index where to put an item.\n * This finds \"holes\" in items where an index is not set for a given position.\n * In this case the resulting index is the missing index.\n * Otherwise it returns next after the highest index.\n * \n * @returns The index of the next item\n */\n nextIndex(): number {\n const { items, manager } = this;\n if (!items.length) {\n return 0;\n }\n const set = new Set<number>();\n for (const item of items) {\n const value = manager.findItem(item.key as string);\n if (!value) {\n continue;\n }\n const { index = 0 } = value;\n set.add(index);\n }\n const sorted = [...set].sort();\n const missing = missingIndexes(sorted);\n if (missing.length) {\n return missing[0];\n }\n const max = sorted.pop() as number;\n return max + 1;\n }\n\n /**\n * Checks whether this panel contains an item\n * @param key The key of the item to test.\n * @returns true if the panel contains an item\n */\n hasItem(key: string): boolean {\n return this.items.some(i => i.key === key);\n }\n\n /**\n * Adds an item to the layout.\n * \n * @param item The item to add\n * @param opts Layout adding item options\n * @returns Whether a new item was added to the layout. false when the item is already in the layout panel.\n */\n addItem(item: ISplitItem | SplitItem, opts: SplitLayoutAddOptions = {}): SplitItem {\n const { region = SplitRegion.center } = opts;\n const hasItem = region === SplitRegion.center && this.hasItem(item.key);\n if (hasItem) {\n if (item.key !== this.selected) {\n this.selected = item.key;\n this.manager.notifyChange();\n this.updateView();\n }\n return this.manager.findItem(item.key) as SplitItem;\n }\n\n const hasOptionIndex = typeof opts.index === 'number';\n const hasItemIndex = typeof item.index === 'number';\n const hasIndex = hasOptionIndex || hasItemIndex;\n let index: number;\n if (hasOptionIndex) {\n index = opts.index as number;\n } else if (hasItemIndex) {\n index = item.index as number;\n } else {\n index = this.nextIndex();\n }\n if (region === SplitRegion.center || (!this.hasItems && !this.hasPanels)) {\n if (hasIndex) {\n this.increaseIndex(index); // + 1\n }\n const instance = (item as SplitItem).toJSON ? item as SplitItem : new SplitItem(this.manager, item);\n instance.index = index;\n this.items.push({\n type: LayoutType.item,\n key: item.key,\n });\n this.manager.definitions.set(item.key, {\n type: LayoutType.item,\n value: instance,\n });\n // this.manager.dispatchNameItem(instance); ???? it's a fresh definition, should have a current name.\n this.selected = item.key;\n this.manager.notifyChange();\n this.updateView();\n return instance;\n }\n\n let panel: SplitPanel;\n if (region === 'east') {\n [, panel] = this.split({\n layout: SplitDirection.horizontal,\n itemsTarget: SplitPanelTarget.first,\n noSideEffects: true,\n });\n } else if (region === 'west') {\n [panel] = this.split({\n layout: SplitDirection.horizontal,\n itemsTarget: SplitPanelTarget.other,\n noSideEffects: true,\n });\n } else if (region === 'south') {\n [, panel] = this.split({\n layout: SplitDirection.vertical,\n itemsTarget: SplitPanelTarget.first,\n noSideEffects: true,\n });\n } else {\n [panel] = this.split({\n layout: SplitDirection.vertical,\n itemsTarget: SplitPanelTarget.other,\n noSideEffects: true,\n });\n }\n // we don't call request update here because\n // the app has to redo the view rendering first as\n // the panel purpose has changed.\n return panel.addItem(item, { index });\n }\n\n /**\n * Splits this panel into 2 panels.\n * This to be used when the panel has no other panels. Only items are allowed.\n * It produces 2 new panels and moves the items to the first one leaving the other one available.\n */\n split(opts: SplitPanelSplitOptions = {}): SplitPanel[] {\n const { layout = SplitDirection.horizontal, itemsTarget = SplitPanelTarget.first } = opts;\n if (this.hasPanels) {\n throw new Error(`Invalid state. Panels can be split only when containing items only.`);\n }\n this.layout = layout;\n const { items, selected } = this;\n this.items = [];\n this.selected = undefined;\n\n const p1 = this.addPanel()\n const p2 = this.addPanel()\n\n\n\n\n // const p1 = new SplitPanel(this.manager);\n // const p2 = new SplitPanel(this.manager);\n // this.manager.definitions.set(p1.key, {\n // type: LayoutType.panel,\n // value: p1,\n // });\n // this.manager.definitions.set(p2.key, {\n // type: LayoutType.panel,\n // value: p2,\n // });\n // this.items.push({\n // type: LayoutType.panel,\n // key: p1.key,\n // });\n // this.items.push({\n // type: LayoutType.panel,\n // key: p2.key,\n // });\n\n const panel = itemsTarget === SplitPanelTarget.first ? p1 : p2;\n panel.items = items;\n panel.selected = selected;\n if (!opts.noSideEffects) {\n this.manager.notifyChange();\n }\n return [p1, p2];\n }\n\n unsplit(): void {\n const panelItem = this.items.find(i => i.type === LayoutType.panel);\n if (!panelItem) {\n throw new Error('Invalid state. This panel has no panels to unshift.');\n }\n const panel = this.manager.findPanel(panelItem.key);\n if (!panel) {\n throw new Error('Invalid state. This panel is not managed by the SplitManager.');\n }\n const { items, selected } = panel;\n this.items = items;\n this.selected = selected;\n this.manager.notifyChange();\n }\n\n /**\n * Decreases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n decreaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n if (item.type !== LayoutType.item) {\n continue;\n }\n const definition = this.manager.findItem(item.key);\n if (!definition) {\n continue;\n }\n if (!definition.index) {\n definition.index = 0;\n }\n const { index } = definition;\n if (index >= fromIndex && index > 0) {\n definition.index -= 1;\n }\n }\n }\n\n /**\n * Increases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n increaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n if (item.type !== LayoutType.item) {\n continue;\n }\n const definition = this.manager.findItem(item.key);\n if (!definition) {\n continue;\n }\n if (!definition.index) {\n definition.index = 0;\n }\n const { index } = definition;\n if (index >= fromIndex) {\n definition.index += 1;\n }\n }\n }\n\n /**\n * Removes an item from the layout\n * @param key The `key` of the item.\n * @returns The removed item, if any.\n */\n removeItem(key: string, opts: SplitPanelRemoveItemOptions = {}): SplitItem | undefined {\n const removed = this.manager.findItem(key);\n if (!removed) {\n return undefined;\n }\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return undefined;\n }\n const itemInfo = this.items[index];\n this.items.splice(index, 1);\n this.manager.definitions.delete(itemInfo.key);\n this.decreaseIndex(removed.index || 0);\n\n if (this.items.length === 0) {\n // remove panel (self)\n const parent = this.getParent();\n if (parent) {\n parent.removePanel(this.key);\n // Note, ignore `opts.noSideEffects` for tab close. It won't get dispatched elsewhere.\n this.manager.notifyTabClose(key);\n // no point doing the stuff below as the whole panel is removed.\n return removed;\n }\n }\n if (this.selected === key) {\n let nextKey: string | undefined;\n if (this.items[index]) {\n nextKey = this.items[index].key;\n } else if (this.items[index - 1]) {\n nextKey = this.items[index - 1].key;\n } else if (this.items.length) {\n const [item] = this.items;\n nextKey = item.key;\n }\n this.selected = nextKey;\n }\n if (!opts.noSideEffects) {\n this.manager.notifyTabClose(key);\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n return removed;\n }\n\n /**\n * @param key The key of the item to perform a relative operation from.\n * @param dir The direction to which close other items. Default to both directions leaving only the `key` item\n */\n removeRelative(key: string, dir: SplitCloseDirection = SplitCloseDirection.both): void {\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return;\n }\n // note, even though we keep indexes in the item, the logic actually\n // keeps track of them and orders the `items` accordingly.\n const item = this.items[index];\n let removed: IPanelObject[];\n if (dir === SplitCloseDirection.both) {\n removed = this.items.filter(i => i !== item);\n this.items = [item];\n this.selected = item.key;\n } else if (dir === SplitCloseDirection.left) {\n removed = this.items.slice(0, index);\n this.items = this.items.splice(index);\n this.selected = item.key;\n } else {\n removed = this.items.slice(index + 1);\n this.items = this.items.splice(0, index + 1);\n this.selected = item.key;\n }\n removed.forEach(i => {\n this.manager.definitions.delete(i.key);\n this.manager.notifyTabClose(i.key);\n });\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n\n removePanel(id: string, opts: SplitPanelRemoveItemOptions = {}): void {\n const index = this.items.findIndex(p => p.key === id);\n if (index < 0) {\n return;\n }\n const item = this.items[index];\n\n const panel = this.manager.findPanel(item.key) as SplitPanel;\n panel.clearItems();\n\n this.items.splice(index, 1);\n this.manager.definitions.delete(item.key);\n if (this.items.length === 1) {\n this.unsplit();\n }\n if (!opts.noSideEffects) {\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n }\n\n clearItems(opts?: SplitPanelRemoveItemOptions): void {\n const { items } = this;\n items.forEach((childItem) => {\n if (childItem.type === LayoutType.item) {\n this.removeItem(childItem.key, opts);\n } else {\n this.removePanel(childItem.key, opts);\n }\n });\n }\n\n /**\n * Moves an item to a new index.\n * \n * @param key The item key\n * @param toIndex The new index. When not set it moves the item to the end.\n */\n moveItem(key: string, toIndex?: number): void {\n const info = this.items.find(i => i.key === key);\n if (!info) {\n return;\n }\n const item = this.manager.findItem(info.key);\n if (!item) {\n return;\n }\n const hasIndex = typeof toIndex === 'number';\n if (hasIndex && item.index === toIndex) {\n return;\n }\n let hasTargetAtTarget = false;\n if (hasIndex) {\n hasTargetAtTarget = !!this.items[toIndex];\n }\n if (item.index !== undefined) {\n this.decreaseIndex(item.index);\n }\n const finalIndex = hasIndex ? toIndex as number : this.nextIndex();\n if (hasTargetAtTarget) {\n this.increaseIndex(finalIndex);\n }\n item.index = finalIndex;\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n\n updateView(): void {\n const layout = this.manager.findView(this.key);\n if (!layout) {\n return;\n }\n layout.requestUpdate();\n }\n\n addPanel(layout = SplitDirection.horizontal): SplitPanel {\n return this.manager.addPanel({ layout, parent: this.key });\n }\n\n panelTemplate(panel: SplitPanel, itemCallback: SplitItemRenderCallback): TemplateResult | undefined {\n const { layout, items, selected, manager } = panel;\n const renderPanels = items.filter(i => i.type === LayoutType.panel);\n const renderItems = items.filter(i => i.type === LayoutType.item);\n if (!renderPanels.length && !renderItems.length) {\n return undefined;\n }\n const { dragTypes, constrain } = manager.options;\n let content: (TemplateResult | undefined)[];\n \n if (renderPanels.length) {\n content = renderPanels.map((item) => {\n const targetPanel = manager.findPanel(item.key);\n return targetPanel && this.panelTemplate(targetPanel, itemCallback)\n });\n } else {\n content = renderItems.map((item) => {\n const targetItem = manager.findItem(item.key);\n return targetItem && this.itemTemplate(targetItem, targetItem.key === selected, itemCallback)\n });\n }\n const valid = content.filter(i => !!i);\n if (!valid.length) {\n return undefined;\n }\n return html`\n <split-view \n layout=\"${layout}\" \n .dragTypes=\"${dragTypes}\" \n .panel=\"${panel}\"\n .key=\"${panel.key}\"\n ?constrain=\"${constrain}\"\n >\n ${content}\n </split-view>\n `;\n }\n\n itemTemplate(item: SplitItem, visible: boolean, itemCallback: SplitItemRenderCallback): TemplateResult {\n return itemCallback(item, visible);\n }\n\n render(itemCallback: SplitItemRenderCallback): TemplateResult | undefined {\n return this.panelTemplate(this, itemCallback);\n }\n}\n"]}
1
+ {"version":3,"file":"SplitPanel.js","sourceRoot":"","sources":["../../../src/elements/layout/SplitPanel.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-cycle */\nimport { html, TemplateResult } from \"lit\";\nimport { uuidV4 } from \"@api-client/core/build/browser.js\";\nimport { ISplitItem, SplitItem } from \"./SplitItem.js\";\nimport { IPanelObject, LayoutType, PanelState, SplitCloseDirection, SplitDirection, SplitItemRenderCallback, SplitLayoutAddOptions, SplitPanelRemoveItemOptions, SplitPanelSplitOptions, SplitPanelTarget, SplitRegion } from \"./type.js\";\nimport { SplitLayout } from './SplitLayout.js';\nimport missingIndexes from \"../../lib/math/MissingIndexes.js\";\nimport '../../define/layout/split-view.js';\n\nexport interface ISplitPanel {\n /**\n * If already generated, the key of the panel.\n */\n key?: string;\n\n layout: SplitDirection;\n items?: IPanelObject[];\n /**\n * The item being rendered in the panel.\n * Note, this is the `key` of the item and not the `id` of the item.\n */\n selected?: string;\n}\n\n/**\n * The class represents a panel model for the split layout.\n * A panel can only hold other panels or layout items. When a panel\n * defines both, items are ignored.\n * \n * A panel can render ony one item at a time. TO view more items \n * the application needs to add panels to this panel and distribute items among them.\n */\nexport class SplitPanel {\n /**\n * The key used as an internal reference to the definitions map.\n */\n key = uuidV4();\n\n layout: SplitDirection = SplitDirection.horizontal;\n\n items: IPanelObject[] = [];\n\n /**\n * The item being rendered in the panel.\n * Note, this is the `key` of the item and not the `id` of the item.\n */\n selected?: string;\n\n /**\n * The current state of the panel.\n */\n state: PanelState = PanelState.idle;\n\n get hasPanels(): boolean {\n return this.items.some(i => i.type === LayoutType.panel);\n }\n\n get hasItems(): boolean {\n return this.items.some(i => i.type === LayoutType.item);\n }\n\n static fromLayout(manager: SplitLayout, layout = SplitDirection.horizontal): SplitPanel {\n const schema: ISplitPanel = {\n layout,\n };\n return new SplitPanel(manager, schema);\n }\n\n /**\n * @param manager A reference to the manager.\n * @param parentPanel A reference to a parent panel.\n */\n constructor(public manager: SplitLayout, schema?: ISplitPanel) {\n if (schema) {\n this.new(schema);\n }\n }\n\n new(schema: ISplitPanel): void {\n const { key = uuidV4(), layout = SplitDirection.horizontal, items, selected } = schema;\n this.key = key;\n this.layout = layout;\n if (Array.isArray(items)) {\n this.items = items.map(i => ({ ...i }));\n } else {\n this.items = [];\n }\n if (selected) {\n this.selected = selected;\n } else {\n this.selected = undefined;\n }\n this.state = PanelState.idle;\n }\n\n toJSON(): ISplitPanel {\n const result: ISplitPanel = {\n layout: this.layout,\n key: this.key,\n };\n if (Array.isArray(this.items) && this.items.length) {\n result.items = this.items.map(i => ({ ...i }));\n }\n if (this.selected) {\n result.selected = this.selected;\n }\n return result;\n }\n\n getParent(): SplitPanel | undefined {\n return this.manager.getParent(this.key);\n }\n\n /**\n * @returns True when the panel accepts drop events.\n */\n canDrop(): boolean {\n return !!this.items.length;\n }\n\n /**\n * @returns Returns a **copy** of the items array sorted by index.\n */\n sortedItems(): SplitItem[] {\n const { items, manager } = this;\n const splitItems: SplitItem[] = [];\n items.forEach((i) => {\n if (i.type === LayoutType.item) {\n const value = manager.findItem(i.key as string);\n if (value) {\n splitItems.push(value);\n }\n }\n });\n return [...splitItems].sort((a, b) => (a.index || 0) - (b.index || 0));\n }\n\n /**\n * Finds an index where to put an item.\n * This finds \"holes\" in items where an index is not set for a given position.\n * In this case the resulting index is the missing index.\n * Otherwise it returns next after the highest index.\n * \n * @returns The index of the next item\n */\n nextIndex(): number {\n const { items, manager } = this;\n if (!items.length) {\n return 0;\n }\n const set = new Set<number>();\n for (const item of items) {\n const value = manager.findItem(item.key as string);\n if (!value) {\n continue;\n }\n const { index = 0 } = value;\n set.add(index);\n }\n const sorted = [...set].sort();\n const missing = missingIndexes(sorted);\n if (missing.length) {\n return missing[0];\n }\n const max = sorted.pop() as number;\n return max + 1;\n }\n\n /**\n * Checks whether this panel contains an item\n * @param key The key of the item to test.\n * @returns true if the panel contains an item\n */\n hasItem(key: string): boolean {\n return this.items.some(i => i.key === key);\n }\n\n /**\n * Adds an item to the layout.\n * \n * @param item The item to add\n * @param opts Layout adding item options\n * @returns Whether a new item was added to the layout. false when the item is already in the layout panel.\n */\n addItem(item: ISplitItem | SplitItem, opts: SplitLayoutAddOptions = {}): SplitItem {\n const { region = SplitRegion.center } = opts;\n const hasItem = region === SplitRegion.center && this.hasItem(item.key);\n if (hasItem) {\n if (item.key !== this.selected) {\n this.selected = item.key;\n this.manager.notifyChange();\n this.updateView();\n }\n return this.manager.findItem(item.key) as SplitItem;\n }\n\n const hasOptionIndex = typeof opts.index === 'number';\n const hasItemIndex = typeof item.index === 'number';\n const hasIndex = hasOptionIndex || hasItemIndex;\n let index: number;\n if (hasOptionIndex) {\n index = opts.index as number;\n } else if (hasItemIndex) {\n index = item.index as number;\n } else {\n index = this.nextIndex();\n }\n if (region === SplitRegion.center || (!this.hasItems && !this.hasPanels)) {\n if (hasIndex) {\n this.increaseIndex(index); // + 1\n }\n const instance = (item as SplitItem).toJSON ? item as SplitItem : new SplitItem(this.manager, item);\n instance.index = index;\n this.items.push({\n type: LayoutType.item,\n key: item.key,\n });\n this.manager.definitions.set(item.key, {\n type: LayoutType.item,\n value: instance,\n });\n // this.manager.dispatchNameItem(instance); ???? it's a fresh definition, should have a current name.\n this.selected = item.key;\n this.manager.notifyChange();\n this.updateView();\n return instance;\n }\n\n let panel: SplitPanel;\n if (region === 'east') {\n [, panel] = this.split({\n layout: SplitDirection.horizontal,\n itemsTarget: SplitPanelTarget.first,\n noSideEffects: true,\n });\n } else if (region === 'west') {\n [panel] = this.split({\n layout: SplitDirection.horizontal,\n itemsTarget: SplitPanelTarget.other,\n noSideEffects: true,\n });\n } else if (region === 'south') {\n [, panel] = this.split({\n layout: SplitDirection.vertical,\n itemsTarget: SplitPanelTarget.first,\n noSideEffects: true,\n });\n } else {\n [panel] = this.split({\n layout: SplitDirection.vertical,\n itemsTarget: SplitPanelTarget.other,\n noSideEffects: true,\n });\n }\n // we don't call request update here because\n // the app has to redo the view rendering first as\n // the panel purpose has changed.\n return panel.addItem(item, { index });\n }\n\n /**\n * Splits this panel into 2 panels.\n * This to be used when the panel has no other panels. Only items are allowed.\n * It produces 2 new panels and moves the items to the first one leaving the other one available.\n */\n split(opts: SplitPanelSplitOptions = {}): SplitPanel[] {\n const { layout = SplitDirection.horizontal, itemsTarget = SplitPanelTarget.first } = opts;\n if (this.hasPanels) {\n throw new Error(`Invalid state. Panels can be split only when containing items only.`);\n }\n this.layout = layout;\n const { items, selected } = this;\n this.items = [];\n this.selected = undefined;\n\n const p1 = this.addPanel()\n const p2 = this.addPanel()\n\n\n\n\n // const p1 = new SplitPanel(this.manager);\n // const p2 = new SplitPanel(this.manager);\n // this.manager.definitions.set(p1.key, {\n // type: LayoutType.panel,\n // value: p1,\n // });\n // this.manager.definitions.set(p2.key, {\n // type: LayoutType.panel,\n // value: p2,\n // });\n // this.items.push({\n // type: LayoutType.panel,\n // key: p1.key,\n // });\n // this.items.push({\n // type: LayoutType.panel,\n // key: p2.key,\n // });\n\n const panel = itemsTarget === SplitPanelTarget.first ? p1 : p2;\n panel.items = items;\n panel.selected = selected;\n if (!opts.noSideEffects) {\n this.manager.notifyChange();\n }\n return [p1, p2];\n }\n\n unsplit(): void {\n const panelItem = this.items.find(i => i.type === LayoutType.panel);\n if (!panelItem) {\n throw new Error('Invalid state. This panel has no panels to unshift.');\n }\n const panel = this.manager.findPanel(panelItem.key);\n if (!panel) {\n throw new Error('Invalid state. This panel is not managed by the SplitManager.');\n }\n const { items, selected } = panel;\n this.items = items;\n this.selected = selected;\n this.manager.notifyChange();\n }\n\n /**\n * Decreases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n decreaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n if (item.type !== LayoutType.item) {\n continue;\n }\n const definition = this.manager.findItem(item.key);\n if (!definition) {\n continue;\n }\n if (!definition.index) {\n definition.index = 0;\n }\n const { index } = definition;\n if (index >= fromIndex && index > 0) {\n definition.index -= 1;\n }\n }\n }\n\n /**\n * Increases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n increaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n if (item.type !== LayoutType.item) {\n continue;\n }\n const definition = this.manager.findItem(item.key);\n if (!definition) {\n continue;\n }\n if (!definition.index) {\n definition.index = 0;\n }\n const { index } = definition;\n if (index >= fromIndex) {\n definition.index += 1;\n }\n }\n }\n\n /**\n * Removes an item from the layout\n * @param key The `key` of the item.\n * @returns The removed item, if any.\n */\n removeItem(key: string, opts: SplitPanelRemoveItemOptions = {}): SplitItem | undefined {\n const removed = this.manager.findItem(key);\n if (!removed) {\n return undefined;\n }\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return undefined;\n }\n const itemInfo = this.items[index];\n this.items.splice(index, 1);\n this.manager.definitions.delete(itemInfo.key);\n this.decreaseIndex(removed.index || 0);\n\n if (this.items.length === 0) {\n // remove panel (self)\n const parent = this.getParent();\n if (parent) {\n parent.removePanel(this.key);\n // Note, ignore `opts.noSideEffects` for tab close. It won't get dispatched elsewhere.\n this.manager.notifyTabClose(key);\n // no point doing the stuff below as the whole panel is removed.\n return removed;\n }\n }\n if (this.selected === key) {\n let nextKey: string | undefined;\n if (this.items[index]) {\n nextKey = this.items[index].key;\n } else if (this.items[index - 1]) {\n nextKey = this.items[index - 1].key;\n } else if (this.items.length) {\n const [item] = this.items;\n nextKey = item.key;\n }\n this.selected = nextKey;\n }\n if (!opts.noSideEffects) {\n this.manager.notifyTabClose(key);\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n return removed;\n }\n\n /**\n * @param key The key of the item to perform a relative operation from.\n * @param dir The direction to which close other items. Default to both directions leaving only the `key` item\n */\n removeRelative(key: string, dir: SplitCloseDirection = SplitCloseDirection.both): void {\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return;\n }\n // note, even though we keep indexes in the item, the logic actually\n // keeps track of them and orders the `items` accordingly.\n const item = this.items[index];\n let removed: IPanelObject[];\n if (dir === SplitCloseDirection.both) {\n removed = this.items.filter(i => i !== item);\n this.items = [item];\n this.selected = item.key;\n } else if (dir === SplitCloseDirection.left) {\n removed = this.items.slice(0, index);\n this.items = this.items.splice(index);\n this.selected = item.key;\n } else {\n removed = this.items.slice(index + 1);\n this.items = this.items.splice(0, index + 1);\n this.selected = item.key;\n }\n removed.forEach(i => {\n this.manager.definitions.delete(i.key);\n this.manager.notifyTabClose(i.key);\n });\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n\n removePanel(id: string, opts: SplitPanelRemoveItemOptions = {}): void {\n const index = this.items.findIndex(p => p.key === id);\n if (index < 0) {\n return;\n }\n const item = this.items[index];\n\n const panel = this.manager.findPanel(item.key) as SplitPanel;\n panel.clearItems();\n\n this.items.splice(index, 1);\n this.manager.definitions.delete(item.key);\n if (this.items.length === 1) {\n this.unsplit();\n }\n if (!opts.noSideEffects) {\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n }\n\n clearItems(opts?: SplitPanelRemoveItemOptions): void {\n const { items } = this;\n items.forEach((childItem) => {\n if (childItem.type === LayoutType.item) {\n this.removeItem(childItem.key, opts);\n } else {\n this.removePanel(childItem.key, opts);\n }\n });\n }\n\n /**\n * Moves an item to a new index.\n * \n * @param key The item key\n * @param toIndex The new index. When not set it moves the item to the end.\n */\n moveItem(key: string, toIndex?: number): void {\n const info = this.items.find(i => i.key === key);\n if (!info) {\n return;\n }\n const item = this.manager.findItem(info.key);\n if (!item) {\n return;\n }\n const hasIndex = typeof toIndex === 'number';\n if (hasIndex && item.index === toIndex) {\n return;\n }\n let hasTargetAtTarget = false;\n if (hasIndex) {\n hasTargetAtTarget = !!this.items[toIndex];\n }\n if (item.index !== undefined) {\n this.decreaseIndex(item.index);\n }\n const finalIndex = hasIndex ? toIndex as number : this.nextIndex();\n if (hasTargetAtTarget) {\n this.increaseIndex(finalIndex);\n }\n item.index = finalIndex;\n this.manager.notifyChange();\n this.manager.updateView(this.key);\n }\n\n updateView(): void {\n const layout = this.manager.findView(this.key);\n if (!layout) {\n return;\n }\n layout.requestUpdate();\n }\n\n addPanel(layout = SplitDirection.horizontal): SplitPanel {\n return this.manager.addPanel({ layout, parent: this.key });\n }\n\n panelTemplate(panel: SplitPanel, itemCallback: SplitItemRenderCallback): TemplateResult | undefined {\n const { layout, items, selected, manager } = panel;\n const renderPanels = items.filter(i => i.type === LayoutType.panel);\n const renderItems = items.filter(i => i.type === LayoutType.item);\n if (!renderPanels.length && !renderItems.length) {\n return undefined;\n }\n const { dragTypes, constrain } = manager.options;\n let content: (TemplateResult | undefined)[];\n \n if (renderPanels.length) {\n content = renderPanels.map((item) => {\n const targetPanel = manager.findPanel(item.key);\n return targetPanel && this.panelTemplate(targetPanel, itemCallback)\n });\n } else {\n content = renderItems.map((item) => {\n const targetItem = manager.findItem(item.key);\n return targetItem && this.itemTemplate(targetItem, targetItem.key === selected, itemCallback)\n });\n }\n const valid = content.filter(i => !!i);\n if (!valid.length) {\n return undefined;\n }\n return html`\n <split-view \n layout=\"${layout}\" \n .dragTypes=\"${dragTypes}\" \n .panel=\"${panel}\"\n .key=\"${panel.key}\"\n ?constrain=\"${constrain}\"\n >\n ${content}\n </split-view>\n `;\n }\n\n itemTemplate(item: SplitItem, visible: boolean, itemCallback: SplitItemRenderCallback): TemplateResult {\n return itemCallback(item, visible);\n }\n\n render(itemCallback: SplitItemRenderCallback): TemplateResult | undefined {\n return this.panelTemplate(this, itemCallback);\n }\n}\n"]}
@@ -5,34 +5,25 @@ import { classMap } from "lit/directives/class-map.js";
5
5
  import { ifDefined } from "lit/directives/if-defined.js";
6
6
  import { SplitDirection, SplitRegion } from "./type.js";
7
7
  export default class SplitView extends LitElement {
8
- /**
9
- * @attribute
10
- */
11
- layout = SplitDirection.horizontal;
12
- /**
13
- * @attribute
14
- */
15
- key;
16
- dragTypes;
17
- /**
18
- * Whether dragging is occurring over the element
19
- */
20
- inDrag = false;
21
- /**
22
- * The region the drag is leaning to.
23
- */
24
- dragRegion = SplitRegion.center;
25
- /**
26
- * A reference to the split panel that owns this view.
27
- */
28
- panel;
29
- /**
30
- * When set it adds the `overflow` hidden on the container that holds the tab contents.
31
- * @attribute
32
- */
33
- constrain = false;
34
8
  constructor() {
35
9
  super();
10
+ /**
11
+ * @attribute
12
+ */
13
+ this.layout = SplitDirection.horizontal;
14
+ /**
15
+ * Whether dragging is occurring over the element
16
+ */
17
+ this.inDrag = false;
18
+ /**
19
+ * The region the drag is leaning to.
20
+ */
21
+ this.dragRegion = SplitRegion.center;
22
+ /**
23
+ * When set it adds the `overflow` hidden on the container that holds the tab contents.
24
+ * @attribute
25
+ */
26
+ this.constrain = false;
36
27
  this.handleDragleave = this.handleDragleave.bind(this);
37
28
  this.handleDragEnd = this.handleDragEnd.bind(this);
38
29
  this.addEventListener('dragenter', this.handleDragEnter.bind(this));
@@ -1 +1 @@
1
- {"version":3,"file":"SplitView.js","sourceRoot":"","sources":["../../../src/elements/layout/SplitView.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,UAAU;IAC/C;;OAEG;IACwC,MAAM,GAAmB,cAAc,CAAC,UAAU,CAAC;IAE9F;;OAEG;IACwC,GAAG,CAAU;IAE7B,SAAS,CAAY;IAEhD;;OAEG;IACgB,MAAM,GAAG,KAAK,CAAC;IAElC;;OAEG;IACgB,UAAU,GAAiB,WAAW,CAAC,MAAM,CAAC;IAEjE;;OAEG;IACyB,KAAK,CAAc;IAE/C;;;OAGG;IACyC,SAAS,GAAG,KAAK,CAAC;IAE9D;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnE,CAAC;IAES,eAAe,CAAC,CAAY;QACpC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAC1C,OAAO;SACR;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;IACnC,CAAC;IAES,cAAc,CAAC,CAAY;QACnC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAC1C,OAAO;SACR;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO;SACR;QACD,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;IAC3B,CAAC;IAES,UAAU,CAAC,CAAY;QAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAC1C,OAAO;SACR;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC5E,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACrC,QAAQ,GAAG,IAAI,CAAC;SACjB;QACD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE;gBAC7C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC9C,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC,CAAC;SACL;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAES,eAAe,CAAC,CAAY;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;SACtC;IACH,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IACvC,CAAC;IAES,sBAAsB,CAAC,CAAY;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,OAAoB,EAAE,CAAY;QAC9C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,EAAE;YACpC,OAAO,WAAW,CAAC,IAAI,CAAC;SACzB;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,YAAY,EAAE;YACrC,OAAO,WAAW,CAAC,IAAI,CAAC;SACzB;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,aAAa,EAAE;YACpC,OAAO,WAAW,CAAC,KAAK,CAAC;SAC1B;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE;YACvC,OAAO,WAAW,CAAC,KAAK,CAAC;SAC1B;QACD,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC;QACnG,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;QACrG,IAAI,cAAc,IAAI,cAAc,EAAE;YACpC,OAAO,WAAW,CAAC,MAAM,CAAC;SAC3B;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,UAAU,CAAC,CAAQ;QAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAa,CAAC;YACrC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACvC,SAAS;aACV;YACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;gBACrC,OAAO,IAAiB,CAAC;aAC1B;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,YAAY,CAAC,EAAgB;QACrC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QACD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IAES,YAAY,CAAC,CAAY;QACjC,IAAI,CAAC,CAAC,gBAAgB,EAAE;YACtB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;YACxD,OAAO,KAAK,CAAC;SACd;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAES,kBAAkB,CAAC,CAAY;QACvC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC;QAC1B,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YACjC,OAAO;SACR;QAED,EAAE,CAAC,aAAa,GAAG,UAAU,CAAC;QAC9B,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAqB,CAAC;QACrC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC;QACrD,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAa,CAAC,CAAC;QACnD,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAES,mBAAmB,CAAC,CAAY;QACxC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC;QAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAChC,OAAO;SACR;QACD,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC;QAC1B,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC;IACzB,CAAC;IAES,kBAAkB,CAAC,CAAY;QACvC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC;QAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;YAChC,OAAO;SACR;QACD,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC;QAC1B,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC;IACzB,CAAC;IAES,aAAa,CAAC,CAAY;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC;QAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1D,OAAO;SACR;QACD,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC;QAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,WAAW,EAAE;gBAChB,OAAO;aACR;YACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACnD;aAAM;YACL,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxE,QAAQ,GAAG,IAAI,CAAC;aACjB;YACD,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE;oBAC7C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;oBACrC,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC,CAAC;aACL;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IACH,CAAC;IAES,OAAO,CAAC,UAAkB,EAAE,QAAgB,EAAE,GAAW,EAAE,OAAgB;QACnF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SAC5D;IACH,CAAC;IAES,OAAO,CAAC,CAAQ;QACxB,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAa,CAAC;YACrC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACvC,SAAS;aACV;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACzC,OAAO,IAAmB,CAAC;aAC5B;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,CAAQ;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO;SACR;QACD,MAAM,GAAG,GAAI,CAAC,CAAC,aAA6B,CAAC,OAAO,CAAC,GAAa,CAAC;QACnE,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,GAAG,EAAE;YAC/B,OAAO;SACR;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC1C;IACH,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,CAAe;QAC5C,uDAAuD;QACvD,2CAA2C;QAC3C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE;YACrC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,GAAG,GAAI,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,GAAa,CAAC;YAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpB;IACH,CAAC;IAES,cAAc,CAAC,CAAQ;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAqB,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAA4B,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAa,CAAC;QACzC,IAAI,GAAG,EAAE;YACP,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpB;IACH,CAAC;IAGS,mBAAmB,CAAC,CAAa;QACzC,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,GAAG,GAAI,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,GAAa,CAAC;YAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpB;IACH,CAAC;IAES,QAAQ,CAAC,GAAW;QAC5B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE;YAClC,OAAO;SACR;QACD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE;YAC7C,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC,CAAC;IACN,CAAC;IAES,gBAAgB,CAAC,CAAgB;QACzC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;MACT,IAAI,CAAC,kBAAkB,EAAE;MACzB,IAAI,CAAC,YAAY,EAAE;;;;KAIpB,CAAC;IACJ,CAAC;IAES,kBAAkB;QAC1B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;8BACe,UAAU;KACnC,CAAC;IACJ,CAAC;IAES,YAAY;QACpB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAA;;;;oBAIK,IAAI,CAAC,mBAAmB;mBACzB,IAAI,CAAC,kBAAkB;eAC3B,IAAI,CAAC,aAAa;;MAE3B,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;;KAEhF,CAAC;IACJ,CAAC;IAES,WAAW,CAAC,IAAe,EAAE,IAAa,EAAE,OAAgB;QACpE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACjF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC;QACnD,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC;QACxE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAClD,MAAM,OAAO,GAAG;YACd,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,OAAO;YACnB,QAAQ;YACR,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,OAAO,EAAE;YACX,KAAK,GAAG,iBAAiB,CAAC;SAC3B;QAED,MAAM,aAAa,GAAG,IAAI,IAAI,QAAQ,IAAI,YAAY,CAAC;QACvD,OAAO,IAAI,CAAA;;kBAEG,GAAG;mBACF,IAAI;oBACH,KAAK;qBACJ,SAAS,CAAC,MAAM,CAAC;oBAClB,OAAO;;eAEZ,QAAQ,CAAC,OAAO,CAAC;;;;oBAIZ,IAAI,CAAC,kBAAkB;gBAC3B,IAAI,CAAC,cAAc;sBACb,IAAI,CAAC,oBAAoB;qBAC1B,IAAI,CAAC,mBAAmB;kBAC3B,IAAI,CAAC,gBAAgB;;QAE/B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,kBAAkB,IAAI,kCAAkC,CAAC,CAAC,CAAC,EAAE;uCACzC,KAAK,KAAK,KAAK;QAC9C,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,oDAAoD,IAAI,CAAC,cAAc,cAAc,CAAC,CAAC,CAAC,EAAE;;8BAEnF,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;KACtD,CAAC;IACJ,CAAC;CACF;AA5c4C;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yCAAoD;AAKnD;IAA1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sCAAc;AAE7B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;4CAAsB;AAKvC;IAAR,KAAK,EAAE;yCAA0B;AAKzB;IAAR,KAAK,EAAE;6CAAyD;AAKrC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCAAoB;AAMH;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4CAAmB;AAqT9D;IADC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oDAQ/B","sourcesContent":["import { html, LitElement, nothing, TemplateResult } from \"lit\";\nimport { eventOptions, property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { SplitItem } from \"./SplitItem.js\";\nimport { SplitPanel } from \"./SplitPanel.js\";\nimport { SplitDirection, SplitRegion } from \"./type.js\";\n\nexport default class SplitView extends LitElement {\n /**\n * @attribute\n */\n @property({ type: String, reflect: true }) layout: SplitDirection = SplitDirection.horizontal;\n\n /**\n * @attribute\n */\n @property({ type: Number, reflect: true }) key?: string;\n\n @property({ type: Array }) dragTypes?: string[];\n\n /**\n * Whether dragging is occurring over the element\n */\n @state() protected inDrag = false;\n\n /**\n * The region the drag is leaning to.\n */\n @state() protected dragRegion?: SplitRegion = SplitRegion.center;\n\n /**\n * A reference to the split panel that owns this view.\n */\n @property({ type: Object }) panel?: SplitPanel;\n\n /**\n * When set it adds the `overflow` hidden on the container that holds the tab contents.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) constrain = false;\n\n constructor() {\n super();\n this.handleDragleave = this.handleDragleave.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.addEventListener('dragenter', this.handleDragEnter.bind(this));\n this.addEventListener('dragover', this.handleDragOver.bind(this));\n this.addEventListener('drop', this.handleDrop.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n document.body.addEventListener('dragleave', this.handleDragleave);\n document.body.addEventListener('dragend', this.handleDragEnd);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.body.removeEventListener('dragleave', this.handleDragleave);\n document.body.removeEventListener('dragend', this.handleDragEnd);\n }\n\n protected handleDragEnter(e: DragEvent): void {\n const { dataTransfer } = e;\n if (!dataTransfer || !this.panelCanDrop(e)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n dataTransfer.dropEffect = 'copy';\n }\n\n protected handleDragOver(e: DragEvent): void {\n const { dataTransfer } = e;\n if (!dataTransfer || !this.panelCanDrop(e)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const region = this.getDropRegionFromEvent(e);\n if (!region) {\n this.inDrag = false;\n return;\n }\n dataTransfer.dropEffect = 'copy';\n this.inDrag = true;\n this.dragRegion = region;\n }\n\n protected handleDrop(e: DragEvent): void {\n const { dataTransfer } = e;\n if (!dataTransfer || !this.panelCanDrop(e)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const kind = dataTransfer.getData('text/kind');\n const key = dataTransfer.getData('text/key');\n if (!kind || !key) {\n return;\n }\n this.inDrag = false;\n const { panel } = this;\n let dispatch = true;\n if (panel) {\n panel.addItem({ key, kind, label: 'New tab' }, { region: this.dragRegion });\n panel.manager.requestNameUpdate(key);\n dispatch = true;\n }\n if (dispatch) {\n this.dispatchEvent(new CustomEvent('datadrop', {\n detail: { kind, key, region: this.dragRegion },\n composed: true,\n bubbles: true,\n cancelable: true,\n }));\n }\n this.requestUpdate();\n }\n\n protected handleDragleave(e: DragEvent): void {\n const elm = this.findLayout(e);\n if (!elm || elm !== this) {\n this.inDrag = false;\n this.dragRegion = SplitRegion.center;\n }\n }\n\n protected handleDragEnd(): void {\n this.inDrag = false;\n this.dragRegion = SplitRegion.center;\n }\n\n protected getDropRegionFromEvent(e: DragEvent): SplitRegion | undefined {\n const layout = this.findLayout(e);\n if (!layout) {\n return undefined;\n }\n return this.getDropRegion(layout, e);\n }\n\n getDropRegion(element: HTMLElement, e: DragEvent): SplitRegion | undefined {\n const { pageX, pageY } = e;\n const rect = element.getBoundingClientRect();\n const quarterWidth = rect.width / 4;\n const quarterHeight = rect.height / 4;\n if (pageX < rect.left + quarterWidth) {\n return SplitRegion.west;\n }\n if (pageX > rect.right - quarterWidth) {\n return SplitRegion.east;\n }\n if (pageY < rect.top + quarterHeight) {\n return SplitRegion.north;\n }\n if (pageY > rect.bottom - quarterHeight) {\n return SplitRegion.south;\n }\n const withingCenterX = (pageX >= rect.left + quarterWidth) && (pageX <= rect.right - quarterWidth);\n const withingCenterY = (pageY >= rect.top + quarterHeight) && (pageY <= rect.bottom - quarterHeight);\n if (withingCenterX && withingCenterY) {\n return SplitRegion.center;\n }\n return undefined;\n }\n\n protected findLayout(e: Event): SplitView | undefined {\n const path = e.composedPath();\n while (path.length) {\n const node = path.shift() as Element;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (node.localName === this.localName) {\n return node as SplitView;\n }\n }\n return undefined;\n }\n\n protected hasDropTypes(dt: DataTransfer): boolean {\n const { dragTypes } = this;\n if (!Array.isArray(dragTypes)) {\n return true;\n }\n const eventTypes = [...dt.types];\n const allowedTypes = dragTypes.map(i => i.toLowerCase());\n return !allowedTypes.some(type => !eventTypes.includes(type));\n }\n\n protected panelCanDrop(e: DragEvent): boolean {\n if (e.defaultPrevented) {\n return false;\n }\n if (e.dataTransfer && !this.hasDropTypes(e.dataTransfer)) {\n return false;\n }\n const { panel } = this;\n if (!panel) {\n return true;\n }\n return panel.canDrop();\n }\n\n protected handleTabDragStart(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || this.key === undefined) {\n return;\n }\n\n dt.effectAllowed = 'copyMove';\n dt.dropEffect = 'move';\n const node = e.target as HTMLElement;\n dt.setData('text/kind', node.dataset.kind as string);\n dt.setData('text/key', node.dataset.key as string);\n dt.setData('text/source', this.localName);\n dt.setData('layout/key', this.key);\n }\n\n protected handleTabsDragEnter(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || !this.panelCanDrop(e)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n dt.effectAllowed = 'move';\n dt.dropEffect = 'move';\n }\n\n protected handleTabsDragover(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || !this.panelCanDrop(e)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n dt.effectAllowed = 'move';\n dt.dropEffect = 'move';\n }\n\n protected handleTabDrop(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || !this.panelCanDrop(e) || this.key === undefined) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n const src = dt.getData('text/source');\n const key = dt.getData('text/key');\n const kind = dt.getData('text/kind');\n const srcPanelKey = dt.getData('layout/key');\n const movingTab = src === this.localName;\n\n const overTab = this.findTab(e);\n const toIndex = overTab ? Number(overTab.dataset.index) : undefined;\n\n if (movingTab) {\n if (!srcPanelKey) {\n return;\n }\n this.moveTab(srcPanelKey, this.key, key, toIndex);\n } else {\n let dispatch = true;\n if (this.panel) {\n this.panel.addItem({ key, kind, label: 'New tab' }, { index: toIndex });\n dispatch = true;\n }\n if (dispatch) {\n this.dispatchEvent(new CustomEvent('datadrop', {\n detail: { kind, key, index: toIndex },\n composed: true,\n bubbles: true,\n cancelable: true,\n }));\n }\n this.requestUpdate();\n }\n }\n\n protected moveTab(fromLayout: string, toLayout: string, key: string, toIndex?: number): void {\n const { panel } = this;\n if (panel) {\n panel.manager.moveItem(fromLayout, toLayout, key, toIndex);\n }\n }\n\n protected findTab(e: Event): HTMLElement | undefined {\n const path = e.composedPath();\n while (path.length) {\n const node = path.shift() as Element;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (node.classList.contains('layout-tab')) {\n return node as HTMLElement;\n }\n }\n return undefined;\n }\n\n protected async handleTabClick(e: Event): Promise<void> {\n if (!this.panel) {\n return;\n }\n const key = (e.currentTarget as HTMLElement).dataset.key as string;\n if (!key) {\n return;\n }\n if (this.panel.selected === key) {\n return;\n }\n this.panel.selected = key;\n this.panel.manager.notifyChange();\n this.requestUpdate();\n await this.updateComplete;\n const child = this.querySelector(`[data-key=\"${key}\"]`);\n if (child) {\n child.dispatchEvent(new Event('resize'));\n }\n }\n\n /**\n * Closes a panel with right pointer configuration\n */\n protected handleTabPointerDown(e: PointerEvent): void {\n // the configuration of a middle button click which is \n // equal to 3 fingers click on a track pad.\n if (e.button === 1 && e.buttons === 4) {\n e.preventDefault();\n e.stopPropagation();\n const key = (e.target as HTMLElement).dataset.key as string;\n this.closeTab(key);\n }\n }\n\n protected handleTabClose(e: Event): void {\n const icon = e.target as HTMLElement;\n const button = icon.parentElement as HTMLElement;\n const key = button.dataset.key as string;\n if (key) {\n e.preventDefault();\n e.stopPropagation();\n this.closeTab(key);\n }\n }\n\n @eventOptions({ passive: true })\n protected handleTabTouchStart(e: TouchEvent): void {\n if (e.targetTouches.length === 3) {\n e.preventDefault();\n e.stopPropagation();\n const key = (e.target as HTMLElement).dataset.key as string;\n this.closeTab(key);\n }\n }\n\n protected closeTab(key: string): void {\n const { panel } = this;\n if (!panel) {\n return;\n }\n const item = panel.manager.findItem(key);\n if (!item) {\n return;\n }\n if (item.persistent && item.pinned) {\n return;\n }\n panel.removeItem(key);\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('closetab', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: key,\n }));\n }\n\n protected handleTabKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter') {\n this.handleTabClick(e);\n }\n }\n\n override render(): TemplateResult {\n return html`\n ${this.dragRegionTemplate()}\n ${this.tabsTemplate()}\n <div class=\"content\">\n <slot></slot>\n </div>\n `;\n }\n\n protected dragRegionTemplate(): TemplateResult | typeof nothing {\n const { inDrag, dragRegion } = this;\n if (!inDrag) {\n return nothing;\n }\n return html`\n <div class=\"drag-region ${dragRegion}\"></div>\n `;\n }\n\n protected tabsTemplate(): TemplateResult | string {\n const { panel } = this;\n if (!panel) {\n return '';\n }\n const items = panel.sortedItems();\n if (!items) {\n return '';\n }\n const size = items.length;\n return html`\n <div \n class=\"layout-tabs\" \n role=\"tablist\"\n @dragenter=\"${this.handleTabsDragEnter}\" \n @dragover=\"${this.handleTabsDragover}\" \n @drop=\"${this.handleTabDrop}\"\n >\n ${items.map((tab, i) => this.tabTemplate(tab, i + 1 === size, items[i + 1]?.key))}\n </div>\n `;\n }\n\n protected tabTemplate(item: SplitItem, last: boolean, nextKey?: string): TemplateResult {\n const { key, kind, label = '', index = 0, icon, isDirty = false, parent } = item;\n const { panel } = this;\n const selected = !!panel && panel.selected === key;\n const nextSelected = !!nextKey && !!panel && panel.selected === nextKey;\n const closable = !item.persistent && !item.pinned;\n const classes = {\n 'layout-tab': true,\n 'is-dirty': isDirty,\n selected,\n surface1: selected,\n };\n let title = label;\n if (isDirty) {\n title = 'Unsaved changes';\n }\n\n const dividerHidden = last || selected || nextSelected;\n return html`\n <div \n data-key=\"${key}\" \n data-kind=\"${kind}\"\n data-index=\"${index}\"\n data-parent=\"${ifDefined(parent)}\"\n data-dirty=\"${isDirty}\"\n role=\"tab\"\n class=\"${classMap(classes)}\" \n draggable=\"true\"\n tabindex=\"0\"\n\n @dragstart=\"${this.handleTabDragStart}\"\n @click=\"${this.handleTabClick}\" \n @pointerdown=\"${this.handleTabPointerDown}\"\n @touchstart=\"${this.handleTabTouchStart}\"\n @keydown=\"${this.handleTabKeyDown}\"\n >\n ${icon ? html`<ui-icon icon=\"${icon}\" class=\"tab-favicon\"></ui-icon>` : ''}\n <span class=\"tab-label\" title=\"${title}\">${label}</span>\n ${closable ? html`<ui-icon icon=\"close\" class=\"close-icon\" @click=\"${this.handleTabClose}\"></ui-icon>` : ''}\n </div>\n <div class=\"tab-divider ${dividerHidden ? 'hidden' : ''}\"></div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"SplitView.js","sourceRoot":"","sources":["../../../src/elements/layout/SplitView.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, TemplateResult } from \"lit\";\nimport { eventOptions, property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { SplitItem } from \"./SplitItem.js\";\nimport { SplitPanel } from \"./SplitPanel.js\";\nimport { SplitDirection, SplitRegion } from \"./type.js\";\n\nexport default class SplitView extends LitElement {\n /**\n * @attribute\n */\n @property({ type: String, reflect: true }) layout: SplitDirection = SplitDirection.horizontal;\n\n /**\n * @attribute\n */\n @property({ type: Number, reflect: true }) key?: string;\n\n @property({ type: Array }) dragTypes?: string[];\n\n /**\n * Whether dragging is occurring over the element\n */\n @state() protected inDrag = false;\n\n /**\n * The region the drag is leaning to.\n */\n @state() protected dragRegion?: SplitRegion = SplitRegion.center;\n\n /**\n * A reference to the split panel that owns this view.\n */\n @property({ type: Object }) panel?: SplitPanel;\n\n /**\n * When set it adds the `overflow` hidden on the container that holds the tab contents.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) constrain = false;\n\n constructor() {\n super();\n this.handleDragleave = this.handleDragleave.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.addEventListener('dragenter', this.handleDragEnter.bind(this));\n this.addEventListener('dragover', this.handleDragOver.bind(this));\n this.addEventListener('drop', this.handleDrop.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n document.body.addEventListener('dragleave', this.handleDragleave);\n document.body.addEventListener('dragend', this.handleDragEnd);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.body.removeEventListener('dragleave', this.handleDragleave);\n document.body.removeEventListener('dragend', this.handleDragEnd);\n }\n\n protected handleDragEnter(e: DragEvent): void {\n const { dataTransfer } = e;\n if (!dataTransfer || !this.panelCanDrop(e)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n dataTransfer.dropEffect = 'copy';\n }\n\n protected handleDragOver(e: DragEvent): void {\n const { dataTransfer } = e;\n if (!dataTransfer || !this.panelCanDrop(e)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const region = this.getDropRegionFromEvent(e);\n if (!region) {\n this.inDrag = false;\n return;\n }\n dataTransfer.dropEffect = 'copy';\n this.inDrag = true;\n this.dragRegion = region;\n }\n\n protected handleDrop(e: DragEvent): void {\n const { dataTransfer } = e;\n if (!dataTransfer || !this.panelCanDrop(e)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const kind = dataTransfer.getData('text/kind');\n const key = dataTransfer.getData('text/key');\n if (!kind || !key) {\n return;\n }\n this.inDrag = false;\n const { panel } = this;\n let dispatch = true;\n if (panel) {\n panel.addItem({ key, kind, label: 'New tab' }, { region: this.dragRegion });\n panel.manager.requestNameUpdate(key);\n dispatch = true;\n }\n if (dispatch) {\n this.dispatchEvent(new CustomEvent('datadrop', {\n detail: { kind, key, region: this.dragRegion },\n composed: true,\n bubbles: true,\n cancelable: true,\n }));\n }\n this.requestUpdate();\n }\n\n protected handleDragleave(e: DragEvent): void {\n const elm = this.findLayout(e);\n if (!elm || elm !== this) {\n this.inDrag = false;\n this.dragRegion = SplitRegion.center;\n }\n }\n\n protected handleDragEnd(): void {\n this.inDrag = false;\n this.dragRegion = SplitRegion.center;\n }\n\n protected getDropRegionFromEvent(e: DragEvent): SplitRegion | undefined {\n const layout = this.findLayout(e);\n if (!layout) {\n return undefined;\n }\n return this.getDropRegion(layout, e);\n }\n\n getDropRegion(element: HTMLElement, e: DragEvent): SplitRegion | undefined {\n const { pageX, pageY } = e;\n const rect = element.getBoundingClientRect();\n const quarterWidth = rect.width / 4;\n const quarterHeight = rect.height / 4;\n if (pageX < rect.left + quarterWidth) {\n return SplitRegion.west;\n }\n if (pageX > rect.right - quarterWidth) {\n return SplitRegion.east;\n }\n if (pageY < rect.top + quarterHeight) {\n return SplitRegion.north;\n }\n if (pageY > rect.bottom - quarterHeight) {\n return SplitRegion.south;\n }\n const withingCenterX = (pageX >= rect.left + quarterWidth) && (pageX <= rect.right - quarterWidth);\n const withingCenterY = (pageY >= rect.top + quarterHeight) && (pageY <= rect.bottom - quarterHeight);\n if (withingCenterX && withingCenterY) {\n return SplitRegion.center;\n }\n return undefined;\n }\n\n protected findLayout(e: Event): SplitView | undefined {\n const path = e.composedPath();\n while (path.length) {\n const node = path.shift() as Element;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (node.localName === this.localName) {\n return node as SplitView;\n }\n }\n return undefined;\n }\n\n protected hasDropTypes(dt: DataTransfer): boolean {\n const { dragTypes } = this;\n if (!Array.isArray(dragTypes)) {\n return true;\n }\n const eventTypes = [...dt.types];\n const allowedTypes = dragTypes.map(i => i.toLowerCase());\n return !allowedTypes.some(type => !eventTypes.includes(type));\n }\n\n protected panelCanDrop(e: DragEvent): boolean {\n if (e.defaultPrevented) {\n return false;\n }\n if (e.dataTransfer && !this.hasDropTypes(e.dataTransfer)) {\n return false;\n }\n const { panel } = this;\n if (!panel) {\n return true;\n }\n return panel.canDrop();\n }\n\n protected handleTabDragStart(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || this.key === undefined) {\n return;\n }\n\n dt.effectAllowed = 'copyMove';\n dt.dropEffect = 'move';\n const node = e.target as HTMLElement;\n dt.setData('text/kind', node.dataset.kind as string);\n dt.setData('text/key', node.dataset.key as string);\n dt.setData('text/source', this.localName);\n dt.setData('layout/key', this.key);\n }\n\n protected handleTabsDragEnter(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || !this.panelCanDrop(e)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n dt.effectAllowed = 'move';\n dt.dropEffect = 'move';\n }\n\n protected handleTabsDragover(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || !this.panelCanDrop(e)) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n dt.effectAllowed = 'move';\n dt.dropEffect = 'move';\n }\n\n protected handleTabDrop(e: DragEvent): void {\n const dt = e.dataTransfer;\n if (!dt || !this.panelCanDrop(e) || this.key === undefined) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n const src = dt.getData('text/source');\n const key = dt.getData('text/key');\n const kind = dt.getData('text/kind');\n const srcPanelKey = dt.getData('layout/key');\n const movingTab = src === this.localName;\n\n const overTab = this.findTab(e);\n const toIndex = overTab ? Number(overTab.dataset.index) : undefined;\n\n if (movingTab) {\n if (!srcPanelKey) {\n return;\n }\n this.moveTab(srcPanelKey, this.key, key, toIndex);\n } else {\n let dispatch = true;\n if (this.panel) {\n this.panel.addItem({ key, kind, label: 'New tab' }, { index: toIndex });\n dispatch = true;\n }\n if (dispatch) {\n this.dispatchEvent(new CustomEvent('datadrop', {\n detail: { kind, key, index: toIndex },\n composed: true,\n bubbles: true,\n cancelable: true,\n }));\n }\n this.requestUpdate();\n }\n }\n\n protected moveTab(fromLayout: string, toLayout: string, key: string, toIndex?: number): void {\n const { panel } = this;\n if (panel) {\n panel.manager.moveItem(fromLayout, toLayout, key, toIndex);\n }\n }\n\n protected findTab(e: Event): HTMLElement | undefined {\n const path = e.composedPath();\n while (path.length) {\n const node = path.shift() as Element;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (node.classList.contains('layout-tab')) {\n return node as HTMLElement;\n }\n }\n return undefined;\n }\n\n protected async handleTabClick(e: Event): Promise<void> {\n if (!this.panel) {\n return;\n }\n const key = (e.currentTarget as HTMLElement).dataset.key as string;\n if (!key) {\n return;\n }\n if (this.panel.selected === key) {\n return;\n }\n this.panel.selected = key;\n this.panel.manager.notifyChange();\n this.requestUpdate();\n await this.updateComplete;\n const child = this.querySelector(`[data-key=\"${key}\"]`);\n if (child) {\n child.dispatchEvent(new Event('resize'));\n }\n }\n\n /**\n * Closes a panel with right pointer configuration\n */\n protected handleTabPointerDown(e: PointerEvent): void {\n // the configuration of a middle button click which is \n // equal to 3 fingers click on a track pad.\n if (e.button === 1 && e.buttons === 4) {\n e.preventDefault();\n e.stopPropagation();\n const key = (e.target as HTMLElement).dataset.key as string;\n this.closeTab(key);\n }\n }\n\n protected handleTabClose(e: Event): void {\n const icon = e.target as HTMLElement;\n const button = icon.parentElement as HTMLElement;\n const key = button.dataset.key as string;\n if (key) {\n e.preventDefault();\n e.stopPropagation();\n this.closeTab(key);\n }\n }\n\n @eventOptions({ passive: true })\n protected handleTabTouchStart(e: TouchEvent): void {\n if (e.targetTouches.length === 3) {\n e.preventDefault();\n e.stopPropagation();\n const key = (e.target as HTMLElement).dataset.key as string;\n this.closeTab(key);\n }\n }\n\n protected closeTab(key: string): void {\n const { panel } = this;\n if (!panel) {\n return;\n }\n const item = panel.manager.findItem(key);\n if (!item) {\n return;\n }\n if (item.persistent && item.pinned) {\n return;\n }\n panel.removeItem(key);\n this.requestUpdate();\n this.dispatchEvent(new CustomEvent('closetab', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: key,\n }));\n }\n\n protected handleTabKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter') {\n this.handleTabClick(e);\n }\n }\n\n override render(): TemplateResult {\n return html`\n ${this.dragRegionTemplate()}\n ${this.tabsTemplate()}\n <div class=\"content\">\n <slot></slot>\n </div>\n `;\n }\n\n protected dragRegionTemplate(): TemplateResult | typeof nothing {\n const { inDrag, dragRegion } = this;\n if (!inDrag) {\n return nothing;\n }\n return html`\n <div class=\"drag-region ${dragRegion}\"></div>\n `;\n }\n\n protected tabsTemplate(): TemplateResult | string {\n const { panel } = this;\n if (!panel) {\n return '';\n }\n const items = panel.sortedItems();\n if (!items) {\n return '';\n }\n const size = items.length;\n return html`\n <div \n class=\"layout-tabs\" \n role=\"tablist\"\n @dragenter=\"${this.handleTabsDragEnter}\" \n @dragover=\"${this.handleTabsDragover}\" \n @drop=\"${this.handleTabDrop}\"\n >\n ${items.map((tab, i) => this.tabTemplate(tab, i + 1 === size, items[i + 1]?.key))}\n </div>\n `;\n }\n\n protected tabTemplate(item: SplitItem, last: boolean, nextKey?: string): TemplateResult {\n const { key, kind, label = '', index = 0, icon, isDirty = false, parent } = item;\n const { panel } = this;\n const selected = !!panel && panel.selected === key;\n const nextSelected = !!nextKey && !!panel && panel.selected === nextKey;\n const closable = !item.persistent && !item.pinned;\n const classes = {\n 'layout-tab': true,\n 'is-dirty': isDirty,\n selected,\n surface1: selected,\n };\n let title = label;\n if (isDirty) {\n title = 'Unsaved changes';\n }\n\n const dividerHidden = last || selected || nextSelected;\n return html`\n <div \n data-key=\"${key}\" \n data-kind=\"${kind}\"\n data-index=\"${index}\"\n data-parent=\"${ifDefined(parent)}\"\n data-dirty=\"${isDirty}\"\n role=\"tab\"\n class=\"${classMap(classes)}\" \n draggable=\"true\"\n tabindex=\"0\"\n\n @dragstart=\"${this.handleTabDragStart}\"\n @click=\"${this.handleTabClick}\" \n @pointerdown=\"${this.handleTabPointerDown}\"\n @touchstart=\"${this.handleTabTouchStart}\"\n @keydown=\"${this.handleTabKeyDown}\"\n >\n ${icon ? html`<ui-icon icon=\"${icon}\" class=\"tab-favicon\"></ui-icon>` : ''}\n <span class=\"tab-label\" title=\"${title}\">${label}</span>\n ${closable ? html`<ui-icon icon=\"close\" class=\"close-icon\" @click=\"${this.handleTabClose}\"></ui-icon>` : ''}\n </div>\n <div class=\"tab-divider ${dividerHidden ? 'hidden' : ''}\"></div>\n `;\n }\n}\n"]}
@@ -48,53 +48,14 @@ import ApiElement from "../ApiElement.js";
48
48
  * @fires select - Custom, non bubbling event when a selection is made. It has the `key` and `kind` properties on the detail panel with optional `parent` id.
49
49
  */
50
50
  export default class AppNavigation extends ApiElement {
51
- /**
52
- * The list of keys of opened items with children. This should be clear each time
53
- * when the main data property change.
54
- */
55
- _opened = [];
56
- /**
57
- * The key of the currently focused item.
58
- */
59
- _focused;
60
- /**
61
- * The currently focused node.
62
- * In case there are headers in the list, this may not be a list item.
63
- */
64
- _focusedItem;
65
- /**
66
- * To be set in the child class constructor to configure whether a name change is possible.
67
- */
68
- _allowRename;
69
- /**
70
- * The currently selected navigation item.
71
- * @attr
72
- */
73
- selected;
74
- /**
75
- * When set it renders a name change input for the item.
76
- * This is the `key` of the object.
77
- *
78
- * Note, when the user finish editing the name it calls the `_commitName(key, kind, name)` method.
79
- * This requires the `_allowRename` property to be set to `true` in the constructor.
80
- * @attr
81
- */
82
- edited;
83
- /**
84
- * When set it prohibits the element to make visual selection (via the css) when an item is selected.
85
- * This is helpful when one navigation can be visually references in multiple places (like split layout).
86
- * @attr
87
- */
88
- noVisualSelection;
89
- /**
90
- * A reference to the currently rendered name input, if any.
91
- */
92
- _nameInput;
93
- /**
94
- * When set it adds a menu entry with the navigation label.
95
- * @attribute
96
- */
97
- label;
51
+ constructor() {
52
+ super(...arguments);
53
+ /**
54
+ * The list of keys of opened items with children. This should be clear each time
55
+ * when the main data property change.
56
+ */
57
+ this._opened = [];
58
+ }
98
59
  connectedCallback() {
99
60
  super.connectedCallback();
100
61
  this.setAttribute('role', 'navigation');