@api-client/ui 0.0.4 → 0.0.7

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 (756) hide show
  1. package/demo/elements/http/http-assertions.html +3 -0
  2. package/demo/elements/http/http-assertions.ts +1 -1
  3. package/demo/elements/http/http-flows.html +23 -0
  4. package/demo/elements/http/http-flows.ts +92 -0
  5. package/demo/elements/http/index.html +3 -0
  6. package/demo/pages/http-project/main.ts +5 -6
  7. package/dist/amf/lib/AmfParameters.js +0 -4
  8. package/dist/amf/lib/AmfParameters.js.map +1 -1
  9. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  10. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  11. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  12. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  13. package/dist/amf/store/AmfGraphStore.js +0 -2
  14. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  15. package/dist/amf/store/AmfStore.js +0 -7
  16. package/dist/amf/store/AmfStore.js.map +1 -1
  17. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  18. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  19. package/dist/bindings/base/PlatformBindings.js +6 -10
  20. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  21. package/dist/bindings/base/ProxyBindings.js +9 -6
  22. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  23. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  24. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  25. package/dist/bindings/base/StoreBindings.js +162 -170
  26. package/dist/bindings/base/StoreBindings.js.map +1 -1
  27. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  28. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  29. package/dist/bindings/web/WebFileBindings.js +7 -4
  30. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  31. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  32. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  33. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  34. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  35. package/dist/bindings/web/WebProxyBindings.js +5 -6
  36. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  37. package/dist/bindings/web/WebStoreBindings.js +39 -44
  38. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  39. package/dist/contextual-menu/ContextualMenu.js +10 -19
  40. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  41. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  42. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  43. package/dist/contextual-menu/MenuItem.js +0 -12
  44. package/dist/contextual-menu/MenuItem.js.map +1 -1
  45. package/dist/define/amf/api-annotation-document.js +1 -1
  46. package/dist/define/amf/api-annotation-document.js.map +1 -1
  47. package/dist/define/amf/api-authorization-editor.js +1 -1
  48. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  49. package/dist/define/amf/api-channel-document.js +1 -1
  50. package/dist/define/amf/api-channel-document.js.map +1 -1
  51. package/dist/define/amf/api-documentation-document.js +1 -1
  52. package/dist/define/amf/api-documentation-document.js.map +1 -1
  53. package/dist/define/amf/api-documentation.js +1 -1
  54. package/dist/define/amf/api-documentation.js.map +1 -1
  55. package/dist/define/amf/api-navigation.js +1 -1
  56. package/dist/define/amf/api-navigation.js.map +1 -1
  57. package/dist/define/amf/api-operation-document.js +1 -1
  58. package/dist/define/amf/api-operation-document.js.map +1 -1
  59. package/dist/define/amf/api-parameter-document.js +1 -1
  60. package/dist/define/amf/api-parameter-document.js.map +1 -1
  61. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  62. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  63. package/dist/define/amf/api-payload-document.js +1 -1
  64. package/dist/define/amf/api-payload-document.js.map +1 -1
  65. package/dist/define/amf/api-request-document.js +1 -1
  66. package/dist/define/amf/api-request-document.js.map +1 -1
  67. package/dist/define/amf/api-request-editor.js +1 -1
  68. package/dist/define/amf/api-request-editor.js.map +1 -1
  69. package/dist/define/amf/api-request.js +1 -1
  70. package/dist/define/amf/api-request.js.map +1 -1
  71. package/dist/define/amf/api-resource-document.js +1 -1
  72. package/dist/define/amf/api-resource-document.js.map +1 -1
  73. package/dist/define/amf/api-response-document.js +1 -1
  74. package/dist/define/amf/api-response-document.js.map +1 -1
  75. package/dist/define/amf/api-schema-document.js +1 -1
  76. package/dist/define/amf/api-schema-document.js.map +1 -1
  77. package/dist/define/amf/api-security-document.js +1 -1
  78. package/dist/define/amf/api-security-document.js.map +1 -1
  79. package/dist/define/amf/api-security-requirement-document.js +1 -1
  80. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  81. package/dist/define/amf/api-server-picker.js +1 -1
  82. package/dist/define/amf/api-server-picker.js.map +1 -1
  83. package/dist/define/amf/api-summary.js +1 -1
  84. package/dist/define/amf/api-summary.js.map +1 -1
  85. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  86. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  87. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  88. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  89. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  90. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  91. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  92. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  93. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  94. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  95. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  96. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  97. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  98. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  99. package/dist/define/authorization/apikey-authorization.js +1 -1
  100. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  101. package/dist/define/authorization/basic-authorization.js +1 -1
  102. package/dist/define/authorization/basic-authorization.js.map +1 -1
  103. package/dist/define/authorization/bearer-authorization.js +1 -1
  104. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  105. package/dist/define/authorization/cc-authorization.js +1 -1
  106. package/dist/define/authorization/cc-authorization.js.map +1 -1
  107. package/dist/define/authorization/ntlm-authorization.js +1 -1
  108. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  109. package/dist/define/authorization/oauth2-authorization.js +1 -1
  110. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  111. package/dist/define/authorization/oidc-authorization.js +1 -1
  112. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  113. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  114. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  115. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  116. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  117. package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
  118. package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
  119. package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
  120. package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
  121. package/dist/define/dialog/rename-dialog.js +1 -1
  122. package/dist/define/dialog/rename-dialog.js.map +1 -1
  123. package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
  124. package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
  125. package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
  126. package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
  127. package/dist/define/files/share-file.js +1 -1
  128. package/dist/define/files/share-file.js.map +1 -1
  129. package/dist/define/har/har-viewer.js +1 -1
  130. package/dist/define/har/har-viewer.js.map +1 -1
  131. package/dist/define/highlight/marked-highlight.js +1 -1
  132. package/dist/define/highlight/marked-highlight.js.map +1 -1
  133. package/dist/define/highlight/prism-highlight.js +1 -1
  134. package/dist/define/highlight/prism-highlight.js.map +1 -1
  135. package/dist/define/http/http-assertions.d.ts +1 -1
  136. package/dist/define/http/http-assertions.d.ts.map +1 -1
  137. package/dist/define/http/http-assertions.js +3 -3
  138. package/dist/define/http/http-assertions.js.map +1 -1
  139. package/dist/define/http/http-body-editor.js +1 -1
  140. package/dist/define/http/http-body-editor.js.map +1 -1
  141. package/dist/define/http/http-body-multipart-editor.js +1 -1
  142. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  143. package/dist/define/http/http-body-text-editor.js +1 -1
  144. package/dist/define/http/http-body-text-editor.js.map +1 -1
  145. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  146. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  147. package/dist/define/http/http-flows.d.ts +10 -0
  148. package/dist/define/http/http-flows.d.ts.map +1 -0
  149. package/dist/define/http/http-flows.js +13 -0
  150. package/dist/define/http/http-flows.js.map +1 -0
  151. package/dist/define/http/http-headers-form.js +1 -1
  152. package/dist/define/http/http-headers-form.js.map +1 -1
  153. package/dist/define/http/http-log-body.js +1 -1
  154. package/dist/define/http/http-log-body.js.map +1 -1
  155. package/dist/define/http/http-log-headers.js +1 -1
  156. package/dist/define/http/http-log-headers.js.map +1 -1
  157. package/dist/define/http/http-log-timings.js +1 -1
  158. package/dist/define/http/http-log-timings.js.map +1 -1
  159. package/dist/define/http/http-request-config.js +1 -1
  160. package/dist/define/http/http-request-config.js.map +1 -1
  161. package/dist/define/http/http-request-editor.js +1 -1
  162. package/dist/define/http/http-request-editor.js.map +1 -1
  163. package/dist/define/http/http-request-log.js +1 -1
  164. package/dist/define/http/http-request-log.js.map +1 -1
  165. package/dist/define/http/http-snippets.js +1 -1
  166. package/dist/define/http/http-snippets.js.map +1 -1
  167. package/dist/define/http/http-url-input.js +1 -1
  168. package/dist/define/http/http-url-input.js.map +1 -1
  169. package/dist/define/http/http-url-params-form.js +1 -1
  170. package/dist/define/http/http-url-params-form.js.map +1 -1
  171. package/dist/define/http-project/http-project-request-history.js +1 -1
  172. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  173. package/dist/define/http-project/http-project-request.js +2 -2
  174. package/dist/define/http-project/http-project-request.js.map +1 -1
  175. package/dist/define/http-project/project-navigation.js +1 -1
  176. package/dist/define/http-project/project-navigation.js.map +1 -1
  177. package/dist/define/http-project/project-run-report.js +1 -1
  178. package/dist/define/http-project/project-run-report.js.map +1 -1
  179. package/dist/define/http-project/project-runner.js +2 -2
  180. package/dist/define/http-project/project-runner.js.map +1 -1
  181. package/dist/define/layout/split-view.js +1 -1
  182. package/dist/define/layout/split-view.js.map +1 -1
  183. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  184. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  185. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  186. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  187. package/dist/define/ui/ui-button.js +1 -1
  188. package/dist/define/ui/ui-button.js.map +1 -1
  189. package/dist/define/ui/ui-chip.js +1 -1
  190. package/dist/define/ui/ui-chip.js.map +1 -1
  191. package/dist/define/ui/ui-collapse.js +1 -1
  192. package/dist/define/ui/ui-collapse.js.map +1 -1
  193. package/dist/define/ui/ui-dialog.js +1 -1
  194. package/dist/define/ui/ui-dialog.js.map +1 -1
  195. package/dist/define/ui/ui-divider.d.ts +4 -1
  196. package/dist/define/ui/ui-divider.d.ts.map +1 -1
  197. package/dist/define/ui/ui-divider.js +11 -2
  198. package/dist/define/ui/ui-divider.js.map +1 -1
  199. package/dist/define/ui/ui-dropdown-list.js +1 -1
  200. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  201. package/dist/define/ui/ui-icon-button.js +1 -1
  202. package/dist/define/ui/ui-icon-button.js.map +1 -1
  203. package/dist/define/ui/ui-icon.js +1 -1
  204. package/dist/define/ui/ui-icon.js.map +1 -1
  205. package/dist/define/ui/ui-list-item.js +1 -1
  206. package/dist/define/ui/ui-list-item.js.map +1 -1
  207. package/dist/define/ui/ui-list.js +1 -1
  208. package/dist/define/ui/ui-list.js.map +1 -1
  209. package/dist/define/ui/ui-listbox.js +1 -1
  210. package/dist/define/ui/ui-listbox.js.map +1 -1
  211. package/dist/define/ui/ui-progress.js +1 -1
  212. package/dist/define/ui/ui-progress.js.map +1 -1
  213. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  214. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  215. package/dist/define/ui/ui-segmented-button.js +1 -1
  216. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  217. package/dist/define/ui/ui-snackbar.js +1 -1
  218. package/dist/define/ui/ui-snackbar.js.map +1 -1
  219. package/dist/define/ui/ui-tab.js +1 -1
  220. package/dist/define/ui/ui-tab.js.map +1 -1
  221. package/dist/define/ui/ui-tabs.js +1 -1
  222. package/dist/define/ui/ui-tabs.js.map +1 -1
  223. package/dist/directives/data-attr.js +0 -1
  224. package/dist/directives/data-attr.js.map +1 -1
  225. package/dist/elements/ApiElement.d.ts +4 -0
  226. package/dist/elements/ApiElement.d.ts.map +1 -1
  227. package/dist/elements/ApiElement.js +6 -7
  228. package/dist/elements/ApiElement.js.map +1 -1
  229. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  230. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  231. package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -33
  232. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  233. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  234. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  235. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  236. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  237. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  238. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  239. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  240. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  241. package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
  242. package/dist/elements/amf/ApiOperationDocument.element.js +2 -77
  243. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  244. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  245. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  246. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  247. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  248. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  249. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  250. package/dist/elements/amf/ApiRequest.element.js +1 -79
  251. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  252. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  253. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  254. package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
  255. package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
  256. package/dist/elements/amf/ApiRequestEditor.element.js +0 -121
  257. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  258. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  259. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  260. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  261. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  262. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  263. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  264. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  265. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  266. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  267. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  268. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  269. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  270. package/dist/elements/amf/ApiSummary.element.js +0 -26
  271. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  272. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  273. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  274. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  275. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  276. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  277. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  278. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  279. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  280. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  281. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  282. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  283. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  284. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  285. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  286. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  287. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  288. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  289. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  290. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  291. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  292. package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
  293. package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
  294. package/dist/elements/authorization/ui/Authorization.js +18 -35
  295. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  296. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  297. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  298. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  299. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  300. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  301. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  302. package/dist/elements/code/HttpSnippets.js +9 -8
  303. package/dist/elements/code/HttpSnippets.js.map +1 -1
  304. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  305. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  306. package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
  307. package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
  308. package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
  309. package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
  310. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
  311. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
  312. package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
  313. package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
  314. package/dist/elements/dialog/Rename.d.ts +7 -6
  315. package/dist/elements/dialog/Rename.d.ts.map +1 -1
  316. package/dist/elements/dialog/Rename.js +7 -12
  317. package/dist/elements/dialog/Rename.js.map +1 -1
  318. package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
  319. package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
  320. package/dist/elements/dialog/SetCookieAction.element.js +173 -0
  321. package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
  322. package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
  323. package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  324. package/dist/elements/environment/EnvironmentEditor.js +73 -30
  325. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  326. package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
  327. package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
  328. package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  329. package/dist/elements/environment/ServerEditor.d.ts +3 -3
  330. package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
  331. package/dist/elements/environment/ServerEditor.js +10 -51
  332. package/dist/elements/environment/ServerEditor.js.map +1 -1
  333. package/dist/elements/environment/VariablesEditor.d.ts +0 -1
  334. package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
  335. package/dist/elements/environment/VariablesEditor.js +10 -18
  336. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  337. package/dist/elements/files/ShareFile.js +19 -57
  338. package/dist/elements/files/ShareFile.js.map +1 -1
  339. package/dist/elements/har/HarViewer.js +6 -7
  340. package/dist/elements/har/HarViewer.js.map +1 -1
  341. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  342. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  343. package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
  344. package/dist/elements/highlight/Prism.styles.js +12 -5
  345. package/dist/elements/highlight/Prism.styles.js.map +1 -1
  346. package/dist/elements/highlight/PrismHighlight.js +9 -18
  347. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  348. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  349. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  350. package/dist/elements/http/BodyEditor.d.ts +0 -4
  351. package/dist/elements/http/BodyEditor.d.ts.map +1 -1
  352. package/dist/elements/http/BodyEditor.js +31 -49
  353. package/dist/elements/http/BodyEditor.js.map +1 -1
  354. package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
  355. package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  356. package/dist/elements/http/BodyMultipartEditor.js +20 -37
  357. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  358. package/dist/elements/http/BodyTextEditor.d.ts +0 -1
  359. package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
  360. package/dist/elements/http/BodyTextEditor.js +2 -18
  361. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  362. package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
  363. package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
  364. package/dist/elements/http/BodyUrlEncodedEditor.js +23 -26
  365. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  366. package/dist/elements/http/HeadersForm.d.ts +0 -4
  367. package/dist/elements/http/HeadersForm.d.ts.map +1 -1
  368. package/dist/elements/http/HeadersForm.js +16 -23
  369. package/dist/elements/http/HeadersForm.js.map +1 -1
  370. package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
  371. package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
  372. package/dist/elements/http/HttpAssertions.element.js +264 -0
  373. package/dist/elements/http/HttpAssertions.element.js.map +1 -0
  374. package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
  375. package/dist/elements/http/HttpAssertions.styles.js +7 -156
  376. package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
  377. package/dist/elements/http/HttpFlows.common.d.ts +3 -0
  378. package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
  379. package/dist/elements/http/HttpFlows.common.js +181 -0
  380. package/dist/elements/http/HttpFlows.common.js.map +1 -0
  381. package/dist/elements/http/HttpFlows.element.d.ts +97 -0
  382. package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
  383. package/dist/elements/http/HttpFlows.element.js +684 -0
  384. package/dist/elements/http/HttpFlows.element.js.map +1 -0
  385. package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
  386. package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
  387. package/dist/elements/http/HttpFlows.styles.js +28 -0
  388. package/dist/elements/http/HttpFlows.styles.js.map +1 -0
  389. package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
  390. package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
  391. package/dist/elements/http/HttpFlowsUi.js +1256 -0
  392. package/dist/elements/http/HttpFlowsUi.js.map +1 -0
  393. package/dist/elements/http/LogBody.js +10 -21
  394. package/dist/elements/http/LogBody.js.map +1 -1
  395. package/dist/elements/http/LogHeaders.js +4 -23
  396. package/dist/elements/http/LogHeaders.js.map +1 -1
  397. package/dist/elements/http/LogTimings.js +11 -13
  398. package/dist/elements/http/LogTimings.js.map +1 -1
  399. package/dist/elements/http/RequestConfigElement.d.ts +0 -1
  400. package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
  401. package/dist/elements/http/RequestConfigElement.js +15 -15
  402. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  403. package/dist/elements/http/RequestEditor.d.ts +10 -10
  404. package/dist/elements/http/RequestEditor.d.ts.map +1 -1
  405. package/dist/elements/http/RequestEditor.js +116 -111
  406. package/dist/elements/http/RequestEditor.js.map +1 -1
  407. package/dist/elements/http/RequestLog.js +9 -14
  408. package/dist/elements/http/RequestLog.js.map +1 -1
  409. package/dist/elements/http/UrlInput.d.ts +3 -3
  410. package/dist/elements/http/UrlInput.d.ts.map +1 -1
  411. package/dist/elements/http/UrlInput.js +17 -27
  412. package/dist/elements/http/UrlInput.js.map +1 -1
  413. package/dist/elements/http/UrlParamsForm.d.ts +0 -1
  414. package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
  415. package/dist/elements/http/UrlParamsForm.js +16 -16
  416. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  417. package/dist/elements/layout/LayoutManager.js +16 -24
  418. package/dist/elements/layout/LayoutManager.js.map +1 -1
  419. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  420. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  421. package/dist/elements/layout/SplitItem.js +4 -12
  422. package/dist/elements/layout/SplitItem.js.map +1 -1
  423. package/dist/elements/layout/SplitLayout.js +18 -24
  424. package/dist/elements/layout/SplitLayout.js.map +1 -1
  425. package/dist/elements/layout/SplitPanel.js +10 -16
  426. package/dist/elements/layout/SplitPanel.js.map +1 -1
  427. package/dist/elements/layout/SplitView.js +17 -26
  428. package/dist/elements/layout/SplitView.js.map +1 -1
  429. package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
  430. package/dist/elements/layout/SplitView.styles.js +1 -0
  431. package/dist/elements/layout/SplitView.styles.js.map +1 -1
  432. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  433. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  434. package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
  435. package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
  436. package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
  437. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  438. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  439. package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
  440. package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
  441. package/dist/elements/project/HttpProjectRequest.js +14 -43
  442. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  443. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  444. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  445. package/dist/elements/project/ProjectNavigation.js +0 -4
  446. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  447. package/dist/elements/project/ProjectRunReport.js +4 -15
  448. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  449. package/dist/elements/project/ProjectRunner.d.ts +0 -1
  450. package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
  451. package/dist/elements/project/ProjectRunner.js +3 -51
  452. package/dist/elements/project/ProjectRunner.js.map +1 -1
  453. package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
  454. package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
  455. package/dist/elements/schema-design/AssociationFormElement.js +2 -18
  456. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  457. package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
  458. package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
  459. package/dist/elements/schema-design/DataEntityEditorElement.js +5 -27
  460. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  461. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  462. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  463. package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
  464. package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
  465. package/dist/elements/schema-design/DataSchemaDocument.js +4 -43
  466. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  467. package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
  468. package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
  469. package/dist/elements/schema-design/EntityFormElement.js +4 -25
  470. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  471. package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
  472. package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
  473. package/dist/elements/schema-design/PropertyFormElement.js +8 -23
  474. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  475. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  476. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  477. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  478. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  479. package/dist/elements/user/UserAvatarElement.js +0 -9
  480. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  481. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  482. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  483. package/dist/http-client/idb/Base.js +5 -10
  484. package/dist/http-client/idb/Base.js.map +1 -1
  485. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  486. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  487. package/dist/http-client/idb/MockedStore.js +3 -1
  488. package/dist/http-client/idb/MockedStore.js.map +1 -1
  489. package/dist/http-client/store/DataImportProcessor.js +0 -3
  490. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  491. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  492. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  493. package/dist/http-client/store/IdbThread.js +23 -20
  494. package/dist/http-client/store/IdbThread.js.map +1 -1
  495. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  496. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  497. package/dist/http-client/store/idb/IdbStore.js +0 -2
  498. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  499. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  500. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  501. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  502. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  503. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  504. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  505. package/dist/mixins/FileDropMixin.js +0 -1
  506. package/dist/mixins/FileDropMixin.js.map +1 -1
  507. package/dist/mixins/RenderableMixin.js +11 -15
  508. package/dist/mixins/RenderableMixin.js.map +1 -1
  509. package/dist/pages/ApplicationScreen.d.ts +1 -1
  510. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  511. package/dist/pages/ApplicationScreen.js +35 -56
  512. package/dist/pages/ApplicationScreen.js.map +1 -1
  513. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  514. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  515. package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
  516. package/dist/pages/api-client/ApiClient.styles.js +22 -3
  517. package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
  518. package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
  519. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  520. package/dist/pages/api-client/Authenticate.screen.js +23 -9
  521. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  522. package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
  523. package/dist/pages/api-client/StoreConfig.screen.js +25 -39
  524. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  525. package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
  526. package/dist/pages/api-client/StoreConfig.styles.js +5 -0
  527. package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
  528. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  529. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  530. package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
  531. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  532. package/dist/pages/api-client/pages/Files.page.js +8 -28
  533. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  534. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  535. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  536. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  537. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  538. package/dist/pages/demo/DemoPage.js +13 -13
  539. package/dist/pages/demo/DemoPage.js.map +1 -1
  540. package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
  541. package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
  542. package/dist/pages/http-project/HttpProject.screen.js +39 -50
  543. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  544. package/dist/pages/http-project/types.d.ts +8 -6
  545. package/dist/pages/http-project/types.d.ts.map +1 -1
  546. package/dist/pages/http-project/types.js.map +1 -1
  547. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  548. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  549. package/dist/store/HttpStore.js +0 -3
  550. package/dist/store/HttpStore.js.map +1 -1
  551. package/dist/store/UserCache.js +5 -5
  552. package/dist/store/UserCache.js.map +1 -1
  553. package/dist/styles/m3/surface.module.d.ts.map +1 -1
  554. package/dist/styles/m3/surface.module.js +11 -27
  555. package/dist/styles/m3/surface.module.js.map +1 -1
  556. package/dist/ui/UiElement.d.ts +4 -0
  557. package/dist/ui/UiElement.d.ts.map +1 -1
  558. package/dist/ui/UiElement.js +10 -5
  559. package/dist/ui/UiElement.js.map +1 -1
  560. package/dist/ui/button/SegmentedButton.js +9 -11
  561. package/dist/ui/button/SegmentedButton.js.map +1 -1
  562. package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
  563. package/dist/ui/button/SegmentedButton.styles.js +3 -1
  564. package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
  565. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  566. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  567. package/dist/ui/button/UiButton.js +17 -39
  568. package/dist/ui/button/UiButton.js.map +1 -1
  569. package/dist/ui/button/UiIconButton.js +9 -35
  570. package/dist/ui/button/UiIconButton.js.map +1 -1
  571. package/dist/ui/chip/UiChip.js +9 -49
  572. package/dist/ui/chip/UiChip.js.map +1 -1
  573. package/dist/ui/collapse/UiCollapse.js +15 -20
  574. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  575. package/dist/ui/controllers/ActionController.js +143 -144
  576. package/dist/ui/controllers/ActionController.js.map +1 -1
  577. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  578. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  579. package/dist/ui/date/DateTime.js +3 -3
  580. package/dist/ui/date/DateTime.js.map +1 -1
  581. package/dist/ui/dialog/UiDialog.d.ts +3 -0
  582. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  583. package/dist/ui/dialog/UiDialog.js +17 -38
  584. package/dist/ui/dialog/UiDialog.js.map +1 -1
  585. package/dist/ui/effects/ripple.d.ts.map +1 -1
  586. package/dist/ui/effects/ripple.js +25 -19
  587. package/dist/ui/effects/ripple.js.map +1 -1
  588. package/dist/ui/effects/rippleDirective.js +6 -7
  589. package/dist/ui/effects/rippleDirective.js.map +1 -1
  590. package/dist/ui/icons/Icons.d.ts +3 -2
  591. package/dist/ui/icons/Icons.d.ts.map +1 -1
  592. package/dist/ui/icons/Icons.js +2 -1
  593. package/dist/ui/icons/Icons.js.map +1 -1
  594. package/dist/ui/icons/UiIcon.js +4 -3
  595. package/dist/ui/icons/UiIcon.js.map +1 -1
  596. package/dist/ui/input/CheckboxElement.js +12 -10
  597. package/dist/ui/input/CheckboxElement.js.map +1 -1
  598. package/dist/ui/input/CheckedElement.d.ts +1 -1
  599. package/dist/ui/input/CheckedElement.d.ts.map +1 -1
  600. package/dist/ui/input/CheckedElement.js +5 -16
  601. package/dist/ui/input/CheckedElement.js.map +1 -1
  602. package/dist/ui/input/Input.js +170 -235
  603. package/dist/ui/input/Input.js.map +1 -1
  604. package/dist/ui/input/RadioElement.js +13 -11
  605. package/dist/ui/input/RadioElement.js.map +1 -1
  606. package/dist/ui/input/SwitchElement.js +0 -18
  607. package/dist/ui/input/SwitchElement.js.map +1 -1
  608. package/dist/ui/input/TextAreaElement.js +0 -15
  609. package/dist/ui/input/TextAreaElement.js.map +1 -1
  610. package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
  611. package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
  612. package/dist/ui/list/UiDivider.element.js +39 -0
  613. package/dist/ui/list/UiDivider.element.js.map +1 -0
  614. package/dist/ui/list/UiDivider.styles.d.ts +3 -0
  615. package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
  616. package/dist/ui/list/UiDivider.styles.js +49 -0
  617. package/dist/ui/list/UiDivider.styles.js.map +1 -0
  618. package/dist/ui/list/UiDropdownList.js +7 -48
  619. package/dist/ui/list/UiDropdownList.js.map +1 -1
  620. package/dist/ui/list/UiList.js +3 -15
  621. package/dist/ui/list/UiList.js.map +1 -1
  622. package/dist/ui/list/UiListItem.js +4 -17
  623. package/dist/ui/list/UiListItem.js.map +1 -1
  624. package/dist/ui/list/UiListbox.js +0 -1
  625. package/dist/ui/list/UiListbox.js.map +1 -1
  626. package/dist/ui/notification/SnackNotifications.js +1 -2
  627. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  628. package/dist/ui/notification/Snackbar.js +27 -51
  629. package/dist/ui/notification/Snackbar.js.map +1 -1
  630. package/dist/ui/progress/Range.js +24 -23
  631. package/dist/ui/progress/Range.js.map +1 -1
  632. package/dist/ui/progress/UiProgress.js +0 -11
  633. package/dist/ui/progress/UiProgress.js.map +1 -1
  634. package/dist/ui/table/DataTable.js +7 -12
  635. package/dist/ui/table/DataTable.js.map +1 -1
  636. package/dist/ui/tabs/UiTab.js +24 -25
  637. package/dist/ui/tabs/UiTab.js.map +1 -1
  638. package/dist/ui/tabs/UiTabs.d.ts +13 -1
  639. package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
  640. package/dist/ui/tabs/UiTabs.js +62 -47
  641. package/dist/ui/tabs/UiTabs.js.map +1 -1
  642. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  643. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  644. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  645. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  646. package/dist/visualization/lib/Point.js +0 -2
  647. package/dist/visualization/lib/Point.js.map +1 -1
  648. package/dist/visualization/lib/SelectionManager.js +10 -11
  649. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  650. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  651. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  652. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  653. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  654. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  655. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  656. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  657. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  658. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  659. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  660. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  661. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  662. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  663. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  664. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  665. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  666. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  667. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  668. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  669. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  670. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  671. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  672. package/package.json +3 -2
  673. package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
  674. package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
  675. package/src/define/http/http-assertions.ts +3 -3
  676. package/src/define/http/http-flows.ts +15 -0
  677. package/src/define/ui/ui-divider.ts +7 -2
  678. package/src/elements/ApiElement.ts +7 -0
  679. package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
  680. package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
  681. package/src/elements/amf/ApiRequest.element.ts +1 -1
  682. package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
  683. package/src/elements/authorization/ui/Authorization.ts +3 -5
  684. package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
  685. package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
  686. package/src/elements/dialog/Rename.ts +8 -7
  687. package/src/elements/dialog/SetCookieAction.element.ts +183 -0
  688. package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
  689. package/src/elements/environment/EnvironmentEditor.ts +81 -22
  690. package/src/elements/environment/ServerEditor.ts +4 -8
  691. package/src/elements/environment/VariablesEditor.ts +3 -7
  692. package/src/elements/highlight/Prism.styles.ts +12 -5
  693. package/src/elements/http/BodyEditor.ts +10 -17
  694. package/src/elements/http/BodyMultipartEditor.ts +3 -20
  695. package/src/elements/http/BodyTextEditor.ts +0 -4
  696. package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
  697. package/src/elements/http/HeadersForm.ts +2 -9
  698. package/src/elements/http/HttpAssertions.element.ts +286 -0
  699. package/src/elements/http/HttpAssertions.styles.ts +7 -156
  700. package/src/elements/http/HttpFlows.common.ts +181 -0
  701. package/src/elements/http/HttpFlows.element.ts +722 -0
  702. package/src/elements/http/HttpFlows.styles.ts +29 -0
  703. package/src/elements/http/HttpFlowsUi.ts +1327 -0
  704. package/src/elements/http/RequestConfigElement.ts +10 -14
  705. package/src/elements/http/RequestEditor.ts +77 -35
  706. package/src/elements/http/UrlInput.ts +6 -6
  707. package/src/elements/http/UrlParamsForm.ts +2 -6
  708. package/src/elements/layout/SplitView.styles.ts +1 -0
  709. package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
  710. package/src/elements/project/HttpProjectRequest.ts +16 -5
  711. package/src/elements/project/ProjectRunner.ts +3 -7
  712. package/src/elements/schema-design/AssociationFormElement.ts +4 -8
  713. package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
  714. package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
  715. package/src/elements/schema-design/EntityFormElement.ts +6 -10
  716. package/src/elements/schema-design/PropertyFormElement.ts +11 -15
  717. package/src/pages/ApplicationScreen.ts +1 -1
  718. package/src/pages/api-client/ApiClient.styles.ts +22 -3
  719. package/src/pages/api-client/Authenticate.screen.ts +19 -3
  720. package/src/pages/api-client/StoreConfig.screen.ts +4 -2
  721. package/src/pages/api-client/StoreConfig.styles.ts +5 -0
  722. package/src/pages/api-client/pages/Files.page.ts +2 -1
  723. package/src/pages/http-project/HttpProject.screen.ts +14 -26
  724. package/src/pages/http-project/types.ts +8 -6
  725. package/src/styles/m3/surface.module.ts +11 -27
  726. package/src/styles/m3/theme.css +36 -0
  727. package/src/styles/m3/tokens.css +11 -0
  728. package/src/ui/UiElement.ts +7 -0
  729. package/src/ui/button/SegmentedButton.styles.ts +3 -1
  730. package/src/ui/dialog/UiDialog.ts +3 -0
  731. package/src/ui/effects/ripple.ts +6 -1
  732. package/src/ui/icons/Icons.ts +3 -2
  733. package/src/ui/input/CheckedElement.ts +3 -3
  734. package/src/ui/input/Input.ts +1 -1
  735. package/src/ui/list/UiDivider.element.ts +41 -0
  736. package/src/ui/list/UiDivider.styles.ts +49 -0
  737. package/src/ui/tabs/UiTabs.ts +55 -13
  738. package/test/amf/authorization/OAuth2Method.test.ts +1 -1
  739. package/test/elements/http/HttpAssertions.test.ts +5 -6
  740. package/test/elements/http/HttpFlows.test.ts +485 -0
  741. package/tsconfig.json +2 -2
  742. package/dist/elements/http/HttpAssertions.d.ts +0 -114
  743. package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
  744. package/dist/elements/http/HttpAssertions.js +0 -1144
  745. package/dist/elements/http/HttpAssertions.js.map +0 -1
  746. package/dist/elements/http/internals.d.ts +0 -150
  747. package/dist/elements/http/internals.d.ts.map +0 -1
  748. package/dist/elements/http/internals.js +0 -150
  749. package/dist/elements/http/internals.js.map +0 -1
  750. package/dist/ui/list/DividerElement.d.ts.map +0 -1
  751. package/dist/ui/list/DividerElement.js +0 -87
  752. package/dist/ui/list/DividerElement.js.map +0 -1
  753. package/src/elements/http/HttpAssertions.ts +0 -1187
  754. package/src/elements/http/internals.ts +0 -151
  755. package/src/http-client/docs/Files.md +0 -28
  756. package/src/ui/list/DividerElement.ts +0 -84
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaDesigner.screen.js","sourceRoot":"","sources":["../../../src/pages/schema-design/SchemaDesigner.screen.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, CSSResult } from 'lit';\nimport { \n DataNamespace, IDataNamespace, ApiError, Events as CoreEvents, \n DataNamespaceKind, IPatchRevision, DataEntityKind, DataModelKind, \n IApplication,\n BroadcastEvent,\n FilePatchBroadcastEvent,\n IPatchInfo,\n} from '@api-client/core/build/browser.js';\nimport { JsonPatch, Patch } from '@api-client/json';\nimport { ApplicationInit, ApplicationScreen } from '../ApplicationScreen.js';\nimport { query, reactive } from '../../lib/decorators.js';\nimport { IRoute, IRouteResult } from '../../mixins/RouteMixin.js';\nimport { navigate } from '../../lib/route.js';\nimport { SchemaDesignerContextMenu } from './SchemaDesignerContextMenu.js';\nimport NavElement from '../../elements/schema-design/SchemaDesignNavigation.js';\nimport AppInfo from './AppInfo.js';\nimport { randomString } from '../../lib/Random.js';\nimport { ISelectDetail } from '../../elements/navigation/AppNavigationElement.js';\nimport pageStyles from './SchemaDesigner.styles.js';\nimport globalStyles from '../../styles/global-styles.js';\nimport typography from '../../styles/m3/typography.module.js';\nimport dialogStyles from '../../styles/m3/dialog.module.js';\nimport { StoreBroadcast } from '../../http-client/store/StoreBroadcast.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport { Events } from '../../events/Events.js';\nimport type { HttpClientStoreBindings } from '../../bindings/base/HttpClientStoreBindings.js';\nimport '../../define/schema-design/schema-design-navigation.js';\nimport '../../define/data/data-entity-editor.js';\nimport '../../define/data/data-model-visualization.js';\nimport '../../define/ui/ui-button.js';\n\nexport interface PageInit extends ApplicationInit {\n idb: HttpClientStoreBindings;\n}\n\nexport default class SchemaDesignerScreen extends ApplicationScreen {\n static get styles(): CSSResult[] {\n // return [styles, globalStyles, mainLayout];\n return [globalStyles, pageStyles, typography, dialogStyles];\n }\n\n static get routes(): IRoute[] {\n return [\n { pattern: '/default', method: 'defaultRoute', fallback: true, name: 'Schema Designer', title: 'Schema Designer Home home' },\n { pattern: '/404', method: 'e404Route', name: 'Not found', title: 'Not found' },\n // { pattern: '/namespace/(?<key>.*)', method: 'namespaceRoute', name: 'Namespace', title: 'A namespace' },\n { pattern: '/model/(?<key>.*)', method: 'modelRoute', name: 'Data model', title: 'A data model' },\n { pattern: '/entity/(?<key>.*)', method: 'entityRoute', name: 'Entity model', title: 'An entity model' },\n ];\n }\n\n protected _key = '';\n \n /**\n * The schema file key.\n */\n get key(): string {\n return this._key;\n }\n\n /**\n * The read data namespace.\n */\n @reactive() root?: DataNamespace;\n\n protected menu: SchemaDesignerContextMenu;\n\n @query('schema-design-navigation') nav?: NavElement;\n\n protected updatingSchema?: boolean;\n\n protected isDirty?: boolean;\n\n protected schema?: string;\n\n /**\n * Own patches sent to the server.\n * These are removed after the sever event is received.\n */\n protected pendingPatches = new Map<string, JsonPatch>();\n\n /**\n * The list of patches made by the current user and received from the server since the beginning of this session\n * or page reload.\n * This is to used to recognize own patches so it won't process a patch that is already applied to the project.\n */\n protected livePatches = new Map<string, IPatchRevision>();\n\n /**\n * The key of the selected item in the root namespace. It corresponds to the `page`.\n */\n @reactive() selected?: string;\n\n mediaChannel = new BroadcastChannel(StoreBroadcast.media);\n\n protected _workspace = '';\n\n /**\n * The key of the workspace that has the project.\n */\n get workspace(): string {\n return this._workspace;\n }\n\n constructor(init: PageInit) {\n super(init);\n this.bindings.idb = init.idb;\n this.menu = new SchemaDesignerContextMenu();\n this.menu.connect();\n this.menu.store.set('callback', this.contextMenuMutationCallback.bind(this));\n }\n\n override async initialize(): Promise<void> {\n if (!await this.isPlatformSupported()) {\n return;\n }\n try {\n this.setupWorkspaceParameters();\n } catch (e) {\n this.initialized = true;\n this.reportCriticalError((e as Error).message);\n return;\n }\n await this.bindings.config.initialize();\n await this.initializeConfig();\n\n await this.bindings.store.initialize();\n\n await this.initializeStore();\n await this.loadUser();\n\n this.bindings.store.space = this.workspace;\n\n await this.bindings.idb.initialize();\n\n const hasFile = await this.setupNamespace(this.key);\n if (!hasFile) {\n this.initializeRouting();\n this.initialized = true;\n return;\n }\n this.mediaChannel.addEventListener('message', this.mediaMessageHandler.bind(this))\n this.initializeRouting();\n this.initialized = true;\n window.addEventListener(EventTypes.SchemaDesign.changed, this.contextMenuMutationCallback.bind(this));\n }\n\n override async storeChanged(): Promise<void> {\n // ...\n }\n\n protected setupWorkspaceParameters(): void {\n const url = new URL(window.location.href);\n const key = url.searchParams.get('key');\n const space = url.searchParams.get('space');\n if (key) {\n this._key = key;\n } else {\n throw new Error(`The project key is not set. Go back to the start page.`);\n }\n if (space) {\n this._workspace = space;\n } else {\n throw new Error(`The space key is not set. Go back to the start page.`);\n }\n this.bindings.store.space = space;\n }\n\n /**\n * Used to read the namespace file from the backend.\n */\n async readNamespaceFile(key: string): Promise<IDataNamespace> {\n const media = await this.bindings.store.media.read(key) as IDataNamespace;\n return media;\n }\n\n /**\n * Stores the patch in the data store.\n * @param key The key of the media file.\n * @param id The generated id of the patch\n * @param value The patch to apply in the backend\n * @param app The application info.\n */\n async storePatch(key: string, id: string, value: JsonPatch, app: IApplication): Promise<void> {\n const info: IPatchInfo = {\n app: app.code,\n appVersion: app.version,\n patch: value,\n id,\n };\n await this.bindings.store.media.patch(key, info);\n }\n\n /**\n * A handler for the broadcast channel message which informs about changes to files media.\n */\n protected mediaMessageHandler(e: MessageEvent): void {\n const event = e.data as BroadcastEvent;\n if (event.space !== this.workspace) {\n return;\n }\n this.processChangeFileEvent(event);\n }\n\n protected openStart(): void {\n Events.Navigation.App.runHttpClient({ space: this.workspace });\n }\n\n protected resetRoute(): void {\n this.page = undefined;\n this.selected = undefined;\n }\n\n protected defaultRoute(): void {\n this.resetRoute();\n this.page = 'default';\n }\n\n protected e404Route(): void {\n this.resetRoute();\n this.page = '404';\n }\n\n // protected namespaceRoute(info: IRouteResult): void {\n // if (!info.params || !info.params.key) {\n // throw new Error(`Invalid route configuration. Missing parameters.`);\n // }\n // this.resetRoute();\n // const key = info.params.key as string;\n // this.page = 'namespace';\n // this.selected = key;\n // const { root } = this;\n // if (!root) {\n // return;\n // }\n // this.current = root.findNamespace(key);\n // }\n\n protected async modelRoute(info: IRouteResult): Promise<void> {\n if (!info.params || !info.params.key) {\n throw new Error(`Invalid route configuration. Missing parameters.`);\n }\n this.resetRoute();\n const key = info.params.key as string;\n this.page = 'model';\n this.selected = key;\n }\n\n protected entityRoute(info: IRouteResult): void {\n if (!info.params || !info.params.key) {\n throw new Error(`Invalid route configuration. Missing parameters.`);\n }\n this.resetRoute();\n const key = info.params.key as string;\n this.page = 'entity';\n this.selected = key;\n }\n\n /**\n * @returns The value of the meta file key encoded in the query params under the `key`.\n */\n protected readFileKey(): string | undefined {\n const url = new URL(window.location.href);\n const key = url.searchParams.get('key');\n return key || undefined;\n }\n\n /**\n * Setups the namespace file during app initialization.\n * \n * @param key The namespace file id\n * @returns true when the namespace was setup correctly. False when there was an error.\n */\n protected async setupNamespace(key: string): Promise<boolean> {\n try {\n const media = await this.readNamespaceFile(key);\n this.schema = JSON.stringify(media);\n this.root = new DataNamespace(media);\n this.menu.store.set('schema', this.root);\n } catch (e) {\n const cause = e as ApiError;\n if (cause.code === 404) {\n navigate('404');\n return false;\n }\n CoreEvents.Telemetry.exception(cause.message, true);\n this.reportCriticalError(cause.message);\n }\n return true;\n }\n\n /**\n * A reference to this function is passed to the context menu\n * and it is called when a project mutates.\n */\n protected contextMenuMutationCallback(): void {\n this.render();\n this.updateSchema();\n const { nav } = this;\n if (nav) {\n nav.requestUpdate();\n }\n }\n\n /**\n * Apples changes to a DataNamespace file.\n * @param event The backend event received from the store.\n */\n protected processChangeFileEvent(event: BroadcastEvent): void {\n const { schema, root } = this;\n if (!schema || !root || this.key !== event.key || event.kind !== DataNamespaceKind) {\n return;\n }\n if (event.operation !== 'patch') {\n this.processFilePatch((event as FilePatchBroadcastEvent).data);\n }\n }\n\n /**\n * Logic run when a patch operation is reported from the backend.\n * @param rev The revision info from the backend event\n */\n protected processFilePatch(rev: IPatchRevision): void {\n const { schema, root } = this;\n if (!schema || !root) {\n return;\n }\n const iData = JSON.parse(schema);\n const { id } = rev;\n const ownPatch = this.pendingPatches.get(id);\n if (ownPatch) {\n this.livePatches.set(id, rev);\n this.pendingPatches.delete(id);\n return;\n }\n const result = Patch.apply(iData, rev.patch);\n this.schema = JSON.stringify(result.doc);\n root.new(result.doc as IDataNamespace);\n this.render();\n const { nav } = this;\n if (nav) {\n nav.requestUpdate();\n }\n }\n\n /**\n * To be called when a change in the editor is detected.\n * It prepares the patch and stored it in the data store.\n */\n async updateSchema(): Promise<void> {\n if (this.updatingSchema) {\n this.isDirty = true;\n return;\n }\n this.isDirty = false;\n const { schema, root } = this;\n if (!root || !schema) {\n // eslint-disable-next-line no-console\n console.warn(`Trying to update the schema but none is set.`);\n return;\n }\n\n const newSchema = root.toJSON();\n const diff = Patch.diff(JSON.parse(schema), newSchema);\n if (!diff.length) {\n // eslint-disable-next-line no-console\n console.warn(`Expected to detect changes to the data schema.`);\n return;\n }\n this.updatingSchema = true;\n // gives 2.092279e+13 permutations.\n const id = randomString(16);\n this.pendingPatches.set(id, diff);\n try {\n await this.storePatch(root.key, id, diff, AppInfo);\n this.schema = JSON.stringify(newSchema);\n } catch (e) {\n const cause = e as Error;\n CoreEvents.Telemetry.exception(cause.message, true);\n this.reportCriticalError(cause.message);\n } finally {\n this.updatingSchema = false;\n if (this.isDirty) {\n this.updateSchema();\n }\n }\n }\n\n protected navigationSelectionHandler(e: CustomEvent): void {\n const { key, kind } = e.detail as ISelectDetail;\n const base = this.kindToRoute(kind);\n if (base) {\n navigate(base, key);\n }\n }\n\n protected kindToRoute(kind: string): string | undefined {\n switch (kind) {\n case DataEntityKind: return 'entity';\n case DataModelKind: return 'model';\n default: return undefined;\n // default: return 'namespace';\n }\n }\n\n protected entityChangeHandler(): void {\n this.updateSchema();\n }\n\n protected entityNameChangeHandler(): void {\n this.nav?.requestUpdate();\n }\n\n override pageTemplate(): TemplateResult {\n const { initialized } = this;\n if (!initialized) {\n return super.pageTemplate();\n }\n return html`\n ${this.navigationTemplate()}\n ${this.headerTemplate()}\n ${this.mainTemplate()}\n `;\n }\n\n protected override headerTemplate(): TemplateResult {\n const { root } = this;\n const rootTitle = root && root.info && root.info.name;\n const title = rootTitle || 'Schema Designer';\n return html`\n <header>\n <h1 class=\"title-large\">${title}</h1>\n </header>\n `;\n }\n\n protected override navigationTemplate(): TemplateResult {\n return html`\n <schema-design-navigation\n class=\"nav\"\n .root=\"${this.root}\" \n .selected=\"${this.selected}\" \n @select=\"${this.navigationSelectionHandler}\"\n ></schema-design-navigation>\n `;\n }\n\n protected override mainTemplate(): TemplateResult {\n const { page } = this;\n if (page === '404') {\n return this.e404Template();\n }\n return html`\n <main class=\"body-medium ${page}\">\n <div class=\"content\">\n ${this.renderPage()}\n </div>\n </main>`;\n }\n\n protected e404Template(): TemplateResult {\n return html`\n <main>\n <div class=\"full-error\">\n <h2 class=\"headline-large\">Not found</h2>\n <p class=\"body-large\">\n The schema you are trying to open does not exist, was removed,\n or you lost access to it.\n </p>\n <ui-button type=\"filled\" @click=\"${this.openStart}\">Back to start</ui-button>\n </div>\n </main>`;\n }\n\n protected renderPage(): TemplateResult {\n switch (this.page) {\n // case 'namespace': return this._namespaceTemplate();\n case 'model': return this._dataModelTemplate();\n case 'entity': return this._entityTemplate();\n default: return this._emptySelectionTemplate();\n }\n }\n\n protected _emptySelectionTemplate(): TemplateResult {\n return html`\n <div class=\"empty-state body-large\">\n <p>Schema designer allows you to design data and translate them into schemas which then can be used in other tools \n to generate HTTP payloads and examples.</p>\n <p><b>Namespaces</b> helps you organize your data models. You can create as many namespaces as you need.</p>\n <p>Inside a namespaces put <b>data models</b>. They represent a logical structure of your data.</p>\n <p>An <b>entity</b> is a smallest part of your data. You can compose complex data structures through <b>entity associations</b>.</p>\n </div>\n `;\n }\n\n // protected _namespaceTemplate(): TemplateResult {\n // return html`\n // <p>TODO: Namespace view for ${this.selected}</p>\n // `;\n // }\n\n protected _dataModelTemplate(): TemplateResult {\n return html`\n <data-model-visualization .root=\"${this.root}\" .key=\"${this.selected}\"></data-model-visualization>\n `;\n }\n\n protected _entityTemplate(): TemplateResult {\n return html`\n <data-entity-editor .root=\"${this.root}\" .selected=\"${this.selected}\" @change=\"${this.entityChangeHandler}\" @namechange=\"${this.entityNameChangeHandler}\"></data-entity-editor>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"SchemaDesigner.screen.js","sourceRoot":"","sources":["../../../src/pages/schema-design/SchemaDesigner.screen.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, CSSResult } from 'lit';\nimport { \n DataNamespace, IDataNamespace, ApiError, Events as CoreEvents, \n DataNamespaceKind, IPatchRevision, DataEntityKind, DataModelKind, \n IApplication,\n BroadcastEvent,\n FilePatchBroadcastEvent,\n IPatchInfo,\n} from '@api-client/core/build/browser.js';\nimport { JsonPatch, Patch } from '@api-client/json';\nimport { ApplicationInit, ApplicationScreen } from '../ApplicationScreen.js';\nimport { query, reactive } from '../../lib/decorators.js';\nimport { IRoute, IRouteResult } from '../../mixins/RouteMixin.js';\nimport { navigate } from '../../lib/route.js';\nimport { SchemaDesignerContextMenu } from './SchemaDesignerContextMenu.js';\nimport NavElement from '../../elements/schema-design/SchemaDesignNavigation.js';\nimport AppInfo from './AppInfo.js';\nimport { randomString } from '../../lib/Random.js';\nimport { ISelectDetail } from '../../elements/navigation/AppNavigationElement.js';\nimport pageStyles from './SchemaDesigner.styles.js';\nimport globalStyles from '../../styles/global-styles.js';\nimport typography from '../../styles/m3/typography.module.js';\nimport dialogStyles from '../../styles/m3/dialog.module.js';\nimport { StoreBroadcast } from '../../http-client/store/StoreBroadcast.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport { Events } from '../../events/Events.js';\nimport type { HttpClientStoreBindings } from '../../bindings/base/HttpClientStoreBindings.js';\nimport '../../define/schema-design/schema-design-navigation.js';\nimport '../../define/data/data-entity-editor.js';\nimport '../../define/data/data-model-visualization.js';\nimport '../../define/ui/ui-button.js';\n\nexport interface PageInit extends ApplicationInit {\n idb: HttpClientStoreBindings;\n}\n\nexport default class SchemaDesignerScreen extends ApplicationScreen {\n static get styles(): CSSResult[] {\n // return [styles, globalStyles, mainLayout];\n return [globalStyles, pageStyles, typography, dialogStyles];\n }\n\n static get routes(): IRoute[] {\n return [\n { pattern: '/default', method: 'defaultRoute', fallback: true, name: 'Schema Designer', title: 'Schema Designer Home home' },\n { pattern: '/404', method: 'e404Route', name: 'Not found', title: 'Not found' },\n // { pattern: '/namespace/(?<key>.*)', method: 'namespaceRoute', name: 'Namespace', title: 'A namespace' },\n { pattern: '/model/(?<key>.*)', method: 'modelRoute', name: 'Data model', title: 'A data model' },\n { pattern: '/entity/(?<key>.*)', method: 'entityRoute', name: 'Entity model', title: 'An entity model' },\n ];\n }\n\n protected _key = '';\n \n /**\n * The schema file key.\n */\n get key(): string {\n return this._key;\n }\n\n /**\n * The read data namespace.\n */\n @reactive() root?: DataNamespace;\n\n protected menu: SchemaDesignerContextMenu;\n\n @query('schema-design-navigation') nav?: NavElement;\n\n protected updatingSchema?: boolean;\n\n protected isDirty?: boolean;\n\n protected schema?: string;\n\n /**\n * Own patches sent to the server.\n * These are removed after the sever event is received.\n */\n protected pendingPatches = new Map<string, JsonPatch>();\n\n /**\n * The list of patches made by the current user and received from the server since the beginning of this session\n * or page reload.\n * This is to used to recognize own patches so it won't process a patch that is already applied to the project.\n */\n protected livePatches = new Map<string, IPatchRevision>();\n\n /**\n * The key of the selected item in the root namespace. It corresponds to the `page`.\n */\n @reactive() selected?: string;\n\n mediaChannel = new BroadcastChannel(StoreBroadcast.media);\n\n protected _workspace = '';\n\n /**\n * The key of the workspace that has the project.\n */\n get workspace(): string {\n return this._workspace;\n }\n\n constructor(init: PageInit) {\n super(init);\n this.bindings.idb = init.idb;\n this.menu = new SchemaDesignerContextMenu();\n this.menu.connect();\n this.menu.store.set('callback', this.contextMenuMutationCallback.bind(this));\n }\n\n override async initialize(): Promise<void> {\n if (!await this.isPlatformSupported()) {\n return;\n }\n try {\n this.setupWorkspaceParameters();\n } catch (e) {\n this.initialized = true;\n this.reportCriticalError((e as Error).message);\n return;\n }\n await this.bindings.config.initialize();\n await this.initializeConfig();\n\n await this.bindings.store.initialize();\n\n await this.initializeStore();\n await this.loadUser();\n\n this.bindings.store.space = this.workspace;\n\n await this.bindings.idb.initialize();\n\n const hasFile = await this.setupNamespace(this.key);\n if (!hasFile) {\n this.initializeRouting();\n this.initialized = true;\n return;\n }\n this.mediaChannel.addEventListener('message', this.mediaMessageHandler.bind(this))\n this.initializeRouting();\n this.initialized = true;\n window.addEventListener(EventTypes.SchemaDesign.changed, this.contextMenuMutationCallback.bind(this));\n }\n\n override async storeChanged(): Promise<void> {\n // ...\n }\n\n protected setupWorkspaceParameters(): void {\n const url = new URL(window.location.href);\n const key = url.searchParams.get('key');\n const space = url.searchParams.get('space');\n if (key) {\n this._key = key;\n } else {\n throw new Error(`The project key is not set. Go back to the start page.`);\n }\n if (space) {\n this._workspace = space;\n } else {\n throw new Error(`The space key is not set. Go back to the start page.`);\n }\n this.bindings.store.space = space;\n }\n\n /**\n * Used to read the namespace file from the backend.\n */\n async readNamespaceFile(key: string): Promise<IDataNamespace> {\n const media = await this.bindings.store.media.read(key) as IDataNamespace;\n return media;\n }\n\n /**\n * Stores the patch in the data store.\n * @param key The key of the media file.\n * @param id The generated id of the patch\n * @param value The patch to apply in the backend\n * @param app The application info.\n */\n async storePatch(key: string, id: string, value: JsonPatch, app: IApplication): Promise<void> {\n const info: IPatchInfo = {\n app: app.code,\n appVersion: app.version,\n patch: value,\n id,\n };\n await this.bindings.store.media.patch(key, info);\n }\n\n /**\n * A handler for the broadcast channel message which informs about changes to files media.\n */\n protected mediaMessageHandler(e: MessageEvent): void {\n const event = e.data as BroadcastEvent;\n if (event.space !== this.workspace) {\n return;\n }\n this.processChangeFileEvent(event);\n }\n\n protected openStart(): void {\n Events.Navigation.App.runHttpClient({ space: this.workspace });\n }\n\n protected resetRoute(): void {\n this.page = undefined;\n this.selected = undefined;\n }\n\n protected defaultRoute(): void {\n this.resetRoute();\n this.page = 'default';\n }\n\n protected e404Route(): void {\n this.resetRoute();\n this.page = '404';\n }\n\n // protected namespaceRoute(info: IRouteResult): void {\n // if (!info.params || !info.params.key) {\n // throw new Error(`Invalid route configuration. Missing parameters.`);\n // }\n // this.resetRoute();\n // const key = info.params.key as string;\n // this.page = 'namespace';\n // this.selected = key;\n // const { root } = this;\n // if (!root) {\n // return;\n // }\n // this.current = root.findNamespace(key);\n // }\n\n protected async modelRoute(info: IRouteResult): Promise<void> {\n if (!info.params || !info.params.key) {\n throw new Error(`Invalid route configuration. Missing parameters.`);\n }\n this.resetRoute();\n const key = info.params.key as string;\n this.page = 'model';\n this.selected = key;\n }\n\n protected entityRoute(info: IRouteResult): void {\n if (!info.params || !info.params.key) {\n throw new Error(`Invalid route configuration. Missing parameters.`);\n }\n this.resetRoute();\n const key = info.params.key as string;\n this.page = 'entity';\n this.selected = key;\n }\n\n /**\n * @returns The value of the meta file key encoded in the query params under the `key`.\n */\n protected readFileKey(): string | undefined {\n const url = new URL(window.location.href);\n const key = url.searchParams.get('key');\n return key || undefined;\n }\n\n /**\n * Setups the namespace file during app initialization.\n * \n * @param key The namespace file id\n * @returns true when the namespace was setup correctly. False when there was an error.\n */\n protected async setupNamespace(key: string): Promise<boolean> {\n try {\n const media = await this.readNamespaceFile(key);\n this.schema = JSON.stringify(media);\n this.root = new DataNamespace(media);\n this.menu.store.set('schema', this.root);\n } catch (e) {\n const cause = e as ApiError;\n if (cause.code === 404) {\n navigate('404');\n return false;\n }\n CoreEvents.Telemetry.exception(cause.message, true);\n this.reportCriticalError(cause.message);\n }\n return true;\n }\n\n /**\n * A reference to this function is passed to the context menu\n * and it is called when a project mutates.\n */\n protected contextMenuMutationCallback(): void {\n this.render();\n this.updateSchema();\n const { nav } = this;\n if (nav) {\n nav.requestUpdate();\n }\n }\n\n /**\n * Apples changes to a DataNamespace file.\n * @param event The backend event received from the store.\n */\n protected processChangeFileEvent(event: BroadcastEvent): void {\n const { schema, root } = this;\n if (!schema || !root || this.key !== event.key || event.kind !== DataNamespaceKind) {\n return;\n }\n if (event.operation !== 'patch') {\n this.processFilePatch((event as FilePatchBroadcastEvent).data);\n }\n }\n\n /**\n * Logic run when a patch operation is reported from the backend.\n * @param rev The revision info from the backend event\n */\n protected processFilePatch(rev: IPatchRevision): void {\n const { schema, root } = this;\n if (!schema || !root) {\n return;\n }\n const iData = JSON.parse(schema);\n const { id } = rev;\n const ownPatch = this.pendingPatches.get(id);\n if (ownPatch) {\n this.livePatches.set(id, rev);\n this.pendingPatches.delete(id);\n return;\n }\n const result = Patch.apply(iData, rev.patch);\n this.schema = JSON.stringify(result.doc);\n root.new(result.doc as IDataNamespace);\n this.render();\n const { nav } = this;\n if (nav) {\n nav.requestUpdate();\n }\n }\n\n /**\n * To be called when a change in the editor is detected.\n * It prepares the patch and stored it in the data store.\n */\n async updateSchema(): Promise<void> {\n if (this.updatingSchema) {\n this.isDirty = true;\n return;\n }\n this.isDirty = false;\n const { schema, root } = this;\n if (!root || !schema) {\n // eslint-disable-next-line no-console\n console.warn(`Trying to update the schema but none is set.`);\n return;\n }\n\n const newSchema = root.toJSON();\n const diff = Patch.diff(JSON.parse(schema), newSchema);\n if (!diff.length) {\n // eslint-disable-next-line no-console\n console.warn(`Expected to detect changes to the data schema.`);\n return;\n }\n this.updatingSchema = true;\n // gives 2.092279e+13 permutations.\n const id = randomString(16);\n this.pendingPatches.set(id, diff);\n try {\n await this.storePatch(root.key, id, diff, AppInfo);\n this.schema = JSON.stringify(newSchema);\n } catch (e) {\n const cause = e as Error;\n CoreEvents.Telemetry.exception(cause.message, true);\n this.reportCriticalError(cause.message);\n } finally {\n this.updatingSchema = false;\n if (this.isDirty) {\n this.updateSchema();\n }\n }\n }\n\n protected navigationSelectionHandler(e: CustomEvent): void {\n const { key, kind } = e.detail as ISelectDetail;\n const base = this.kindToRoute(kind);\n if (base) {\n navigate(base, key);\n }\n }\n\n protected kindToRoute(kind: string): string | undefined {\n switch (kind) {\n case DataEntityKind: return 'entity';\n case DataModelKind: return 'model';\n default: return undefined;\n // default: return 'namespace';\n }\n }\n\n protected entityChangeHandler(): void {\n this.updateSchema();\n }\n\n protected entityNameChangeHandler(): void {\n this.nav?.requestUpdate();\n }\n\n override pageTemplate(): TemplateResult {\n const { initialized } = this;\n if (!initialized) {\n return super.pageTemplate();\n }\n return html`\n ${this.navigationTemplate()}\n ${this.headerTemplate()}\n ${this.mainTemplate()}\n `;\n }\n\n protected override headerTemplate(): TemplateResult {\n const { root } = this;\n const rootTitle = root && root.info && root.info.name;\n const title = rootTitle || 'Schema Designer';\n return html`\n <header>\n <h1 class=\"title-large\">${title}</h1>\n </header>\n `;\n }\n\n protected override navigationTemplate(): TemplateResult {\n return html`\n <schema-design-navigation\n class=\"nav\"\n .root=\"${this.root}\" \n .selected=\"${this.selected}\" \n @select=\"${this.navigationSelectionHandler}\"\n ></schema-design-navigation>\n `;\n }\n\n protected override mainTemplate(): TemplateResult {\n const { page } = this;\n if (page === '404') {\n return this.e404Template();\n }\n return html`\n <main class=\"body-medium ${page}\">\n <div class=\"content\">\n ${this.renderPage()}\n </div>\n </main>`;\n }\n\n protected e404Template(): TemplateResult {\n return html`\n <main>\n <div class=\"full-error\">\n <h2 class=\"headline-large\">Not found</h2>\n <p class=\"body-large\">\n The schema you are trying to open does not exist, was removed,\n or you lost access to it.\n </p>\n <ui-button type=\"filled\" @click=\"${this.openStart}\">Back to start</ui-button>\n </div>\n </main>`;\n }\n\n protected renderPage(): TemplateResult {\n switch (this.page) {\n // case 'namespace': return this._namespaceTemplate();\n case 'model': return this._dataModelTemplate();\n case 'entity': return this._entityTemplate();\n default: return this._emptySelectionTemplate();\n }\n }\n\n protected _emptySelectionTemplate(): TemplateResult {\n return html`\n <div class=\"empty-state body-large\">\n <p>Schema designer allows you to design data and translate them into schemas which then can be used in other tools \n to generate HTTP payloads and examples.</p>\n <p><b>Namespaces</b> helps you organize your data models. You can create as many namespaces as you need.</p>\n <p>Inside a namespaces put <b>data models</b>. They represent a logical structure of your data.</p>\n <p>An <b>entity</b> is a smallest part of your data. You can compose complex data structures through <b>entity associations</b>.</p>\n </div>\n `;\n }\n\n // protected _namespaceTemplate(): TemplateResult {\n // return html`\n // <p>TODO: Namespace view for ${this.selected}</p>\n // `;\n // }\n\n protected _dataModelTemplate(): TemplateResult {\n return html`\n <data-model-visualization .root=\"${this.root}\" .key=\"${this.selected}\"></data-model-visualization>\n `;\n }\n\n protected _entityTemplate(): TemplateResult {\n return html`\n <data-entity-editor .root=\"${this.root}\" .selected=\"${this.selected}\" @change=\"${this.entityChangeHandler}\" @namechange=\"${this.entityNameChangeHandler}\"></data-entity-editor>\n `;\n }\n}\n"]}
@@ -4,9 +4,6 @@ import { StoreSdk, RouteBuilder } from '@api-client/core/build/browser.js';
4
4
  * The client (web) side store.
5
5
  */
6
6
  export class HttpStore {
7
- sdk;
8
- url;
9
- env;
10
7
  /**
11
8
  * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.
12
9
  * @param env The store environment to use.
@@ -1 +1 @@
1
- {"version":3,"file":"HttpStore.js","sourceRoot":"","sources":["../../src/store/HttpStore.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { StoreSdk, RouteBuilder } from '@api-client/core/build/browser.js';\nimport { IConfigEnvironment } from '../lib/config/Config.js';\n\nexport interface ISessionInitInfo {\n /**\n * The user access token to the store.\n */\n token: string;\n /**\n * When the token expires, if ever.\n */\n expires?: number;\n /**\n * Whether a new token was generated or the stored token is valid.\n */\n new: boolean;\n}\n\n/**\n * The client (web) side store.\n */\nexport class HttpStore {\n sdk: StoreSdk;\n\n url: string;\n\n env?: IConfigEnvironment;\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param env The store environment to use.\n */\n static fromEnvironment(env: IConfigEnvironment): HttpStore {\n const { location } = env;\n const store = new HttpStore(location);\n store.env = env;\n return store;\n }\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param url The store URL.\n */\n constructor(url: string);\n\n constructor(env: IConfigEnvironment);\n\n constructor(envOrUrl: string | IConfigEnvironment) {\n if (!envOrUrl) {\n throw new Error(`Expected an argument.`);\n }\n if (typeof envOrUrl === 'string') {\n if (envOrUrl.endsWith('/')) {\n envOrUrl = envOrUrl.substring(0, envOrUrl.length - 1);\n }\n this.url = envOrUrl;\n this.sdk = new StoreSdk(envOrUrl);\n } else {\n this.env = envOrUrl;\n const { location } = envOrUrl;\n this.url = location;\n this.sdk = new StoreSdk(location);\n }\n }\n\n /**\n * Checks whether the environment has the token and whether this token \n * can make requests to the store.\n * \n * @param env Optional environment. By default is uses the one defined on the class.\n */\n async isAuthenticated(env = this.env): Promise<boolean> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const { token } = env;\n if (!token) {\n return false;\n }\n try {\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const user = await this.sdk.http.get(meUri, { token });\n const ok = user.status === 200;\n if (ok) {\n env.authenticated = true;\n this.sdk.token = token;\n }\n return user.status === 200;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Creates a session in the store and authenticates the user when needed.\n * @param env Optional environment to authenticate if should be different than the current\n * @param force Forces logging in even when the token is valid.\n */\n async getStoreSessionToken(env = this.env, force = false): Promise<ISessionInitInfo> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const result: ISessionInitInfo = {\n token: env.token || '',\n expires: env.tokenExpires,\n new: false,\n };\n \n if (!force && result.token) {\n const user = await this.sdk.http.get(meUri, { token: result.token });\n if (user.status === 200) {\n env.authenticated = true;\n this.sdk.token = result.token;\n return result;\n }\n }\n\n result.token = '';\n delete result.expires;\n result.new = true;\n\n const info = await this.sdk.auth.createSession();\n result.token = info.token;\n this.sdk.token = info.token;\n env.token = info.token;\n env.authenticated = false;\n if (info.expires) {\n env.tokenExpires = info.expires * 1000;\n }\n\n const user = await this.sdk.http.get(meUri, { token: result.token });\n \n if (user.status === 200) {\n env.authenticated = true;\n } else {\n await this.authenticateStore();\n env.authenticated = true;\n }\n return result;\n }\n\n /**\n * Authenticates the user in the store.\n * Note, it opens the browser to the login endpoint.\n */\n async authenticateStore(): Promise<void> {\n const loginEndpoint = this.sdk.getUrl('/auth/login').toString();\n const result = await this.sdk.http.post(loginEndpoint);\n if (result.status !== 204) {\n throw new Error(`Unable to create the authorization session on the store. Invalid status code: ${result.status}.`);\n }\n const location = result.headers.get('location');\n if (!location) {\n throw new Error(`Unable to create the authorization session on the store. The location header is missing.`);\n }\n const authEndpoint = this.sdk.getUrl(location).toString();\n const handle = window.open(authEndpoint);\n if (!handle) {\n throw new Error(`Unable to open an auth window.`);\n }\n await this.sdk.auth.listenAuth('/events');\n handle.close();\n }\n}\n"]}
1
+ {"version":3,"file":"HttpStore.js","sourceRoot":"","sources":["../../src/store/HttpStore.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { StoreSdk, RouteBuilder } from '@api-client/core/build/browser.js';\nimport { IConfigEnvironment } from '../lib/config/Config.js';\n\nexport interface ISessionInitInfo {\n /**\n * The user access token to the store.\n */\n token: string;\n /**\n * When the token expires, if ever.\n */\n expires?: number;\n /**\n * Whether a new token was generated or the stored token is valid.\n */\n new: boolean;\n}\n\n/**\n * The client (web) side store.\n */\nexport class HttpStore {\n sdk: StoreSdk;\n\n url: string;\n\n env?: IConfigEnvironment;\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param env The store environment to use.\n */\n static fromEnvironment(env: IConfigEnvironment): HttpStore {\n const { location } = env;\n const store = new HttpStore(location);\n store.env = env;\n return store;\n }\n\n /**\n * @deprecated Use the `constructor(env: IConfigEnvironment)` constructor.\n * @param url The store URL.\n */\n constructor(url: string);\n\n constructor(env: IConfigEnvironment);\n\n constructor(envOrUrl: string | IConfigEnvironment) {\n if (!envOrUrl) {\n throw new Error(`Expected an argument.`);\n }\n if (typeof envOrUrl === 'string') {\n if (envOrUrl.endsWith('/')) {\n envOrUrl = envOrUrl.substring(0, envOrUrl.length - 1);\n }\n this.url = envOrUrl;\n this.sdk = new StoreSdk(envOrUrl);\n } else {\n this.env = envOrUrl;\n const { location } = envOrUrl;\n this.url = location;\n this.sdk = new StoreSdk(location);\n }\n }\n\n /**\n * Checks whether the environment has the token and whether this token \n * can make requests to the store.\n * \n * @param env Optional environment. By default is uses the one defined on the class.\n */\n async isAuthenticated(env = this.env): Promise<boolean> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const { token } = env;\n if (!token) {\n return false;\n }\n try {\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const user = await this.sdk.http.get(meUri, { token });\n const ok = user.status === 200;\n if (ok) {\n env.authenticated = true;\n this.sdk.token = token;\n }\n return user.status === 200;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Creates a session in the store and authenticates the user when needed.\n * @param env Optional environment to authenticate if should be different than the current\n * @param force Forces logging in even when the token is valid.\n */\n async getStoreSessionToken(env = this.env, force = false): Promise<ISessionInitInfo> {\n if (!env) {\n throw new Error(`The environment either has to be set on the HttpStore class or passed as an argument.`);\n }\n const meUri = this.sdk.getUrl(RouteBuilder.usersMe()).toString();\n const result: ISessionInitInfo = {\n token: env.token || '',\n expires: env.tokenExpires,\n new: false,\n };\n \n if (!force && result.token) {\n const user = await this.sdk.http.get(meUri, { token: result.token });\n if (user.status === 200) {\n env.authenticated = true;\n this.sdk.token = result.token;\n return result;\n }\n }\n\n result.token = '';\n delete result.expires;\n result.new = true;\n\n const info = await this.sdk.auth.createSession();\n result.token = info.token;\n this.sdk.token = info.token;\n env.token = info.token;\n env.authenticated = false;\n if (info.expires) {\n env.tokenExpires = info.expires * 1000;\n }\n\n const user = await this.sdk.http.get(meUri, { token: result.token });\n \n if (user.status === 200) {\n env.authenticated = true;\n } else {\n await this.authenticateStore();\n env.authenticated = true;\n }\n return result;\n }\n\n /**\n * Authenticates the user in the store.\n * Note, it opens the browser to the login endpoint.\n */\n async authenticateStore(): Promise<void> {\n const loginEndpoint = this.sdk.getUrl('/auth/login').toString();\n const result = await this.sdk.http.post(loginEndpoint);\n if (result.status !== 204) {\n throw new Error(`Unable to create the authorization session on the store. Invalid status code: ${result.status}.`);\n }\n const location = result.headers.get('location');\n if (!location) {\n throw new Error(`Unable to create the authorization session on the store. The location header is missing.`);\n }\n const authEndpoint = this.sdk.getUrl(location).toString();\n const handle = window.open(authEndpoint);\n if (!handle) {\n throw new Error(`Unable to open an auth window.`);\n }\n await this.sdk.auth.listenAuth('/events');\n handle.close();\n }\n}\n"]}
@@ -5,12 +5,12 @@ import { ConfigBroadcastChannel } from "../lib/config/Config.js";
5
5
  * of requests to the backend requesting a user info.
6
6
  */
7
7
  class UserCache {
8
- cached = new Map();
9
- /**
10
- * Application configuration broadcast channel.
11
- */
12
- configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);
13
8
  constructor() {
9
+ this.cached = new Map();
10
+ /**
11
+ * Application configuration broadcast channel.
12
+ */
13
+ this.configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);
14
14
  this.configBroadcast.addEventListener('message', this.handleConfigBroadcast.bind(this));
15
15
  }
16
16
  async getUser(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"UserCache.js","sourceRoot":"","sources":["../../src/store/UserCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;;GAGG;AACH,MAAM,SAAS;IACH,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IAExD;;OAEG;IACO,eAAe,GAAG,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAEzE;QACE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;SACjB;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,GAAW;QACrC,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;SACR;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,qBAAqB,CAAC,CAAe;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAuB,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,KAAK,wBAAwB,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;SACzB;aAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAgC,CAAC;YACpD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;aACzB;SACF;IACH,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AACjC,eAAe,QAAQ,CAAC","sourcesContent":["import { IUser } from \"@api-client/core/build/browser.js\";\nimport { AddConfigEnvironmentInit } from \"../bindings/base/ConfigurationBindings.js\";\nimport { Events } from \"../events/Events.js\";\nimport { ConfigBroadcast, ConfigBroadcastChannel } from \"../lib/config/Config.js\";\n\n/**\n * A class that caches user info in memory so the application reduces the number\n * of requests to the backend requesting a user info.\n */\nclass UserCache {\n protected cached = new Map<string, IUser | undefined>();\n\n /**\n * Application configuration broadcast channel.\n */\n protected configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);\n\n constructor() {\n this.configBroadcast.addEventListener('message', this.handleConfigBroadcast.bind(this))\n }\n\n async getUser(key: string): Promise<IUser | undefined> {\n const existing = this.cached.get(key);\n if (existing) {\n return existing;\n }\n const read = await this.requestUser(key);\n this.cached.set(key, read);\n return read;\n }\n\n protected async requestUser(key: string): Promise<IUser | undefined> {\n try {\n const result = await Events.Store.User.read(key);\n return result;\n } catch (e) {\n // ....\n }\n return undefined;\n }\n\n protected handleConfigBroadcast(e: MessageEvent): void {\n const event = e.data as ConfigBroadcast;\n const { path } = event;\n if (path === 'environment.setDefault') {\n this.cached = new Map();\n } else if (path === 'environment.add') {\n const init = event.init as AddConfigEnvironmentInit;\n if (init.asDefault) {\n this.cached = new Map();\n }\n }\n }\n}\n\nconst instance = new UserCache();\nexport default instance;\n"]}
1
+ {"version":3,"file":"UserCache.js","sourceRoot":"","sources":["../../src/store/UserCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;;GAGG;AACH,MAAM,SAAS;IAQb;QAPU,WAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QAExD;;WAEG;QACO,oBAAe,GAAG,IAAI,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;QAGvE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;SACjB;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,WAAW,CAAC,GAAW;QACrC,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,CAAC,EAAE;YACV,OAAO;SACR;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,qBAAqB,CAAC,CAAe;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAuB,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,KAAK,wBAAwB,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;SACzB;aAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAgC,CAAC;YACpD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;aACzB;SACF;IACH,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AACjC,eAAe,QAAQ,CAAC","sourcesContent":["import { IUser } from \"@api-client/core/build/browser.js\";\nimport { AddConfigEnvironmentInit } from \"../bindings/base/ConfigurationBindings.js\";\nimport { Events } from \"../events/Events.js\";\nimport { ConfigBroadcast, ConfigBroadcastChannel } from \"../lib/config/Config.js\";\n\n/**\n * A class that caches user info in memory so the application reduces the number\n * of requests to the backend requesting a user info.\n */\nclass UserCache {\n protected cached = new Map<string, IUser | undefined>();\n\n /**\n * Application configuration broadcast channel.\n */\n protected configBroadcast = new BroadcastChannel(ConfigBroadcastChannel);\n\n constructor() {\n this.configBroadcast.addEventListener('message', this.handleConfigBroadcast.bind(this))\n }\n\n async getUser(key: string): Promise<IUser | undefined> {\n const existing = this.cached.get(key);\n if (existing) {\n return existing;\n }\n const read = await this.requestUser(key);\n this.cached.set(key, read);\n return read;\n }\n\n protected async requestUser(key: string): Promise<IUser | undefined> {\n try {\n const result = await Events.Store.User.read(key);\n return result;\n } catch (e) {\n // ....\n }\n return undefined;\n }\n\n protected handleConfigBroadcast(e: MessageEvent): void {\n const event = e.data as ConfigBroadcast;\n const { path } = event;\n if (path === 'environment.setDefault') {\n this.cached = new Map();\n } else if (path === 'environment.add') {\n const init = event.init as AddConfigEnvironmentInit;\n if (init.asDefault) {\n this.cached = new Map();\n }\n }\n }\n}\n\nconst instance = new UserCache();\nexport default instance;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"surface.module.d.ts","sourceRoot":"","sources":["../../../src/styles/m3/surface.module.ts"],"names":[],"mappings":";AAEA,wBAsDE"}
1
+ {"version":3,"file":"surface.module.d.ts","sourceRoot":"","sources":["../../../src/styles/m3/surface.module.ts"],"names":[],"mappings":";AAEA,wBAsCE"}
@@ -5,44 +5,28 @@ export default css `
5
5
  .surface3,
6
6
  .surface4,
7
7
  .surface5 {
8
- /* background-color: var(--md-sys-color-surface); */
9
8
  color: var(--md-sys-color-on-surface);
10
- position: relative;
11
- z-index: 0;
12
- }
13
-
14
- .surface1::before,
15
- .surface2::before,
16
- .surface3::before,
17
- .surface4::before,
18
- .surface5::before {
19
- content: '';
20
- background-color: var(--md-sys-color-primary);
21
- position: absolute;
22
- inset: 0;
23
- border-radius: inherit;
24
- z-index: -1;
25
9
  }
26
10
 
27
- .surface1::before {
28
- opacity: .05;
11
+ .surface1 {
12
+ background-color: var(--md-sys-color-primary-05a);
29
13
  }
30
14
 
31
- .surface2::before {
32
- /* opacity: .08; */
33
- opacity: .05;
15
+ .surface2 {
16
+ /* background-color: var(--md-sys-color-primary-08a); */
17
+ background-color: var(--md-sys-color-primary-05a);
34
18
  }
35
19
 
36
- .surface3::before {
37
- opacity: .11;
20
+ .surface3 {
21
+ background-color: var(--md-sys-color-primary-11a);
38
22
  }
39
23
 
40
- .surface4::before {
41
- opacity: .12;
24
+ .surface4 {
25
+ background-color: var(--md-sys-color-primary-12a);
42
26
  }
43
27
 
44
- .surface5::before {
45
- opacity: .13;
28
+ .surface5 {
29
+ background-color: var(--md-sys-color-primary-13a);
46
30
  }
47
31
 
48
32
  /* .surface1 > *,
@@ -1 +1 @@
1
- {"version":3,"file":"surface.module.js","sourceRoot":"","sources":["../../../src/styles/m3/surface.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n.surface1,\n.surface2,\n.surface3,\n.surface4,\n.surface5 {\n /* background-color: var(--md-sys-color-surface); */\n color: var(--md-sys-color-on-surface);\n position: relative;\n z-index: 0;\n}\n\n.surface1::before,\n.surface2::before,\n.surface3::before,\n.surface4::before,\n.surface5::before {\n content: '';\n background-color: var(--md-sys-color-primary);\n position: absolute;\n inset: 0;\n border-radius: inherit;\n z-index: -1;\n}\n\n.surface1::before {\n opacity: .05;\n}\n\n.surface2::before {\n /* opacity: .08; */\n opacity: .05;\n}\n\n.surface3::before {\n opacity: .11;\n}\n\n.surface4::before {\n opacity: .12;\n}\n\n.surface5::before {\n opacity: .13;\n}\n\n/* .surface1 > *,\n.surface2 > *,\n.surface3 > *,\n.surface4 > *,\n.surface5 > * {\n position: relative;\n z-index: 1;\n} */\n`;\n"]}
1
+ {"version":3,"file":"surface.module.js","sourceRoot":"","sources":["../../../src/styles/m3/surface.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n.surface1,\n.surface2,\n.surface3,\n.surface4,\n.surface5 {\n color: var(--md-sys-color-on-surface);\n}\n\n.surface1 {\n background-color: var(--md-sys-color-primary-05a);\n}\n\n.surface2 {\n /* background-color: var(--md-sys-color-primary-08a); */\n background-color: var(--md-sys-color-primary-05a);\n}\n\n.surface3 {\n background-color: var(--md-sys-color-primary-11a);\n}\n\n.surface4 {\n background-color: var(--md-sys-color-primary-12a);\n}\n\n.surface5 {\n background-color: var(--md-sys-color-primary-13a);\n}\n\n/* .surface1 > *,\n.surface2 > *,\n.surface3 > *,\n.surface4 > *,\n.surface5 > * {\n position: relative;\n z-index: 1;\n} */\n`;\n"]}
@@ -89,5 +89,9 @@ export declare abstract class UiElement extends LitElement implements ActionCont
89
89
  * template element with `@keyup="${this.handleKeyUp}"`
90
90
  */
91
91
  handleKeyUp(e: KeyboardEvent): void;
92
+ /**
93
+ * A common way for an element to notify a change.
94
+ */
95
+ notifyChange(): void;
92
96
  }
93
97
  //# sourceMappingURL=UiElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UiElement.d.ts","sourceRoot":"","sources":["../../src/ui/UiElement.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE7H;;;;;GAKG;AACH,8BAAsB,SAAU,SAAQ,UAAW,YAAW,oBAAoB;IAChF;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,gBAAgB,mBAA8B;IAExD;;OAEG;IACM,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAErC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI3C;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,IAAI;IAWzD;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAIxC;;;;OAIG;IACH,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAItC;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAI1C;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAIzC;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAIhC;;;;OAIG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAIrC;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;CAGpC"}
1
+ {"version":3,"file":"UiElement.d.ts","sourceRoot":"","sources":["../../src/ui/UiElement.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE7H;;;;;GAKG;AACH,8BAAsB,SAAU,SAAQ,UAAW,YAAW,oBAAoB;IAChF;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,SAAS,CAAC,gBAAgB,mBAA8B;IAExD;;OAEG;IACM,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAErC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAI3C;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,IAAI;IAWzD;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAIxC;;;;OAIG;IACH,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAItC;;;;OAIG;IACH,mBAAmB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAI1C;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAIzC;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAIhC;;;;OAIG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAIrC;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAInC;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB"}
@@ -15,11 +15,10 @@ import { ActionController } from "./controllers/ActionController.js";
15
15
  * @fires action - An event dispatched when the UI element was activated (pointer, keyboard).
16
16
  */
17
17
  export class UiElement extends LitElement {
18
- actionController = new ActionController(this);
19
- /**
20
- * Indicates the component is in the pressed state.
21
- */
22
- pressed;
18
+ constructor() {
19
+ super(...arguments);
20
+ this.actionController = new ActionController(this);
21
+ }
23
22
  /**
24
23
  * Hook method called when we've confirmed that the gesture is intended to be
25
24
  * a press. Subclasses should change the visual state of the control to
@@ -114,6 +113,12 @@ export class UiElement extends LitElement {
114
113
  handleKeyUp(e) {
115
114
  this.actionController.keyUp(e);
116
115
  }
116
+ /**
117
+ * A common way for an element to notify a change.
118
+ */
119
+ notifyChange() {
120
+ this.dispatchEvent(new Event('change'));
121
+ }
117
122
  }
118
123
  __decorate([
119
124
  state()
@@ -1 +1 @@
1
- {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../src/ui/UiElement.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD;;;;GAIG;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA0D,MAAM,mCAAmC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,OAAgB,SAAU,SAAQ,UAAU;IAOtC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAExD;;OAEG;IACgB,OAAO,CAAW;IAErC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAyB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAkB;QAChD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE;gBAC3C,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,CAAe;QAC/B,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,CAAe;QAC7B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,CAAe;QACjC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,CAAe;QAChC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAa;QACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,CAAgB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAgB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;AAzGU;IAAR,KAAK,EAAE;0CAA6B","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { LitElement } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { ActionController, ActionControllerHost, BeginPressConfig, EndPressConfig } from \"./controllers/ActionController.js\";\n\n/**\n * The base class for all API Client's base UI elements.\n * Only contains logic to be applied to **all** UI elements.\n * \n * @fires action - An event dispatched when the UI element was activated (pointer, keyboard).\n */\nexport abstract class UiElement extends LitElement implements ActionControllerHost {\n /**\n * ActionController needs to know if the component is disabled, so subclasses\n * must implement a `disabled` property.\n */\n abstract disabled: boolean;\n\n protected actionController = new ActionController(this);\n\n /**\n * Indicates the component is in the pressed state.\n */\n @state() protected pressed?: boolean;\n\n /**\n * Hook method called when we've confirmed that the gesture is intended to be\n * a press. Subclasses should change the visual state of the control to\n * 'active' at this point, and possibly fire an event. Subclasses should\n * override this method if more needs to be done.\n *\n * @param options `positionEvent` is the Event that is considered the\n * beginning of the press. Null if this was a keyboard interaction.\n */\n beginPress(options: BeginPressConfig): void { \n this.pressed = true;\n }\n\n /**\n * Hook method called when the control goes from a pressed to unpressed\n * state.\n *\n * @param options If `cancelled` is true, means the user canceled the action.\n * Subclasses which trigger events on endPress() should check the value\n * of this flag, and modify their behavior accordingly.\n */\n endPress({ cancelled, actionData }: EndPressConfig): void {\n this.pressed = false;\n if (!cancelled) {\n this.dispatchEvent(new CustomEvent('action', {\n detail: actionData,\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerdown=\"${this.handlePointerDown}\"`\n */\n handlePointerDown(e: PointerEvent): void {\n this.actionController.pointerDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerup=\"${this.handlePointerUp}\"`\n */\n handlePointerUp(e: PointerEvent): void {\n this.actionController.pointerUp(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointercancel=\"${this.handlePointerCancel}\"`\n */\n handlePointerCancel(e: PointerEvent): void {\n this.actionController.pointerCancel(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerleave=\"${this.handlePointerleave}\"`\n */\n handlePointerLeave(e: PointerEvent): void {\n this.actionController.pointerLeave(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@click=\"${this.handleClick}\"`\n */\n handleClick(e: MouseEvent): void {\n this.actionController.click(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@contextmenu=\"${this.handleContextMenu}\"`\n */\n handleContextMenu(): void {\n this.actionController.contextMenu();\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keydown=\"${this.handleKeyDown}\"`\n */\n handleKeyDown(e: KeyboardEvent): void {\n this.actionController.keyDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keyup=\"${this.handleKeyUp}\"`\n */\n handleKeyUp(e: KeyboardEvent): void {\n this.actionController.keyUp(e);\n }\n}\n"]}
1
+ {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../src/ui/UiElement.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD;;;;GAIG;;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA0D,MAAM,mCAAmC,CAAC;AAE7H;;;;;GAKG;AACH,MAAM,OAAgB,SAAU,SAAQ,UAAU;IAAlD;;QAOY,qBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAqH1D,CAAC;IA9GC;;;;;;;;OAQG;IACH,UAAU,CAAC,OAAyB;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,EAAkB;QAChD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE;gBAC3C,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,CAAe;QAC/B,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,CAAe;QAC7B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,CAAe;QACjC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,CAAe;QAChC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAa;QACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,CAAgB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAgB;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;CACF;AAhHU;IAAR,KAAK,EAAE;0CAA6B","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { LitElement } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { ActionController, ActionControllerHost, BeginPressConfig, EndPressConfig } from \"./controllers/ActionController.js\";\n\n/**\n * The base class for all API Client's base UI elements.\n * Only contains logic to be applied to **all** UI elements.\n * \n * @fires action - An event dispatched when the UI element was activated (pointer, keyboard).\n */\nexport abstract class UiElement extends LitElement implements ActionControllerHost {\n /**\n * ActionController needs to know if the component is disabled, so subclasses\n * must implement a `disabled` property.\n */\n abstract disabled: boolean;\n\n protected actionController = new ActionController(this);\n\n /**\n * Indicates the component is in the pressed state.\n */\n @state() protected pressed?: boolean;\n\n /**\n * Hook method called when we've confirmed that the gesture is intended to be\n * a press. Subclasses should change the visual state of the control to\n * 'active' at this point, and possibly fire an event. Subclasses should\n * override this method if more needs to be done.\n *\n * @param options `positionEvent` is the Event that is considered the\n * beginning of the press. Null if this was a keyboard interaction.\n */\n beginPress(options: BeginPressConfig): void { \n this.pressed = true;\n }\n\n /**\n * Hook method called when the control goes from a pressed to unpressed\n * state.\n *\n * @param options If `cancelled` is true, means the user canceled the action.\n * Subclasses which trigger events on endPress() should check the value\n * of this flag, and modify their behavior accordingly.\n */\n endPress({ cancelled, actionData }: EndPressConfig): void {\n this.pressed = false;\n if (!cancelled) {\n this.dispatchEvent(new CustomEvent('action', {\n detail: actionData,\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerdown=\"${this.handlePointerDown}\"`\n */\n handlePointerDown(e: PointerEvent): void {\n this.actionController.pointerDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerup=\"${this.handlePointerUp}\"`\n */\n handlePointerUp(e: PointerEvent): void {\n this.actionController.pointerUp(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointercancel=\"${this.handlePointerCancel}\"`\n */\n handlePointerCancel(e: PointerEvent): void {\n this.actionController.pointerCancel(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@pointerleave=\"${this.handlePointerleave}\"`\n */\n handlePointerLeave(e: PointerEvent): void {\n this.actionController.pointerLeave(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@click=\"${this.handleClick}\"`\n */\n handleClick(e: MouseEvent): void {\n this.actionController.click(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@contextmenu=\"${this.handleContextMenu}\"`\n */\n handleContextMenu(): void {\n this.actionController.contextMenu();\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keydown=\"${this.handleKeyDown}\"`\n */\n handleKeyDown(e: KeyboardEvent): void {\n this.actionController.keyDown(e);\n }\n\n /**\n * Hook method for the ActionController.\n * Subclasses should add this method as an event handler on the interactive\n * template element with `@keyup=\"${this.handleKeyUp}\"`\n */\n handleKeyUp(e: KeyboardEvent): void {\n this.actionController.keyUp(e);\n }\n\n /**\n * A common way for an element to notify a change.\n */\n notifyChange(): void {\n this.dispatchEvent(new Event('change'));\n }\n}\n"]}
@@ -12,15 +12,17 @@ import { check } from "../icons/Icons.js";
12
12
  * @slot icon - A slot to render an icon.
13
13
  */
14
14
  export default class SegmentedButton extends Button {
15
- ripple;
16
- /**
17
- * Whether the button is selected.
18
- * @attribute
19
- */
20
- selected = false;
21
- leadingIcons;
22
15
  constructor() {
23
16
  super();
17
+ /**
18
+ * Whether the button is selected.
19
+ * @attribute
20
+ */
21
+ this.selected = false;
22
+ this.renderRipple = () => {
23
+ const { disabled } = this;
24
+ return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
25
+ };
24
26
  this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));
25
27
  }
26
28
  beginPress(options) {
@@ -92,10 +94,6 @@ export default class SegmentedButton extends Button {
92
94
  });
93
95
  return html `<span class="${iconClasses}" role="presentation">${check}</span>`;
94
96
  }
95
- renderRipple = () => {
96
- const { disabled } = this;
97
- return html `<ui-ripple class="ripple" ?disabled="${disabled}"></ui-ripple>`;
98
- };
99
97
  }
100
98
  __decorate([
101
99
  query('ui-ripple')
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButton.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, query, queryAssignedElements } from \"lit/decorators.js\";\nimport { ClassInfo, classMap } from \"lit/directives/class-map.js\";\nimport { Button } from \"./Button.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport { ripple } from \"../effects/rippleDirective.js\";\nimport '../../define/ui/ui-ripple.js';\nimport { check } from \"../icons/Icons.js\";\n\n/**\n * @fires trigger - When a button is triggered.\n * @slot - Default slot for the label\n * @slot icon - A slot to render an icon.\n */\nexport default class SegmentedButton extends Button {\n @query('ui-ripple') ripple!: UiRipple;\n\n /**\n * Whether the button is selected.\n * @attribute\n */\n @property({ type: Boolean }) selected = false;\n\n @queryAssignedElements({ flatten: true, slot: 'icon' }) protected leadingIcons!: HTMLElement[];\n\n constructor() {\n super();\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.ripple.beginPress(options.positionEvent);\n }\n\n override endPress(options: EndPressConfig): void {\n super.endPress(options);\n this.ripple.endPress();\n\n if (!options.cancelled) {\n this.dispatchEvent(new Event('trigger', { bubbles: true, composed: true }));\n }\n }\n\n protected handlePointerEnter(e: PointerEvent): void {\n this.ripple.beginHover(e);\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e);\n this.ripple.endHover();\n }\n\n protected handleIconSlotChange(): void {\n this.requestUpdate();\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, selected = false } = this;\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n selected,\n });\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n ${this.renderRipple()}\n <div class=\"content\">\n ${this.leadingContent()} \n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected leadingContent(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading': true,\n visible: !!this.selected || !!leadingIcons.length,\n }\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.renderLeadingIcon()}\n ${this.renderChecked()}\n </div>\n `;\n }\n\n protected renderLeadingIcon(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading-icon': true,\n 'with-icon': !!leadingIcons.length,\n hidden: !!this.selected,\n }\n return html`\n <div class=\"${classMap(classes)}\"><slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot></div>\n `;\n }\n\n protected renderChecked(): TemplateResult {\n const iconClasses = classMap({\n 'check-mark': true,\n checked: !!this.selected,\n });\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`;\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":"SegmentedButton.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, query, queryAssignedElements } from \"lit/decorators.js\";\nimport { ClassInfo, classMap } from \"lit/directives/class-map.js\";\nimport { Button } from \"./Button.js\";\nimport UiRipple from \"../effects/ripple.js\";\nimport { BeginPressConfig, EndPressConfig } from \"../controllers/ActionController.js\";\nimport { ripple } from \"../effects/rippleDirective.js\";\nimport '../../define/ui/ui-ripple.js';\nimport { check } from \"../icons/Icons.js\";\n\n/**\n * @fires trigger - When a button is triggered.\n * @slot - Default slot for the label\n * @slot icon - A slot to render an icon.\n */\nexport default class SegmentedButton extends Button {\n @query('ui-ripple') ripple!: UiRipple;\n\n /**\n * Whether the button is selected.\n * @attribute\n */\n @property({ type: Boolean }) selected = false;\n\n @queryAssignedElements({ flatten: true, slot: 'icon' }) protected leadingIcons!: HTMLElement[];\n\n constructor() {\n super();\n this.addEventListener('pointerenter', this.handlePointerEnter.bind(this));\n }\n\n override beginPress(options: BeginPressConfig): void {\n super.beginPress(options);\n this.ripple.beginPress(options.positionEvent);\n }\n\n override endPress(options: EndPressConfig): void {\n super.endPress(options);\n this.ripple.endPress();\n\n if (!options.cancelled) {\n this.dispatchEvent(new Event('trigger', { bubbles: true, composed: true }));\n }\n }\n\n protected handlePointerEnter(e: PointerEvent): void {\n this.ripple.beginHover(e);\n }\n\n override handlePointerLeave(e: PointerEvent): void {\n super.handlePointerLeave(e);\n this.ripple.endHover();\n }\n\n protected handleIconSlotChange(): void {\n this.requestUpdate();\n }\n\n protected override render(): TemplateResult {\n const { pressed = false, selected = false } = this;\n const surfaceClasses = classMap({\n surface: true,\n pressed,\n selected,\n });\n\n return html`\n <div class=\"${surfaceClasses}\" ${ripple(() => this.ripple)}>\n ${this.renderRipple()}\n <div class=\"content\">\n ${this.leadingContent()} \n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected leadingContent(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading': true,\n visible: !!this.selected || !!leadingIcons.length,\n }\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.renderLeadingIcon()}\n ${this.renderChecked()}\n </div>\n `;\n }\n\n protected renderLeadingIcon(): TemplateResult {\n const { leadingIcons } = this;\n const classes: ClassInfo = {\n 'leading-icon': true,\n 'with-icon': !!leadingIcons.length,\n hidden: !!this.selected,\n }\n return html`\n <div class=\"${classMap(classes)}\"><slot name=\"icon\" @slotchange=\"${this.handleIconSlotChange}\"></slot></div>\n `;\n }\n\n protected renderChecked(): TemplateResult {\n const iconClasses = classMap({\n 'check-mark': true,\n checked: !!this.selected,\n });\n return html`<span class=\"${iconClasses}\" role=\"presentation\">${check}</span>`;\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 +1 @@
1
- {"version":3,"file":"SegmentedButton.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.styles.ts"],"names":[],"mappings":";AAEA,wBAmGE"}
1
+ {"version":3,"file":"SegmentedButton.styles.d.ts","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.styles.ts"],"names":[],"mappings":";AAEA,wBAqGE"}
@@ -23,7 +23,7 @@ export default css `
23
23
  text-decoration: var(--md-sys-typescale-label-large-text-decoration);
24
24
 
25
25
  border: 1px var(--md-sys-color-outline) solid;
26
- color: 1px var(--md-sys-color-on-surface) solid;
26
+ color: var(--md-sys-color-on-surface);
27
27
  box-sizing: border-box;
28
28
  }
29
29
 
@@ -78,6 +78,8 @@ export default css `
78
78
  display: block;
79
79
  width: 0px;
80
80
  height: inherit;
81
+
82
+ fill: var(--md-sys-color-on-surface);
81
83
  }
82
84
 
83
85
  .check-mark {
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButton.styles.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmGjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n:host {\n display: inline-block;\n vertical-align: middle;\n box-sizing: content-box;\n writing-mode: horizontal-tb !important;\n text-rendering: auto;\n cursor: default;\n user-select: none;\n height: 40px;\n width: 100%;\n min-width: 48px;\n -webkit-tap-highlight-color: transparent;\n\n font-family: var(--md-sys-typescale-label-large-font-family-name);\n font-style: var(--md-sys-typescale-label-large-font-family-style);\n font-weight: var(--md-sys-typescale-label-large-font-weight, 500);\n font-size: var(--md-sys-typescale-label-large-font-size, 14px);\n letter-spacing: var(--md-sys-typescale-label-large-tracking);\n line-height: var(--md-sys-typescale-label-large-height);\n text-transform: var(--md-sys-typescale-label-large-text-transform);\n text-decoration: var(--md-sys-typescale-label-large-text-decoration);\n\n border: 1px var(--md-sys-color-outline) solid;\n color: 1px var(--md-sys-color-on-surface) solid;\n box-sizing: border-box;\n}\n\n.surface {\n width: inherit;\n height: 100%;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: inherit;\n}\n\n.surface.selected {\n background-color: var(--md-sys-color-secondary-container);\n}\n\n.content {\n z-index: 3;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n padding: 0px 20px 0px 24px;\n white-space: nowrap;\n \n width: inherit;\n height: inherit;\n}\n\n.ripple {\n z-index: 3;\n border-radius: inherit;\n}\n\n.leading {\n position: relative;\n width: 0;\n height: 18px;\n transition: width 230ms var(--md-sys-animation-easing-standard);\n}\n\n.leading.visible {\n width: 18px;\n margin-right: 8px;\n}\n\n.check-mark,\n.leading-icon {\n position: absolute;\n overflow: hidden;\n display: block;\n width: 0px;\n height: inherit;\n}\n\n.check-mark {\n transition: width 230ms var(--md-sys-animation-easing-standard);\n}\n\n.check-mark.checked {\n width: 18px;\n}\n\n.leading-icon.with-icon {\n margin-right: 12px;\n width: 18px;\n display: flex;\n align-items: center;\n}\n\n.leading-icon.with-icon.hidden {\n display: none;\n}\n`;\n"]}
1
+ {"version":3,"file":"SegmentedButton.styles.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButton.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGjB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport default css`\n:host {\n display: inline-block;\n vertical-align: middle;\n box-sizing: content-box;\n writing-mode: horizontal-tb !important;\n text-rendering: auto;\n cursor: default;\n user-select: none;\n height: 40px;\n width: 100%;\n min-width: 48px;\n -webkit-tap-highlight-color: transparent;\n\n font-family: var(--md-sys-typescale-label-large-font-family-name);\n font-style: var(--md-sys-typescale-label-large-font-family-style);\n font-weight: var(--md-sys-typescale-label-large-font-weight, 500);\n font-size: var(--md-sys-typescale-label-large-font-size, 14px);\n letter-spacing: var(--md-sys-typescale-label-large-tracking);\n line-height: var(--md-sys-typescale-label-large-height);\n text-transform: var(--md-sys-typescale-label-large-text-transform);\n text-decoration: var(--md-sys-typescale-label-large-text-decoration);\n\n border: 1px var(--md-sys-color-outline) solid;\n color: var(--md-sys-color-on-surface);\n box-sizing: border-box;\n}\n\n.surface {\n width: inherit;\n height: 100%;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: inherit;\n}\n\n.surface.selected {\n background-color: var(--md-sys-color-secondary-container);\n}\n\n.content {\n z-index: 3;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n padding: 0px 20px 0px 24px;\n white-space: nowrap;\n \n width: inherit;\n height: inherit;\n}\n\n.ripple {\n z-index: 3;\n border-radius: inherit;\n}\n\n.leading {\n position: relative;\n width: 0;\n height: 18px;\n transition: width 230ms var(--md-sys-animation-easing-standard);\n}\n\n.leading.visible {\n width: 18px;\n margin-right: 8px;\n}\n\n.check-mark,\n.leading-icon {\n position: absolute;\n overflow: hidden;\n display: block;\n width: 0px;\n height: inherit;\n\n fill: var(--md-sys-color-on-surface);\n}\n\n.check-mark {\n transition: width 230ms var(--md-sys-animation-easing-standard);\n}\n\n.check-mark.checked {\n width: 18px;\n}\n\n.leading-icon.with-icon {\n margin-right: 12px;\n width: 18px;\n display: flex;\n align-items: center;\n}\n\n.leading-icon.with-icon.hidden {\n display: none;\n}\n`;\n"]}
@@ -6,15 +6,14 @@ import { UiElement } from "../UiElement.js";
6
6
  * @fires select - When button's selection change.
7
7
  */
8
8
  export default class SegmentedButtonsSet extends UiElement {
9
- disabled = false;
10
- /**
11
- * Whether multiple buttons can be selected at once.
12
- * @attribute
13
- */
14
- multiselect = false;
15
- buttons;
16
9
  constructor() {
17
10
  super();
11
+ this.disabled = false;
12
+ /**
13
+ * Whether multiple buttons can be selected at once.
14
+ * @attribute
15
+ */
16
+ this.multiselect = false;
18
17
  this.addEventListener('trigger', this.handleButtonTrigger.bind(this));
19
18
  }
20
19
  connectedCallback() {
@@ -1 +1 @@
1
- {"version":3,"file":"SegmentedButtonsSet.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButtonsSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { UiElement } from \"../UiElement.js\";\nimport SegmentedButton from \"./SegmentedButton.js\";\n\n/**\n * @fires select - When button's selection change.\n */\nexport default class SegmentedButtonsSet extends UiElement {\n disabled = false;\n\n /**\n * Whether multiple buttons can be selected at once.\n * @attribute\n */\n @property({ type: Boolean }) multiselect = false;\n\n @queryAssignedElements({ flatten: true }) buttons!: SegmentedButton[];\n\n constructor() {\n super();\n this.addEventListener('trigger', this.handleButtonTrigger.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'group');\n }\n\n isButtonDisabled(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].disabled;\n }\n\n setButtonDisabled(index: number, disabled: boolean): void {\n if (this.isOutOfBounds(index)) return;\n this.buttons[index].disabled = disabled;\n }\n\n isButtonSelected(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].selected;\n }\n\n setButtonSelected(index: number, selected: boolean): void {\n // Ignore out-of-index values.\n if (this.isOutOfBounds(index)) return;\n // Ignore disabled buttons.\n if (this.isButtonDisabled(index)) return;\n\n if (this.multiselect) {\n this.buttons[index].selected = selected;\n this.dispatchSelected(index);\n return;\n }\n\n // Single-select segmented buttons are not unselectable.\n if (!selected) return;\n\n this.buttons[index].selected = true;\n this.dispatchSelected(index);\n // Deselect all other buttons for single-select.\n for (let i = 0; i < this.buttons.length; i++) {\n if (i === index) continue;\n this.buttons[i].selected = false;\n }\n }\n\n private handleButtonTrigger(e: Event): void {\n const index = this.buttons.indexOf(e.target as SegmentedButton);\n this.toggleSelection(index);\n }\n\n private toggleSelection(index: number): void {\n this.setButtonSelected(index, !this.buttons[index].selected);\n }\n\n private isOutOfBounds(index: number): boolean {\n return index < 0 || index >= this.buttons.length;\n }\n\n private dispatchSelected(index: number): void {\n this.dispatchEvent(new CustomEvent('select', {\n detail: {\n button: this.buttons[index],\n selected: this.buttons[index].selected,\n index,\n },\n bubbles: true,\n composed: true\n }));\n }\n\n override render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n"]}
1
+ {"version":3,"file":"SegmentedButtonsSet.js","sourceRoot":"","sources":["../../../src/ui/button/SegmentedButtonsSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult } from \"lit\";\nimport { property, queryAssignedElements } from \"lit/decorators.js\";\nimport { UiElement } from \"../UiElement.js\";\nimport SegmentedButton from \"./SegmentedButton.js\";\n\n/**\n * @fires select - When button's selection change.\n */\nexport default class SegmentedButtonsSet extends UiElement {\n disabled = false;\n\n /**\n * Whether multiple buttons can be selected at once.\n * @attribute\n */\n @property({ type: Boolean }) multiselect = false;\n\n @queryAssignedElements({ flatten: true }) buttons!: SegmentedButton[];\n\n constructor() {\n super();\n this.addEventListener('trigger', this.handleButtonTrigger.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'group');\n }\n\n isButtonDisabled(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].disabled;\n }\n\n setButtonDisabled(index: number, disabled: boolean): void {\n if (this.isOutOfBounds(index)) return;\n this.buttons[index].disabled = disabled;\n }\n\n isButtonSelected(index: number): boolean {\n if (this.isOutOfBounds(index)) return false;\n return this.buttons[index].selected;\n }\n\n setButtonSelected(index: number, selected: boolean): void {\n // Ignore out-of-index values.\n if (this.isOutOfBounds(index)) return;\n // Ignore disabled buttons.\n if (this.isButtonDisabled(index)) return;\n\n if (this.multiselect) {\n this.buttons[index].selected = selected;\n this.dispatchSelected(index);\n return;\n }\n\n // Single-select segmented buttons are not unselectable.\n if (!selected) return;\n\n this.buttons[index].selected = true;\n this.dispatchSelected(index);\n // Deselect all other buttons for single-select.\n for (let i = 0; i < this.buttons.length; i++) {\n if (i === index) continue;\n this.buttons[i].selected = false;\n }\n }\n\n private handleButtonTrigger(e: Event): void {\n const index = this.buttons.indexOf(e.target as SegmentedButton);\n this.toggleSelection(index);\n }\n\n private toggleSelection(index: number): void {\n this.setButtonSelected(index, !this.buttons[index].selected);\n }\n\n private isOutOfBounds(index: number): boolean {\n return index < 0 || index >= this.buttons.length;\n }\n\n private dispatchSelected(index: number): void {\n this.dispatchEvent(new CustomEvent('select', {\n detail: {\n button: this.buttons[index],\n selected: this.buttons[index].selected,\n index,\n },\n bubbles: true,\n composed: true\n }));\n }\n\n override render(): TemplateResult {\n return html`<slot></slot>`;\n }\n}\n"]}