@mediquo/elements 0.0.0-pr-383-20261029152148

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 (334) hide show
  1. package/README.md +386 -0
  2. package/dist/chunks/addDays-CdyO-PRI.js +1 -0
  3. package/dist/chunks/addSeconds-fO5orJrt.js +1 -0
  4. package/dist/chunks/api-chat-client-CcYgqPdC.js +1 -0
  5. package/dist/chunks/api-client-context-BXGqBAlO.js +1 -0
  6. package/dist/chunks/apple-pay-outcomes-D8hSE_oM.js +1 -0
  7. package/dist/chunks/appointment-details-Blo6OsLN.js +1 -0
  8. package/dist/chunks/appointment-details-KL9fK6vG.d.ts +23 -0
  9. package/dist/chunks/blob-to-base64-CUL1trde.js +1 -0
  10. package/dist/chunks/ca_ES-BHS8BUwp.js +1 -0
  11. package/dist/chunks/checkout-bridge-BFpVxNww.js +1 -0
  12. package/dist/chunks/chunk-5EJXDIGT-Bb4_pfDr.js +1 -0
  13. package/dist/chunks/chunk-6CCJWPGL-TiaqZaPV.js +1 -0
  14. package/dist/chunks/chunk-BUV4MGML-CkhBbfUu.js +1 -0
  15. package/dist/chunks/chunk-FUCSYDW7-Duj5hy8S.js +1 -0
  16. package/dist/chunks/chunk-NIAGR3ZC-BDlNUZa1.js +1 -0
  17. package/dist/chunks/chunk-RCFIJTXZ-C6Ir0-sM.js +1 -0
  18. package/dist/chunks/chunk-S5RWG6G2-CQJ38pW6.js +1 -0
  19. package/dist/chunks/chunk-Y4EKUX25-Bix9r5ry.js +1 -0
  20. package/dist/chunks/chunk-YTQUGGS3-DH0H7ld7.js +1 -0
  21. package/dist/chunks/class-map-CXGDNDhW.js +1 -0
  22. package/dist/chunks/consume-CovVqBjI.js +1 -0
  23. package/dist/chunks/context-consumer-ESdICVAb.js +1 -0
  24. package/dist/chunks/context-request-event-Dfydf1ub.js +1 -0
  25. package/dist/chunks/create-component-BB-6Gu6l.js +1 -0
  26. package/dist/chunks/create-context-DqP79qjF.js +1 -0
  27. package/dist/chunks/custom-element-CiOhPWP1-DPpsGZrV.js +1 -0
  28. package/dist/chunks/custom-element-D2ziPxYE.js +1 -0
  29. package/dist/chunks/de_DE-CveFSuUP.js +1 -0
  30. package/dist/chunks/default-IpEn36CA.d.ts +5 -0
  31. package/dist/chunks/directive-DrycXrFV.js +1 -0
  32. package/dist/chunks/directive-helpers-m2qHStQ1.js +1 -0
  33. package/dist/chunks/document.model.d-DIzMiOmd.d.ts +6 -0
  34. package/dist/chunks/documentation-view-CAU1T5j3.js +1 -0
  35. package/dist/chunks/en_US-B_aQeYjm.js +1 -0
  36. package/dist/chunks/ensure-context-root-DbdqwnKB.js +1 -0
  37. package/dist/chunks/external-JLtsAfi6.js +1 -0
  38. package/dist/chunks/format-tMwfQwDf.js +1 -0
  39. package/dist/chunks/get-appointment-query-DuHrjd8L.js +1 -0
  40. package/dist/chunks/get-organization-setup-query-De7eM6V3.js +1 -0
  41. package/dist/chunks/get-patient-profile-query-D9btgcxl.js +1 -0
  42. package/dist/chunks/get-schedule-services-query-Io2aQ_7G.js +1 -0
  43. package/dist/chunks/if-defined-DgEoHV04.js +1 -0
  44. package/dist/chunks/index-BO2YvuaV.d.ts +54 -0
  45. package/dist/chunks/index-BeyZqqE9.d.ts +31 -0
  46. package/dist/chunks/index-BkDanNQg.js +1 -0
  47. package/dist/chunks/index-BlRNICIU.js +1 -0
  48. package/dist/chunks/index-CSn2VnHN.js +1 -0
  49. package/dist/chunks/index-Cp5_a_ei.js +329 -0
  50. package/dist/chunks/index-Cu-DpEFM.js +1 -0
  51. package/dist/chunks/index-DTEtqjQF.d.ts +15 -0
  52. package/dist/chunks/index-DoKSSg_l.js +1 -0
  53. package/dist/chunks/index-DwlJg2um.d.ts +187 -0
  54. package/dist/chunks/index-IcMN_Zy_.js +1 -0
  55. package/dist/chunks/index-Nf3nZ9O3.d.ts +16 -0
  56. package/dist/chunks/index-_XIb963s.js +1 -0
  57. package/dist/chunks/index-mf2T4jWX.js +1 -0
  58. package/dist/chunks/index-ov4Ad6vl.d.ts +55 -0
  59. package/dist/chunks/index-xi0bxKot.js +341 -0
  60. package/dist/chunks/index.d-k8r5vUZn.d.ts +3353 -0
  61. package/dist/chunks/index.d-yyTprZdj.d.ts +84 -0
  62. package/dist/chunks/isBefore-DBi1CiNR.js +1 -0
  63. package/dist/chunks/keyed-c1C5T7e_.js +1 -0
  64. package/dist/chunks/lit-element-B5-nYi7k.js +1 -0
  65. package/dist/chunks/localized-decorator-BlOuLhym.js +1 -0
  66. package/dist/chunks/login-token-task-KxmMdqVo.js +1 -0
  67. package/dist/chunks/mq-chat-room-CwN_aR5x.js +1 -0
  68. package/dist/chunks/mq-chat-room-D2O_3Zur.d.ts +292 -0
  69. package/dist/chunks/mq-layout-D8Mak16a.d.ts +21 -0
  70. package/dist/chunks/mq-layout-qMP-lpxw.js +1 -0
  71. package/dist/chunks/mq-next-appointments-CZ1eKA8t.js +1 -0
  72. package/dist/chunks/mq-professional-presence-sync-Cw8kVtpC.d.ts +22 -0
  73. package/dist/chunks/mq-recent-documents-C2_iUYKT.js +1 -0
  74. package/dist/chunks/mq-schedule-9rEQK6SJ.js +1 -0
  75. package/dist/chunks/mq-support-chat-DWz3EZ9j.js +1 -0
  76. package/dist/chunks/mq-unread-count-sync-BviIsMJy.d.ts +22 -0
  77. package/dist/chunks/mq-videocall-CcRWCujw.js +870 -0
  78. package/dist/chunks/mutation-controller-CR2qcqhH.js +1 -0
  79. package/dist/chunks/next-appointment-card-DMCNzLUc.js +1 -0
  80. package/dist/chunks/next-appointment-card-Dhu45fRq.d.ts +123 -0
  81. package/dist/chunks/parseISO-CEksKisk.js +1 -0
  82. package/dist/chunks/price-DU3YLTpk.js +1 -0
  83. package/dist/chunks/price.d-CwLosdAN.d.ts +10 -0
  84. package/dist/chunks/professional-overview-QVHl_ITk.d.ts +26 -0
  85. package/dist/chunks/professional-overview-yVZgXRCU.js +1 -0
  86. package/dist/chunks/property-C1CmBSnw.js +1 -0
  87. package/dist/chunks/provide-BwI4DDGF.js +1 -0
  88. package/dist/chunks/pt_PT-D1CvMEpH.js +1 -0
  89. package/dist/chunks/query-CeeutdfT.js +1 -0
  90. package/dist/chunks/query-controller-B1byDHlF.js +1 -0
  91. package/dist/chunks/refund-cancel-policy-DoMzcLlL.js +1 -0
  92. package/dist/chunks/runtime-Bg1WXVCx.js +1 -0
  93. package/dist/chunks/schemas.d-b6_AekBb.d.ts +145 -0
  94. package/dist/chunks/state-Br45Av8Z.js +1 -0
  95. package/dist/chunks/style-map-MoXKugLp.js +1 -0
  96. package/dist/chunks/task-BYPV1iNw.js +1 -0
  97. package/dist/chunks/telemetry-client-DA2_SZBC.js +1 -0
  98. package/dist/env.d.ts +21 -0
  99. package/dist/env.js +1 -0
  100. package/dist/events.d.ts +134 -0
  101. package/dist/events.js +1 -0
  102. package/dist/i18n.d.ts +11 -0
  103. package/dist/i18n.js +1 -0
  104. package/dist/index.d.ts +5 -0
  105. package/dist/index.js +1 -0
  106. package/dist/mq-api-client-provider.d.ts +39 -0
  107. package/dist/mq-api-client-provider.js +1 -0
  108. package/dist/mq-apple-pay-checkout.d.ts +94 -0
  109. package/dist/mq-apple-pay-checkout.js +1 -0
  110. package/dist/mq-appointment-checkout.d.ts +65 -0
  111. package/dist/mq-appointment-checkout.js +1 -0
  112. package/dist/mq-appointment-documentation.d.ts +59 -0
  113. package/dist/mq-appointment-documentation.js +1 -0
  114. package/dist/mq-chat-room.d.ts +23 -0
  115. package/dist/mq-chat-room.js +1 -0
  116. package/dist/mq-checkout.d.ts +111 -0
  117. package/dist/mq-checkout.js +1 -0
  118. package/dist/mq-dashboard.d.ts +96 -0
  119. package/dist/mq-dashboard.js +1 -0
  120. package/dist/mq-documents.d.ts +96 -0
  121. package/dist/mq-documents.js +1 -0
  122. package/dist/mq-google-pay-checkout.d.ts +129 -0
  123. package/dist/mq-google-pay-checkout.js +1 -0
  124. package/dist/mq-immediate-videocall-checkout.d.ts +51 -0
  125. package/dist/mq-immediate-videocall-checkout.js +1 -0
  126. package/dist/mq-my-appointments.d.ts +172 -0
  127. package/dist/mq-my-appointments.js +1 -0
  128. package/dist/mq-next-appointments.d.ts +59 -0
  129. package/dist/mq-next-appointments.js +1 -0
  130. package/dist/mq-payment-poller.d.ts +71 -0
  131. package/dist/mq-payment-poller.js +1 -0
  132. package/dist/mq-professional-presence-sync.d.ts +32 -0
  133. package/dist/mq-professional-presence-sync.js +1 -0
  134. package/dist/mq-query-client-provider.d.ts +20 -0
  135. package/dist/mq-query-client-provider.js +1 -0
  136. package/dist/mq-recent-documents.d.ts +49 -0
  137. package/dist/mq-recent-documents.js +1 -0
  138. package/dist/mq-schedule-success.d.ts +100 -0
  139. package/dist/mq-schedule-success.js +4 -0
  140. package/dist/mq-schedule.d.ts +812 -0
  141. package/dist/mq-schedule.js +1 -0
  142. package/dist/mq-session-provider.d.ts +28 -0
  143. package/dist/mq-session-provider.js +1 -0
  144. package/dist/mq-socket-provider.d.ts +103 -0
  145. package/dist/mq-socket-provider.js +1 -0
  146. package/dist/mq-support-chat.d.ts +97 -0
  147. package/dist/mq-support-chat.js +1 -0
  148. package/dist/mq-terms-and-conditions.d.ts +27 -0
  149. package/dist/mq-terms-and-conditions.js +1 -0
  150. package/dist/mq-theme-provider.d.ts +33 -0
  151. package/dist/mq-theme-provider.js +1 -0
  152. package/dist/mq-unread-count-sync.d.ts +24 -0
  153. package/dist/mq-unread-count-sync.js +1 -0
  154. package/dist/mq-videocall.d.ts +698 -0
  155. package/dist/mq-videocall.js +1 -0
  156. package/dist/react/mq-api-client-provider.d.ts +26 -0
  157. package/dist/react/mq-api-client-provider.js +2 -0
  158. package/dist/react/mq-apple-pay-checkout.d.ts +35 -0
  159. package/dist/react/mq-apple-pay-checkout.js +2 -0
  160. package/dist/react/mq-appointment-checkout.d.ts +39 -0
  161. package/dist/react/mq-appointment-checkout.js +2 -0
  162. package/dist/react/mq-appointment-documentation.d.ts +43 -0
  163. package/dist/react/mq-appointment-documentation.js +2 -0
  164. package/dist/react/mq-chat-room.d.ts +47 -0
  165. package/dist/react/mq-chat-room.js +2 -0
  166. package/dist/react/mq-checkout.d.ts +38 -0
  167. package/dist/react/mq-checkout.js +2 -0
  168. package/dist/react/mq-dashboard.d.ts +62 -0
  169. package/dist/react/mq-dashboard.js +2 -0
  170. package/dist/react/mq-documents-page.d.ts +35 -0
  171. package/dist/react/mq-documents-page.js +2 -0
  172. package/dist/react/mq-documents.d.ts +32 -0
  173. package/dist/react/mq-documents.js +2 -0
  174. package/dist/react/mq-google-pay-checkout.d.ts +40 -0
  175. package/dist/react/mq-google-pay-checkout.js +2 -0
  176. package/dist/react/mq-immediate-videocall-checkout.d.ts +31 -0
  177. package/dist/react/mq-immediate-videocall-checkout.js +2 -0
  178. package/dist/react/mq-my-appointments.d.ts +51 -0
  179. package/dist/react/mq-my-appointments.js +2 -0
  180. package/dist/react/mq-next-appointments.d.ts +43 -0
  181. package/dist/react/mq-next-appointments.js +2 -0
  182. package/dist/react/mq-payment-poller.d.ts +37 -0
  183. package/dist/react/mq-payment-poller.js +2 -0
  184. package/dist/react/mq-professional-presence-sync.d.ts +13 -0
  185. package/dist/react/mq-professional-presence-sync.js +2 -0
  186. package/dist/react/mq-query-client-provider.d.ts +24 -0
  187. package/dist/react/mq-query-client-provider.js +2 -0
  188. package/dist/react/mq-recent-documents.d.ts +32 -0
  189. package/dist/react/mq-recent-documents.js +2 -0
  190. package/dist/react/mq-schedule-success.d.ts +54 -0
  191. package/dist/react/mq-schedule-success.js +2 -0
  192. package/dist/react/mq-schedule.d.ts +70 -0
  193. package/dist/react/mq-schedule.js +2 -0
  194. package/dist/react/mq-session-provider.d.ts +19 -0
  195. package/dist/react/mq-session-provider.js +2 -0
  196. package/dist/react/mq-socket-provider.d.ts +20 -0
  197. package/dist/react/mq-socket-provider.js +2 -0
  198. package/dist/react/mq-support-chat.d.ts +50 -0
  199. package/dist/react/mq-support-chat.js +2 -0
  200. package/dist/react/mq-terms-and-conditions.d.ts +34 -0
  201. package/dist/react/mq-terms-and-conditions.js +2 -0
  202. package/dist/react/mq-theme-provider.d.ts +19 -0
  203. package/dist/react/mq-theme-provider.js +2 -0
  204. package/dist/react/mq-toast-container.d.ts +17 -0
  205. package/dist/react/mq-toast-container.js +2 -0
  206. package/dist/react/mq-unread-count-sync.d.ts +13 -0
  207. package/dist/react/mq-unread-count-sync.js +2 -0
  208. package/dist/react/mq-videocall.d.ts +76 -0
  209. package/dist/react/mq-videocall.js +2 -0
  210. package/dist/theme.d.ts +218 -0
  211. package/dist/theme.js +11 -0
  212. package/dist/toast.d.ts +4 -0
  213. package/dist/toast.js +1 -0
  214. package/dist/ui/back-link.d.ts +24 -0
  215. package/dist/ui/back-link.js +1 -0
  216. package/dist/ui/icons/alert-circle-icon.d.ts +6 -0
  217. package/dist/ui/icons/alert-circle-icon.js +1 -0
  218. package/dist/ui/icons/annotation-question-icon.d.ts +6 -0
  219. package/dist/ui/icons/annotation-question-icon.js +1 -0
  220. package/dist/ui/icons/arrow-narrow-left-icon.d.ts +6 -0
  221. package/dist/ui/icons/arrow-narrow-left-icon.js +1 -0
  222. package/dist/ui/icons/arrow-right-icon.d.ts +6 -0
  223. package/dist/ui/icons/arrow-right-icon.js +1 -0
  224. package/dist/ui/icons/briefcase-icon.d.ts +6 -0
  225. package/dist/ui/icons/briefcase-icon.js +1 -0
  226. package/dist/ui/icons/calendar-icon.d.ts +6 -0
  227. package/dist/ui/icons/calendar-icon.js +1 -0
  228. package/dist/ui/icons/chat-bubble-icon.d.ts +6 -0
  229. package/dist/ui/icons/chat-bubble-icon.js +1 -0
  230. package/dist/ui/icons/check-circle-icon.d.ts +6 -0
  231. package/dist/ui/icons/check-circle-icon.js +1 -0
  232. package/dist/ui/icons/check-double-icon.d.ts +6 -0
  233. package/dist/ui/icons/check-double-icon.js +1 -0
  234. package/dist/ui/icons/check-icon.d.ts +6 -0
  235. package/dist/ui/icons/check-icon.js +1 -0
  236. package/dist/ui/icons/chevron-down-icon.d.ts +6 -0
  237. package/dist/ui/icons/chevron-down-icon.js +1 -0
  238. package/dist/ui/icons/chevron-left-icon.d.ts +6 -0
  239. package/dist/ui/icons/chevron-left-icon.js +1 -0
  240. package/dist/ui/icons/chevron-right-icon.d.ts +6 -0
  241. package/dist/ui/icons/chevron-right-icon.js +1 -0
  242. package/dist/ui/icons/clock-icon.d.ts +6 -0
  243. package/dist/ui/icons/clock-icon.js +1 -0
  244. package/dist/ui/icons/dots-horizontal-icon.d.ts +6 -0
  245. package/dist/ui/icons/dots-horizontal-icon.js +1 -0
  246. package/dist/ui/icons/download-02-icon.d.ts +6 -0
  247. package/dist/ui/icons/download-02-icon.js +1 -0
  248. package/dist/ui/icons/download-icon.d.ts +6 -0
  249. package/dist/ui/icons/download-icon.js +1 -0
  250. package/dist/ui/icons/file-icon.d.ts +6 -0
  251. package/dist/ui/icons/file-icon.js +1 -0
  252. package/dist/ui/icons/heartbeat-icon.d.ts +5 -0
  253. package/dist/ui/icons/heartbeat-icon.js +1 -0
  254. package/dist/ui/icons/help-circle-icon.d.ts +6 -0
  255. package/dist/ui/icons/help-circle-icon.js +1 -0
  256. package/dist/ui/icons/info-circle-outine-icon.d.ts +6 -0
  257. package/dist/ui/icons/info-circle-outine-icon.js +1 -0
  258. package/dist/ui/icons/message-bubble-icon.d.ts +6 -0
  259. package/dist/ui/icons/message-bubble-icon.js +1 -0
  260. package/dist/ui/icons/message-square-icon.d.ts +6 -0
  261. package/dist/ui/icons/message-square-icon.js +1 -0
  262. package/dist/ui/icons/mic-icon.d.ts +6 -0
  263. package/dist/ui/icons/mic-icon.js +1 -0
  264. package/dist/ui/icons/mic-off-icon.d.ts +6 -0
  265. package/dist/ui/icons/mic-off-icon.js +1 -0
  266. package/dist/ui/icons/phone-icon.d.ts +6 -0
  267. package/dist/ui/icons/phone-icon.js +1 -0
  268. package/dist/ui/icons/refresh-ccw-icon.d.ts +7 -0
  269. package/dist/ui/icons/refresh-ccw-icon.js +1 -0
  270. package/dist/ui/icons/refresh-icon.d.ts +6 -0
  271. package/dist/ui/icons/refresh-icon.js +1 -0
  272. package/dist/ui/icons/settings-icon.d.ts +6 -0
  273. package/dist/ui/icons/settings-icon.js +1 -0
  274. package/dist/ui/icons/spinner-icon.d.ts +6 -0
  275. package/dist/ui/icons/spinner-icon.js +1 -0
  276. package/dist/ui/icons/tag-icon.d.ts +6 -0
  277. package/dist/ui/icons/tag-icon.js +1 -0
  278. package/dist/ui/icons/time-left-icon.d.ts +5 -0
  279. package/dist/ui/icons/time-left-icon.js +1 -0
  280. package/dist/ui/icons/types.d.ts +10 -0
  281. package/dist/ui/icons/types.js +1 -0
  282. package/dist/ui/icons/upload-icon.d.ts +6 -0
  283. package/dist/ui/icons/upload-icon.js +1 -0
  284. package/dist/ui/icons/video-icon.d.ts +6 -0
  285. package/dist/ui/icons/video-icon.js +1 -0
  286. package/dist/ui/icons/video-off-icon.d.ts +6 -0
  287. package/dist/ui/icons/video-off-icon.js +1 -0
  288. package/dist/ui/icons/volume-icon.d.ts +6 -0
  289. package/dist/ui/icons/volume-icon.js +1 -0
  290. package/dist/ui/icons/x-icon.d.ts +6 -0
  291. package/dist/ui/icons/x-icon.js +1 -0
  292. package/dist/ui/mq-avatar.d.ts +37 -0
  293. package/dist/ui/mq-avatar.js +1 -0
  294. package/dist/ui/mq-badge.d.ts +18 -0
  295. package/dist/ui/mq-badge.js +4 -0
  296. package/dist/ui/mq-button.d.ts +37 -0
  297. package/dist/ui/mq-button.js +1 -0
  298. package/dist/ui/mq-calendar.d.ts +68 -0
  299. package/dist/ui/mq-calendar.js +1 -0
  300. package/dist/ui/mq-callout.d.ts +23 -0
  301. package/dist/ui/mq-callout.js +1 -0
  302. package/dist/ui/mq-card.d.ts +18 -0
  303. package/dist/ui/mq-card.js +1 -0
  304. package/dist/ui/mq-checkbox.d.ts +41 -0
  305. package/dist/ui/mq-checkbox.js +1 -0
  306. package/dist/ui/mq-clamped-text.d.ts +46 -0
  307. package/dist/ui/mq-clamped-text.js +1 -0
  308. package/dist/ui/mq-dialog.d.ts +98 -0
  309. package/dist/ui/mq-dialog.js +1 -0
  310. package/dist/ui/mq-floating-bubble.d.ts +42 -0
  311. package/dist/ui/mq-floating-bubble.js +1 -0
  312. package/dist/ui/mq-input.d.ts +42 -0
  313. package/dist/ui/mq-input.js +1 -0
  314. package/dist/ui/mq-page-title.d.ts +31 -0
  315. package/dist/ui/mq-page-title.js +1 -0
  316. package/dist/ui/mq-rating.d.ts +30 -0
  317. package/dist/ui/mq-rating.js +1 -0
  318. package/dist/ui/mq-select.d.ts +83 -0
  319. package/dist/ui/mq-select.js +1 -0
  320. package/dist/ui/mq-skeleton.d.ts +18 -0
  321. package/dist/ui/mq-skeleton.js +1 -0
  322. package/dist/ui/mq-tabs.d.ts +76 -0
  323. package/dist/ui/mq-tabs.js +106 -0
  324. package/dist/ui/mq-text-button.d.ts +39 -0
  325. package/dist/ui/mq-text-button.js +1 -0
  326. package/dist/ui/mq-textarea.d.ts +38 -0
  327. package/dist/ui/mq-textarea.js +1 -0
  328. package/dist/ui/mq-time-slot-picker.d.ts +85 -0
  329. package/dist/ui/mq-time-slot-picker.js +1 -0
  330. package/dist/ui/mq-toast.d.ts +20 -0
  331. package/dist/ui/mq-toast.js +1 -0
  332. package/dist/ui/mq-unread-badge.d.ts +15 -0
  333. package/dist/ui/mq-unread-badge.js +1 -0
  334. package/package.json +247 -0
package/README.md ADDED
@@ -0,0 +1,386 @@
1
+ <div align="center">
2
+ <img src="https://cdn.prod.website-files.com/6784cf58154b9286f2dfca2e/67f517824ab7067c273b400b_apppat.svg" alt="Mediquo" width="200" />
3
+ <h1>@mediquo/elements</h1>
4
+ <p>Framework-agnostic Lit web components for Mediquo patient experiences.</p>
5
+ </div>
6
+
7
+ ---
8
+
9
+ Lit custom elements for scheduling, video consultations, chat, and payments. Each feature ships as its own entry point — import only what you need. Components are routing-agnostic: they emit semantic events and leave navigation to the host.
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ npm install @mediquo/elements
15
+ ```
16
+
17
+ ## Quick start
18
+
19
+ Wrap features with the providers they need, then mount the element:
20
+
21
+ ```html
22
+ <script type="module">
23
+ import "@mediquo/elements/mq-theme-provider";
24
+ import "@mediquo/elements/mq-query-client-provider";
25
+ import "@mediquo/elements/mq-schedule";
26
+ </script>
27
+
28
+ <mq-theme-provider theme="mediquo">
29
+ <mq-query-client-provider>
30
+ <mq-schedule
31
+ api-key="YOUR_API_KEY"
32
+ token="YOUR_ACCESS_TOKEN"
33
+ locale="es_ES"
34
+ env="production"
35
+ ></mq-schedule>
36
+ </mq-query-client-provider>
37
+ </mq-theme-provider>
38
+ ```
39
+
40
+ ```ts
41
+ const schedule = document.querySelector("mq-schedule");
42
+
43
+ schedule?.addEventListener("appointment-created", (event) => {
44
+ const { appointmentId } = (event as CustomEvent).detail;
45
+ // host decides where to go next
46
+ });
47
+
48
+ schedule?.addEventListener("back", () => {
49
+ // user left the wizard
50
+ });
51
+ ```
52
+
53
+ ## Components
54
+
55
+ | Element | Import | Description |
56
+ | --- | --- | --- |
57
+ | `mq-dashboard` | `@mediquo/elements/mq-dashboard` | Patient home dashboard (hero, next appointment, recent documents, support banner); emits redirect events |
58
+ | `mq-schedule` | `@mediquo/elements/mq-schedule` | Multi-step appointment booking / reschedule |
59
+ | `mq-schedule-success` | `@mediquo/elements/mq-schedule-success` | Post-booking confirmation screen |
60
+ | `mq-my-appointments` | `@mediquo/elements/mq-my-appointments` | Upcoming and past appointments |
61
+ | `mq-videocall` | `@mediquo/elements/mq-videocall` | Video consultation session |
62
+ | `mq-chat-room` | `@mediquo/elements/mq-chat-room` | Chat with a professional |
63
+ | `mq-support-chat` | `@mediquo/elements/mq-support-chat` | Support chat bubble |
64
+ | `mq-checkout` | `@mediquo/elements/mq-checkout` | Generic payment checkout |
65
+ | `mq-appointment-checkout` | `@mediquo/elements/mq-appointment-checkout` | Appointment payment |
66
+ | `mq-immediate-videocall-checkout` | `@mediquo/elements/mq-immediate-videocall-checkout` | Immediate videocall payment |
67
+ | `mq-apple-pay-checkout` | `@mediquo/elements/mq-apple-pay-checkout` | Apple Pay button |
68
+ | `mq-google-pay-checkout` | `@mediquo/elements/mq-google-pay-checkout` | Google Pay button |
69
+
70
+ Most features accept `api-key`, `token`, `locale`, and `env` when used standalone. See the [documentation](https://wc-showcase.mediquo.com) for per-component attributes and events.
71
+
72
+ Payments are handled by the Mediquo hosted checkout, which `mq-schedule`,
73
+ `mq-checkout`, `mq-appointment-checkout` and `mq-immediate-videocall-checkout`
74
+ embed in an iframe: it creates the payment session and offers the payment
75
+ methods the organization supports, so there is nothing payment-related to
76
+ configure. `mq-schedule` and the checkout elements only hand it what is being
77
+ paid (and, when applied, a discount coupon); they report the outcome through
78
+ their `payment-success` / `payment-error` events.
79
+
80
+ ## Providers
81
+
82
+ Mount these as ancestors of the features that need them:
83
+
84
+ | Provider | Import | When |
85
+ | --- | --- | --- |
86
+ | `mq-theme-provider` | `@mediquo/elements/mq-theme-provider` | Always — design tokens |
87
+ | `mq-query-client-provider` | `@mediquo/elements/mq-query-client-provider` | Data-fetching features (`mq-schedule`, `mq-chat-room`, …) |
88
+ | `mq-socket-provider` | `@mediquo/elements/mq-socket-provider` | Realtime features (`mq-chat-room`) |
89
+ | `mq-session-provider` | `@mediquo/elements/mq-session-provider` | Features that read the patient session — `mq-dashboard`, `mq-my-appointments`, `mq-videocall`, `mq-appointment-documentation`, background sync |
90
+ | `mq-api-client-provider` | `@mediquo/elements/mq-api-client-provider` | Features configured entirely by context — `mq-my-appointments`, `mq-unread-count-sync`, `mq-professional-presence-sync` — and any subtree you want scoped to one organization |
91
+
92
+ Set `mq-session-provider`'s `session` as a **property** (it's the login-token
93
+ response object from your auth exchange, not a string attribute):
94
+
95
+ ```html
96
+ <mq-theme-provider theme="mediquo">
97
+ <mq-query-client-provider>
98
+ <mq-socket-provider>
99
+ <mq-session-provider id="session">
100
+ <!-- feature elements -->
101
+ </mq-session-provider>
102
+ </mq-socket-provider>
103
+ </mq-query-client-provider>
104
+ </mq-theme-provider>
105
+
106
+ <script type="module">
107
+ document.querySelector("#session").session = loginTokenResponse;
108
+ </script>
109
+ ```
110
+
111
+ In React, pass it as a prop: `<MqSessionProvider session={loginTokenResponse}>`.
112
+
113
+ ## Organizations
114
+
115
+ `api-key` identifies the organization an element speaks for. Each element builds
116
+ its **own** API client from the `api-key` it was given and keeps it for its whole
117
+ lifetime, so requests always carry the key that element was configured with —
118
+ whatever other elements mount, update or unmount alongside it.
119
+
120
+ Cached data is scoped by that key too. Two organizations never read each other's
121
+ cache, and changing an element's `api-key` in place shows the new organization's
122
+ data, not the previous one's.
123
+
124
+ ### Several organizations on one page
125
+
126
+ Supported, with no extra setup. Give each element its own `api-key`:
127
+
128
+ ```html
129
+ <mq-query-client-provider>
130
+ <!-- clinic booking -->
131
+ <mq-schedule api-key="CLINIC_KEY" token="..."></mq-schedule>
132
+
133
+ <!-- your tenant's support chat, at the same time -->
134
+ <mq-support-chat api-key="TENANT_KEY" token="..."></mq-support-chat>
135
+ </mq-query-client-provider>
136
+ ```
137
+
138
+ One `mq-query-client-provider` for the whole session is fine — the cache is
139
+ partitioned by organization inside it. You do not need to remount it, clear the
140
+ cache, or key elements by organization.
141
+
142
+ ### Sharing your app's TanStack Query cache
143
+
144
+ If your app already runs TanStack Query, hand `mq-query-client-provider` your own
145
+ `QueryClient`. Both sides then read and write one cache, so an invalidation from
146
+ either reaches the other immediately — cancel an appointment in your UI and
147
+ `mq-next-appointments` updates in the same tick, and vice versa.
148
+
149
+ ```tsx
150
+ import { MqQueryClientProvider } from "@mediquo/elements/react/mq-query-client-provider";
151
+
152
+ <MqQueryClientProvider queryClient={queryClient}>
153
+ <MqSchedule apiKey="CLINIC_KEY" token="..." />
154
+ </MqQueryClientProvider>;
155
+ ```
156
+
157
+ Two requirements:
158
+
159
+ 1. **One physical copy of `@tanstack/query-core`.** A second copy has its own
160
+ module state, so the two sides would still hold separate caches. Dedupe it in
161
+ your bundler:
162
+
163
+ ```ts
164
+ // vite.config.ts
165
+ export default defineConfig({
166
+ resolve: { dedupe: ["@tanstack/query-core"] },
167
+ });
168
+ ```
169
+
170
+ 2. **Clear the cache on logout.** The provider's own client is discarded with the
171
+ provider; a client you own outlives it, so the previous patient's data would
172
+ stay readable in the same tab. Call `queryClient.clear()` when the session
173
+ ends, and on organization or clinic change.
174
+
175
+ Pass nothing and the provider creates and owns a client, exactly as before.
176
+ Elements keep their own 60s freshness either way — it is declared per query, not
177
+ taken from your client's defaults, and we never overwrite those defaults.
178
+
179
+ ### Elements without an `api-key`
180
+
181
+ > **Upgrading:** `mq-my-appointments`, `mq-unread-count-sync` and
182
+ > `mq-professional-presence-sync` used to inherit whatever organization the last
183
+ > element on the page happened to configure. That is what made two organizations
184
+ > unsafe. Wrap them in `mq-api-client-provider` — it is the only integration
185
+ > change this release asks for.
186
+
187
+ Some features take no `api-key` of their own (`mq-my-appointments`,
188
+ `mq-unread-count-sync`, `mq-professional-presence-sync`), and some accept one but
189
+ are often embedded (`mq-chat-room`). Wrap those in `mq-api-client-provider` to say
190
+ which organization the subtree belongs to:
191
+
192
+ ```html
193
+ <mq-api-client-provider api-key="CLINIC_KEY" token="...">
194
+ <mq-my-appointments></mq-my-appointments>
195
+ </mq-api-client-provider>
196
+ ```
197
+
198
+ An element inside a provider that is given its own `api-key` uses its own; one
199
+ given only a `token` binds that token to the organization it inherited. Mount one
200
+ provider per organization — they nest and coexist.
201
+
202
+ ## Background sync
203
+
204
+ Two headless elements keep the shared query cache in sync with realtime socket
205
+ events, so unread badges and presence indicators update without refetching.
206
+ Mount each once, under the query-client + socket providers and inside the
207
+ `mq-api-client-provider` for the organization whose data they keep fresh; they
208
+ render nothing:
209
+
210
+ | Element | Import | Keeps in sync |
211
+ | --- | --- | --- |
212
+ | `mq-unread-count-sync` | `@mediquo/elements/mq-unread-count-sync` | Per-room unread counts (incoming messages) |
213
+ | `mq-professional-presence-sync` | `@mediquo/elements/mq-professional-presence-sync` | Professional `active_absence` (presence) |
214
+
215
+ ```html
216
+ <mq-query-client-provider>
217
+ <mq-socket-provider>
218
+ <mq-api-client-provider api-key="YOUR_API_KEY" token="...">
219
+ <mq-unread-count-sync></mq-unread-count-sync>
220
+ <mq-professional-presence-sync></mq-professional-presence-sync>
221
+ <!-- feature elements whose cached data these keep fresh -->
222
+ </mq-api-client-provider>
223
+ </mq-socket-provider>
224
+ </mq-query-client-provider>
225
+ ```
226
+
227
+ For a Lit host that prefers wiring the logic into its own element, the
228
+ `UnreadCountSyncController` / `ProfessionalPresenceSyncController` reactive
229
+ controllers are exported from the same subpaths.
230
+
231
+ ## Toasts
232
+
233
+ `@mediquo/elements/toast` re-exports `@mediquo/ui`'s toasts: `toast.success`,
234
+ `toast.error` and `toast.info` show one on the page's `<mq-toaster>`, created
235
+ inside `mq-theme-provider` on first use. Mount one yourself (React:
236
+ `MqToastContainer` from `@mediquo/elements/react/mq-toast-container`) to choose
237
+ where it inherits the theme from, or its position.
238
+
239
+ ```ts
240
+ import { toast } from "@mediquo/elements/toast";
241
+
242
+ toast.success("Cita guardada", { closeLabel: "Cerrar" });
243
+ toast.error("No se pudo guardar la cita", { duration: 0 });
244
+ ```
245
+
246
+ Pass `closeLabel` translated: the close button's default name is English.
247
+
248
+ ## Theming
249
+
250
+ `mq-theme-provider` ships two built-in themes: `default` and `mediquo`. Override tokens with `custom-tokens`, or build a typed theme via `@mediquo/elements/theme`:
251
+
252
+ ```html
253
+ <mq-theme-provider
254
+ theme="custom"
255
+ custom-tokens="--color-primary: #0b6e4f; --color-background: #f7faf8;"
256
+ >
257
+ <!-- … -->
258
+ </mq-theme-provider>
259
+ ```
260
+
261
+ ```ts
262
+ import { createTheme } from "@mediquo/elements/theme";
263
+
264
+ const theme = createTheme({
265
+ "--color-primary": "#0b6e4f",
266
+ });
267
+ ```
268
+
269
+ ### Brand themes (e.g. Adeslas) via `custom-tokens`
270
+
271
+ `@mediquo/elements` intentionally ships **only** the design-system-owned themes
272
+ (`default`, `mediquo`). Partner brands such as Adeslas are **not** built into the
273
+ package — the host owns the brand and supplies it through `custom-tokens`.
274
+
275
+ `custom-tokens` is raw CSS injected into the provider's shadow root **after** the
276
+ selected theme, so it can override any token the design system exposes. There is
277
+ no token a built-in theme can set that `custom-tokens` cannot — the surface is
278
+ complete by construction. Pass the brand's token set as a `:host { … }`-free list
279
+ of custom properties:
280
+
281
+ ```html
282
+ <mq-theme-provider
283
+ theme="default"
284
+ custom-tokens="
285
+ --color-primary: #6f2c91;
286
+ --color-primary-hover: #5a2475;
287
+ --font-titles: 'Adeslas', sans-serif;
288
+ /* …the rest of the brand's token overrides… */
289
+ "
290
+ >
291
+ <!-- … -->
292
+ </mq-theme-provider>
293
+ ```
294
+
295
+ Keep the brand's token values in the host application (or a shared host package),
296
+ not in `@mediquo/elements`. This keeps the published package brand-neutral while
297
+ letting integrators render any look on top of it.
298
+
299
+ ### Icons
300
+
301
+ Every icon this package renders is drawn in this repository, on a single 24 grid
302
+ at the design system's icon stroke, and inherits `currentColor`. The only
303
+ artwork we do not draw is the Google Pay and Apple Pay brand marks, which their
304
+ owners require us to display unmodified.
305
+
306
+ See [`src/ui/icons/ICONS.md`](./src/ui/icons/ICONS.md) for the full inventory
307
+ and the rules for adding a new icon.
308
+
309
+ ## Events
310
+
311
+ Components describe **what the user did**, never **where to navigate**. Listen for the actions you care about and own routing in the host.
312
+
313
+ Shared contract (also exported from `@mediquo/elements/events`):
314
+
315
+ | Event | Detail | Meaning |
316
+ | --- | --- | --- |
317
+ | `mq-back` | `{ source?: string }` | Generic back chrome |
318
+ | `mq-home` | — | Go to home |
319
+ | `mq-view-appointments` | `{ tab: "next" \| "history" }` | Open appointments list |
320
+ | `mq-appointment-book` | `{ specialty?, service?, professional? }` | Start booking |
321
+ | `mq-appointment-reschedule` | `{ appointmentId }` | Reschedule |
322
+ | `mq-appointment-join-videocall` | `{ appointmentId }` | Join videocall |
323
+ | `mq-appointment-view-documentation` | `{ appointmentId }` | Open documentation |
324
+ | `mq-view-documents` | — | Open the full documents list (from `mq-dashboard`) |
325
+ | `mq-download-file` | `{ url, filename }` | Host should persist / download a file |
326
+
327
+ `mq-download-file` is emitted by `mq-chat-room` and also bubbles from `mq-support-chat` (nested room). Feature-specific events (e.g. `appointment-created` on `mq-schedule`) are documented per component.
328
+
329
+ ```ts
330
+ import { DownloadFileEvent } from "@mediquo/elements/events";
331
+
332
+ el.addEventListener(DownloadFileEvent.eventName, (event) => {
333
+ const { url, filename } = event.detail;
334
+ // save or trigger a download
335
+ });
336
+ ```
337
+
338
+ In React, the same callback is `onDownloadFile` on `MqChatRoom` and `MqSupportChat`:
339
+
340
+ ```ts
341
+ import { MqSupportChat } from "@mediquo/elements/react/mq-support-chat";
342
+
343
+ <MqSupportChat
344
+ apiKey="TENANT_KEY"
345
+ token="..."
346
+ onDownloadFile={(event) => {
347
+ const { url, filename } = event.detail;
348
+ // save or trigger a download
349
+ }}
350
+ />
351
+ ```
352
+
353
+ ## Locale and environment
354
+
355
+ Supported locales: `es_ES`, `en_US`, `pt_PT`, `de_DE`, `ca_ES`.
356
+
357
+ Pass `locale` as an attribute on the feature element, or call `setLocale` from `@mediquo/elements/i18n`.
358
+
359
+ For non-production backends:
360
+
361
+ ```ts
362
+ import { setEnv } from "@mediquo/elements/env";
363
+
364
+ setEnv("development"); // or "production"
365
+ ```
366
+
367
+ You can also set `env="development"` / `env="production"` on elements that expose it.
368
+
369
+ ## TypeScript
370
+
371
+ Entry points ship with `.d.ts` files. For modern package exports, prefer:
372
+
373
+ ```json
374
+ {
375
+ "compilerOptions": {
376
+ "moduleResolution": "bundler",
377
+ "module": "ESNext"
378
+ }
379
+ }
380
+ ```
381
+
382
+ Custom elements work in any framework that can render HTML. In React / Next.js, dynamic-import the entry points in a client component and attach listeners with `addEventListener`.
383
+
384
+ ## License
385
+
386
+ ISC
@@ -0,0 +1 @@
1
+ import{t,c as a}from"./parseISO-CEksKisk.js";function s(s,e,r){const n=t(s,r?.in);return isNaN(e)?a(s,NaN):e?(n.setDate(n.getDate()+e),n):n}export{s as a};
@@ -0,0 +1 @@
1
+ import{c as r,t}from"./parseISO-CEksKisk.js";function n(n,a,e){return function(n,a){return r(n,+t(n)+a)}(n,1e3*a)}export{n as a};
@@ -0,0 +1 @@
1
+ import{a as e,u as t,o as n,n as i,b as r,l as s,s as a,e as o,z as l,i as c,c as u,r as d,d as p,f as h,g as f}from"./external-JLtsAfi6.js";import{b as m}from"./chunk-NIAGR3ZC-BDlNUZa1.js";import{i as g}from"./isBefore-DBi1CiNR.js";import{env as b}from"../env.js";t([s(1),s(2),s(3)]);var y={Sent:1,Received:2,Read:3},_=n({roomId:i(),messageId:a().uuid(),string:a(),status:i(),senderType:o(["ordinary","system"]),fromUserHash:a().uuid(),auto:t([s(0),s(1)]),createdAt:a().nullable(),deletedAt:a().nullable(),time:i().nullable()}),v=n({file_name:a(),file_size:i(),url:a().url(),signed_url:a().url().nullable(),type:o(["uncategorized","voice_note"]),meta:n({duration:i()})}),w=_.extend({type:s("string"),attachment:r()}),C=_.extend({type:s("file"),attachment:v}),E=_.extend({type:s("image"),attachment:v});n({roomId:i()});var R=e(t([w,C,E]));n({roomId:i()});var S=n({unread_count:i()});n({professional_hash:a()});var O=n({room_id:i()}),A=l.enum(["pending","expired","accepted","inCall","declined","cancelled","finished","free_of_charge","owed","unpaid","reporting"]),j=A.enum,T=l.enum(["videocall","chat","phonecall"]),x=T.enum,k=l.object({id:l.string().uuid(),room_id:l.string(),channel:T,consultation_short_url:l.string().url().nullable(),call_id:l.string().url(),duration:l.number(),from:l.object({hash:l.string(),name:l.string().nullable(),avatar:l.string().url().nullable(),speciality:l.string().nullable(),collegiate_number:l.string().nullable(),is_dismissed:l.boolean(),languages:l.array(l.string()),description:l.string().nullable()}),to:l.object({id:l.number(),hash:l.string(),name:l.string().nullable(),avatar:l.string().url().nullable(),is_dismissed:l.boolean()}),speciality_id:l.number().nullable(),has_chat_in_appointment:l.boolean().optional(),created_at:l.string(),status:A,seconds_to_open:l.number().nonnegative(),start_date:l.string(),started_at:l.string().nullable(),expires_at:l.string().nullable(),consultation_reason:l.string().nullable(),preconsultation_documents:l.array(l.object({file_path:l.string(),file_name:l.string(),id:l.string().uuid()})).nullable(),service_id:l.string().uuid().nullable(),price:l.number().nullable().optional(),currency:l.string().nullable().optional(),discount_amount:l.number().nullable().optional()}),P=l.enum(["appointment","chat","immediate"]),N=P.enum;function U(e){return 0===e.seconds_to_open}function L(e){if(!e)return!1;const t=new Date,n=m(e);return g(n,t)}var F=o(["available","reserved"]),D=F.enum,B=n({id:a().uuid(),channel:T,duration:i(),starts_at:a(),finishes_at:a(),professional:n({id:a().uuid(),name:a()}),services:e(n({id:a().uuid(),name:a()})),speciality:n({id:i(),price:n({amount:i(),currency:a()}).nullish()}),status:F,payable_reference:a().nullish()}),I=l.array(l.object({id:l.string().uuid(),name:l.string(),code:l.string(),channel:T,price:l.object({amount:l.number(),currency:l.string()}).nullable()})),$=l.object({high_demand:l.boolean().optional()}),q=l.object({id:l.string().uuid(),avatar:l.string().url().nullable(),description:l.string().nullable(),collegiate_number:l.string().nullable(),languages:l.array(l.string()),name:l.string(),slots:l.array(B),speciality:l.object({id:l.number()}),tax_id:l.string().nullable()}),z=l.object({data:l.array(q),meta:$.optional()});l.object({speciality_id:l.number(),organization_schedule_service_id:l.string().uuid(),closest_slots_days:l.number().optional(),slots_per_day:l.number().optional()}),l.object({service_id:l.string().uuid(),professional_hash:l.string().uuid(),starts_at:l.string(),finishes_at:l.string(),rescheduling_appointment_id:l.string().uuid().optional()});var M=l.object({data:l.array(B),meta:$.optional()}),K=l.array(l.object({id:l.number(),name:l.string(),code:l.string().nullish(),price:l.object({amount:l.number(),currency:l.string()}).nullable()}));l.object({slot_id:l.string().uuid(),service_id:l.string().uuid().optional(),speciality_id:l.number().optional()});var H=B;l.object({api_key:l.string(),token:l.string()});var J=l.object({access_token:l.string(),patient:l.object({hash:l.string(),country_code:l.string(),timezone:l.string(),first_name:l.string(),last_name:l.string().nullable(),name:l.string(),birth_date:l.string().nullable(),email:l.string().email().nullable(),language_code:l.string(),phone:l.string(),phone_prefix:l.string(),tax_id:l.string().nullable(),legal_consent:l.object({accepted_at:l.string().nullable(),last_version_at:l.string().nullable(),terms_url:l.string(),privacy_url:l.string(),has_commercial_communications:l.boolean(),organization_name:l.string()})})});n({consultation_id:a(),consultation_type:P,rating:i().int().min(1).max(5),comment:a().nullable().optional()});var W=n({rating:i().int().optional(),comment:a().nullable().optional()}).passthrough();n({file:c(File)});var V=n({url:a().url()});function X(t){return n({data:e(t),meta:n({current_page:i(),last_page:i(),per_page:i(),total:i()})})}var G=l.enum(["prescription","report","diagnosticTestPrescription"]),Q=G.enum,Z=l.enum(["published","draft"]);Z.enum;var Y=l.object({document_id:l.string().uuid(),document_type:G,name:l.string(),professional:l.object({speciality_id:l.number(),speciality_name:l.string().optional()}),status:Z,url:l.string().url(),created_at:l.string()}),ee=n({hash:a(),profile:n({first_name:a().nullable(),last_name:a().nullable(),birth_date:a().nullable(),gender:o(["male","female"]).nullable(),email:a().nullable(),phone_prefix:a().nullable(),phone:a().nullable(),billing:n({tax_id:a().nullable(),address:a().nullable(),country_code:a().nullable(),region:a().nullable(),postal_code:a().nullable()})})});function te(e){const t=e?.profile;return`${t?.first_name??""} ${t?.last_name??""}`.trim()}function ne(e){return[e?.profile.first_name,e?.profile.last_name,e?.profile.email,e?.profile.phone,e?.profile.birth_date,e?.profile?.billing?.tax_id].every(e=>null!==e)}l.object({appointmentId:l.string()});var ie=k;l.object({callId:l.string()});var re=l.object({session_id:l.string(),session_token:l.string()}),se=l.object({api_key:l.string(),session_id:l.string(),session_token:l.string(),expires_at:l.string()});l.object({professional_hash:l.string(),consultation_id:l.string(),consultation_type:l.enum(["appointment"])}),l.object({professional_hash:l.string(),consultation_id:l.string(),consultation_type:l.enum(["appointment"])}),l.object({appointment_id:l.string()});var ae=l.array(Y);l.object({url:l.string().url()}),l.object({first_name:ee.shape.profile.shape.first_name,last_name:ee.shape.profile.shape.last_name,tax_id:ee.shape.profile.shape.billing.shape.tax_id,birth_date:ee.shape.profile.shape.birth_date,gender:ee.shape.profile.shape.gender.optional(),email:ee.shape.profile.shape.email,phone_prefix:ee.shape.profile.shape.phone_prefix,phone:ee.shape.profile.shape.phone,terms_accepted:l.boolean(),privacy_accepted:l.boolean()}),l.object({patient_hash:l.string(),page:l.number().optional(),per_page:l.number().optional()});var oe=X(Y);n({slot_id:a().uuid(),service_id:a().uuid(),specialty_id:a(),consultation_reason:a().optional(),preconsultation_documents:e(n({file_path:a(),file_name:a()})).optional(),discount_code:a().optional(),return_url:a().url().optional(),payable_reference:a().optional()});var le=n({id:a(),percent_off:i(),code:a(),after_discount_amount:i().nullable()}),ce=n({id:a(),percent_off:i(),code:a(),name:a().nullish()}),ue={Addon:"addon",Stripe:"stripe"},de=n({session_id:a(),payment_link:a().url(),provider:u(ue).optional()});n({video_call_schedule_id:a()});var pe=de;n({professional_hash:a().uuid()});var he=de,fe={Paid:"paid",Unpaid:"unpaid",Denied:"denied",Refunded:"refunded"},me=n({status:u(fe),consultation_id:a(),consultation_type:a()}),ge={SlotUnavailable:422},be=n({error:a(),refunded:h().optional()});n({order_id:a(),validation_url:a().url()});var ye=d(p());n({order_id:a(),token:a()});var _e=n({data:n({status:u(fe),consultation_id:a(),consultation_type:a().optional()})});n({order_id:a(),token:a()});var ve=n({data:n({status:u(fe),consultation_id:a(),consultation_type:a().optional()})}),we=l.array(l.object({id:l.number(),name:l.string(),code:l.string()})),Ce=l.object({primary_color:l.string().nullable(),logo:l.string().nullable(),favicon:l.string().nullable(),support_professional:l.object({hash:l.string().nullable()}).optional(),home:l.object({title:l.string().nullable(),description:l.string().nullable(),image_url:l.string().nullable()}),appointments:l.object({reserve_conditions:l.string().nullable(),seconds_before_start_to_refund_on_cancel:l.number().nullable(),has_nps:l.boolean().optional(),has_chat_in_appointment:l.boolean().optional(),has_discount_coupons_show:l.boolean().optional(),payment_provider:l.nativeEnum(ue).nullish()}),legal_consent:l.object({terms_url:l.string().nullable(),privacy_url:l.string().nullable()})}),Ee=o(["monday","tuesday","wednesday","thursday","friday","saturday","sunday","working_week","weekend","all_week"]);Ee.enum;var Re=n({days_of_week:Ee,from_time:a(),to_time:a()});n({hash:a().uuid()});var Se=n({hash:a().uuid(),active_absence:n({id:a().uuid(),finishes_at:a()}).nullable(),avatar:a().url().nullable(),collegiate_number:a().nullable(),description:a().nullable(),is_available:h(),name:a(),overview:a().nullable(),schedule_description:a().nullable(),speciality_id:i().nullable(),status:o(["online","offline"]),title:a().nullable(),chat_schedule:n({channel:T,duration:i(),name:a(),timezone:a(),starts_at:a(),gaps:e(Re)}).nullable()});function Oe(e){return e.active_absence?"absent":"online"===e.status?"online":"offline"}o(["online","offline","absent"]),n({roomId:i()});var Ae=ee;n({first_name:a(),last_name:a(),tax_id:a(),birth_date:a(),gender:o(["male","female"]),email:a(),phone_prefix:a(),phone:a(),terms_accepted:h(),privacy_accepted:h()}),n({terms_accepted:h(),privacy_accepted:h(),commercial_accepted:h()}),n({hash:a().uuid()});var je=n({id:i(),hash:a().uuid(),speciality_alias:a(),name:a(),avatar:a().url(),description:a(),collegiate_number:a(),languages:e(a()),centers:e(n({id:a().uuid(),name:a()}))});n({status:e(A).optional(),order:n({field:o(["starts_at"]).optional(),direction:o(["asc","desc"]).optional()}).optional(),page:i().optional(),per_page:i().optional()});var Te=X(n({appointment:n({id:a().uuid(),url:a().url(),starts_at:a(),duration:i(),status:A,channel:T,expires_at:a().nullable(),service_id:a().uuid().nullable(),has_chat_in_appointment:h().optional()}),room:n({id:i()}),price:n({amount:i(),currency:a()}).nullable(),patient:n({hash:a().uuid()}),slots:e(f()),professional:n({hash:a().uuid(),name:a(),avatar:a().url().optional(),description:a().optional(),languages:e(a()),collegiate_number:a().optional()}),speciality:n({id:i(),name:a()})}));n({slot_id:a().uuid(),service_id:a().uuid(),consultation_reason:a().optional(),preconsultation_documents:e(n({file_path:a(),file_name:a()})).optional(),discount_code:a().optional()});var xe=n({appointment:n({id:a().uuid()})});n({id:a().uuid()});var ke=k,Pe=n({file_path:a(),presigned_storage_url:a().url()});function Ne(e,t){return function(){return e.apply(t,arguments)}}n({id:a().uuid(),slot_id:a().uuid(),consultation_reason:a().optional(),preconsultation_documents:e(n({file_path:a(),file_name:a()})).optional()}),n({id:a().uuid()}),n({appointment_id:a().uuid(),consultation_reason:a().optional()}),n({appointment_id:a().uuid(),file_path:a(),file_name:a()}),n({appointment_id:a().uuid(),document_id:a().uuid()}),n({appointmentId:a().uuid()});const{toString:Ue}=Object.prototype,{getPrototypeOf:Le}=Object,{iterator:Fe,toStringTag:De}=Symbol,Be=(Ie=Object.create(null),e=>{const t=Ue.call(e);return Ie[t]||(Ie[t]=t.slice(8,-1).toLowerCase())});var Ie;const $e=e=>(e=e.toLowerCase(),t=>Be(t)===e),qe=e=>t=>typeof t===e,{isArray:ze}=Array,Me=qe("undefined");function Ke(e){return null!==e&&!Me(e)&&null!==e.constructor&&!Me(e.constructor)&&We(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const He=$e("ArrayBuffer");const Je=qe("string"),We=qe("function"),Ve=qe("number"),Xe=e=>null!==e&&"object"==typeof e,Ge=e=>{if("object"!==Be(e))return!1;const t=Le(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||De in e||Fe in e)},Qe=$e("Date"),Ze=$e("File"),Ye=$e("Blob"),et=$e("FileList"),tt=$e("URLSearchParams"),[nt,it,rt,st]=["ReadableStream","Request","Response","Headers"].map($e);function at(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let i,r;if("object"!=typeof e&&(e=[e]),ze(e))for(i=0,r=e.length;i<r;i++)t.call(null,e[i],i,e);else{if(Ke(e))return;const r=n?Object.getOwnPropertyNames(e):Object.keys(e),s=r.length;let a;for(i=0;i<s;i++)a=r[i],t.call(null,e[a],a,e)}}function ot(e,t){if(Ke(e))return null;t=t.toLowerCase();const n=Object.keys(e);let i,r=n.length;for(;r-- >0;)if(i=n[r],t===i.toLowerCase())return i;return null}const lt="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ct=e=>!Me(e)&&e!==lt;const ut=(dt="undefined"!=typeof Uint8Array&&Le(Uint8Array),e=>dt&&e instanceof dt);var dt;const pt=$e("HTMLFormElement"),ht=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),ft=$e("RegExp"),mt=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),i={};at(n,(n,r)=>{let s;!1!==(s=t(n,r,e))&&(i[r]=s||n)}),Object.defineProperties(e,i)};const gt=$e("AsyncFunction"),bt=(yt="function"==typeof setImmediate,_t=We(lt.postMessage),yt?setImmediate:_t?(vt=`axios@${Math.random()}`,wt=[],lt.addEventListener("message",({source:e,data:t})=>{e===lt&&t===vt&&wt.length&&wt.shift()()},!1),e=>{wt.push(e),lt.postMessage(vt,"*")}):e=>setTimeout(e));var yt,_t,vt,wt;const Ct="undefined"!=typeof queueMicrotask?queueMicrotask.bind(lt):"undefined"!=typeof process&&process.nextTick||bt;var Et={isArray:ze,isArrayBuffer:He,isBuffer:Ke,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||We(e.append)&&("formdata"===(t=Be(e))||"object"===t&&We(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&He(e.buffer),t},isString:Je,isNumber:Ve,isBoolean:e=>!0===e||!1===e,isObject:Xe,isPlainObject:Ge,isEmptyObject:e=>{if(!Xe(e)||Ke(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:nt,isRequest:it,isResponse:rt,isHeaders:st,isUndefined:Me,isDate:Qe,isFile:Ze,isBlob:Ye,isRegExp:ft,isFunction:We,isStream:e=>Xe(e)&&We(e.pipe),isURLSearchParams:tt,isTypedArray:ut,isFileList:et,forEach:at,merge:function e(){const{caseless:t}=ct(this)&&this||{},n={},i=(i,r)=>{const s=t&&ot(n,r)||r;Ge(n[s])&&Ge(i)?n[s]=e(n[s],i):Ge(i)?n[s]=e({},i):ze(i)?n[s]=i.slice():n[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&at(arguments[e],i);return n},extend:(e,t,n,{allOwnKeys:i}={})=>(at(t,(t,i)=>{n&&We(t)?e[i]=Ne(t,n):e[i]=t},{allOwnKeys:i}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,i)=>{e.prototype=Object.create(t.prototype,i),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,i)=>{let r,s,a;const o={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),s=r.length;s-- >0;)a=r[s],i&&!i(a,e,t)||o[a]||(t[a]=e[a],o[a]=!0);e=!1!==n&&Le(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:Be,kindOfTest:$e,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const i=e.indexOf(t,n);return-1!==i&&i===n},toArray:e=>{if(!e)return null;if(ze(e))return e;let t=e.length;if(!Ve(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Fe]).call(e);let i;for(;(i=n.next())&&!i.done;){const n=i.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const i=[];for(;null!==(n=e.exec(t));)i.push(n);return i},isHTMLForm:pt,hasOwnProperty:ht,hasOwnProp:ht,reduceDescriptors:mt,freezeMethods:e=>{mt(e,(t,n)=>{if(We(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const i=e[n];We(i)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:(e,t)=>{const n={},i=e=>{e.forEach(e=>{n[e]=!0})};return ze(e)?i(e):i(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:ot,global:lt,isContextDefined:ct,isSpecCompliantForm:function(e){return!!(e&&We(e.append)&&"FormData"===e[De]&&e[Fe])},toJSONObject:e=>{const t=new Array(10),n=(e,i)=>{if(Xe(e)){if(t.indexOf(e)>=0)return;if(Ke(e))return e;if(!("toJSON"in e)){t[i]=e;const r=ze(e)?[]:{};return at(e,(e,t)=>{const s=n(e,i+1);!Me(s)&&(r[t]=s)}),t[i]=void 0,r}}return e};return n(e,0)},isAsyncFn:gt,isThenable:e=>e&&(Xe(e)||We(e))&&We(e.then)&&We(e.catch),setImmediate:bt,asap:Ct,isIterable:e=>null!=e&&We(e[Fe])};function Rt(e,t,n,i,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),i&&(this.request=i),r&&(this.response=r,this.status=r.status?r.status:null)}Et.inherits(Rt,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Et.toJSONObject(this.config),code:this.code,status:this.status}}});const St=Rt.prototype,Ot={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ot[e]={value:e}}),Object.defineProperties(Rt,Ot),Object.defineProperty(St,"isAxiosError",{value:!0}),Rt.from=(e,t,n,i,r,s)=>{const a=Object.create(St);return Et.toFlatObject(e,a,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Rt.call(a,e.message,t,n,i,r),a.cause=e,a.name=e.name,s&&Object.assign(a,s),a};function At(e){return Et.isPlainObject(e)||Et.isArray(e)}function jt(e){return Et.endsWith(e,"[]")?e.slice(0,-2):e}function Tt(e,t,n){return e?e.concat(t).map(function(e,t){return e=jt(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const xt=Et.toFlatObject(Et,{},null,function(e){return/^is[A-Z]/.test(e)});function kt(e,t,n){if(!Et.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(n=Et.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Et.isUndefined(t[e])})).metaTokens,r=n.visitor||c,s=n.dots,a=n.indexes,o=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Et.isSpecCompliantForm(t);if(!Et.isFunction(r))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(Et.isDate(e))return e.toISOString();if(Et.isBoolean(e))return e.toString();if(!o&&Et.isBlob(e))throw new Rt("Blob is not supported. Use a Buffer instead.");return Et.isArrayBuffer(e)||Et.isTypedArray(e)?o&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,r){let o=e;if(e&&!r&&"object"==typeof e)if(Et.endsWith(n,"{}"))n=i?n:n.slice(0,-2),e=JSON.stringify(e);else if(Et.isArray(e)&&function(e){return Et.isArray(e)&&!e.some(At)}(e)||(Et.isFileList(e)||Et.endsWith(n,"[]"))&&(o=Et.toArray(e)))return n=jt(n),o.forEach(function(e,i){!Et.isUndefined(e)&&null!==e&&t.append(!0===a?Tt([n],i,s):null===a?n:n+"[]",l(e))}),!1;return!!At(e)||(t.append(Tt(r,n,s),l(e)),!1)}const u=[],d=Object.assign(xt,{defaultVisitor:c,convertValue:l,isVisitable:At});if(!Et.isObject(e))throw new TypeError("data must be an object");return function e(n,i){if(!Et.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+i.join("."));u.push(n),Et.forEach(n,function(n,s){!0===(!(Et.isUndefined(n)||null===n)&&r.call(t,n,Et.isString(s)?s.trim():s,i,d))&&e(n,i?i.concat(s):[s])}),u.pop()}}(e),t}function Pt(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function Nt(e,t){this._pairs=[],e&&kt(e,this,t)}const Ut=Nt.prototype;function Lt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ft(e,t,n){if(!t)return e;const i=n&&n.encode||Lt;Et.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let s;if(s=r?r(t,n):Et.isURLSearchParams(t)?t.toString():new Nt(t,n).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}Ut.append=function(e,t){this._pairs.push([e,t])},Ut.toString=function(e){const t=e?function(t){return e.call(this,t,Pt)}:Pt;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class InterceptorManager{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Et.forEach(this.handlers,function(t){null!==t&&e(t)})}}var Dt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Bt={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Nt,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const It="undefined"!=typeof window&&"undefined"!=typeof document,$t="object"==typeof navigator&&navigator||void 0,qt=It&&(!$t||["ReactNative","NativeScript","NS"].indexOf($t.product)<0),zt="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Mt=It&&window.location.href||"http://localhost";var Kt={...Object.freeze({__proto__:null,hasBrowserEnv:It,hasStandardBrowserEnv:qt,hasStandardBrowserWebWorkerEnv:zt,navigator:$t,origin:Mt}),...Bt};function Ht(e){function t(e,n,i,r){let s=e[r++];if("__proto__"===s)return!0;const a=Number.isFinite(+s),o=r>=e.length;if(s=!s&&Et.isArray(i)?i.length:s,o)return Et.hasOwnProp(i,s)?i[s]=[i[s],n]:i[s]=n,!a;i[s]&&Et.isObject(i[s])||(i[s]=[]);return t(e,n,i[s],r)&&Et.isArray(i[s])&&(i[s]=function(e){const t={},n=Object.keys(e);let i;const r=n.length;let s;for(i=0;i<r;i++)s=n[i],t[s]=e[s];return t}(i[s])),!a}if(Et.isFormData(e)&&Et.isFunction(e.entries)){const n={};return Et.forEachEntry(e,(e,i)=>{t(function(e){return Et.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),i,n,0)}),n}return null}const Jt={transitional:Dt,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",i=n.indexOf("application/json")>-1,r=Et.isObject(e);r&&Et.isHTMLForm(e)&&(e=new FormData(e));if(Et.isFormData(e))return i?JSON.stringify(Ht(e)):e;if(Et.isArrayBuffer(e)||Et.isBuffer(e)||Et.isStream(e)||Et.isFile(e)||Et.isBlob(e)||Et.isReadableStream(e))return e;if(Et.isArrayBufferView(e))return e.buffer;if(Et.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(r){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return kt(e,new Kt.classes.URLSearchParams,{visitor:function(e,t,n,i){return Kt.isNode&&Et.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((s=Et.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return kt(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||i?(t.setContentType("application/json",!1),function(e,t,n){if(Et.isString(e))try{return(t||JSON.parse)(e),Et.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Jt.transitional,n=t&&t.forcedJSONParsing,i="json"===this.responseType;if(Et.isResponse(e)||Et.isReadableStream(e))return e;if(e&&Et.isString(e)&&(n&&!this.responseType||i)){const n=!(t&&t.silentJSONParsing)&&i;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Rt.from(e,Rt.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Kt.classes.FormData,Blob:Kt.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Et.forEach(["delete","get","head","post","put","patch"],e=>{Jt.headers[e]={}});const Wt=Et.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const Vt=Symbol("internals");function Xt(e){return e&&String(e).trim().toLowerCase()}function Gt(e){return!1===e||null==e?e:Et.isArray(e)?e.map(Gt):String(e)}function Qt(e,t,n,i,r){return Et.isFunction(i)?i.call(this,t,n):(r&&(t=n),Et.isString(t)?Et.isString(i)?-1!==t.indexOf(i):Et.isRegExp(i)?i.test(t):void 0:void 0)}let Zt=class AxiosHeaders{constructor(e){e&&this.set(e)}set(e,t,n){const i=this;function r(e,t,n){const r=Xt(t);if(!r)throw new Error("header name must be a non-empty string");const s=Et.findKey(i,r);(!s||void 0===i[s]||!0===n||void 0===n&&!1!==i[s])&&(i[s||t]=Gt(e))}const s=(e,t)=>Et.forEach(e,(e,n)=>r(e,n,t));if(Et.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(Et.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,i,r;return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),n=e.substring(0,r).trim().toLowerCase(),i=e.substring(r+1).trim(),!n||t[n]&&Wt[n]||("set-cookie"===n?t[n]?t[n].push(i):t[n]=[i]:t[n]=t[n]?t[n]+", "+i:i)}),t})(e),t);else if(Et.isObject(e)&&Et.isIterable(e)){let n,i,r={};for(const t of e){if(!Et.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[i=t[0]]=(n=r[i])?Et.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}s(r,t)}else null!=e&&r(t,e,n);return this}get(e,t){if(e=Xt(e)){const n=Et.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=n.exec(e);)t[i[1]]=i[2];return t}(e);if(Et.isFunction(t))return t.call(this,e,n);if(Et.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Xt(e)){const n=Et.findKey(this,e);return!(!n||void 0===this[n]||t&&!Qt(0,this[n],n,t))}return!1}delete(e,t){const n=this;let i=!1;function r(e){if(e=Xt(e)){const r=Et.findKey(n,e);!r||t&&!Qt(0,n[r],r,t)||(delete n[r],i=!0)}}return Et.isArray(e)?e.forEach(r):r(e),i}clear(e){const t=Object.keys(this);let n=t.length,i=!1;for(;n--;){const r=t[n];e&&!Qt(0,this[r],r,e,!0)||(delete this[r],i=!0)}return i}normalize(e){const t=this,n={};return Et.forEach(this,(i,r)=>{const s=Et.findKey(n,r);if(s)return t[s]=Gt(i),void delete t[r];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(r):String(r).trim();a!==r&&delete t[r],t[a]=Gt(i),n[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Et.forEach(this,(n,i)=>{null!=n&&!1!==n&&(t[i]=e&&Et.isArray(n)?n.join(", "):n)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach(e=>n.set(e)),n}static accessor(e){const t=(this[Vt]=this[Vt]={accessors:{}}).accessors,n=this.prototype;function i(e){const i=Xt(e);t[i]||(!function(e,t){const n=Et.toCamelCase(" "+t);["get","set","has"].forEach(i=>{Object.defineProperty(e,i+n,{value:function(e,n,r){return this[i].call(this,t,e,n,r)},configurable:!0})})}(n,e),t[i]=!0)}return Et.isArray(e)?e.forEach(i):i(e),this}};function Yt(e,t){const n=this||Jt,i=t||n,r=Zt.from(i.headers);let s=i.data;return Et.forEach(e,function(e){s=e.call(n,s,r.normalize(),t?t.status:void 0)}),r.normalize(),s}function en(e){return!(!e||!e.__CANCEL__)}function tn(e,t,n){Rt.call(this,e??"canceled",Rt.ERR_CANCELED,t,n),this.name="CanceledError"}function nn(e,t,n){const i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(new Rt("Request failed with status code "+n.status,[Rt.ERR_BAD_REQUEST,Rt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}Zt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Et.reduceDescriptors(Zt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),Et.freezeMethods(Zt),Et.inherits(tn,Rt,{__CANCEL__:!0});const rn=(e,t,n=3)=>{let i=0;const r=function(e,t){e=e||10;const n=new Array(e),i=new Array(e);let r,s=0,a=0;return t=void 0!==t?t:1e3,function(o){const l=Date.now(),c=i[a];r||(r=l),n[s]=o,i[s]=l;let u=a,d=0;for(;u!==s;)d+=n[u++],u%=e;if(s=(s+1)%e,s===a&&(a=(a+1)%e),l-r<t)return;const p=c&&l-c;return p?Math.round(1e3*d/p):void 0}}(50,250);return function(e,t){let n,i,r=0,s=1e3/t;const a=(t,s=Date.now())=>{r=s,n=null,i&&(clearTimeout(i),i=null),e(...t)};return[(...e)=>{const t=Date.now(),o=t-r;o>=s?a(e,t):(n=e,i||(i=setTimeout(()=>{i=null,a(n)},s-o)))},()=>n&&a(n)]}(n=>{const s=n.loaded,a=n.lengthComputable?n.total:void 0,o=s-i,l=r(o);i=s;e({loaded:s,total:a,progress:a?s/a:void 0,bytes:o,rate:l||void 0,estimated:l&&a&&s<=a?(a-s)/l:void 0,event:n,lengthComputable:null!=a,[t?"download":"upload"]:!0})},n)},sn=(e,t)=>{const n=null!=e;return[i=>t[0]({lengthComputable:n,total:e,loaded:i}),t[1]]},an=e=>(...t)=>Et.asap(()=>e(...t));var on=Kt.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Kt.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Kt.origin),Kt.navigator&&/(msie|trident)/i.test(Kt.navigator.userAgent)):()=>!0,ln=Kt.hasStandardBrowserEnv?{write(e,t,n,i,r,s){const a=[e+"="+encodeURIComponent(t)];Et.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),Et.isString(i)&&a.push("path="+i),Et.isString(r)&&a.push("domain="+r),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function cn(e,t,n){let i=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(i||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const un=e=>e instanceof Zt?{...e}:e;function dn(e,t){t=t||{};const n={};function i(e,t,n,i){return Et.isPlainObject(e)&&Et.isPlainObject(t)?Et.merge.call({caseless:i},e,t):Et.isPlainObject(t)?Et.merge({},t):Et.isArray(t)?t.slice():t}function r(e,t,n,r){return Et.isUndefined(t)?Et.isUndefined(e)?void 0:i(void 0,e,0,r):i(e,t,0,r)}function s(e,t){if(!Et.isUndefined(t))return i(void 0,t)}function a(e,t){return Et.isUndefined(t)?Et.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function o(n,r,s){return s in t?i(n,r):s in e?i(void 0,n):void 0}const l={url:s,method:s,data:s,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(e,t,n)=>r(un(e),un(t),0,!0)};return Et.forEach(Object.keys({...e,...t}),function(i){const s=l[i]||r,a=s(e[i],t[i],i);Et.isUndefined(a)&&s!==o||(n[i]=a)}),n}var pn=e=>{const t=dn({},e);let n,{data:i,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:a,headers:o,auth:l}=t;if(t.headers=o=Zt.from(o),t.url=Ft(cn(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&o.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),Et.isFormData(i))if(Kt.hasStandardBrowserEnv||Kt.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(!1!==(n=o.getContentType())){const[e,...t]=n?n.split(";").map(e=>e.trim()).filter(Boolean):[];o.setContentType([e||"multipart/form-data",...t].join("; "))}if(Kt.hasStandardBrowserEnv&&(r&&Et.isFunction(r)&&(r=r(t)),r||!1!==r&&on(t.url))){const e=s&&a&&ln.read(a);e&&o.set(s,e)}return t};var hn="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const i=pn(e);let r=i.data;const s=Zt.from(i.headers).normalize();let a,o,l,c,u,{responseType:d,onUploadProgress:p,onDownloadProgress:h}=i;function f(){c&&c(),u&&u(),i.cancelToken&&i.cancelToken.unsubscribe(a),i.signal&&i.signal.removeEventListener("abort",a)}let m=new XMLHttpRequest;function g(){if(!m)return;const i=Zt.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());nn(function(e){t(e),f()},function(e){n(e),f()},{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:i,config:e,request:m}),m=null}m.open(i.method.toUpperCase(),i.url,!0),m.timeout=i.timeout,"onloadend"in m?m.onloadend=g:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(g)},m.onabort=function(){m&&(n(new Rt("Request aborted",Rt.ECONNABORTED,e,m)),m=null)},m.onerror=function(){n(new Rt("Network Error",Rt.ERR_NETWORK,e,m)),m=null},m.ontimeout=function(){let t=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded";const r=i.transitional||Dt;i.timeoutErrorMessage&&(t=i.timeoutErrorMessage),n(new Rt(t,r.clarifyTimeoutError?Rt.ETIMEDOUT:Rt.ECONNABORTED,e,m)),m=null},void 0===r&&s.setContentType(null),"setRequestHeader"in m&&Et.forEach(s.toJSON(),function(e,t){m.setRequestHeader(t,e)}),Et.isUndefined(i.withCredentials)||(m.withCredentials=!!i.withCredentials),d&&"json"!==d&&(m.responseType=i.responseType),h&&([l,u]=rn(h,!0),m.addEventListener("progress",l)),p&&m.upload&&([o,c]=rn(p),m.upload.addEventListener("progress",o),m.upload.addEventListener("loadend",c)),(i.cancelToken||i.signal)&&(a=t=>{m&&(n(!t||t.type?new tn(null,e,m):t),m.abort(),m=null)},i.cancelToken&&i.cancelToken.subscribe(a),i.signal&&(i.signal.aborted?a():i.signal.addEventListener("abort",a)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(i.url);b&&-1===Kt.protocols.indexOf(b)?n(new Rt("Unsupported protocol "+b+":",Rt.ERR_BAD_REQUEST,e)):m.send(r||null)})};const fn=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,i=new AbortController;const r=function(e){if(!n){n=!0,a();const t=e instanceof Error?e:this.reason;i.abort(t instanceof Rt?t:new tn(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,r(new Rt(`timeout ${t} of ms exceeded`,Rt.ETIMEDOUT))},t);const a=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(r):e.removeEventListener("abort",r)}),e=null)};e.forEach(e=>e.addEventListener("abort",r));const{signal:o}=i;return o.unsubscribe=()=>Et.asap(a),o}},mn=function*(e,t){let n=e.byteLength;if(n<t)return void(yield e);let i,r=0;for(;r<n;)i=r+t,yield e.slice(r,i),r=i},gn=async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:n}=await t.read();if(e)break;yield n}}finally{await t.cancel()}},bn=(e,t,n,i)=>{const r=async function*(e,t){for await(const n of gn(e))yield*mn(n,t)}(e,t);let s,a=0,o=e=>{s||(s=!0,i&&i(e))};return new ReadableStream({async pull(e){try{const{done:t,value:i}=await r.next();if(t)return o(),void e.close();let s=i.byteLength;if(n){let e=a+=s;n(e)}e.enqueue(new Uint8Array(i))}catch(e){throw o(e),e}},cancel:e=>(o(e),r.return())},{highWaterMark:2})},yn="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,_n=yn&&"function"==typeof ReadableStream,vn=yn&&("function"==typeof TextEncoder?(wn=new TextEncoder,e=>wn.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var wn;const Cn=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},En=_n&&Cn(()=>{let e=!1;const t=new Request(Kt.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),Rn=_n&&Cn(()=>Et.isReadableStream(new Response("").body)),Sn={stream:Rn&&(e=>e.body)};var On;yn&&(On=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Sn[e]&&(Sn[e]=Et.isFunction(On[e])?t=>t[e]():(t,n)=>{throw new Rt(`Response type '${e}' is not supported`,Rt.ERR_NOT_SUPPORT,n)})}));const An=async(e,t)=>{const n=Et.toFiniteNumber(e.getContentLength());return n??(async e=>{if(null==e)return 0;if(Et.isBlob(e))return e.size;if(Et.isSpecCompliantForm(e)){const t=new Request(Kt.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return Et.isArrayBufferView(e)||Et.isArrayBuffer(e)?e.byteLength:(Et.isURLSearchParams(e)&&(e+=""),Et.isString(e)?(await vn(e)).byteLength:void 0)})(t)};const jn={http:null,xhr:hn,fetch:yn&&(async e=>{let{url:t,method:n,data:i,signal:r,cancelToken:s,timeout:a,onDownloadProgress:o,onUploadProgress:l,responseType:c,headers:u,withCredentials:d="same-origin",fetchOptions:p}=pn(e);c=c?(c+"").toLowerCase():"text";let h,f=fn([r,s&&s.toAbortSignal()],a);const m=f&&f.unsubscribe&&(()=>{f.unsubscribe()});let g;try{if(l&&En&&"get"!==n&&"head"!==n&&0!==(g=await An(u,i))){let e,n=new Request(t,{method:"POST",body:i,duplex:"half"});if(Et.isFormData(i)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body){const[e,t]=sn(g,rn(an(l)));i=bn(n.body,65536,e,t)}}Et.isString(d)||(d=d?"include":"omit");const r="credentials"in Request.prototype;h=new Request(t,{...p,signal:f,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:i,duplex:"half",credentials:r?d:void 0});let s=await fetch(h,p);const a=Rn&&("stream"===c||"response"===c);if(Rn&&(o||a&&m)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=s[t]});const t=Et.toFiniteNumber(s.headers.get("content-length")),[n,i]=o&&sn(t,rn(an(o),!0))||[];s=new Response(bn(s.body,65536,n,()=>{i&&i(),m&&m()}),e)}c=c||"text";let b=await Sn[Et.findKey(Sn,c)||"text"](s,e);return!a&&m&&m(),await new Promise((t,n)=>{nn(t,n,{data:b,headers:Zt.from(s.headers),status:s.status,statusText:s.statusText,config:e,request:h})})}catch(t){if(m&&m(),t&&"TypeError"===t.name&&/Load failed|fetch/i.test(t.message))throw Object.assign(new Rt("Network Error",Rt.ERR_NETWORK,e,h),{cause:t.cause||t});throw Rt.from(t,t&&t.code,e,h)}})};Et.forEach(jn,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Tn=e=>`- ${e}`,xn=e=>Et.isFunction(e)||null===e||!1===e;var kn=e=>{e=Et.isArray(e)?e:[e];const{length:t}=e;let n,i;const r={};for(let s=0;s<t;s++){let t;if(n=e[s],i=n,!xn(n)&&(i=jn[(t=String(n)).toLowerCase()],void 0===i))throw new Rt(`Unknown adapter '${t}'`);if(i)break;r[t||"#"+s]=i}if(!i){const e=Object.entries(r).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Rt("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Tn).join("\n"):" "+Tn(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function Pn(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new tn(null,e)}function Nn(e){Pn(e),e.headers=Zt.from(e.headers),e.data=Yt.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return kn(e.adapter||Jt.adapter)(e).then(function(t){return Pn(e),t.data=Yt.call(e,e.transformResponse,t),t.headers=Zt.from(t.headers),t},function(t){return en(t)||(Pn(e),t&&t.response&&(t.response.data=Yt.call(e,e.transformResponse,t.response),t.response.headers=Zt.from(t.response.headers))),Promise.reject(t)})}const Un="1.11.0",Ln={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Ln[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const Fn={};Ln.transitional=function(e,t,n){function i(e,t){return"[Axios v"+Un+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,s)=>{if(!1===e)throw new Rt(i(r," has been removed"+(t?" in "+t:"")),Rt.ERR_DEPRECATED);return t&&!Fn[r]&&(Fn[r]=!0,console.warn(i(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,s)}},Ln.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var Dn={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Rt("options must be an object",Rt.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let r=i.length;for(;r-- >0;){const s=i[r],a=t[s];if(a){const t=e[s],n=void 0===t||a(t,s,e);if(!0!==n)throw new Rt("option "+s+" must be "+n,Rt.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new Rt("Unknown option "+s,Rt.ERR_BAD_OPTION)}},validators:Ln};const Bn=Dn.validators;let In=class Axios{constructor(e){this.defaults=e||{},this.interceptors={request:new InterceptorManager,response:new InterceptorManager}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=dn(this.defaults,t);const{transitional:n,paramsSerializer:i,headers:r}=t;void 0!==n&&Dn.assertOptions(n,{silentJSONParsing:Bn.transitional(Bn.boolean),forcedJSONParsing:Bn.transitional(Bn.boolean),clarifyTimeoutError:Bn.transitional(Bn.boolean)},!1),null!=i&&(Et.isFunction(i)?t.paramsSerializer={serialize:i}:Dn.assertOptions(i,{encode:Bn.function,serialize:Bn.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Dn.assertOptions(t,{baseUrl:Bn.spelling("baseURL"),withXsrfToken:Bn.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=r&&Et.merge(r.common,r[t.method]);r&&Et.forEach(["delete","get","head","post","put","patch","common"],e=>{delete r[e]}),t.headers=Zt.concat(s,r);const a=[];let o=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(o=o&&e.synchronous,a.unshift(e.fulfilled,e.rejected))});const l=[];let c;this.interceptors.response.forEach(function(e){l.push(e.fulfilled,e.rejected)});let u,d=0;if(!o){const e=[Nn.bind(this),void 0];for(e.unshift(...a),e.push(...l),u=e.length,c=Promise.resolve(t);d<u;)c=c.then(e[d++],e[d++]);return c}u=a.length;let p=t;for(d=0;d<u;){const e=a[d++],t=a[d++];try{p=e(p)}catch(e){t.call(this,e);break}}try{c=Nn.call(this,p)}catch(e){return Promise.reject(e)}for(d=0,u=l.length;d<u;)c=c.then(l[d++],l[d++]);return c}getUri(e){return Ft(cn((e=dn(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}};Et.forEach(["delete","get","head","options"],function(e){In.prototype[e]=function(t,n){return this.request(dn(n||{},{method:e,url:t,data:(n||{}).data}))}}),Et.forEach(["post","put","patch"],function(e){function t(t){return function(n,i,r){return this.request(dn(r||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:i}))}}In.prototype[e]=t(),In.prototype[e+"Form"]=t(!0)});const $n={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries($n).forEach(([e,t])=>{$n[t]=e});const qn=function e(t){const n=new In(t),i=Ne(In.prototype.request,n);return Et.extend(i,In.prototype,n,{allOwnKeys:!0}),Et.extend(i,n,null,{allOwnKeys:!0}),i.create=function(n){return e(dn(t,n))},i}(Jt);qn.Axios=In,qn.CanceledError=tn,qn.CancelToken=class CancelToken{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null}),this.promise.then=e=>{let t;const i=new Promise(e=>{n.subscribe(e),t=e}).then(e);return i.cancel=function(){n.unsubscribe(t)},i},e(function(e,i,r){n.reason||(n.reason=new tn(e,i,r),t(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new CancelToken(function(t){e=t}),cancel:e}}},qn.isCancel=en,qn.VERSION=Un,qn.toFormData=kt,qn.AxiosError=Rt,qn.Cancel=qn.CanceledError,qn.all=function(e){return Promise.all(e)},qn.spread=function(e){return function(t){return e.apply(null,t)}},qn.isAxiosError=function(e){return Et.isObject(e)&&!0===e.isAxiosError},qn.mergeConfig=dn,qn.AxiosHeaders=Zt,qn.formToJSON=e=>Ht(Et.isHTMLForm(e)?new FormData(e):e),qn.getAdapter=kn,qn.HttpStatusCode=$n,qn.default=qn;const{Axios:zn,AxiosError:Mn,CanceledError:Kn,isCancel:Hn,CancelToken:Jn,VERSION:Wn,all:Vn,Cancel:Xn,isAxiosError:Gn,spread:Qn,toFormData:Zn,AxiosHeaders:Yn,HttpStatusCode:ei,formToJSON:ti,getAdapter:ni,mergeConfig:ii}=qn;var ri=class{constructor(e,t){this.httpClient=e,this.validate=t}async getAppointments(e){return this.httpClient.get("/appointments/v1",{params:e}).then(this.validate(Te))}async createAppointment(e){return this.httpClient.post(`/appointments/v1/slots/${e.slot_id}`,e).then(e=>e.data).then(this.validate(xe))}async getAppointment(e){return this.httpClient.get(`/api/v1/appointments/${e.id}`).then(e=>e.data).then(this.validate(ke))}async getDocumentsStorage(){return this.httpClient.get("/appointments/v1/documents/storage").then(e=>e.data).then(this.validate(Pe))}async rescheduleAppointment(e){const{id:t,...n}=e;return this.httpClient.put(`/appointments/v1/${t}/reschedule`,n)}async cancelAppointment(e){return this.httpClient.put(`/appointments/v1/${e.id}/cancel`)}async updateAppointment(e){const{appointment_id:t,...n}=e;return this.httpClient.put(`/appointments/v1/${t}/update`,n)}async addDocument(e){const{appointment_id:t,...n}=e;return this.httpClient.post(`/appointments/v1/${t}/consultation-document`,n)}async deleteDocument(e){return this.httpClient.delete(`/appointments/v1/${e.appointment_id}/consultation-document/${e.document_id}`)}async reconnectAppointment(e){return this.httpClient.put(`/appointments/v1/${e.appointmentId}/reconnect`)}},si=class{constructor(e,t){this.httpClient=e,this.validate=t}async loginToken(e){return this.httpClient.post("/login/v1/token",{token:e.token},{headers:{"x-api-key":e.api_key}}).then(this.validate(J))}};var ai=class{constructor(e,t){this.httpClient=e,this.validate=t}async postReview(e){return this.httpClient.post("/consultations/v1/review",e)}async startChatConsultation(e){return this.httpClient.put(`/consultations/v1/chat/professionals/${encodeURIComponent(e)}/consult`).then(()=>{})}async getReview(e){return this.httpClient.get(`/consultations/v1/review/${e}`).then(e=>e.data).then(this.validate(W))}},oi=class{constructor(e,t){this.httpClient=e,this.validate=t}async uploadFile(e){const t=new FormData;return t.append("file",e.file,e.file.name),this.httpClient.post("/documents/v1/upload-file",t,{headers:{"Content-Type":"multipart/form-data"}}).then(this.validate(V))}},li=class{constructor(e,t){this.httpClient=e,this.validate=t}async getAppointment(e){return this.httpClient.get(`/flash/v1/appointments/${e.appointmentId}`).then(e=>e.data).then(this.validate(ie))}async joinCall(e){return this.httpClient.get(`/flash/v1/calls/${e.callId}/join`).then(e=>e.data).then(this.validate(re))}async createNetworkTest(){return this.httpClient.post("/api/v1/calls/network-test").then(e=>e.data).then(this.validate(se))}async setReady(e){return this.httpClient.post(`/flash/v1/waiting/${e.professional_hash}/ready`,{consultation_id:e.consultation_id,consultation_type:e.consultation_type})}async leaveWaitingRoom(e){return this.httpClient.post(`/flash/v1/waiting/${e.professional_hash}/leave`,{consultation_id:e.consultation_id,consultation_type:e.consultation_type})}async getSharedDocuments(e){return this.httpClient.get(`/flash/v1/appointments/${e.appointment_id}/documents`).then(e=>e.data).then(this.validate(ae))}async downloadDocument(e){return this.httpClient.get(e.url,{responseType:"blob"}).then(e=>e.data)}async updatePatientProfile(e){return this.httpClient.put("/flash/v1/profile",e)}async getPatientDocuments(e){return this.httpClient.get(`/flash/v1/patients/${e.patient_hash}/documents`,{params:{page:e.page,per_page:e.per_page}}).then(this.validate(oe))}},ci=class{constructor(e,t){this.httpClient=e,this.validate=t}async getOrganizationSpecialties(){return this.httpClient.get("/organizations/v1/specialities").then(e=>e.data).then(this.validate(we))}async getOrganizationSetup(){return this.httpClient.get("/organizations/v1/setup").then(e=>e.data).then(this.validate(Ce))}},ui=class{constructor(e,t){this.httpClient=e,this.validate=t}async createPaymentLink(e){const{specialty_id:t,...n}=e,i={...n,speciality_id:t};return this.httpClient.post("/payments/v1/schedule",i).then(e=>e.data).then(this.validate(de))}async createImmediateVideocallPaymentLink(e){return this.httpClient.post("/payments/v1/immediate-videocall",e).then(e=>e.data).then(this.validate(pe))}async createChatConsultationPaymentLink(e){return this.httpClient.post("/payments/v1/schedule",e).then(e=>e.data).then(this.validate(he))}async getConsultationCoupon(e,t){return this.httpClient.get(`/payments/v1/consultation-coupon/${encodeURIComponent(e)}`,{params:{amount:t}}).then(e=>e.data).then(this.validate(le))}async getAppointmentConsultationCoupon(e){return this.httpClient.get(`/payments/v1/appointment/${encodeURIComponent(e)}/consultation-coupon`).then(e=>e.data).then(this.validate(ce))}async getPaymentSession(e){return this.httpClient.get(`/payments/v1/session/${e}`).then(e=>e.data).then(this.validate(me))}async validateApplePayMerchant(e){return this.httpClient.post("/payments/v1/apple-pay/validate-merchant",e).then(this.validate(ye))}async authorizeApplePay(e){return this.httpClient.post("/payments/v1/apple-pay/authorize",e).then(this.validate(_e))}async authorizeGooglePay(e){return this.httpClient.post("/payments/v1/google-pay/authorize",e).then(this.validate(ve))}},di=class{constructor(e,t){this.httpClient=e,this.validate=t}async getProfessional(e){return this.httpClient.get(`sdk/v1/professionals/${e.hash}`).then(e=>e.data).then(this.validate(Se))}async readAllMessages(e){return this.httpClient.put(`sdk/v1/rooms/${e.roomId}/messages/read`).then(e=>e.data)}},pi=class{constructor(e,t){this.httpClient=e,this.validate=t}async getPatientProfile(){return this.httpClient.get("/profile/v1/patients").then(e=>e.data).then(this.validate(Ae))}async getProfessionalPublicProfile(e){return this.httpClient.get(`/profile/v1/public/professionals/${e.hash}`).then(e=>e.data).then(this.validate(je))}async acceptLegalConsent(e){return this.httpClient.post("/profile/v1/legal-consent",e)}},hi=class{constructor(e,t){this.httpClient=e,this.validate=t}async getRoomMessages(e){return this.httpClient.get(`api/v1/rooms/${e.roomId}/messages`).then(e=>e.data).then(this.validate(R))}async getUnreadMessagesCount(e){return this.httpClient.get(`chat/v1/${e.roomId}/unread-count`).then(e=>e.data).then(this.validate(S))}async createSupportRoom(e){return this.httpClient.post("chat/v1/support-room",e).then(e=>e.data).then(this.validate(O))}},fi=class{constructor(e,t){this.httpClient=e,this.validate=t}async getScheduleServices(){return this.httpClient.get("/schedules/v1/services").then(e=>e.data).then(this.validate(I))}async getProfessionalsBySpecialtyAndService(e){return this.httpClient.get("/schedules/v1/professionals",{params:e}).then(e=>e.data).then(e=>this.validate(z)({data:e}))}async getScheduleServiceProfessionalSlots(e){return this.httpClient.get(`/schedules/v1/services/${e.service_id}/professionals/${e.professional_hash}/slots`,{params:{starts_at:e.starts_at,finishes_at:e.finishes_at,rescheduling_appointment_id:e.rescheduling_appointment_id}}).then(e=>e.data).then(e=>this.validate(M)({data:e}))}async getScheduleServiceSpecialities(e){return this.httpClient.get(`/schedules/v1/services/${e}/specialities`).then(e=>e.data).then(this.validate(K))}async getScheduleSlot(e){return this.httpClient.get(`schedules/v1/slot/${e.slot_id}`,{params:{service_id:e.service_id,speciality_id:e.speciality_id}}).then(e=>e.data).then(this.validate(H))}};var mi={development:"https://chat-dev.mediquo.com",production:"https://chat.mediquo.com"},gi=class{constructor({env:e="production",baseURL:t,debug:n,apiKey:i,token:r,locale:s}={}){const a=t??mi[e];var o;this.httpClient=(o=a,qn.create({baseURL:o,headers:{"Content-Type":"application/json"}}));const l=(c={debug:n},e=>t=>{const n=e.safeParse(t.data);if(n.error&&c?.debug){const e=t.config?.url??"";console.warn(`[Validation Error]${e?` - URL: ${e}`:""}\n${i=n.error,i.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join("\n")}`)}var i;return n.data??t.data});var c;this.flash=new li(this.httpClient,l),this.auth=new si(this.httpClient,l),this.appointments=new ri(this.httpClient,l),this.payments=new ui(this.httpClient,l),this.schedules=new fi(this.httpClient,l),this.organizations=new ci(this.httpClient,l),this.profile=new pi(this.httpClient,l),this.professionals=new di(this.httpClient,l),this.rooms=new hi(this.httpClient,l),this.documents=new oi(this.httpClient,l),this.consultations=new ai(this.httpClient,l),i&&this.setApiKey(i),r&&this.setAuthToken(r),s&&this.setLanguage(s)}setAuthToken(e){this.httpClient.defaults.headers.common.Authorization=`Bearer ${e}`}setApiKey(e){this._apiKey=e,this.httpClient.defaults.headers.common["x-api-key"]=e}getApiKey(){return this._apiKey}setLanguage(e){this.httpClient.defaults.headers.common["Accept-Language"]=e}};function bi({env:e,apiKey:t,token:n,locale:i}={}){const r=e??b.MODE;return new gi({env:r,debug:"development"===r,apiKey:t,token:n,locale:i})}const yi=["env","apiKey","token","locale","inheritedApiClient"];function _i(e,t,n){if(yi.some(t=>e.has(t)))return t.apiKey||t.token||t.locale||!n?bi({...t,apiKey:t.apiKey??n?.getApiKey()}):n}export{j as A,N as C,Q as D,y as M,fe as P,D as S,ge as a,be as b,bi as c,L as d,x as e,U as f,Oe as g,ue as h,Gn as i,te as j,ne as k,_i as n};
@@ -0,0 +1 @@
1
+ import{n as e}from"./create-context-DqP79qjF.js";var o=e(Symbol.for("mediquo-api-client"));export{o as A};
@@ -0,0 +1 @@
1
+ import{P as n}from"./api-chat-client-CcYgqPdC.js";function e(e,r,t){return e===n.Paid?{kind:"success",sessionId:t,reference:r}:e===n.Denied?{kind:"denied",sessionId:t}:{kind:"error",reason:"authorize"}}function r(n){const e=n.merchant_session;return null===e||"object"!=typeof e||Array.isArray(e)?n:e}function t(n){if("string"==typeof n)return n;if(null!==n&&"object"==typeof n&&"paymentData"in n){const e=n.paymentData;if("string"==typeof e)return e;if(null!=e)return JSON.stringify(e)}return JSON.stringify(n)}export{e as r,t as s,r as u};
@@ -0,0 +1 @@
1
+ import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{m as i}from"./runtime-Bg1WXVCx.js";import{l as o}from"./localized-decorator-BlOuLhym.js";import{g as n,p as a,a as r}from"./chunk-NIAGR3ZC-BDlNUZa1.js";import{a as s}from"./addSeconds-fO5orJrt.js";import{i as l,a as p,E as c,x as m}from"./lit-element-B5-nYi7k.js";import{n as h}from"./property-C1CmBSnw.js";import{getLocale as d}from"../i18n.js";import{briefcaseIcon as u}from"../ui/icons/briefcase-icon.js";import{calendarIcon as f}from"../ui/icons/calendar-icon.js";import{clockIcon as v}from"../ui/icons/clock-icon.js";import{messageBubbleIcon as g}from"../ui/icons/message-bubble-icon.js";import{phoneIcon as y}from"../ui/icons/phone-icon.js";const w=l`.appointment-details{display:flex;flex-direction:column;gap:var(--sp-3)}.detail-row{display:inline-flex;width:fit-content;align-items:center;gap:var(--sp-2);color:var(--color-neutrals-text-default);font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--text-sm--line-height);font-weight:var(--font-weight-bold)}.detail-row svg{flex-shrink:0}.detail-row span::first-letter{text-transform:uppercase}.detail-row.full-width{width:100%}:host([strike-through]) .detail-row span{text-decoration:line-through}`;let j=class AppointmentDetails extends p{constructor(){super(...arguments),this.channel=void 0,this.strikeThrough=!1,this.timezone=void 0,this._appointmentChannelToLabel=t=>{switch(t){case"videocall":return i("Videoconsulta");case"chat":return i("Chat");case"phonecall":return i("Consulta telefónica");default:return""}},this._appointmentChannelToIcon=t=>{switch(t){case"videocall":return u({size:24});case"chat":return g({size:24});case"phonecall":return y({size:24});default:return c}}}static{this.styles=w}render(){const t=d().replace("_","-"),e=n(this.timezone),i=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric",...e?{timeZone:e}:{}}),o=new Intl.DateTimeFormat(t,{timeStyle:"short",...e?{timeZone:e}:{}}),l=a(this.startsAt),p=s(l,this.duration),h=i.format(l),u=o.format(l),g=o.format(p),y=e?r(e,l):"";return m`<div class="appointment-details"><div class="detail-row">${f({size:24})} <span>${h}</span></div><div class="detail-row">${v({size:24})} <span>${u} - ${g}${y?` (${y})`:""}</span></div>${this.channel?m`<div class="detail-row full-width">${this._appointmentChannelToIcon(this.channel)} <span>${this._appointmentChannelToLabel(this.channel)}</span></div>`:c}</div>`}};t([h({type:String})],j.prototype,"startsAt",void 0),t([h({type:Number})],j.prototype,"duration",void 0),t([h({type:String})],j.prototype,"channel",void 0),t([h({type:Boolean,attribute:"strike-through"})],j.prototype,"strikeThrough",void 0),t([h({type:String})],j.prototype,"timezone",void 0),j=t([o(),e("appointment-details")],j);export{j as A};
@@ -0,0 +1,23 @@
1
+ import * as lit_html from 'lit-html';
2
+ import * as lit from 'lit';
3
+ import { LitElement } from 'lit';
4
+ import { A as AppointmentChannel } from './index-DwlJg2um.js';
5
+
6
+ declare class AppointmentDetails extends LitElement {
7
+ static styles: lit.CSSResult;
8
+ startsAt: string;
9
+ duration: number;
10
+ channel: AppointmentChannel | undefined;
11
+ strikeThrough: boolean;
12
+ timezone: string | undefined;
13
+ private _appointmentChannelToLabel;
14
+ private _appointmentChannelToIcon;
15
+ render(): lit_html.TemplateResult<1>;
16
+ }
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ "appointment-details": AppointmentDetails;
20
+ }
21
+ }
22
+
23
+ export { AppointmentDetails as A };
@@ -0,0 +1 @@
1
+ async function e(e){return new Promise((n,r)=>{const o=new FileReader;o.onloadend=()=>n(o.result),o.onerror=r,o.readAsDataURL(e)})}export{e as b};
@@ -0,0 +1 @@
1
+ import{s as a}from"./runtime-Bg1WXVCx.js";const e={s0043fc30b467bc43:"Ocultar detalls",s00c8bf60a179e056:"Google Pay no està disponible. Prova amb targeta o un altre mètode de pagament.",s035706a468d0c40b:"Divendres",s046059ac8883c8b0:"Desactivar càmera",s0520ac0a7da193d4:"No hem pogut validar el codi. Torna-ho a provar.",s071bd6bbf6c08f34:"Carregant",s07869833a9612f03:"Estable",s08404262212123ef:"Com et puc ajudar?",s087be48b9567efd7:"Concedeix els permisos de càmera i micròfon",s08fcf168ec2f029e:"Accions ràpides",s08fe5307b5987c42:"De",s08fe5907b5988674:"Dg",s09165307b5ad0e23:"Dme",s09165b07b5ad1bbb:"Dm",s09195307b5af43fa:"Dl",s092e4f07b5c19938:"Dj",s093b3307b5cbf400:"Dv",s09462f07b5d5f4b9:"Ds",s09528d5c26b62213:"Dijous",s09d1e631a1f92b01:"Bona connexió",s09ebc782afbb9b76:"Comprova que no estigui silenciat o tria un altre micròfon de la llista. Pots entrar igualment.",s0aaec824f7c6b501:"Enviar missatge",s0b0955208f737a86:"L'arxiu supera la mida màxima permesa",s0c11fb8db8684fb4:"Canviar de càmera",s0cea517c81fb62ca:"Sentim l'espera.",s0d65261c859a6e30:"Reconnectant…",s0dd4fef0057d2e29:"No hem pogut tornar a connectar amb el teu metge. Prem «Tornar a entrar» per intentar-ho de nou.",s0eb69642cbc19745:"Aquesta cita ja ha passat, per la qual cosa no es pot modificar.",s0fc7c4bfd185800d:"Aquí es mostraran les teves receptes i informes mèdics.",s0fcbdef9dc977231:"S'ha produït un error en carregar la pàgina. Si us plau, intenta-ho de nou o contacta amb el suport.",s11605fc03de64e14:"Escriu aquí...",s12f171594a5379d2:"¿Segur que vols cancel·lar aquesta cita?",s132e84f499a23985:"Sense horaris disponibles actualment",s13317a76a9ed776e:"Repetir",s142eba34d93fe59e:"Descripció",s1513f3687bfcac96:"Diumenge",s15a4cb398cd28ceb:"Recarregar la pàgina",s175c25f0565c3a51:"Micròfon connectat",s18b93279814a6bad:"Ajuda",s1a0efa6ac51e8a85:"Pàgina anterior",s1a874fc38d0fcef0:"Ordre mèdica",s1d318e9d0ccba86b:"Xat",s1ee6d7e6d04932a4:"El correu electrònic no és vàlid",s1fe8bb7f6ae07f9b:"No tens cites en l'historial",s219b833c5ca095b3:"Aquí podràs veure totes les cites que has tingut. Pots accedir a les documents de cada consulta i reagendar una cita si és necessari.",s220fc50e0599dca2:"Càmera no disponible",s22cf91a84fba4c4e:"Quan agendis una cita, apareixerà aquí per que puguis consultar-la, modificar-la o cancel·lar-la.",s238c3ed6d3ecc66a:"Tancar",s241e503fa38a036d:"Recarrega la pàgina",s24b59d5a129dc0d0:"No hem pogut anul·lar la cita. Torna-ho a provar.",s24bf036e7dd55fa9:"Busca un lloc amb millor cobertura o canvia de xarxa (wifi o dades mòbils).",s255bf4de23c83482:"Condicions de reserva:",s256189bafbcd2e34:"El telèfon no és vàlid",s25e6416d9616df41:"La teva connexió és lenta",s2658c03579c79e3c:"Veure ajuda",s27e462e9f48eb3a6:"Documentació",s28d1b798877c823d:"Prova això",s2a17cbd882c2684e:"La imatge pot anar a batzegades. Busca un lloc amb millor cobertura o canvia de xarxa. Si empitjora, continuarem només amb àudio.",s2a1d212b3cb5c1a1:"Pots xatejar amb el professional fins 48 hores finalitzada la teva cita",s2a5a722447fb228e:"Comprova la teva càmera i el teu micròfon",s2aa2c19d07591438:"Rebràs un recordatori 15 minuts abans de la consulta",s2aab27b26a86469f:"Motiu de consulta",s2b9fde9a5739d2a0:"Nom",s2bb20b2162a18938:"¿Per què necessites la consulta?",s2d6183fa992e10e9:"Aquest professional no té horaris disponibles",s2ebd846b5a30f9d1:"Ho sentim, no hem pogut repetir la teva cita. Si us plau, contacta amb el suport.",s30c9095a2e07d929:"Sala d'espera",s31219c9bdeb7bc3e:"Continuar",s337e34cd11150eb6:"Veure totes les meves cites",s346d488070fe4cc8:"Demanar cita",s361c5842f8d8c1cf:"Una altra aplicació està utilitzant la teva càmera",s36a85bd42a6e86bd:"Connectat",s37e0eb5bb2794d92:"Tornar a entrar",s3944638e633d719a:"Consulta",s3b77baf6a4864231:"Error desconegut",s3dc6584e403858df:"No hem pogut carregar la teva documentació",s3f55bc3bfec41a5d:"Adjuntar arxius",s3fed4a1c3fce3567:"La teva connexió",s4177fe7f5d70fd33:"Tornar",s41826ac201c3cd85:"No s'ha pogut obrir el chat amb suport",s428cefc51e9bbbef:"Dispositius",s4364d4be7641e15f:"Confirmar cita",s43814dc30be6801e:"Mentre esperes, pots explicar-li el motiu de la teva consulta pel xat.",s43e5edcc8801e9a4:"Perfil del professional",s47afb8f6895a937b:a`Actualment hi ha una demanda elevada de cites a ${0}, de manera que els temps d'espera poden ser més llargs de l'habitual.`,s4813ee5d305442e5:"Sembla que no t'hem trobat a l'hora de la teva cita. Pots programar una altra consulta per resoldre els teus dubtes.",s48163b67a2420e36:"Sense càmera · només àudio",s495f82688017f598:"Càmera canviada",s49683919cdaeca83:"Avui",s4a061033615c8016:"Documents",s4a8494821c987a17:"Informe",s4a8f1fcd3f5e5952:"Encara no és l'hora!",s4d20157b5a655e70:"Aquest horari no està disponible. Si us plau, seleccioneu un altre.",s4de424f531892818:"Anar a videotrucada",s4e3b3ba55ff8161b:"Micròfon",s50eb4642ff2b0561:a`S'ha desconnectat el teu micròfon. Fem servir «${0}»`,s51c461d40f9fb865:"Selecciona el teu especialista",s5260344ebd9aeb0c:"En entrar, avisarem el teu metge que estàs a punt.",s536a0b4d3d4a5d9f:"No hem pogut carregar la teva propera cita",s53d957dda6cc200b:"Servei i plataforma prestats per",s53e2497bf900c7fd:"No tens properes cites",s5558a2e389d04223:"Modificar",s55c5126e99bae190:"Buscar disponibilitat",s55d4e0de52ac8a28:"Detectat",s561a153d1b93621e:"Canviar micròfon",s563dcbfd432eb18f:"Anul·lar cita",s56ff38115e5e5288:a`${0} - ${1} h`,s5768f9a50323f9e8:"fa 2 min",s57e65113a89160cf:"Modalitat de la cita",s59612eaa6993aa7e:a`${0} minuts`,s5b7cc3cc732206e2:"La reserva d'aquest horari ha caducat. Si us plau, seleccioni'n un altre.",s5ba73f4f557dbad6:"El teu micròfon no envia so",s5d939766627a0a6d:"Torna a comprovar",s5eef402d73eecbdc:"Adjuntar arxiu",s5f7956aacb5c6ca2:"Comprovant Google Pay…",s5f817b8841b188d2:"Més opcions",s5f9238eb76027e22:"Tanca altres aplicacions o pestanyes que facin servir internet.",s611b4e04494c2ba0:"Estàs parlant? Tens el micròfon desactivat",s616689a85b292cce:"No hem pogut tornar a connectar. La teva cita continua en peu: prem «Tornar a la sala d'espera» per intentar-ho de nou, o escriu al teu metge pel xat.",s627f3456df2f3bf1:"Entrar a la sala d'espera",s62d8f013f6db8d1a:"Tornar a la sala d'espera",s631f73a10d156b22:"Consulta expirada",s63f7af84683dd7c3:"Aquesta cita ja no es pot modificar ni anul·lar: no queda el temps mínim requerit abans del començament.",s643155d1b6ee1684:"Torna-ho a provar en uns minuts.",s64b78a5026d4ce8d:"No hi ha horaris disponibles",s65bedc0e516977d9:"Dissabte",s66e1d53fa4420ffb:"Abans d'entrar, assegura't que el teu metge podrà veure't i sentir-te bé.",s679be6312356a21c:"Agenda una consulta mèdica quan la necessitis. Aquí podràs veure tots els detalls i podràs gestionar les teves properes cites.",s67f30f9f4ea881f3:"Aquest codi no és vàlid.",s680d533ecff1ca01:"Micròfon sense so",s6a50fd7f52263b04:"No s'ha pogut tornar a la sala d'espera",s6a5e94435968666e:"La imatge pot anar a batzegades.",s6a88180a43161efa:"Altaveu",s6ab6fcd87fdbf217:"Hola",s6b1c4fb634461e7c:"Mes anterior",s6b6fa877ec1e6968:"Xatejar amb el professional",s6c81d42670932f93:"Actualitzar",s6c8f5482ca260f12:"Desactivar el meu vídeo",s6e2423db05f36856:"Petició de cita",s6e25df2eb545bd15:"S'ha desconnectat el teu micròfon",s6ecdc22accc55af7:"Videoconferència",s70258a0040dd9e19:"Tornar a la sala d'espera",s705f4bd8bc8e04d8:"Falten les credencials de pagament. Torna enrere i torna-ho a provar.",s718177442a7447b2:"Cita amb un especialista en menys de 72 hores",s73cad78d8a3c39c2:"Prescripció",s74d279557a302d3b:"Cal accés a la càmera i al micròfon per continuar",s74d7a739b6ab651d:"Històric",s757fef148e0c94c6:"Disponibilitat",s76cc1ab93796ec1a:"Cal que el teu metge et pugui veure i escoltar correctament",s7703dcdbc4523cc1:"Càmera apagada",s77320b73fdd9cc40:"Sortir",s775370fdb0af1546:"Data de naixement",s77c2b712a9813175:"Demanar una nova cita",s77f8e4bee88d44aa:a`${0} de ${1}`,s7907902da8916212:"El professional et trucarà al número que indiques en aquest camp.",s79854b89bc902296:"El teu metge va amb retard",s7a274496f9ab2127:"Aquest servei requereix permisos de càmera i micròfon",s7a4afa2542ec3c4b:"No detectem so al teu micròfon",s7aa3cd94d51825fc:"No hi ha professionals disponibles per a l'especialitat seleccionada. Si us plau, torna a intentar-ho en un altre moment o selecciona una altra especialitat.",s7af26e861bb6f905:"Falta l'identificador de passarel·la de Google Pay",s7bffe26dcdde86e6:"Activar càmera",s7fd8da9511b66dd4:"Pots adjuntar imatges o documentació addicional (analítiques, resultats de proves, etc.) perquè les avaluï el metge",s83c6ce869a2bbaa7:"(1 és molt dolent, 5 és excel·lent)",s8447efe79d058943:"Import pagat",s8448c4c98a91015a:"S'ha tallat la teva connexió. No tanquis aquesta pantalla, estem tornant a connectar amb el teu metge.",s8581adc786786298:"Format d'arxiu no suportat",s858bcc60b38165e8:"Tanca Teams, Zoom o altres apps amb vídeo i prem Reintentar. També pots entrar sense càmera.",s862ca980b16911d0:"Xateja amb el professional",s866bf01d2dfbb429:"El teu metge ja sap que ets aquí",s8a2611ae3b31da01:"Massa comprovacions seguides. Torna-ho a provar d'aquí a uns minuts.",s8b2a50d9373caa83:"Càmera ocupada",s8bf3ce91eaca57dd:"No tanquis ni recarreguis la pàgina: la trucada començarà sola.",s8c18dbf02590a72e:"Codi de promoció aplicat",s8c467c951c6cc2ea:"Inestable",s8cce15c931017937:"Tornar a l'inici",s8e7a6119525dc7c9:a`Ho sentim, com falten menys de ${0} minuts per a la teva cita no la podem modificar.`,s9005845c358db9da:"No hem pogut descarregar el document.",s92f34d487d1d0355:"Promoció",s94626d2ffd70f075:"Codi de promoció validat correctament",s9485002916b81a21:"Escriure al metge per xat",s9536695467bcf9c4:"Aquesta cita ja ha passat, per la qual cosa no es pot anul·lar.",s96474eac63a69381:"Anar al xat",s96ceb408923a7ab1:a`Nº COL. ${0}`,s970d59d6d88e7e6c:"No es pot iniciar el pagament",s979ee14368bf1505:"Xateja amb mi",s9802dd10b2c2f760:"Enviar",s984a4c18d85b4ec1:a`${0} h`,s99898f495319cd49:"Aquest missatge ha estat eliminat",s9a068f93c6af8245:"S'ha perdut la connexió",s9c309154722f8e06:"Carregant el portal de pagament",s9cabdaf42f04afee:"Introdueix el codi",s9cbf16425cadadb1:"Si us plau, intenta-ho de nou més tard.",s9d22fa67943fdc4c:"Consulta telefònica",s9dba52b7b16b202f:"Activar micròfon",s9eaed0a2d9b653d7:"Avís",sa00e726e1e7e46a9:"Afegir codi de promoció",sa1254ab0351bb259:"Sol·licitar permisos",sa27f38ad9db3bc4f:"Asesor comercial",sa2f0d08e080ce96a:"Comprovant la connexió…",sa2fe3f3b565f15f4:"Cancel·lar",sa3f595a2b96e4050:"La teva connexió és inestable",sa4186d5e26cab4bb:"Pàgina no trobada",sa474374a8ef54444:"Sense càmera",sa497ebaaeb251035:"Repetir cita",sa79d4b4e8bafc1e8:"Només àudio",sa7ac0f309d07ff18:"No hem trobat cap càmera",sa7de4334479674c6:"Modificar cita",sa82bc40dafbe3256:a`Cita agendada de ${0}`,sa83d79734eb60ee3:"Aplicar",sa86d729f62b39f99:"Unir-se a la videoconferència",sa87d2c48a52b2617:"No tens documentació",sab964c37a0934399:"No s'ha pogut carregar Google Pay. Comprova la configuració del lloc web i torna-ho a provar.",sac2728ace11e5f4b:"Especialitat*",sadc5ede25dd6e126:"El professional t'enviarà un missatge per poder coordinar la cita. Assegura't de tenir bona cobertura i poder atendre en el horari escollit.",sae8f7ac5552b2af1:"Quan faltin 10 minuts per a la teva consulta, podràs accedir a la videoconferència",saf3fa52e70e3e40e:"No hem pogut tornar a connectar amb el teu metge. Prem «Tornar a entrar» per intentar-ho de nou, o escriu-li pel xat.",saf63dc4c8601ec8c:"a",safe333e385f371ff:"Verificant el teu pagament...",saff3019e8a8c5f98:"Dilluns",sb01184796ad3832e:"Com t'ha anat la cita?",sb0cd10d56f81b27a:"Triar càmera",sb0dd05da1d56e9bd:a`Connectat i metge avisat. Esperant que ${0} entri`,sb22eb7683fe5810a:"Has denegat els permisos de càmera i micròfon del teu dispositiu. Segueix la guia del teu navegador per activar-los.",sb410a3509b92a90c:"Tens algun comentari sobre la consulta?",sb490d16c5d12949b:"Has bloquejat la càmera",sb49dc4c5edae9d4e:"Valoració de la consulta",sb5387e21dc21422b:"Cita modificada",sb621415007181c43:"Mes següent",sb73394814d122852:"Si el teu metge ha generat alguna documentació, podràs veure-la i descarregar-la aquí, des de la secció de documentació, el teu correu o el xat.",sb865e3500257795b:"Triar micròfon",sb882f28c9b20052e:"Cita confirmada",sba98cf8b2a7dfca4:"Ahir",sbbee712c4900abc2:"No hem pogut iniciar el pagament",sbc0be90393c87447:a`Resum de la cita per a ${0}`,sbcf081de432a2172:"Veure detalls",sbcfc05bdb868b383:"Receta",sbd07d1f779e482ae:"No hem pogut confirmar el teu pagament",sbd9803cceb34513a:"Iniciar xat amb assessor comercial",sbda1cf7b293e17d2:"Pujar arxiu",sbfadf182c2f13852:"Càmera connectada",sc0bfacfa9af70ac5:"Reintentar",sc27e7c4850fc5a34:a`Ho sentim, com falten menys de ${0} hores per a la teva cita no la podem anul·lar.`,sc3bb7ea72886e4d0:"Documents recents",sc3bf631702aa18a3:"Activa-la als ajustos del teu navegador o entra només amb àudio.",sc3c7734c15d2a045:"Explica'ns com va anar l'atenció o si vas tenir cap problema amb la videotrucada…",sc43929cc6582a185:"Veure agenda completa",sc4edf6a4e0157d4e:"Properes cites",sc68411ea183300d5:"Metge avisat",sc6f816a96e8578ff:"Ho sentim, aquesta cita ja no es pot anul·lar.",sc7cf2be40c8614fa:a`Ho sentim, com falten menys de ${0} minuts per a la teva cita no la podem anul·lar.`,sca0e87aae6bde276:"Va passar algun problema?",sca4bd395e3148194:"Confirmar cancel·lació",sca90bc30758f9082:"La pàgina que estàs buscant ha estat eliminada, renombrada o pot que no existeixi.",scb3381c0ce888983:"No hem pogut tornar a connectar. La teva cita continua en peu: prem «Tornar a la sala d'espera» per intentar-ho de nou.",scba599c5c882e7e7:"Continuem només amb àudio per la teva connexió. El vídeo tornarà tot sol quan millori.",scbe4c6673872bda5:"Telèfon",sce29e337ebd75277:"Chat amb suport",scf469737e1670fd4:"Pàgina següent",scf9f1b5bf0a43218:"S'ha desconnectat la teva càmera. Continues amb àudio",scfc7f5c5f41936dc:"Les meves cites",scfc93cd1d8289036:"Pots fer la consulta només amb àudio. Si tens una càmera externa, connecta-la i apareixerà aquí.",sd02ff3e502d3183a:"Càmera",sd1f44f1a8bc20e67:"Correu electrònic",sd24922a2783f286e:"Dimecres",sd2a8fc66c53c1a27:"Ometre",sd4beaeb9a1b1fed5:"Dates anteriors",sd812eb30f385776d:"Completa el teu perfil",sd853d3bcf5341b59:"Veure més",sda962b28e9110c82:"Realitza la cerca en el teu quadre mèdic digital",sdb7004e477873574:"Consulta anul·lada correctament",sdbebe3be1bdd7513:"Obre els ajustos del teu navegador",sdd963b1b2ce9a1f5:a`El professional et trucarà al ${0} en el horari seleccionat. Assegura't de tenir bona cobertura i poder atendre en el horari escollit.`,sde6f937517b11768:"Cap càmera",sde993da26c048f19:"Traumatologia, ginecologia, endocrinologia, digestiva o psiquiatria",sdea72adbb302f075:"Micròfon funcionant",sdee32ae81ca0d6d8:"Afegeix al calendari",sdfa80cd9f207b410:"ara",se00b081edccfae39:"Dates següents",se07ea9607704c5ad:"Canviar codi",se090f7226b372a4a:"Si la cita no s'ha pogut fer, pots",se0c7cc77f86aa8a0:"Cognoms",se17f2b402ecea2e1:"Import a devolver",se18fa3ef98e155de:"Preparant Google Pay…",se1cce5af3e9bb6ee:"S'ha produït un error en l'enviament de l'arxiu",se1cf783f86c53031:"Dimarts",se26c5f7daec0b0fd:"Si continua malament, desactiva el teu vídeo: la veu necessita molta menys connexió.",se35ee07ad073f51a:"Ajuda amb la trucada",se45e6f6f3428ad50:a`Enllaç a la cita: ${0}`,se5a09223256f98db:"Aquest camp és obligatori",se5c20a2b44f1fa17:"Obrir xat",se5f9264155b99909:"S'ha produït un problema en verificar l'estat del teu pagament. Si us plau, contacta amb el suport si el càrrega s'ha realitzat.",se92e438da4e7099f:a`Ho sentim, com falten menys de ${0} hores per a la teva cita no la podem modificar.`,sea11fd8a12559bc5:"Cita prèvia:",seb6739450e8d9c8d:"¿Segur que vols cancel·lar aquesta cita? Se t'devolverà el import pagat en un termini de 5-10 dies hàbils.",seb850e89f9ff58e8:"Propera cita",sed750da423170d47:"Resultats per a:",sed836a96c3b5d523:"Portal de pagament",sed8ec5e3c64fa25d:"Total",sed97e90642983578:"Continuar al pagament",sedb2092dda465ea1:"DNI/NIE",sedbca9676f07a51f:"Modalitat de la cita*",see7c0a7b5b6ebbc5:"Utilitza el xat per enviar el motiu de consulta, documents o imatges",sefc0dd68776c9466:"Qüestionari preconsulta",sf0638d3fc50964d2:"Escull una altra data",sf0695a0a125ae748:"Confirmar",sf199b210440b7c5f:"Consulta finalitzada",sf1bda2fb90e8217e:"La connexió del teu metge és inestable. No cal que facis res.",sf313108d7f1175df:"El teu metge va amb una mica de retard",sf3457daf057bff15:"tornar a la sala d'espera.",sf484a0e20a7829ac:"T'enviarem un enllaç al correu electrònic indicat quan sigui el moment de connectar-te a la videoconferència. Assegura't de tenir bona connexió a internet i un dispositiu amb càmera i micròfon.",sf48d12e7ae207023:"Especialitat",sf4c035b2ecb5ac2e:"Canviar",sf63a72ff4116c6a9:"Descarregar document",sf79def1749a7e999:"Desactivar micròfon",sf9705e1c4e82c017:"No s'ha pogut enviar el qüestionari",sfa6bc28a7faedc92:"Nova cita d'especialitats digitals",sfac5734d03595135:"Veure-les totes",sfc63af0362cfb78b:"Falta l'identificador de comerç de Google Pay",sfd51ca4e1b145054:"No s'ha pogut reservar aquest horari. Si us plau, seleccioneu un altre.",sff337500b69abf7f:"El metge està finalitzant la gestió de la teva consulta. Actualitza en uns minuts per veure si tens documentació.",sffbc330c8a19f838:"Veure menys",sc6a6d42245892254:"Falta el identificador de comercio de Apple Pay",s3da77e69fe62cb2a:"No se ha podido cargar Apple Pay. Comprueba la configuración del sitio e inténtalo de nuevo.",se1dd5d211b5b00e4:"Apple Pay no está disponible",s7e8b7a5acbdf83ed:"Preparando Apple Pay…",sc8271ba819299b59:"Comprobando Apple Pay…",sf32cd04f9a848ee2:"Pagar con Apple Pay",s57e95bc3afddfeb0:"Para pagar con Apple Pay, escanea el código QR con tu iPhone (iOS 18 o posterior) y confirma el pago.",sfbfb2a1dc8c3f636:"Esta consulta no se puede pagar aquí",s50247070c73385c2:"Por favor, contacta con soporte para poder continuar.",s6a796114fe45025d:a`${0}, ${1} h${2}`,s35d601992fe66fed:"Confirmando tu pago",s5370521b92483bf3:"No cierres, vuelvas atrás ni actualices la ventana; esto puede tardar unos momentos.",s77bf41039c589159:"Tu pago no se ha completado",s0e850d0fec6daf7d:"El pago ha sido rechazado y no hemos creado la cita. No se te ha cobrado nada: puedes volver a reservar desde el inicio.",s4007fa55a28f1f73:"Ese horario ya no está disponible",s0089e78f42dfd1a4:"Otro paciente ha reservado esa cita mientras completabas el pago, así que no hemos podido crearla.",saeefd0d6fb204a80:"Te hemos devuelto el importe automáticamente; puede tardar unos días en reflejarse en tu cuenta.",se478d6710916dadf:"No hemos podido devolverte el importe automáticamente. Escríbenos y lo resolvemos:",sf9e6fbadcce256d0:"Ha ocurrido un error",sa24acad3b1338788:"No hemos podido confirmar tu pago. Por favor, inténtalo de nuevo más tarde.",s8bbbd679ddb50d3b:"Si se te ha cobrado sin una cita confirmada, contacta con nuestro equipo en",s1dec877628213eef:"Tus citas",se0c593aac5e172e6:"Accede, modifica o anula tus citas.",s230b0bee447e61a5:"Ver mis citas"};export{e as templates};
@@ -0,0 +1 @@
1
+ const e="https://checkout.mediquo.com";function s(s){const r=new URL(`${e}/pay`);r.searchParams.set("api_key",s.apiKey),r.searchParams.set("env",s.env),r.searchParams.set("locale",s.locale),r.searchParams.set("payable_reference",s.payableReference.trim());const t=s.mode??"embed";r.searchParams.set("mode",t),s.framedByHost&&"embed"===t&&r.searchParams.set("frame","host");const n=[["discount_code",s.discountCode?.trim()],["amount",s.amount],["currency",s.currency],["country",s.country],["label",s.label],["methods",s.methods?.join(",")],["success_url",s.successUrl],["error_url",s.errorUrl]];for(const[e,s]of n)s&&r.searchParams.set(e,s);const a=new URLSearchParams({token:s.token}),o=s.consultationReason?.trim();return o&&a.set("consultation_reason",o),r.hash=a.toString(),r.toString()}const r="https://stripe-checkout.mediquo.com",t=new Set([e,r]),n=new Set(["cancelled","merchant","authorize"]),a=new Set(["auth","session","timeout","unsupported","expired"]);function o(e){return"string"==typeof e?e:""}function c(e){if(e&&"object"==typeof e){const s=e;return"mediquo:payment:resize"===s.type&&"number"==typeof s.height?{type:"resize",height:s.height}:null}if("string"!=typeof e)return null;let s;try{s=JSON.parse(e)}catch{return null}const r=s?.payload??{};switch(s?.type){case"success":{const e=o(r.reference);return e?{type:"success",sessionId:o(r.sessionId),reference:e}:{type:"error",reason:"unavailable"}}case"denied":return{type:"denied",sessionId:o(r.sessionId)};case"granted":return{type:"granted"};case"error":{const e="string"!=typeof(t=r.reason)?"session":n.has(t)?null:a.has(t)?t:"unavailable"===t||"unconfigured"===t||"stripe_unconfigured"===t||"not_found"===t||"result_unavailable"===t?"unavailable":"session";return e?{type:"error",reason:e}:null}default:return null}var t}function u(e,s){return!!s&&e.source===s&&t.has(e.origin)}export{r as S,s as b,u as i,c as p};