@api-client/ui 0.0.3 → 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 (595) hide show
  1. package/demo/amf/api-annotation.html +1 -0
  2. package/demo/amf/api-channel.html +1 -0
  3. package/demo/amf/api-console.html +1 -0
  4. package/demo/amf/api-documentation-document.html +1 -0
  5. package/demo/amf/api-documentation.html +1 -0
  6. package/demo/amf/api-editor.html +1 -0
  7. package/demo/amf/api-navigation.html +1 -0
  8. package/demo/amf/api-operation.html +1 -0
  9. package/demo/amf/api-payload.html +1 -0
  10. package/demo/amf/api-request.html +1 -0
  11. package/demo/amf/api-resource.html +1 -0
  12. package/demo/amf/api-schema-documentation.html +1 -0
  13. package/demo/amf/api-security-documentation.html +1 -0
  14. package/demo/amf/api-server-picker.html +1 -0
  15. package/demo/amf/api-summary.html +1 -0
  16. package/demo/amf/bare-components.html +2 -0
  17. package/demo/amf/index.html +2 -0
  18. package/demo/amf/oauth-authorize.html +2 -0
  19. package/demo/amf/request-editor.html +1 -0
  20. package/demo/elements/authorization/api-key.html +1 -0
  21. package/demo/elements/authorization/basic.html +1 -0
  22. package/demo/elements/authorization/bearer.html +1 -0
  23. package/demo/elements/authorization/cc.html +1 -0
  24. package/demo/elements/authorization/index.html +2 -0
  25. package/demo/elements/authorization/ntlm.html +1 -0
  26. package/demo/elements/authorization/oauth-error.html +2 -0
  27. package/demo/elements/authorization/oauth-popup.html +2 -0
  28. package/demo/elements/authorization/oauth2.html +1 -0
  29. package/demo/elements/authorization/oidc.html +1 -0
  30. package/demo/elements/authorization/redirect.html +3 -1
  31. package/demo/elements/context-menu/basic.html +2 -1
  32. package/demo/elements/context-menu/custom-data.html +2 -1
  33. package/demo/elements/context-menu/enabled-state.html +2 -1
  34. package/demo/elements/context-menu/icons.html +2 -1
  35. package/demo/elements/context-menu/index.html +2 -0
  36. package/demo/elements/context-menu/nested.html +2 -1
  37. package/demo/elements/context-menu/no-execute.html +2 -1
  38. package/demo/elements/context-menu/radio-menu.html +2 -1
  39. package/demo/elements/context-menu/separators.html +2 -1
  40. package/demo/elements/environment/environment-editor.html +1 -0
  41. package/demo/elements/environment/index.html +1 -0
  42. package/demo/elements/environment/server-editor.html +1 -1
  43. package/demo/elements/environment/variables-editor.html +1 -1
  44. package/demo/elements/har/har-viewer.html +1 -0
  45. package/demo/elements/highlight/index.html +1 -0
  46. package/demo/elements/highlight/marked-highlight.html +1 -0
  47. package/demo/elements/highlight/prism-highlight.html +1 -0
  48. package/demo/elements/http/body-editor.html +1 -0
  49. package/demo/elements/http/headers.html +1 -0
  50. package/demo/elements/http/http-assertions.html +1 -0
  51. package/demo/elements/http/request-editor.html +1 -0
  52. package/demo/elements/http/request-log.html +1 -0
  53. package/demo/elements/http/url-editing.html +1 -0
  54. package/demo/elements/icons/index.html +1 -0
  55. package/demo/elements/project/project-run-report.html +1 -0
  56. package/demo/elements/project/request-editor.html +1 -0
  57. package/demo/elements/ui/buttons/api-button.html +2 -1
  58. package/demo/elements/ui/buttons/api-icon-button.html +2 -1
  59. package/demo/elements/ui/buttons/segmented-buttons.html +2 -1
  60. package/demo/elements/ui/chip/api-chip.html +2 -1
  61. package/demo/elements/ui/collapse/ui-collapse.html +2 -1
  62. package/demo/elements/ui/dialog/ui-dialog.html +2 -1
  63. package/demo/elements/ui/inputs/api-checkbox.html +2 -1
  64. package/demo/elements/ui/inputs/api-input.html +2 -1
  65. package/demo/elements/ui/inputs/api-radio.html +2 -1
  66. package/demo/elements/ui/inputs/api-switch.html +2 -1
  67. package/demo/elements/ui/list/dropdown-list.html +2 -1
  68. package/demo/elements/ui/list/list.html +2 -1
  69. package/demo/elements/ui/notification/snack.html +2 -1
  70. package/demo/elements/ui/progress/ui-progress.html +2 -1
  71. package/demo/elements/ui/tabs/tabs.html +2 -1
  72. package/dist/amf/lib/AmfParameters.js +0 -4
  73. package/dist/amf/lib/AmfParameters.js.map +1 -1
  74. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  75. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  76. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  77. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  78. package/dist/amf/store/AmfGraphStore.js +0 -2
  79. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  80. package/dist/amf/store/AmfStore.js +0 -7
  81. package/dist/amf/store/AmfStore.js.map +1 -1
  82. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  83. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  84. package/dist/bindings/base/PlatformBindings.js +6 -10
  85. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  86. package/dist/bindings/base/ProxyBindings.js +9 -6
  87. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  88. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  89. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  90. package/dist/bindings/base/StoreBindings.js +162 -170
  91. package/dist/bindings/base/StoreBindings.js.map +1 -1
  92. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  93. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  94. package/dist/bindings/web/WebFileBindings.js +7 -4
  95. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  96. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  97. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  98. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  99. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  100. package/dist/bindings/web/WebProxyBindings.js +5 -6
  101. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  102. package/dist/bindings/web/WebStoreBindings.js +39 -44
  103. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  104. package/dist/contextual-menu/ContextualMenu.js +10 -19
  105. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  106. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  107. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  108. package/dist/contextual-menu/MenuItem.js +0 -12
  109. package/dist/contextual-menu/MenuItem.js.map +1 -1
  110. package/dist/define/amf/api-annotation-document.js +1 -1
  111. package/dist/define/amf/api-annotation-document.js.map +1 -1
  112. package/dist/define/amf/api-authorization-editor.js +1 -1
  113. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  114. package/dist/define/amf/api-channel-document.js +1 -1
  115. package/dist/define/amf/api-channel-document.js.map +1 -1
  116. package/dist/define/amf/api-documentation-document.js +1 -1
  117. package/dist/define/amf/api-documentation-document.js.map +1 -1
  118. package/dist/define/amf/api-documentation.js +1 -1
  119. package/dist/define/amf/api-documentation.js.map +1 -1
  120. package/dist/define/amf/api-navigation.js +1 -1
  121. package/dist/define/amf/api-navigation.js.map +1 -1
  122. package/dist/define/amf/api-operation-document.js +1 -1
  123. package/dist/define/amf/api-operation-document.js.map +1 -1
  124. package/dist/define/amf/api-parameter-document.js +1 -1
  125. package/dist/define/amf/api-parameter-document.js.map +1 -1
  126. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  127. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  128. package/dist/define/amf/api-payload-document.js +1 -1
  129. package/dist/define/amf/api-payload-document.js.map +1 -1
  130. package/dist/define/amf/api-request-document.js +1 -1
  131. package/dist/define/amf/api-request-document.js.map +1 -1
  132. package/dist/define/amf/api-request-editor.js +1 -1
  133. package/dist/define/amf/api-request-editor.js.map +1 -1
  134. package/dist/define/amf/api-request.js +1 -1
  135. package/dist/define/amf/api-request.js.map +1 -1
  136. package/dist/define/amf/api-resource-document.js +1 -1
  137. package/dist/define/amf/api-resource-document.js.map +1 -1
  138. package/dist/define/amf/api-response-document.js +1 -1
  139. package/dist/define/amf/api-response-document.js.map +1 -1
  140. package/dist/define/amf/api-schema-document.js +1 -1
  141. package/dist/define/amf/api-schema-document.js.map +1 -1
  142. package/dist/define/amf/api-security-document.js +1 -1
  143. package/dist/define/amf/api-security-document.js.map +1 -1
  144. package/dist/define/amf/api-security-requirement-document.js +1 -1
  145. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  146. package/dist/define/amf/api-server-picker.js +1 -1
  147. package/dist/define/amf/api-server-picker.js.map +1 -1
  148. package/dist/define/amf/api-summary.js +1 -1
  149. package/dist/define/amf/api-summary.js.map +1 -1
  150. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  151. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  152. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  153. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  154. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  155. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  156. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  157. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  158. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  159. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  160. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  161. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  162. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  163. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  164. package/dist/define/authorization/apikey-authorization.js +1 -1
  165. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  166. package/dist/define/authorization/basic-authorization.js +1 -1
  167. package/dist/define/authorization/basic-authorization.js.map +1 -1
  168. package/dist/define/authorization/bearer-authorization.js +1 -1
  169. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  170. package/dist/define/authorization/cc-authorization.js +1 -1
  171. package/dist/define/authorization/cc-authorization.js.map +1 -1
  172. package/dist/define/authorization/ntlm-authorization.js +1 -1
  173. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  174. package/dist/define/authorization/oauth2-authorization.js +1 -1
  175. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  176. package/dist/define/authorization/oidc-authorization.js +1 -1
  177. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  178. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  179. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  180. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  181. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  182. package/dist/define/dialog/rename-dialog.js +1 -1
  183. package/dist/define/dialog/rename-dialog.js.map +1 -1
  184. package/dist/define/files/share-file.js +1 -1
  185. package/dist/define/files/share-file.js.map +1 -1
  186. package/dist/define/har/har-viewer.js +1 -1
  187. package/dist/define/har/har-viewer.js.map +1 -1
  188. package/dist/define/highlight/marked-highlight.js +1 -1
  189. package/dist/define/highlight/marked-highlight.js.map +1 -1
  190. package/dist/define/highlight/prism-highlight.js +1 -1
  191. package/dist/define/highlight/prism-highlight.js.map +1 -1
  192. package/dist/define/http/http-assertions.js +1 -1
  193. package/dist/define/http/http-assertions.js.map +1 -1
  194. package/dist/define/http/http-body-editor.js +1 -1
  195. package/dist/define/http/http-body-editor.js.map +1 -1
  196. package/dist/define/http/http-body-multipart-editor.js +1 -1
  197. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  198. package/dist/define/http/http-body-text-editor.js +1 -1
  199. package/dist/define/http/http-body-text-editor.js.map +1 -1
  200. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  201. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  202. package/dist/define/http/http-headers-form.js +1 -1
  203. package/dist/define/http/http-headers-form.js.map +1 -1
  204. package/dist/define/http/http-log-body.js +1 -1
  205. package/dist/define/http/http-log-body.js.map +1 -1
  206. package/dist/define/http/http-log-headers.js +1 -1
  207. package/dist/define/http/http-log-headers.js.map +1 -1
  208. package/dist/define/http/http-log-timings.js +1 -1
  209. package/dist/define/http/http-log-timings.js.map +1 -1
  210. package/dist/define/http/http-request-config.js +1 -1
  211. package/dist/define/http/http-request-config.js.map +1 -1
  212. package/dist/define/http/http-request-editor.js +1 -1
  213. package/dist/define/http/http-request-editor.js.map +1 -1
  214. package/dist/define/http/http-request-log.js +1 -1
  215. package/dist/define/http/http-request-log.js.map +1 -1
  216. package/dist/define/http/http-snippets.js +1 -1
  217. package/dist/define/http/http-snippets.js.map +1 -1
  218. package/dist/define/http/http-url-input.js +1 -1
  219. package/dist/define/http/http-url-input.js.map +1 -1
  220. package/dist/define/http/http-url-params-form.js +1 -1
  221. package/dist/define/http/http-url-params-form.js.map +1 -1
  222. package/dist/define/http-project/http-project-request-history.js +1 -1
  223. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  224. package/dist/define/http-project/http-project-request.js +2 -2
  225. package/dist/define/http-project/http-project-request.js.map +1 -1
  226. package/dist/define/http-project/project-navigation.js +1 -1
  227. package/dist/define/http-project/project-navigation.js.map +1 -1
  228. package/dist/define/http-project/project-run-report.js +1 -1
  229. package/dist/define/http-project/project-run-report.js.map +1 -1
  230. package/dist/define/http-project/project-runner.js +2 -2
  231. package/dist/define/http-project/project-runner.js.map +1 -1
  232. package/dist/define/layout/split-view.js +1 -1
  233. package/dist/define/layout/split-view.js.map +1 -1
  234. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  235. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  236. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  237. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  238. package/dist/define/ui/ui-button.js +1 -1
  239. package/dist/define/ui/ui-button.js.map +1 -1
  240. package/dist/define/ui/ui-chip.js +1 -1
  241. package/dist/define/ui/ui-chip.js.map +1 -1
  242. package/dist/define/ui/ui-collapse.js +1 -1
  243. package/dist/define/ui/ui-collapse.js.map +1 -1
  244. package/dist/define/ui/ui-dialog.js +1 -1
  245. package/dist/define/ui/ui-dialog.js.map +1 -1
  246. package/dist/define/ui/ui-dropdown-list.js +1 -1
  247. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  248. package/dist/define/ui/ui-icon-button.js +1 -1
  249. package/dist/define/ui/ui-icon-button.js.map +1 -1
  250. package/dist/define/ui/ui-icon.js +1 -1
  251. package/dist/define/ui/ui-icon.js.map +1 -1
  252. package/dist/define/ui/ui-list-item.js +1 -1
  253. package/dist/define/ui/ui-list-item.js.map +1 -1
  254. package/dist/define/ui/ui-list.js +1 -1
  255. package/dist/define/ui/ui-list.js.map +1 -1
  256. package/dist/define/ui/ui-listbox.js +1 -1
  257. package/dist/define/ui/ui-listbox.js.map +1 -1
  258. package/dist/define/ui/ui-progress.js +1 -1
  259. package/dist/define/ui/ui-progress.js.map +1 -1
  260. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  261. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  262. package/dist/define/ui/ui-segmented-button.js +1 -1
  263. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  264. package/dist/define/ui/ui-snackbar.js +1 -1
  265. package/dist/define/ui/ui-snackbar.js.map +1 -1
  266. package/dist/define/ui/ui-tab.js +1 -1
  267. package/dist/define/ui/ui-tab.js.map +1 -1
  268. package/dist/define/ui/ui-tabs.js +1 -1
  269. package/dist/define/ui/ui-tabs.js.map +1 -1
  270. package/dist/directives/data-attr.js +0 -1
  271. package/dist/directives/data-attr.js.map +1 -1
  272. package/dist/elements/ApiElement.js +0 -7
  273. package/dist/elements/ApiElement.js.map +1 -1
  274. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  275. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  276. package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
  277. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  278. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  279. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  280. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  281. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  282. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  283. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  284. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  285. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  286. package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
  287. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  288. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  289. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  290. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  291. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  292. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  293. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  294. package/dist/elements/amf/ApiRequest.element.js +0 -78
  295. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  296. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  297. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  298. package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
  299. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  300. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  301. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  302. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  303. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  304. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  305. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  306. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  307. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  308. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  309. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  310. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  311. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  312. package/dist/elements/amf/ApiSummary.element.js +0 -26
  313. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  314. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  315. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  316. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  317. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  318. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  319. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  320. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  321. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  322. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  323. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  324. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  325. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  326. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  327. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  328. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  329. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  330. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  331. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  332. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  333. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  334. package/dist/elements/authorization/ui/Authorization.js +18 -32
  335. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  336. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  337. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  338. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  339. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  340. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  341. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  342. package/dist/elements/code/HttpSnippets.js +9 -8
  343. package/dist/elements/code/HttpSnippets.js.map +1 -1
  344. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  345. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  346. package/dist/elements/dialog/Rename.js +0 -6
  347. package/dist/elements/dialog/Rename.js.map +1 -1
  348. package/dist/elements/environment/EnvironmentEditor.js +8 -11
  349. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  350. package/dist/elements/environment/ServerEditor.js +7 -45
  351. package/dist/elements/environment/ServerEditor.js.map +1 -1
  352. package/dist/elements/environment/VariablesEditor.js +7 -12
  353. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  354. package/dist/elements/files/ShareFile.js +19 -57
  355. package/dist/elements/files/ShareFile.js.map +1 -1
  356. package/dist/elements/har/HarViewer.js +6 -7
  357. package/dist/elements/har/HarViewer.js.map +1 -1
  358. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  359. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  360. package/dist/elements/highlight/PrismHighlight.js +9 -18
  361. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  362. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  363. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  364. package/dist/elements/http/BodyEditor.js +21 -33
  365. package/dist/elements/http/BodyEditor.js.map +1 -1
  366. package/dist/elements/http/BodyMultipartEditor.js +17 -18
  367. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  368. package/dist/elements/http/BodyTextEditor.js +2 -15
  369. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  370. package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
  371. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  372. package/dist/elements/http/HeadersForm.js +16 -17
  373. package/dist/elements/http/HeadersForm.js.map +1 -1
  374. package/dist/elements/http/HttpAssertions.js +8 -6
  375. package/dist/elements/http/HttpAssertions.js.map +1 -1
  376. package/dist/elements/http/LogBody.js +10 -21
  377. package/dist/elements/http/LogBody.js.map +1 -1
  378. package/dist/elements/http/LogHeaders.js +4 -23
  379. package/dist/elements/http/LogHeaders.js.map +1 -1
  380. package/dist/elements/http/LogTimings.js +11 -13
  381. package/dist/elements/http/LogTimings.js.map +1 -1
  382. package/dist/elements/http/RequestConfigElement.js +7 -4
  383. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  384. package/dist/elements/http/RequestEditor.js +54 -88
  385. package/dist/elements/http/RequestEditor.js.map +1 -1
  386. package/dist/elements/http/RequestLog.js +9 -14
  387. package/dist/elements/http/RequestLog.js.map +1 -1
  388. package/dist/elements/http/UrlInput.js +15 -25
  389. package/dist/elements/http/UrlInput.js.map +1 -1
  390. package/dist/elements/http/UrlParamsForm.js +16 -13
  391. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  392. package/dist/elements/layout/LayoutManager.js +16 -24
  393. package/dist/elements/layout/LayoutManager.js.map +1 -1
  394. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  395. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  396. package/dist/elements/layout/SplitItem.js +4 -12
  397. package/dist/elements/layout/SplitItem.js.map +1 -1
  398. package/dist/elements/layout/SplitLayout.js +18 -24
  399. package/dist/elements/layout/SplitLayout.js.map +1 -1
  400. package/dist/elements/layout/SplitPanel.js +10 -16
  401. package/dist/elements/layout/SplitPanel.js.map +1 -1
  402. package/dist/elements/layout/SplitView.js +17 -26
  403. package/dist/elements/layout/SplitView.js.map +1 -1
  404. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  405. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  406. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  407. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  408. package/dist/elements/project/HttpProjectRequest.js +0 -38
  409. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  410. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  411. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  412. package/dist/elements/project/ProjectNavigation.js +0 -4
  413. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  414. package/dist/elements/project/ProjectRunReport.js +4 -15
  415. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  416. package/dist/elements/project/ProjectRunner.js +2 -47
  417. package/dist/elements/project/ProjectRunner.js.map +1 -1
  418. package/dist/elements/schema-design/AssociationFormElement.js +0 -13
  419. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  420. package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
  421. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  422. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  423. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  424. package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
  425. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  426. package/dist/elements/schema-design/EntityFormElement.js +0 -18
  427. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  428. package/dist/elements/schema-design/PropertyFormElement.js +0 -12
  429. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  430. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  431. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  432. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  433. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  434. package/dist/elements/user/UserAvatarElement.js +0 -9
  435. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  436. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  437. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  438. package/dist/http-client/idb/Base.js +5 -10
  439. package/dist/http-client/idb/Base.js.map +1 -1
  440. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  441. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  442. package/dist/http-client/idb/MockedStore.js +3 -1
  443. package/dist/http-client/idb/MockedStore.js.map +1 -1
  444. package/dist/http-client/store/DataImportProcessor.js +0 -3
  445. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  446. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  447. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  448. package/dist/http-client/store/IdbThread.js +23 -20
  449. package/dist/http-client/store/IdbThread.js.map +1 -1
  450. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  451. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  452. package/dist/http-client/store/idb/IdbStore.js +0 -2
  453. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  454. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  455. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  456. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  457. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  458. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  459. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  460. package/dist/mixins/FileDropMixin.js +0 -1
  461. package/dist/mixins/FileDropMixin.js.map +1 -1
  462. package/dist/mixins/RenderableMixin.js +11 -15
  463. package/dist/mixins/RenderableMixin.js.map +1 -1
  464. package/dist/pages/ApplicationScreen.js +34 -55
  465. package/dist/pages/ApplicationScreen.js.map +1 -1
  466. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  467. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  468. package/dist/pages/api-client/Authenticate.screen.js +4 -6
  469. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  470. package/dist/pages/api-client/StoreConfig.screen.js +21 -37
  471. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  472. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  473. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  474. package/dist/pages/api-client/pages/Files.page.js +6 -27
  475. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  476. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  477. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  478. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  479. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  480. package/dist/pages/demo/DemoPage.d.ts.map +1 -1
  481. package/dist/pages/demo/DemoPage.js +25 -24
  482. package/dist/pages/demo/DemoPage.js.map +1 -1
  483. package/dist/pages/http-project/HttpProject.screen.js +25 -35
  484. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  485. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  486. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  487. package/dist/store/HttpStore.js +0 -3
  488. package/dist/store/HttpStore.js.map +1 -1
  489. package/dist/store/UserCache.js +5 -5
  490. package/dist/store/UserCache.js.map +1 -1
  491. package/dist/ui/UiElement.js +4 -5
  492. package/dist/ui/UiElement.js.map +1 -1
  493. package/dist/ui/button/SegmentedButton.js +9 -11
  494. package/dist/ui/button/SegmentedButton.js.map +1 -1
  495. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  496. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  497. package/dist/ui/button/UiButton.js +17 -39
  498. package/dist/ui/button/UiButton.js.map +1 -1
  499. package/dist/ui/button/UiIconButton.js +9 -35
  500. package/dist/ui/button/UiIconButton.js.map +1 -1
  501. package/dist/ui/chip/UiChip.js +9 -49
  502. package/dist/ui/chip/UiChip.js.map +1 -1
  503. package/dist/ui/collapse/UiCollapse.js +15 -20
  504. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  505. package/dist/ui/controllers/ActionController.js +143 -144
  506. package/dist/ui/controllers/ActionController.js.map +1 -1
  507. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  508. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  509. package/dist/ui/date/DateTime.js +3 -3
  510. package/dist/ui/date/DateTime.js.map +1 -1
  511. package/dist/ui/dialog/UiDialog.d.ts +1 -1
  512. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  513. package/dist/ui/dialog/UiDialog.js +19 -41
  514. package/dist/ui/dialog/UiDialog.js.map +1 -1
  515. package/dist/ui/effects/ripple.js +20 -18
  516. package/dist/ui/effects/ripple.js.map +1 -1
  517. package/dist/ui/effects/rippleDirective.js +6 -7
  518. package/dist/ui/effects/rippleDirective.js.map +1 -1
  519. package/dist/ui/icons/UiIcon.js +4 -3
  520. package/dist/ui/icons/UiIcon.js.map +1 -1
  521. package/dist/ui/input/CheckboxElement.js +12 -10
  522. package/dist/ui/input/CheckboxElement.js.map +1 -1
  523. package/dist/ui/input/CheckedElement.js +2 -13
  524. package/dist/ui/input/CheckedElement.js.map +1 -1
  525. package/dist/ui/input/Input.js +169 -234
  526. package/dist/ui/input/Input.js.map +1 -1
  527. package/dist/ui/input/RadioElement.js +13 -11
  528. package/dist/ui/input/RadioElement.js.map +1 -1
  529. package/dist/ui/input/SwitchElement.js +0 -18
  530. package/dist/ui/input/SwitchElement.js.map +1 -1
  531. package/dist/ui/input/TextAreaElement.js +0 -15
  532. package/dist/ui/input/TextAreaElement.js.map +1 -1
  533. package/dist/ui/list/DividerElement.js +5 -10
  534. package/dist/ui/list/DividerElement.js.map +1 -1
  535. package/dist/ui/list/UiDropdownList.js +7 -48
  536. package/dist/ui/list/UiDropdownList.js.map +1 -1
  537. package/dist/ui/list/UiList.js +3 -15
  538. package/dist/ui/list/UiList.js.map +1 -1
  539. package/dist/ui/list/UiListItem.js +4 -17
  540. package/dist/ui/list/UiListItem.js.map +1 -1
  541. package/dist/ui/list/UiListbox.js +0 -1
  542. package/dist/ui/list/UiListbox.js.map +1 -1
  543. package/dist/ui/notification/SnackNotifications.js +1 -2
  544. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  545. package/dist/ui/notification/Snackbar.js +27 -51
  546. package/dist/ui/notification/Snackbar.js.map +1 -1
  547. package/dist/ui/progress/Range.js +24 -23
  548. package/dist/ui/progress/Range.js.map +1 -1
  549. package/dist/ui/progress/UiProgress.js +0 -11
  550. package/dist/ui/progress/UiProgress.js.map +1 -1
  551. package/dist/ui/table/DataTable.js +7 -12
  552. package/dist/ui/table/DataTable.js.map +1 -1
  553. package/dist/ui/tabs/UiTab.js +24 -25
  554. package/dist/ui/tabs/UiTab.js.map +1 -1
  555. package/dist/ui/tabs/UiTabs.js +21 -35
  556. package/dist/ui/tabs/UiTabs.js.map +1 -1
  557. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  558. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  559. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  560. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  561. package/dist/visualization/lib/Point.js +0 -2
  562. package/dist/visualization/lib/Point.js.map +1 -1
  563. package/dist/visualization/lib/SelectionManager.js +10 -11
  564. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  565. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  566. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  567. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  568. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  569. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  570. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  571. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  572. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  573. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  574. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  575. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  576. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  577. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  578. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  579. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  580. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  581. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  582. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  583. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  584. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  585. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  586. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  587. package/package.json +3 -2
  588. package/src/pages/demo/DemoPage.ts +12 -11
  589. package/src/ui/dialog/UiDialog.ts +6 -4
  590. package/test/ui/dialog/UiDialog.test.ts +236 -0
  591. package/tsconfig.json +2 -2
  592. package/demo/themes/default.css +0 -0
  593. package/demo/themes/m3/theme.dark.css +0 -40
  594. package/demo/themes/m3/theme.light.css +0 -40
  595. package/demo/themes/m3/tokens.css +0 -291
@@ -1 +1 @@
1
- {"version":3,"file":"UiChip.js","sourceRoot":"","sources":["../../../src/ui/chip/UiChip.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { when } from 'lit/directives/when.js';\nimport { EventUtils } from \"@api-client/core/build/browser.js\"; // build/src/lib/events/Utils.js\nimport { UiElement } from \"../UiElement.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { ripple } from '../effects/rippleDirective.js';\nimport { close, arrowDropDown, check } from \"../icons/Icons.js\";\nimport { isDisabled, setDisabled } from \"../lib/disabled.js\";\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport '../../define/ui/ui-ripple.js';\n\nexport enum ChipType {\n assist = 'assist',\n filter = 'filter',\n input = 'input',\n suggestion = 'suggestion',\n}\n\n/**\n * @slot icon - The leading icon, sized 18x18 px\n * @slot avatar - The leading image, sized 24x24 px\n * @fires list - When the user requested to activate the list associated with the element.\n * @fires select - When the checked state changed through a user interaction. This only related to `filter` chips. Note, `select` is dispatched just before the `click` event.\n */\nexport default class UiChip extends UiElement {\n /**\n * Whether the chip is disabled. The user can't interact with the chip when `true`.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) \n get disabled(): boolean {\n return isDisabled(this);\n }\n\n set disabled(value: boolean) {\n const old = isDisabled(this);\n setDisabled(this, value);\n this.requestUpdate('disabled', old);\n }\n\n /**\n * The type of the rendered chip.\n * @attribute\n * \n * @see https://m3.material.io/components/chips/guidelines\n */\n @property({ type: String }) type: ChipType;\n\n /**\n * Whether the chip should be rendered as elevated.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) elevated?: boolean;\n\n /**\n * Whether the chip renders the \"close\" icon at the end.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) closable?: boolean;\n\n /**\n * Whether the chip is currently checked.\n * Note, this controls the presentation layer only. It has no meaning when it comes to forms and inputs.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) checked?: boolean;\n\n /**\n * The ID attribute of the list element that is rendered after activating the chip.\n * When this is set the chip renders the dropdown icon at the end and sets `aria-*` \n * attributes informing the assistive technology that this chip controls a list.\n * \n * @attribute\n */\n @property({ type: String, reflect: true }) list?: string;\n\n @queryAsync('ui-ripple') protected ripple!: Promise<UiRipple | null>;\n\n @state() protected showRipple = false;\n\n /**\n * Determines when the element has an icon in the \"icon\" slot.\n */\n @state() protected hasIcon: boolean;\n\n /**\n * Determines when the element has an image in the \"avatar\" slot.\n */\n @state() protected hasAvatar: boolean;\n\n constructor() {\n super();\n\n this.disabled = false;\n this.type = ChipType.assist;\n this.hasIcon = false;\n this.hasAvatar = false;\n\n this.actionController.cancelKeyboardEvents = true;\n\n this.addEventListener('click', this.handleClick.bind(this));\n this.addEventListener('keydown', this.handleKeyDown.bind(this));\n this.addEventListener('keyup', this.handleKeyUp.bind(this));\n this.addEventListener('pointerdown', this.handlePointerDown.bind(this));\n this.addEventListener('pointerup', this.handlePointerUp.bind(this));\n this.addEventListener('pointercancel', this.handlePointerCancel.bind(this));\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this));\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this));\n this.addEventListener('focus', this.handleFocus.bind(this));\n this.addEventListener('blur', this.handleBlur.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n if (!this.hasAttribute('tabindex') && !this.disabled) {\n this.setAttribute('tabindex', '0');\n }\n }\n\n protected async pressRipple(): Promise<void> {\n const element = await this.getRipple();\n if (element && !element.isPressed) {\n element.beginPress();\n }\n }\n\n protected async endRipple(): Promise<void> {\n const element = await this.getRipple();\n element?.endPress();\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.pressRipple();\n }\n\n override async handleKeyDown(e: KeyboardEvent): Promise<void> {\n super.handleKeyDown(e);\n if (this.type === ChipType.filter && e.code === 'ArrowDown') {\n e.preventDefault();\n this.listAction();\n } else if (this.closable && e.code === 'Backspace') {\n e.preventDefault();\n this.closeAction();\n }\n }\n\n protected async handleFocus(): Promise<void> {\n const element = await this.getRipple();\n element?.beginFocus();\n }\n\n protected async handleBlur(): Promise<void> {\n const element = await this.getRipple();\n element?.endFocus();\n }\n\n protected readonly getRipple = (): Promise<UiRipple | null> => {\n this.showRipple = true;\n return this.ripple;\n };\n\n override endPress(info: EndPressConfig): void {\n super.endPress(info);\n this.endRipple();\n const { cancelled, reason } = info;\n if (cancelled) {\n return;\n }\n if (reason === 'enter' || reason === 'space') {\n this.click();\n }\n }\n\n override handleClick(e: MouseEvent): void {\n super.handleClick(e);\n if (this.type === ChipType.filter) {\n this.toggleChecked();\n }\n }\n\n /**\n * Toggles the \"filter\" type of the chip.\n */\n toggleChecked(): void {\n this.checked = !this.checked;\n this.dispatchEvent(new Event('select'));\n }\n\n /**\n * Sets the `hasIcon` state property when the \"icon\" slot change event is dispatched.\n */\n protected handleIconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this.hasIcon = !!slot.assignedNodes().length;\n }\n\n /**\n * Sets the `_hasAvatar` state property when the \"avatar\" slot change event is dispatched.\n */\n protected handleAvatarSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this.hasAvatar = !!slot.assignedNodes().length;\n }\n\n protected handleListClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n this.listAction();\n }\n\n protected handleClose(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n this.closeAction();\n }\n\n protected async closeAction(): Promise<void> {\n this.dispatchEvent(new Event('close'));\n }\n\n protected async listAction(): Promise<void> {\n this.dispatchEvent(new Event('list'));\n }\n\n protected override render(): TemplateResult {\n const { pressed = false } = this;\n const containerClasses = classMap({\n surface: true,\n withIcon: this.hasIcon,\n withAvatar: this.hasAvatar,\n pressed,\n });\n return html`\n <div class=\"${containerClasses}\" ${ripple(this.getRipple)}>\n <div class=\"container\"></div>\n ${when(this.showRipple, this.renderRipple)}\n <div class=\"content\">\n ${this.renderLeadingIcon()}\n ${this.renderAvatar()}\n <slot></slot>\n ${this.renderTrailingIcon()}\n </div>\n </div>\n `;\n }\n\n protected renderLeadingIcon(): TemplateResult | typeof nothing {\n const { type } = this;\n if (type === ChipType.suggestion) {\n return nothing;\n }\n if (type === ChipType.filter) {\n const iconClasses = classMap({\n 'leading-icon': true,\n 'check-mark': true,\n checked: !!this.checked,\n });\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`;\n }\n return html`<slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot>`;\n }\n\n protected renderAvatar(): TemplateResult | typeof nothing {\n const { type } = this;\n if (type === ChipType.input) {\n return html`<slot name=\"avatar\" @slotchange=\"${this.handleAvatarSlotChange}\"></slot>`;\n }\n return nothing;\n }\n\n protected renderTrailingIcon(): TemplateResult | typeof nothing {\n const { closable=false, list, type } = this;\n if (type === ChipType.filter) {\n if (list) {\n return html`<span class=\"trailing-icon\" role=\"presentation\" @click=\"${this.handleListClick}\" @keypress=\"${EventUtils.cancelEvent}\">${arrowDropDown}</span>`;\n }\n }\n if (type === ChipType.input && closable) {\n return html`<span \n class=\"trailing-icon\" \n @click=\"${this.handleClose}\" \n @keypress=\"${EventUtils.cancelEvent}\"\n role=\"button\"\n aria-label=\"Activate to close or disabled this chip.\"\n >${close}</span>`;\n }\n return nothing;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
1
+ {"version":3,"file":"UiChip.js","sourceRoot":"","sources":["../../../src/ui/chip/UiChip.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from \"lit\";\nimport { property, queryAsync, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { when } from 'lit/directives/when.js';\nimport { EventUtils } from \"@api-client/core/build/browser.js\"; // build/src/lib/events/Utils.js\nimport { UiElement } from \"../UiElement.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { ripple } from '../effects/rippleDirective.js';\nimport { close, arrowDropDown, check } from \"../icons/Icons.js\";\nimport { isDisabled, setDisabled } from \"../lib/disabled.js\";\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport '../../define/ui/ui-ripple.js';\n\nexport enum ChipType {\n assist = 'assist',\n filter = 'filter',\n input = 'input',\n suggestion = 'suggestion',\n}\n\n/**\n * @slot icon - The leading icon, sized 18x18 px\n * @slot avatar - The leading image, sized 24x24 px\n * @fires list - When the user requested to activate the list associated with the element.\n * @fires select - When the checked state changed through a user interaction. This only related to `filter` chips. Note, `select` is dispatched just before the `click` event.\n */\nexport default class UiChip extends UiElement {\n /**\n * Whether the chip is disabled. The user can't interact with the chip when `true`.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) \n get disabled(): boolean {\n return isDisabled(this);\n }\n\n set disabled(value: boolean) {\n const old = isDisabled(this);\n setDisabled(this, value);\n this.requestUpdate('disabled', old);\n }\n\n /**\n * The type of the rendered chip.\n * @attribute\n * \n * @see https://m3.material.io/components/chips/guidelines\n */\n @property({ type: String }) type: ChipType;\n\n /**\n * Whether the chip should be rendered as elevated.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) elevated?: boolean;\n\n /**\n * Whether the chip renders the \"close\" icon at the end.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) closable?: boolean;\n\n /**\n * Whether the chip is currently checked.\n * Note, this controls the presentation layer only. It has no meaning when it comes to forms and inputs.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) checked?: boolean;\n\n /**\n * The ID attribute of the list element that is rendered after activating the chip.\n * When this is set the chip renders the dropdown icon at the end and sets `aria-*` \n * attributes informing the assistive technology that this chip controls a list.\n * \n * @attribute\n */\n @property({ type: String, reflect: true }) list?: string;\n\n @queryAsync('ui-ripple') protected ripple!: Promise<UiRipple | null>;\n\n @state() protected showRipple = false;\n\n /**\n * Determines when the element has an icon in the \"icon\" slot.\n */\n @state() protected hasIcon: boolean;\n\n /**\n * Determines when the element has an image in the \"avatar\" slot.\n */\n @state() protected hasAvatar: boolean;\n\n constructor() {\n super();\n\n this.disabled = false;\n this.type = ChipType.assist;\n this.hasIcon = false;\n this.hasAvatar = false;\n\n this.actionController.cancelKeyboardEvents = true;\n\n this.addEventListener('click', this.handleClick.bind(this));\n this.addEventListener('keydown', this.handleKeyDown.bind(this));\n this.addEventListener('keyup', this.handleKeyUp.bind(this));\n this.addEventListener('pointerdown', this.handlePointerDown.bind(this));\n this.addEventListener('pointerup', this.handlePointerUp.bind(this));\n this.addEventListener('pointercancel', this.handlePointerCancel.bind(this));\n this.addEventListener('pointerleave', this.handlePointerLeave.bind(this));\n this.addEventListener('contextmenu', this.handleContextMenu.bind(this));\n this.addEventListener('focus', this.handleFocus.bind(this));\n this.addEventListener('blur', this.handleBlur.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'button');\n }\n if (!this.hasAttribute('tabindex') && !this.disabled) {\n this.setAttribute('tabindex', '0');\n }\n }\n\n protected async pressRipple(): Promise<void> {\n const element = await this.getRipple();\n if (element && !element.isPressed) {\n element.beginPress();\n }\n }\n\n protected async endRipple(): Promise<void> {\n const element = await this.getRipple();\n element?.endPress();\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.pressRipple();\n }\n\n override async handleKeyDown(e: KeyboardEvent): Promise<void> {\n super.handleKeyDown(e);\n if (this.type === ChipType.filter && e.code === 'ArrowDown') {\n e.preventDefault();\n this.listAction();\n } else if (this.closable && e.code === 'Backspace') {\n e.preventDefault();\n this.closeAction();\n }\n }\n\n protected async handleFocus(): Promise<void> {\n const element = await this.getRipple();\n element?.beginFocus();\n }\n\n protected async handleBlur(): Promise<void> {\n const element = await this.getRipple();\n element?.endFocus();\n }\n\n protected readonly getRipple = (): Promise<UiRipple | null> => {\n this.showRipple = true;\n return this.ripple;\n };\n\n override endPress(info: EndPressConfig): void {\n super.endPress(info);\n this.endRipple();\n const { cancelled, reason } = info;\n if (cancelled) {\n return;\n }\n if (reason === 'enter' || reason === 'space') {\n this.click();\n }\n }\n\n override handleClick(e: MouseEvent): void {\n super.handleClick(e);\n if (this.type === ChipType.filter) {\n this.toggleChecked();\n }\n }\n\n /**\n * Toggles the \"filter\" type of the chip.\n */\n toggleChecked(): void {\n this.checked = !this.checked;\n this.dispatchEvent(new Event('select'));\n }\n\n /**\n * Sets the `hasIcon` state property when the \"icon\" slot change event is dispatched.\n */\n protected handleIconSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this.hasIcon = !!slot.assignedNodes().length;\n }\n\n /**\n * Sets the `_hasAvatar` state property when the \"avatar\" slot change event is dispatched.\n */\n protected handleAvatarSlotChange(e: Event): void {\n const slot = e.target as HTMLSlotElement;\n this.hasAvatar = !!slot.assignedNodes().length;\n }\n\n protected handleListClick(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n this.listAction();\n }\n\n protected handleClose(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n this.closeAction();\n }\n\n protected async closeAction(): Promise<void> {\n this.dispatchEvent(new Event('close'));\n }\n\n protected async listAction(): Promise<void> {\n this.dispatchEvent(new Event('list'));\n }\n\n protected override render(): TemplateResult {\n const { pressed = false } = this;\n const containerClasses = classMap({\n surface: true,\n withIcon: this.hasIcon,\n withAvatar: this.hasAvatar,\n pressed,\n });\n return html`\n <div class=\"${containerClasses}\" ${ripple(this.getRipple)}>\n <div class=\"container\"></div>\n ${when(this.showRipple, this.renderRipple)}\n <div class=\"content\">\n ${this.renderLeadingIcon()}\n ${this.renderAvatar()}\n <slot></slot>\n ${this.renderTrailingIcon()}\n </div>\n </div>\n `;\n }\n\n protected renderLeadingIcon(): TemplateResult | typeof nothing {\n const { type } = this;\n if (type === ChipType.suggestion) {\n return nothing;\n }\n if (type === ChipType.filter) {\n const iconClasses = classMap({\n 'leading-icon': true,\n 'check-mark': true,\n checked: !!this.checked,\n });\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`;\n }\n return html`<slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot>`;\n }\n\n protected renderAvatar(): TemplateResult | typeof nothing {\n const { type } = this;\n if (type === ChipType.input) {\n return html`<slot name=\"avatar\" @slotchange=\"${this.handleAvatarSlotChange}\"></slot>`;\n }\n return nothing;\n }\n\n protected renderTrailingIcon(): TemplateResult | typeof nothing {\n const { closable=false, list, type } = this;\n if (type === ChipType.filter) {\n if (list) {\n return html`<span class=\"trailing-icon\" role=\"presentation\" @click=\"${this.handleListClick}\" @keypress=\"${EventUtils.cancelEvent}\">${arrowDropDown}</span>`;\n }\n }\n if (type === ChipType.input && closable) {\n return html`<span \n class=\"trailing-icon\" \n @click=\"${this.handleClose}\" \n @keypress=\"${EventUtils.cancelEvent}\"\n role=\"button\"\n aria-label=\"Activate to close or disabled this chip.\"\n >${close}</span>`;\n }\n return nothing;\n }\n\n protected renderRipple = (): TemplateResult => {\n const { disabled } = this;\n return html`<ui-ripple class=\"ripple\" ?disabled=\"${disabled}\"></ui-ripple>`;\n };\n}\n"]}
@@ -20,21 +20,6 @@ export default class UiCollapse extends UiElement {
20
20
  setDisabled(this, value);
21
21
  this.requestUpdate('disabled', old);
22
22
  }
23
- /**
24
- * Set noAnimation to true to disable animations.
25
- * @attr
26
- */
27
- noAnimation;
28
- /**
29
- * Renders the collapse horizontally when true and vertically otherwise
30
- * @attribute
31
- */
32
- horizontal = false;
33
- /**
34
- * Set opened to true to show the collapse element and to false to hide it.
35
- * @attribute
36
- */
37
- open = false;
38
23
  get dimension() {
39
24
  return this.horizontal ? 'width' : 'height';
40
25
  }
@@ -55,7 +40,6 @@ export default class UiCollapse extends UiElement {
55
40
  get isAttached() {
56
41
  return !!this.parentNode;
57
42
  }
58
- transitioningInternal = false;
59
43
  /**
60
44
  * @return When true, the element is transitioning its open state. When false,
61
45
  * the element has finished opening/closing.
@@ -63,12 +47,23 @@ export default class UiCollapse extends UiElement {
63
47
  get transitioning() {
64
48
  return this.transitioningInternal;
65
49
  }
66
- /**
67
- * Stores the desired size of the collapse body.
68
- */
69
- desiredSize = '';
70
50
  constructor() {
71
51
  super();
52
+ /**
53
+ * Renders the collapse horizontally when true and vertically otherwise
54
+ * @attribute
55
+ */
56
+ this.horizontal = false;
57
+ /**
58
+ * Set opened to true to show the collapse element and to false to hide it.
59
+ * @attribute
60
+ */
61
+ this.open = false;
62
+ this.transitioningInternal = false;
63
+ /**
64
+ * Stores the desired size of the collapse body.
65
+ */
66
+ this.desiredSize = '';
72
67
  this.addEventListener('transitionend', this.handleTransitionEnd.bind(this));
73
68
  }
74
69
  connectedCallback() {
@@ -1 +1 @@
1
- {"version":3,"file":"UiCollapse.js","sourceRoot":"","sources":["../../../src/ui/collapse/UiCollapse.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { UiElement } from \"../UiElement.js\";\nimport { isDisabled, setDisabled } from \"../lib/disabled.js\";\n\n/**\n * @fires transitioning - When the element is transitioning.\n * @slot - Main slot for the content\n */\nexport default class UiCollapse extends UiElement {\n /**\n * Whether the chip is disabled. The user can't interact with the chip when `true`.\n * @attribute\n */\n @property({ type: Boolean, reflect: true })\n get disabled(): boolean {\n return isDisabled(this);\n }\n\n set disabled(value: boolean) {\n const old = isDisabled(this);\n setDisabled(this, value);\n this.requestUpdate('disabled', old);\n }\n\n /**\n * Set noAnimation to true to disable animations.\n * @attr\n */\n @property({ type: Boolean, reflect: true }) noAnimation?: boolean;\n\n /**\n * Renders the collapse horizontally when true and vertically otherwise\n * @attribute\n */\n @property({ type: Boolean }) horizontal = false;\n\n /**\n * Set opened to true to show the collapse element and to false to hide it.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) open = false;\n\n get dimension(): 'width' | 'height' {\n return this.horizontal ? 'width' : 'height';\n }\n\n /**\n * `maxWidth` or `maxHeight`.\n * @private\n */\n get dimensionMax(): 'maxWidth' | 'maxHeight' {\n return this.horizontal ? 'maxWidth' : 'maxHeight';\n }\n\n /**\n * `max-width` or `max-height`.\n * @private\n */\n get dimensionMaxCss(): 'max-width' | 'max-height' {\n return this.horizontal ? 'max-width' : 'max-height';\n }\n\n get isAttached(): boolean {\n return !!this.parentNode;\n }\n\n protected transitioningInternal = false;\n\n /**\n * @return When true, the element is transitioning its open state. When false,\n * the element has finished opening/closing.\n */\n get transitioning(): boolean {\n return this.transitioningInternal;\n }\n\n /**\n * Stores the desired size of the collapse body.\n */\n protected desiredSize = '';\n\n constructor() {\n super();\n this.addEventListener('transitionend', this.handleTransitionEnd.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'group');\n }\n if (!this.hasAttribute('aria-hidden')) {\n this.setAttribute('aria-hidden', 'true');\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('open')) {\n this.handleOpenChange();\n }\n if (cp.has('horizontal')) {\n this.handleHorizontalChange();\n }\n super.willUpdate(cp);\n }\n\n /**\n * Toggle the opened state.\n */\n toggle(): void {\n this.open = !this.open;\n this.dispatchEvent(new Event('open'));\n }\n\n /**\n * Updates the size of the element.\n * @param size The new value for `maxWidth`/`maxHeight` as css property value, usually `auto` or `0px`.\n * @param animated if `true` updates the size with an animation, otherwise without.\n */\n protected updateSize(size: string, animated?: boolean): void {\n // Consider 'auto' as '', to take full size.\n let sizeValue = size === 'auto' ? '' : size;\n\n let willAnimate = animated && !this.noAnimation && this.isAttached;\n this.desiredSize = sizeValue;\n\n this.updateTransition(false);\n // If we can animate, must do some prep work.\n if (willAnimate) {\n // Animation will start at the current size.\n const startSize = this.calcSize();\n // For `auto` we must calculate what is the final size for the animation.\n // After the transition is done, _transitionEnd will set the size back to\n // `auto`.\n if (sizeValue === '') {\n this.style[this.dimensionMax] = '';\n sizeValue = this.calcSize();\n }\n // Go to startSize without animation.\n \n this.style[this.dimensionMax] = startSize;\n // Force layout to ensure transition will go. Set scrollTop to itself\n // so that compilers won't remove it.\n // eslint-disable-next-line no-self-assign\n this.scrollTop = this.scrollTop;\n // Enable animation.\n this.updateTransition(true);\n // If final size is the same as startSize it will not animate.\n willAnimate = (sizeValue !== startSize);\n }\n // Set the final size.\n \n this.style[this.dimensionMax] = sizeValue;\n // If it won't animate, call transitionEnd to set correct styles.\n if (!willAnimate) {\n this.transitionEnd();\n }\n }\n\n protected updateTransition(enabled?: boolean): void {\n this.style.transitionDuration = (enabled && !this.noAnimation) ? '' : '0s';\n }\n\n /**\n * Calculates the size of the element when opened.\n */\n protected calcSize(): string {\n const value = this.getBoundingClientRect()[this.dimension];\n return `${value}px`;\n }\n\n protected transitionEnd(): void {\n this.style[this.dimensionMax] = this.desiredSize;\n this.toggleAttribute('collapse-closed', !this.open);\n this.toggleAttribute('collapse-opened', this.open);\n this.updateTransition(false);\n this.notifyResize();\n this.transitioningInternal = false;\n this.notifyTransitioning();\n }\n\n protected notifyResize(): void {\n this.dispatchEvent(new Event('resize', { bubbles: true, composed: true, cancelable: true }));\n }\n\n protected notifyTransitioning(): void {\n this.dispatchEvent(new Event('transitioning', { bubbles: true, composed: true, cancelable: true }));\n }\n\n protected handleTransitionEnd(e: Event): void {\n const target = e.composedPath().find((node) => node === this);\n if (target) {\n this.transitionEnd();\n }\n }\n\n protected handleOpenChange(): void {\n const { open } = this;\n this.setAttribute('aria-hidden', String(!open));\n this.transitioningInternal = true;\n this.notifyTransitioning();\n this.toggleAttribute('collapse-closed', false);\n this.toggleAttribute('collapse-opened', false);\n this.updateSize(open ? 'auto' : '0px', true);\n\n // Focus the current collapse.\n if (open) {\n this.focus();\n }\n }\n\n protected handleHorizontalChange(): void {\n this.style.transitionProperty = this.dimensionMaxCss;\n const otherDimension = this.dimensionMax === 'maxWidth' ? 'maxHeight' : 'maxWidth';\n this.style[otherDimension] = '';\n this.updateSize(this.open ? 'auto' : '0px', false);\n }\n\n override render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n"]}
1
+ {"version":3,"file":"UiCollapse.js","sourceRoot":"","sources":["../../../src/ui/collapse/UiCollapse.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { UiElement } from \"../UiElement.js\";\nimport { isDisabled, setDisabled } from \"../lib/disabled.js\";\n\n/**\n * @fires transitioning - When the element is transitioning.\n * @slot - Main slot for the content\n */\nexport default class UiCollapse extends UiElement {\n /**\n * Whether the chip is disabled. The user can't interact with the chip when `true`.\n * @attribute\n */\n @property({ type: Boolean, reflect: true })\n get disabled(): boolean {\n return isDisabled(this);\n }\n\n set disabled(value: boolean) {\n const old = isDisabled(this);\n setDisabled(this, value);\n this.requestUpdate('disabled', old);\n }\n\n /**\n * Set noAnimation to true to disable animations.\n * @attr\n */\n @property({ type: Boolean, reflect: true }) noAnimation?: boolean;\n\n /**\n * Renders the collapse horizontally when true and vertically otherwise\n * @attribute\n */\n @property({ type: Boolean }) horizontal = false;\n\n /**\n * Set opened to true to show the collapse element and to false to hide it.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) open = false;\n\n get dimension(): 'width' | 'height' {\n return this.horizontal ? 'width' : 'height';\n }\n\n /**\n * `maxWidth` or `maxHeight`.\n * @private\n */\n get dimensionMax(): 'maxWidth' | 'maxHeight' {\n return this.horizontal ? 'maxWidth' : 'maxHeight';\n }\n\n /**\n * `max-width` or `max-height`.\n * @private\n */\n get dimensionMaxCss(): 'max-width' | 'max-height' {\n return this.horizontal ? 'max-width' : 'max-height';\n }\n\n get isAttached(): boolean {\n return !!this.parentNode;\n }\n\n protected transitioningInternal = false;\n\n /**\n * @return When true, the element is transitioning its open state. When false,\n * the element has finished opening/closing.\n */\n get transitioning(): boolean {\n return this.transitioningInternal;\n }\n\n /**\n * Stores the desired size of the collapse body.\n */\n protected desiredSize = '';\n\n constructor() {\n super();\n this.addEventListener('transitionend', this.handleTransitionEnd.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'group');\n }\n if (!this.hasAttribute('aria-hidden')) {\n this.setAttribute('aria-hidden', 'true');\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('open')) {\n this.handleOpenChange();\n }\n if (cp.has('horizontal')) {\n this.handleHorizontalChange();\n }\n super.willUpdate(cp);\n }\n\n /**\n * Toggle the opened state.\n */\n toggle(): void {\n this.open = !this.open;\n this.dispatchEvent(new Event('open'));\n }\n\n /**\n * Updates the size of the element.\n * @param size The new value for `maxWidth`/`maxHeight` as css property value, usually `auto` or `0px`.\n * @param animated if `true` updates the size with an animation, otherwise without.\n */\n protected updateSize(size: string, animated?: boolean): void {\n // Consider 'auto' as '', to take full size.\n let sizeValue = size === 'auto' ? '' : size;\n\n let willAnimate = animated && !this.noAnimation && this.isAttached;\n this.desiredSize = sizeValue;\n\n this.updateTransition(false);\n // If we can animate, must do some prep work.\n if (willAnimate) {\n // Animation will start at the current size.\n const startSize = this.calcSize();\n // For `auto` we must calculate what is the final size for the animation.\n // After the transition is done, _transitionEnd will set the size back to\n // `auto`.\n if (sizeValue === '') {\n this.style[this.dimensionMax] = '';\n sizeValue = this.calcSize();\n }\n // Go to startSize without animation.\n \n this.style[this.dimensionMax] = startSize;\n // Force layout to ensure transition will go. Set scrollTop to itself\n // so that compilers won't remove it.\n // eslint-disable-next-line no-self-assign\n this.scrollTop = this.scrollTop;\n // Enable animation.\n this.updateTransition(true);\n // If final size is the same as startSize it will not animate.\n willAnimate = (sizeValue !== startSize);\n }\n // Set the final size.\n \n this.style[this.dimensionMax] = sizeValue;\n // If it won't animate, call transitionEnd to set correct styles.\n if (!willAnimate) {\n this.transitionEnd();\n }\n }\n\n protected updateTransition(enabled?: boolean): void {\n this.style.transitionDuration = (enabled && !this.noAnimation) ? '' : '0s';\n }\n\n /**\n * Calculates the size of the element when opened.\n */\n protected calcSize(): string {\n const value = this.getBoundingClientRect()[this.dimension];\n return `${value}px`;\n }\n\n protected transitionEnd(): void {\n this.style[this.dimensionMax] = this.desiredSize;\n this.toggleAttribute('collapse-closed', !this.open);\n this.toggleAttribute('collapse-opened', this.open);\n this.updateTransition(false);\n this.notifyResize();\n this.transitioningInternal = false;\n this.notifyTransitioning();\n }\n\n protected notifyResize(): void {\n this.dispatchEvent(new Event('resize', { bubbles: true, composed: true, cancelable: true }));\n }\n\n protected notifyTransitioning(): void {\n this.dispatchEvent(new Event('transitioning', { bubbles: true, composed: true, cancelable: true }));\n }\n\n protected handleTransitionEnd(e: Event): void {\n const target = e.composedPath().find((node) => node === this);\n if (target) {\n this.transitionEnd();\n }\n }\n\n protected handleOpenChange(): void {\n const { open } = this;\n this.setAttribute('aria-hidden', String(!open));\n this.transitioningInternal = true;\n this.notifyTransitioning();\n this.toggleAttribute('collapse-closed', false);\n this.toggleAttribute('collapse-opened', false);\n this.updateSize(open ? 'auto' : '0px', true);\n\n // Focus the current collapse.\n if (open) {\n this.focus();\n }\n }\n\n protected handleHorizontalChange(): void {\n this.style.transitionProperty = this.dimensionMaxCss;\n const otherDimension = this.dimensionMax === 'maxWidth' ? 'maxHeight' : 'maxWidth';\n this.style[otherDimension] = '';\n this.updateSize(this.open ? 'auto' : '0px', false);\n }\n\n override render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n"]}
@@ -70,9 +70,151 @@ export const WAIT_FOR_MOUSE_CLICK_MS = 500;
70
70
  * interaction.
71
71
  */
72
72
  export class ActionController {
73
- element;
74
73
  constructor(element) {
75
74
  this.element = element;
75
+ this.phase = Phase.INACTIVE;
76
+ this.touchTimer = null;
77
+ this.clickTimer = null;
78
+ this.lastPositionEvent = null;
79
+ this.pressed = false;
80
+ this.checkBoundsAfterContextMenu = false;
81
+ /**
82
+ * When set it cancels handled keyboard events (space, enter, num enter)
83
+ */
84
+ this.cancelKeyboardEvents = false;
85
+ // event listeners
86
+ /**
87
+ * Pointer down event handler.
88
+ */
89
+ this.pointerDown = (e) => {
90
+ if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {
91
+ return;
92
+ }
93
+ if (this.isTouch(e)) {
94
+ // after a longpress contextmenu event, an extra `pointerdown` can be
95
+ // dispatched to the pressed element. Check that the down is within
96
+ // bounds of the element in this case.
97
+ if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {
98
+ return;
99
+ }
100
+ this.checkBoundsAfterContextMenu = false;
101
+ this.lastPositionEvent = e;
102
+ this.setPhase(Phase.TOUCH_DELAY);
103
+ this.touchTimer = setTimeout(() => {
104
+ this.touchDelayFinished();
105
+ }, TOUCH_DELAY_MS);
106
+ }
107
+ else {
108
+ const leftButtonPressed = e.button === 0;
109
+ if (!leftButtonPressed ||
110
+ (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
111
+ return;
112
+ }
113
+ this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);
114
+ this.beginPress(e);
115
+ }
116
+ };
117
+ /**
118
+ * Pointer up event handler.
119
+ */
120
+ this.pointerUp = (e) => {
121
+ if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {
122
+ return;
123
+ }
124
+ if (this.phase === Phase.HOLDING) {
125
+ this.waitForClick();
126
+ }
127
+ else if (this.phase === Phase.TOUCH_DELAY) {
128
+ this.setPhase(Phase.RELEASING);
129
+ this.beginPress();
130
+ this.waitForClick();
131
+ }
132
+ };
133
+ /**
134
+ * Click event handler.
135
+ */
136
+ this.click = (e) => {
137
+ if (this.disabled ||
138
+ (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
139
+ return;
140
+ }
141
+ if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {
142
+ this.endPress();
143
+ this.setPhase(Phase.INACTIVE);
144
+ return;
145
+ }
146
+ // keyboard synthesized click event
147
+ if (this.phase === Phase.INACTIVE && !this.pressed) {
148
+ this.press();
149
+ }
150
+ };
151
+ /**
152
+ * Pointer leave event handler.
153
+ */
154
+ this.pointerLeave = (e) => {
155
+ // cancel a held press that moves outside the element
156
+ if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {
157
+ this.cancelPress();
158
+ }
159
+ };
160
+ /**
161
+ * Pointer cancel event handler.
162
+ */
163
+ this.pointerCancel = (e) => {
164
+ if (this.shouldRespondToEvent(e)) {
165
+ this.cancelPress();
166
+ }
167
+ };
168
+ /**
169
+ * Contextmenu event handler.
170
+ */
171
+ this.contextMenu = () => {
172
+ if (!this.disabled) {
173
+ this.checkBoundsAfterContextMenu = true;
174
+ this.cancelPress();
175
+ }
176
+ };
177
+ /**
178
+ * Keyboard down event handler
179
+ */
180
+ this.keyDown = (e) => {
181
+ if (this.disabled) {
182
+ return;
183
+ }
184
+ if (['Enter', 'NumpadEnter'].includes(e.code)) {
185
+ this.press('enter');
186
+ if (this.cancelKeyboardEvents) {
187
+ e.preventDefault();
188
+ }
189
+ }
190
+ else if (e.code === 'Space' || e.key === ' ') {
191
+ this.beginPress(/* positionEvent= */ null);
192
+ this.setPhase(Phase.INACTIVE);
193
+ if (this.cancelKeyboardEvents) {
194
+ e.preventDefault();
195
+ }
196
+ }
197
+ };
198
+ /**
199
+ * Keyboard up event handler
200
+ */
201
+ this.keyUp = (e) => {
202
+ if (this.disabled) {
203
+ return;
204
+ }
205
+ if (e.code === 'Space' || e.key === ' ') {
206
+ this.endPress('space');
207
+ if (this.cancelKeyboardEvents) {
208
+ e.preventDefault();
209
+ }
210
+ }
211
+ else if (e.code === 'Escape' && this.pressed) {
212
+ this.cancelPress();
213
+ if (this.cancelKeyboardEvents) {
214
+ e.preventDefault();
215
+ }
216
+ }
217
+ };
76
218
  this.element.addController(this);
77
219
  }
78
220
  get disabled() {
@@ -81,16 +223,6 @@ export class ActionController {
81
223
  get ignoreClicksWithModifiers() {
82
224
  return this.element.ignoreClicksWithModifiers ?? false;
83
225
  }
84
- phase = Phase.INACTIVE;
85
- touchTimer = null;
86
- clickTimer = null;
87
- lastPositionEvent = null;
88
- pressed = false;
89
- checkBoundsAfterContextMenu = false;
90
- /**
91
- * When set it cancels handled keyboard events (space, enter, num enter)
92
- */
93
- cancelKeyboardEvents = false;
94
226
  setPhase(newPhase) {
95
227
  this.phase = newPhase;
96
228
  }
@@ -195,138 +327,5 @@ export class ActionController {
195
327
  this.cancelPress();
196
328
  }
197
329
  }
198
- // event listeners
199
- /**
200
- * Pointer down event handler.
201
- */
202
- pointerDown = (e) => {
203
- if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {
204
- return;
205
- }
206
- if (this.isTouch(e)) {
207
- // after a longpress contextmenu event, an extra `pointerdown` can be
208
- // dispatched to the pressed element. Check that the down is within
209
- // bounds of the element in this case.
210
- if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {
211
- return;
212
- }
213
- this.checkBoundsAfterContextMenu = false;
214
- this.lastPositionEvent = e;
215
- this.setPhase(Phase.TOUCH_DELAY);
216
- this.touchTimer = setTimeout(() => {
217
- this.touchDelayFinished();
218
- }, TOUCH_DELAY_MS);
219
- }
220
- else {
221
- const leftButtonPressed = e.button === 0;
222
- if (!leftButtonPressed ||
223
- (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
224
- return;
225
- }
226
- this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);
227
- this.beginPress(e);
228
- }
229
- };
230
- /**
231
- * Pointer up event handler.
232
- */
233
- pointerUp = (e) => {
234
- if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {
235
- return;
236
- }
237
- if (this.phase === Phase.HOLDING) {
238
- this.waitForClick();
239
- }
240
- else if (this.phase === Phase.TOUCH_DELAY) {
241
- this.setPhase(Phase.RELEASING);
242
- this.beginPress();
243
- this.waitForClick();
244
- }
245
- };
246
- /**
247
- * Click event handler.
248
- */
249
- click = (e) => {
250
- if (this.disabled ||
251
- (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
252
- return;
253
- }
254
- if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {
255
- this.endPress();
256
- this.setPhase(Phase.INACTIVE);
257
- return;
258
- }
259
- // keyboard synthesized click event
260
- if (this.phase === Phase.INACTIVE && !this.pressed) {
261
- this.press();
262
- }
263
- };
264
- /**
265
- * Pointer leave event handler.
266
- */
267
- pointerLeave = (e) => {
268
- // cancel a held press that moves outside the element
269
- if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {
270
- this.cancelPress();
271
- }
272
- };
273
- /**
274
- * Pointer cancel event handler.
275
- */
276
- pointerCancel = (e) => {
277
- if (this.shouldRespondToEvent(e)) {
278
- this.cancelPress();
279
- }
280
- };
281
- /**
282
- * Contextmenu event handler.
283
- */
284
- contextMenu = () => {
285
- if (!this.disabled) {
286
- this.checkBoundsAfterContextMenu = true;
287
- this.cancelPress();
288
- }
289
- };
290
- /**
291
- * Keyboard down event handler
292
- */
293
- keyDown = (e) => {
294
- if (this.disabled) {
295
- return;
296
- }
297
- if (['Enter', 'NumpadEnter'].includes(e.code)) {
298
- this.press('enter');
299
- if (this.cancelKeyboardEvents) {
300
- e.preventDefault();
301
- }
302
- }
303
- else if (e.code === 'Space' || e.key === ' ') {
304
- this.beginPress(/* positionEvent= */ null);
305
- this.setPhase(Phase.INACTIVE);
306
- if (this.cancelKeyboardEvents) {
307
- e.preventDefault();
308
- }
309
- }
310
- };
311
- /**
312
- * Keyboard up event handler
313
- */
314
- keyUp = (e) => {
315
- if (this.disabled) {
316
- return;
317
- }
318
- if (e.code === 'Space' || e.key === ' ') {
319
- this.endPress('space');
320
- if (this.cancelKeyboardEvents) {
321
- e.preventDefault();
322
- }
323
- }
324
- else if (e.code === 'Escape' && this.pressed) {
325
- this.cancelPress();
326
- if (this.cancelKeyboardEvents) {
327
- e.preventDefault();
328
- }
329
- }
330
- };
331
330
  }
332
331
  //# sourceMappingURL=ActionController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionController.js","sourceRoot":"","sources":["../../../src/ui/controllers/ActionController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AAEH,4BAA4B;AAC5B,sCAAsC;AACtC,sCAAsC;AACtC,wDAAwD;AACxD,wDAAwD;AACxD,wDAAwD;AACxD,2DAA2D;AAC3D,wDAAwD;AACxD,wDAAwD;AACxD,wDAAwD;AACxD,IAAK,KAiCJ;AAjCD,WAAK,KAAK;IACR,sDAAsD;IACtD,eAAe;IACf,gDAAgD;IAChD,4DAA4D;IAC5D,8BAAqB,CAAA;IAErB,sEAAsE;IACtE,eAAe;IACf,0DAA0D;IAC1D,yCAAyC;IACzC,iEAAiE;IACjE,oCAA2B,CAAA;IAE3B,wCAAwC;IACxC,eAAe;IACf,uEAAuE;IACvE,4BAAmB,CAAA;IAEnB,wEAAwE;IACxE,oDAAoD;IACpD,eAAe;IACf,4EAA4E;IAC5E,6EAA6E;IAC7E,gCAAuB,CAAA;IAEvB,4EAA4E;IAC5E,2EAA2E;IAC3E,+CAA+C;IAC/C,eAAe;IACf,oDAAoD;IACpD,6DAA6D;IAC7D,4DAAmD,CAAA;AACrD,CAAC,EAjCI,KAAK,KAAL,KAAK,QAiCT;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAsD3C;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;QACxD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAY,yBAAyB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,KAAK,CAAC;IACzD,CAAC;IAEO,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEvB,UAAU,GAAkB,IAAI,CAAC;IAEjC,UAAU,GAAkB,IAAI,CAAC;IAEjC,iBAAiB,GAAwB,IAAI,CAAC;IAE9C,OAAO,GAAG,KAAK,CAAC;IAEhB,2BAA2B,GAAG,KAAK,CAAC;IAE5C;;OAEG;IACH,oBAAoB,GAAG,KAAK,CAAC;IAErB,QAAQ,CAAC,QAAe;QAC9B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,MAAsB;QAClC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,gBAA8B,IAAI,CAAC,iBAAiB;QACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,MAAsB;QACrC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEO,OAAO,CAAC,CAAe;QAC7B,OAAO,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC;IACnC,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;YACpC,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,mEAAmE;YACnE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,uBAAuB,EAAE;gBAChD,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,EAAE,uBAAuB,CAAsB,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,CAAe;QAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,EAAgB;QAC/B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;IAC5D,CAAC;IAEO,iBAAiB,CAAC,CAAa;QACrC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,kBAAkB;IAClB;;OAEG;IACH,WAAW,GAAG,CAAC,CAAe,EAAQ,EAAE;QACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE;YAClE,OAAO;SACR;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,qEAAqE;YACrE,mEAAmE;YACnE,sCAAsC;YACtC,IAAI,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACzD,OAAO;aACR;YACD,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;YACzC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,CAAC,EAAE,cAAc,CAAsB,CAAC;SACzC;aAAM;YACL,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,iBAAiB;gBACpB,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/D,OAAO;aACR;YACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACpB;IACH,CAAC,CAAA;IAEH;;OAEG;IACH,SAAS,GAAG,CAAC,CAAe,EAAQ,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;YACrD,OAAO;SACR;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE;YAChC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC,CAAA;IAEH;;OAEG;IACH,KAAK,GAAG,CAAC,CAAa,EAAQ,EAAE;QAC5B,IAAI,IAAI,CAAC,QAAQ;YACf,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/D,OAAO;SACR;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,uBAAuB,EAAE;YAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO;SACR;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClD,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC,CAAA;IAEH;;OAEG;IACH,YAAY,GAAG,CAAC,CAAe,EAAQ,EAAE;QACrC,qDAAqD;QACrD,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpE,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC,CAAA;IAEH;;OAEG;IACH,aAAa,GAAG,CAAC,CAAe,EAAQ,EAAE;QACtC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC,CAAA;IAEH;;OAEG;IACH,WAAW,GAAG,GAAS,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC,CAAA;IAED;;OAEG;IACH,OAAO,GAAG,CAAC,CAAgB,EAAQ,EAAE;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;IACH,CAAC,CAAA;IAED;;OAEG;IACH,KAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;SACF;IACH,CAAC,CAAA;CACF","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/**\n * Enumeration to keep track of the lifecycle of a touch event.\n */\n\n// State transition diagram:\n// +-----------------------------+\n// | v\n// | +------+------ WAITING_FOR_MOUSE_CLICK<----+\n// | | | ^ |\n// | V | | |\n// => INACTIVE -> TOUCH_DELAY -> RELEASING HOLDING\n// | ^\n// | |\n// +-----------------------------------+\nenum Phase {\n // Initial state of the control, no touch in progress.\n // Transitions:\n // on touch down: transition to TOUCH_DELAY.\n // on mouse down: transition to WAITING_FOR_MOUSE_CLICK.\n INACTIVE = 'INACTIVE',\n\n // Touch down has been received, waiting to determine if it's a swipe.\n // Transitions:\n // on touch up: beginPress(); transition to RELEASING.\n // on cancel: transition to INACTIVE.\n // after TOUCH_DELAY_MS: beginPress(); transition to HOLDING.\n TOUCH_DELAY = 'TOUCH_DELAY',\n\n // A touch has been deemed to be a press\n // Transitions:\n // on pointerup: endPress(); transition to WAITING_FOR_MOUSE_CLICK.\n HOLDING = 'HOLDING',\n\n // The user has released the mouse / touch, but we want to delay calling\n // endPress for a little bit to avoid double clicks.\n // Transitions:\n // mouse sequence after debounceDelay: endPress(); transition to INACTIVE\n // when in touch sequence: transitions directly to WAITING_FOR_MOUSE_CLICK\n RELEASING = 'RELEASING',\n\n // The user has touched, but we want to delay endPress until synthetic mouse\n // click event occurs. Stay in this state for a fixed amount of time before\n // giving up and transitioning into rest state.\n // Transitions:\n // on click: endPress(); transition to INACTIVE.\n // after WAIT_FOR_MOUSE_CLICK_MS: transition to INACTIVE.\n WAITING_FOR_MOUSE_CLICK = 'WAITING_FOR_MOUSE_CLICK'\n}\n\n/**\n * Delay time from touchstart to when element#beginPress is invoked.\n */\nexport const TOUCH_DELAY_MS = 150;\n\n/**\n * Delay time from beginning to wait for synthetic mouse events till giving up.\n */\nexport const WAIT_FOR_MOUSE_CLICK_MS = 500;\n\n/**\n * Interface for argument to beginPress.\n */\nexport interface BeginPressConfig {\n /**\n * Event that was recorded at the start of the interaction.\n * `null` if the press happened via keyboard.\n */\n positionEvent: Event | null;\n}\n\n/**\n * Interface for argument to endPress.\n */\nexport interface EndPressConfig {\n /**\n * `true` if the press was cancelled.\n */\n cancelled: boolean;\n /**\n * Data object to pass along to clients in the `action` event, if relevant.\n */\n actionData?: unknown;\n /**\n * Optional reason why the end is called.\n */\n reason?: IEndPressType;\n}\n\n/**\n * The necessary interface for using an ActionController\n */\nexport interface ActionControllerHost extends ReactiveControllerHost,\n HTMLElement {\n disabled: boolean;\n /**\n * Determines if pointerdown or click events containing modifier keys should\n * be ignored.\n */\n ignoreClicksWithModifiers?: boolean;\n /**\n * Called when a user interaction is determined to be a press.\n */\n beginPress(config: BeginPressConfig): void;\n /**\n * Called when a press ends or is cancelled.\n */\n endPress(config: EndPressConfig): void;\n}\n\ntype IEndPressType = 'space' | 'enter';\n\n/**\n * ActionController normalizes user interaction on components and distills it\n * into calling `beginPress` and `endPress` on the component.\n *\n * `beginPress` is a good hook to affect visuals for pressed state, including\n * ripple.\n *\n * `endPress` is a good hook for firing events based on user interaction, and\n * cleaning up the pressed visual state.\n *\n * A component using an ActionController need only implement the ActionElement\n * interface and add the ActionController's event listeners to understand user\n * interaction.\n */\nexport class ActionController implements ReactiveController {\n constructor(private readonly element: ActionControllerHost) {\n this.element.addController(this);\n }\n\n private get disabled(): boolean {\n return this.element.disabled;\n }\n\n private get ignoreClicksWithModifiers(): boolean {\n return this.element.ignoreClicksWithModifiers ?? false;\n }\n\n private phase = Phase.INACTIVE;\n\n private touchTimer: number | null = null;\n\n private clickTimer: number | null = null;\n\n private lastPositionEvent: PointerEvent | null = null;\n\n private pressed = false;\n\n private checkBoundsAfterContextMenu = false;\n\n /**\n * When set it cancels handled keyboard events (space, enter, num enter)\n */\n cancelKeyboardEvents = false;\n\n private setPhase(newPhase: Phase): void {\n this.phase = newPhase;\n }\n\n /**\n * Calls beginPress and then endPress. Allows us to programmatically click\n * on the element.\n */\n private press(reason?: IEndPressType): void {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n this.endPress(reason);\n }\n\n /**\n * Call `beginPress` on element with triggering event, if applicable.\n */\n private beginPress(positionEvent: Event | null = this.lastPositionEvent): void {\n this.pressed = true;\n this.element.beginPress({ positionEvent });\n }\n\n /**\n * Call `endPress` on element, and clean up timers.\n */\n private endPress(reason?: IEndPressType): void {\n this.pressed = false;\n this.element.endPress({ cancelled: false, reason });\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.touchTimer) {\n clearTimeout(this.touchTimer);\n }\n this.touchTimer = null;\n if (this.clickTimer) {\n clearTimeout(this.clickTimer);\n }\n this.clickTimer = null;\n this.lastPositionEvent = null;\n }\n\n /**\n * Call `endPress` with cancelled state on element, and cleanup timers.\n */\n private cancelPress(): void {\n this.pressed = false;\n this.cleanup();\n if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.INACTIVE);\n } else if (this.phase !== Phase.INACTIVE) {\n this.setPhase(Phase.INACTIVE);\n this.element.endPress({ cancelled: true });\n }\n }\n\n private isTouch(e: PointerEvent): boolean {\n return e.pointerType === 'touch';\n }\n\n private touchDelayFinished(): void {\n if (this.phase !== Phase.TOUCH_DELAY) {\n return;\n }\n this.setPhase(Phase.HOLDING);\n this.beginPress();\n }\n\n private waitForClick(): void {\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.clickTimer = setTimeout(() => {\n // If a click event does not occur, clean up the interaction state.\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.cancelPress();\n }\n }, WAIT_FOR_MOUSE_CLICK_MS) as unknown as number;\n }\n\n /**\n * Check if event should trigger actions on the element.\n */\n private shouldRespondToEvent(e: PointerEvent): boolean {\n return !this.disabled && e.isPrimary;\n }\n\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n private inBounds(ev: PointerEvent): boolean {\n const { top, left, bottom, right } = this.element.getBoundingClientRect();\n const { x, y } = ev;\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n private eventHasModifiers(e: MouseEvent): boolean {\n return e.altKey || e.ctrlKey || e.shiftKey || e.metaKey;\n }\n\n /**\n * Cancel interactions if the element is removed from the DOM.\n */\n hostDisconnected(): void {\n this.cancelPress();\n }\n\n /**\n * If the element becomes disabled, cancel interactions.\n */\n hostUpdated(): void {\n if (this.disabled) {\n this.cancelPress();\n }\n }\n\n // event listeners\n /**\n * Pointer down event handler.\n */\n pointerDown = (e: PointerEvent): void => {\n if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {\n return;\n }\n if (this.isTouch(e)) {\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n this.lastPositionEvent = e;\n this.setPhase(Phase.TOUCH_DELAY);\n this.touchTimer = setTimeout(() => {\n this.touchDelayFinished();\n }, TOUCH_DELAY_MS) as unknown as number;\n } else {\n const leftButtonPressed = e.button === 0;\n if (!leftButtonPressed ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.beginPress(e);\n }\n }\n\n /**\n * Pointer up event handler.\n */\n pointerUp = (e: PointerEvent): void => {\n if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {\n return;\n }\n if (this.phase === Phase.HOLDING) {\n this.waitForClick();\n } else if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.RELEASING);\n this.beginPress();\n this.waitForClick();\n }\n }\n\n /**\n * Click event handler.\n */\n click = (e: MouseEvent): void => {\n if (this.disabled ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.endPress();\n this.setPhase(Phase.INACTIVE);\n return;\n }\n\n // keyboard synthesized click event\n if (this.phase === Phase.INACTIVE && !this.pressed) {\n this.press();\n }\n }\n\n /**\n * Pointer leave event handler.\n */\n pointerLeave = (e: PointerEvent): void => {\n // cancel a held press that moves outside the element\n if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {\n this.cancelPress();\n }\n }\n\n /**\n * Pointer cancel event handler.\n */\n pointerCancel = (e: PointerEvent): void => {\n if (this.shouldRespondToEvent(e)) {\n this.cancelPress();\n }\n }\n\n /**\n * Contextmenu event handler.\n */\n contextMenu = (): void => {\n if (!this.disabled) {\n this.checkBoundsAfterContextMenu = true;\n this.cancelPress();\n }\n }\n\n /**\n * Keyboard down event handler\n */\n keyDown = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (['Enter', 'NumpadEnter'].includes(e.code)) {\n this.press('enter');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Space' || e.key === ' ') {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n\n /**\n * Keyboard up event handler\n */\n keyUp = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (e.code === 'Space' || e.key === ' ') {\n this.endPress('space');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Escape' && this.pressed) {\n this.cancelPress();\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ActionController.js","sourceRoot":"","sources":["../../../src/ui/controllers/ActionController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AAEH,4BAA4B;AAC5B,sCAAsC;AACtC,sCAAsC;AACtC,wDAAwD;AACxD,wDAAwD;AACxD,wDAAwD;AACxD,2DAA2D;AAC3D,wDAAwD;AACxD,wDAAwD;AACxD,wDAAwD;AACxD,IAAK,KAiCJ;AAjCD,WAAK,KAAK;IACR,sDAAsD;IACtD,eAAe;IACf,gDAAgD;IAChD,4DAA4D;IAC5D,8BAAqB,CAAA;IAErB,sEAAsE;IACtE,eAAe;IACf,0DAA0D;IAC1D,yCAAyC;IACzC,iEAAiE;IACjE,oCAA2B,CAAA;IAE3B,wCAAwC;IACxC,eAAe;IACf,uEAAuE;IACvE,4BAAmB,CAAA;IAEnB,wEAAwE;IACxE,oDAAoD;IACpD,eAAe;IACf,4EAA4E;IAC5E,6EAA6E;IAC7E,gCAAuB,CAAA;IAEvB,4EAA4E;IAC5E,2EAA2E;IAC3E,+CAA+C;IAC/C,eAAe;IACf,oDAAoD;IACpD,6DAA6D;IAC7D,4DAAmD,CAAA;AACrD,CAAC,EAjCI,KAAK,KAAL,KAAK,QAiCT;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAsD3C;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,gBAAgB;IAC3B,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;QAYlD,UAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEvB,eAAU,GAAkB,IAAI,CAAC;QAEjC,eAAU,GAAkB,IAAI,CAAC;QAEjC,sBAAiB,GAAwB,IAAI,CAAC;QAE9C,YAAO,GAAG,KAAK,CAAC;QAEhB,gCAA2B,GAAG,KAAK,CAAC;QAE5C;;WAEG;QACH,yBAAoB,GAAG,KAAK,CAAC;QAuH7B,kBAAkB;QAClB;;WAEG;QACH,gBAAW,GAAG,CAAC,CAAe,EAAQ,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE;gBAClE,OAAO;aACR;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnB,qEAAqE;gBACrE,mEAAmE;gBACnE,sCAAsC;gBACtC,IAAI,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACzD,OAAO;iBACR;gBACD,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;gBACzC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;oBAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,CAAC,EAAE,cAAc,CAAsB,CAAC;aACzC;iBAAM;gBACL,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,iBAAiB;oBACpB,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC/D,OAAO;iBACR;gBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACpB;QACH,CAAC,CAAA;QAEH;;WAEG;QACH,cAAS,GAAG,CAAC,CAAe,EAAQ,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;gBACrD,OAAO;aACR;YACD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;gBAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;QACH,CAAC,CAAA;QAEH;;WAEG;QACH,UAAK,GAAG,CAAC,CAAa,EAAQ,EAAE;YAC5B,IAAI,IAAI,CAAC,QAAQ;gBACf,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/D,OAAO;aACR;YACD,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,uBAAuB,EAAE;gBAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC9B,OAAO;aACR;YAED,mCAAmC;YACnC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAClD,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;QACH,CAAC,CAAA;QAEH;;WAEG;QACH,iBAAY,GAAG,CAAC,CAAe,EAAQ,EAAE;YACrC,qDAAqD;YACrD,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpE,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAA;QAEH;;WAEG;QACH,kBAAa,GAAG,CAAC,CAAe,EAAQ,EAAE;YACtC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;gBAChC,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAA;QAEH;;WAEG;QACH,gBAAW,GAAG,GAAS,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;gBACxC,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,CAAA;QAED;;WAEG;QACH,YAAO,GAAG,CAAC,CAAgB,EAAQ,EAAE;YACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO;aACR;YACD,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB;aACF;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB;aACF;QACH,CAAC,CAAA;QAED;;WAEG;QACH,UAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE;YACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO;aACR;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;gBACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB;aACF;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB;aACF;QACH,CAAC,CAAA;QAzRC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAY,yBAAyB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,IAAI,KAAK,CAAC;IACzD,CAAC;IAmBO,QAAQ,CAAC,QAAe;QAC9B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,MAAsB;QAClC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,gBAA8B,IAAI,CAAC,iBAAiB;QACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,MAAsB;QACrC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEO,OAAO,CAAC,CAAe;QAC7B,OAAO,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC;IACnC,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,EAAE;YACpC,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,mEAAmE;YACnE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,uBAAuB,EAAE;gBAChD,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;QACH,CAAC,EAAE,uBAAuB,CAAsB,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,CAAe;QAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACK,QAAQ,CAAC,EAAgB;QAC/B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC1E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;IAC5D,CAAC;IAEO,iBAAiB,CAAC,CAAa;QACrC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;CA2IF","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/**\n * Enumeration to keep track of the lifecycle of a touch event.\n */\n\n// State transition diagram:\n// +-----------------------------+\n// | v\n// | +------+------ WAITING_FOR_MOUSE_CLICK<----+\n// | | | ^ |\n// | V | | |\n// => INACTIVE -> TOUCH_DELAY -> RELEASING HOLDING\n// | ^\n// | |\n// +-----------------------------------+\nenum Phase {\n // Initial state of the control, no touch in progress.\n // Transitions:\n // on touch down: transition to TOUCH_DELAY.\n // on mouse down: transition to WAITING_FOR_MOUSE_CLICK.\n INACTIVE = 'INACTIVE',\n\n // Touch down has been received, waiting to determine if it's a swipe.\n // Transitions:\n // on touch up: beginPress(); transition to RELEASING.\n // on cancel: transition to INACTIVE.\n // after TOUCH_DELAY_MS: beginPress(); transition to HOLDING.\n TOUCH_DELAY = 'TOUCH_DELAY',\n\n // A touch has been deemed to be a press\n // Transitions:\n // on pointerup: endPress(); transition to WAITING_FOR_MOUSE_CLICK.\n HOLDING = 'HOLDING',\n\n // The user has released the mouse / touch, but we want to delay calling\n // endPress for a little bit to avoid double clicks.\n // Transitions:\n // mouse sequence after debounceDelay: endPress(); transition to INACTIVE\n // when in touch sequence: transitions directly to WAITING_FOR_MOUSE_CLICK\n RELEASING = 'RELEASING',\n\n // The user has touched, but we want to delay endPress until synthetic mouse\n // click event occurs. Stay in this state for a fixed amount of time before\n // giving up and transitioning into rest state.\n // Transitions:\n // on click: endPress(); transition to INACTIVE.\n // after WAIT_FOR_MOUSE_CLICK_MS: transition to INACTIVE.\n WAITING_FOR_MOUSE_CLICK = 'WAITING_FOR_MOUSE_CLICK'\n}\n\n/**\n * Delay time from touchstart to when element#beginPress is invoked.\n */\nexport const TOUCH_DELAY_MS = 150;\n\n/**\n * Delay time from beginning to wait for synthetic mouse events till giving up.\n */\nexport const WAIT_FOR_MOUSE_CLICK_MS = 500;\n\n/**\n * Interface for argument to beginPress.\n */\nexport interface BeginPressConfig {\n /**\n * Event that was recorded at the start of the interaction.\n * `null` if the press happened via keyboard.\n */\n positionEvent: Event | null;\n}\n\n/**\n * Interface for argument to endPress.\n */\nexport interface EndPressConfig {\n /**\n * `true` if the press was cancelled.\n */\n cancelled: boolean;\n /**\n * Data object to pass along to clients in the `action` event, if relevant.\n */\n actionData?: unknown;\n /**\n * Optional reason why the end is called.\n */\n reason?: IEndPressType;\n}\n\n/**\n * The necessary interface for using an ActionController\n */\nexport interface ActionControllerHost extends ReactiveControllerHost,\n HTMLElement {\n disabled: boolean;\n /**\n * Determines if pointerdown or click events containing modifier keys should\n * be ignored.\n */\n ignoreClicksWithModifiers?: boolean;\n /**\n * Called when a user interaction is determined to be a press.\n */\n beginPress(config: BeginPressConfig): void;\n /**\n * Called when a press ends or is cancelled.\n */\n endPress(config: EndPressConfig): void;\n}\n\ntype IEndPressType = 'space' | 'enter';\n\n/**\n * ActionController normalizes user interaction on components and distills it\n * into calling `beginPress` and `endPress` on the component.\n *\n * `beginPress` is a good hook to affect visuals for pressed state, including\n * ripple.\n *\n * `endPress` is a good hook for firing events based on user interaction, and\n * cleaning up the pressed visual state.\n *\n * A component using an ActionController need only implement the ActionElement\n * interface and add the ActionController's event listeners to understand user\n * interaction.\n */\nexport class ActionController implements ReactiveController {\n constructor(private readonly element: ActionControllerHost) {\n this.element.addController(this);\n }\n\n private get disabled(): boolean {\n return this.element.disabled;\n }\n\n private get ignoreClicksWithModifiers(): boolean {\n return this.element.ignoreClicksWithModifiers ?? false;\n }\n\n private phase = Phase.INACTIVE;\n\n private touchTimer: number | null = null;\n\n private clickTimer: number | null = null;\n\n private lastPositionEvent: PointerEvent | null = null;\n\n private pressed = false;\n\n private checkBoundsAfterContextMenu = false;\n\n /**\n * When set it cancels handled keyboard events (space, enter, num enter)\n */\n cancelKeyboardEvents = false;\n\n private setPhase(newPhase: Phase): void {\n this.phase = newPhase;\n }\n\n /**\n * Calls beginPress and then endPress. Allows us to programmatically click\n * on the element.\n */\n private press(reason?: IEndPressType): void {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n this.endPress(reason);\n }\n\n /**\n * Call `beginPress` on element with triggering event, if applicable.\n */\n private beginPress(positionEvent: Event | null = this.lastPositionEvent): void {\n this.pressed = true;\n this.element.beginPress({ positionEvent });\n }\n\n /**\n * Call `endPress` on element, and clean up timers.\n */\n private endPress(reason?: IEndPressType): void {\n this.pressed = false;\n this.element.endPress({ cancelled: false, reason });\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.touchTimer) {\n clearTimeout(this.touchTimer);\n }\n this.touchTimer = null;\n if (this.clickTimer) {\n clearTimeout(this.clickTimer);\n }\n this.clickTimer = null;\n this.lastPositionEvent = null;\n }\n\n /**\n * Call `endPress` with cancelled state on element, and cleanup timers.\n */\n private cancelPress(): void {\n this.pressed = false;\n this.cleanup();\n if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.INACTIVE);\n } else if (this.phase !== Phase.INACTIVE) {\n this.setPhase(Phase.INACTIVE);\n this.element.endPress({ cancelled: true });\n }\n }\n\n private isTouch(e: PointerEvent): boolean {\n return e.pointerType === 'touch';\n }\n\n private touchDelayFinished(): void {\n if (this.phase !== Phase.TOUCH_DELAY) {\n return;\n }\n this.setPhase(Phase.HOLDING);\n this.beginPress();\n }\n\n private waitForClick(): void {\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.clickTimer = setTimeout(() => {\n // If a click event does not occur, clean up the interaction state.\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.cancelPress();\n }\n }, WAIT_FOR_MOUSE_CLICK_MS) as unknown as number;\n }\n\n /**\n * Check if event should trigger actions on the element.\n */\n private shouldRespondToEvent(e: PointerEvent): boolean {\n return !this.disabled && e.isPrimary;\n }\n\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n private inBounds(ev: PointerEvent): boolean {\n const { top, left, bottom, right } = this.element.getBoundingClientRect();\n const { x, y } = ev;\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n private eventHasModifiers(e: MouseEvent): boolean {\n return e.altKey || e.ctrlKey || e.shiftKey || e.metaKey;\n }\n\n /**\n * Cancel interactions if the element is removed from the DOM.\n */\n hostDisconnected(): void {\n this.cancelPress();\n }\n\n /**\n * If the element becomes disabled, cancel interactions.\n */\n hostUpdated(): void {\n if (this.disabled) {\n this.cancelPress();\n }\n }\n\n // event listeners\n /**\n * Pointer down event handler.\n */\n pointerDown = (e: PointerEvent): void => {\n if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {\n return;\n }\n if (this.isTouch(e)) {\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n this.lastPositionEvent = e;\n this.setPhase(Phase.TOUCH_DELAY);\n this.touchTimer = setTimeout(() => {\n this.touchDelayFinished();\n }, TOUCH_DELAY_MS) as unknown as number;\n } else {\n const leftButtonPressed = e.button === 0;\n if (!leftButtonPressed ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.beginPress(e);\n }\n }\n\n /**\n * Pointer up event handler.\n */\n pointerUp = (e: PointerEvent): void => {\n if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {\n return;\n }\n if (this.phase === Phase.HOLDING) {\n this.waitForClick();\n } else if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.RELEASING);\n this.beginPress();\n this.waitForClick();\n }\n }\n\n /**\n * Click event handler.\n */\n click = (e: MouseEvent): void => {\n if (this.disabled ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.endPress();\n this.setPhase(Phase.INACTIVE);\n return;\n }\n\n // keyboard synthesized click event\n if (this.phase === Phase.INACTIVE && !this.pressed) {\n this.press();\n }\n }\n\n /**\n * Pointer leave event handler.\n */\n pointerLeave = (e: PointerEvent): void => {\n // cancel a held press that moves outside the element\n if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {\n this.cancelPress();\n }\n }\n\n /**\n * Pointer cancel event handler.\n */\n pointerCancel = (e: PointerEvent): void => {\n if (this.shouldRespondToEvent(e)) {\n this.cancelPress();\n }\n }\n\n /**\n * Contextmenu event handler.\n */\n contextMenu = (): void => {\n if (!this.disabled) {\n this.checkBoundsAfterContextMenu = true;\n this.cancelPress();\n }\n }\n\n /**\n * Keyboard down event handler\n */\n keyDown = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (['Enter', 'NumpadEnter'].includes(e.code)) {\n this.press('enter');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Space' || e.key === ' ') {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n\n /**\n * Keyboard up event handler\n */\n keyUp = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (e.code === 'Space' || e.key === ' ') {\n this.endPress('space');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Escape' && this.pressed) {\n this.cancelPress();\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n}\n"]}
@@ -13,7 +13,6 @@ const inputs = [];
13
13
  * in the group.
14
14
  */
15
15
  export class RadioSelectionController {
16
- element;
17
16
  constructor(element) {
18
17
  this.element = element;
19
18
  this.element.addController(this);