@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.
- package/README.md +386 -0
- package/dist/chunks/addDays-CdyO-PRI.js +1 -0
- package/dist/chunks/addSeconds-fO5orJrt.js +1 -0
- package/dist/chunks/api-chat-client-CcYgqPdC.js +1 -0
- package/dist/chunks/api-client-context-BXGqBAlO.js +1 -0
- package/dist/chunks/apple-pay-outcomes-D8hSE_oM.js +1 -0
- package/dist/chunks/appointment-details-Blo6OsLN.js +1 -0
- package/dist/chunks/appointment-details-KL9fK6vG.d.ts +23 -0
- package/dist/chunks/blob-to-base64-CUL1trde.js +1 -0
- package/dist/chunks/ca_ES-BHS8BUwp.js +1 -0
- package/dist/chunks/checkout-bridge-BFpVxNww.js +1 -0
- package/dist/chunks/chunk-5EJXDIGT-Bb4_pfDr.js +1 -0
- package/dist/chunks/chunk-6CCJWPGL-TiaqZaPV.js +1 -0
- package/dist/chunks/chunk-BUV4MGML-CkhBbfUu.js +1 -0
- package/dist/chunks/chunk-FUCSYDW7-Duj5hy8S.js +1 -0
- package/dist/chunks/chunk-NIAGR3ZC-BDlNUZa1.js +1 -0
- package/dist/chunks/chunk-RCFIJTXZ-C6Ir0-sM.js +1 -0
- package/dist/chunks/chunk-S5RWG6G2-CQJ38pW6.js +1 -0
- package/dist/chunks/chunk-Y4EKUX25-Bix9r5ry.js +1 -0
- package/dist/chunks/chunk-YTQUGGS3-DH0H7ld7.js +1 -0
- package/dist/chunks/class-map-CXGDNDhW.js +1 -0
- package/dist/chunks/consume-CovVqBjI.js +1 -0
- package/dist/chunks/context-consumer-ESdICVAb.js +1 -0
- package/dist/chunks/context-request-event-Dfydf1ub.js +1 -0
- package/dist/chunks/create-component-BB-6Gu6l.js +1 -0
- package/dist/chunks/create-context-DqP79qjF.js +1 -0
- package/dist/chunks/custom-element-CiOhPWP1-DPpsGZrV.js +1 -0
- package/dist/chunks/custom-element-D2ziPxYE.js +1 -0
- package/dist/chunks/de_DE-CveFSuUP.js +1 -0
- package/dist/chunks/default-IpEn36CA.d.ts +5 -0
- package/dist/chunks/directive-DrycXrFV.js +1 -0
- package/dist/chunks/directive-helpers-m2qHStQ1.js +1 -0
- package/dist/chunks/document.model.d-DIzMiOmd.d.ts +6 -0
- package/dist/chunks/documentation-view-CAU1T5j3.js +1 -0
- package/dist/chunks/en_US-B_aQeYjm.js +1 -0
- package/dist/chunks/ensure-context-root-DbdqwnKB.js +1 -0
- package/dist/chunks/external-JLtsAfi6.js +1 -0
- package/dist/chunks/format-tMwfQwDf.js +1 -0
- package/dist/chunks/get-appointment-query-DuHrjd8L.js +1 -0
- package/dist/chunks/get-organization-setup-query-De7eM6V3.js +1 -0
- package/dist/chunks/get-patient-profile-query-D9btgcxl.js +1 -0
- package/dist/chunks/get-schedule-services-query-Io2aQ_7G.js +1 -0
- package/dist/chunks/if-defined-DgEoHV04.js +1 -0
- package/dist/chunks/index-BO2YvuaV.d.ts +54 -0
- package/dist/chunks/index-BeyZqqE9.d.ts +31 -0
- package/dist/chunks/index-BkDanNQg.js +1 -0
- package/dist/chunks/index-BlRNICIU.js +1 -0
- package/dist/chunks/index-CSn2VnHN.js +1 -0
- package/dist/chunks/index-Cp5_a_ei.js +329 -0
- package/dist/chunks/index-Cu-DpEFM.js +1 -0
- package/dist/chunks/index-DTEtqjQF.d.ts +15 -0
- package/dist/chunks/index-DoKSSg_l.js +1 -0
- package/dist/chunks/index-DwlJg2um.d.ts +187 -0
- package/dist/chunks/index-IcMN_Zy_.js +1 -0
- package/dist/chunks/index-Nf3nZ9O3.d.ts +16 -0
- package/dist/chunks/index-_XIb963s.js +1 -0
- package/dist/chunks/index-mf2T4jWX.js +1 -0
- package/dist/chunks/index-ov4Ad6vl.d.ts +55 -0
- package/dist/chunks/index-xi0bxKot.js +341 -0
- package/dist/chunks/index.d-k8r5vUZn.d.ts +3353 -0
- package/dist/chunks/index.d-yyTprZdj.d.ts +84 -0
- package/dist/chunks/isBefore-DBi1CiNR.js +1 -0
- package/dist/chunks/keyed-c1C5T7e_.js +1 -0
- package/dist/chunks/lit-element-B5-nYi7k.js +1 -0
- package/dist/chunks/localized-decorator-BlOuLhym.js +1 -0
- package/dist/chunks/login-token-task-KxmMdqVo.js +1 -0
- package/dist/chunks/mq-chat-room-CwN_aR5x.js +1 -0
- package/dist/chunks/mq-chat-room-D2O_3Zur.d.ts +292 -0
- package/dist/chunks/mq-layout-D8Mak16a.d.ts +21 -0
- package/dist/chunks/mq-layout-qMP-lpxw.js +1 -0
- package/dist/chunks/mq-next-appointments-CZ1eKA8t.js +1 -0
- package/dist/chunks/mq-professional-presence-sync-Cw8kVtpC.d.ts +22 -0
- package/dist/chunks/mq-recent-documents-C2_iUYKT.js +1 -0
- package/dist/chunks/mq-schedule-9rEQK6SJ.js +1 -0
- package/dist/chunks/mq-support-chat-DWz3EZ9j.js +1 -0
- package/dist/chunks/mq-unread-count-sync-BviIsMJy.d.ts +22 -0
- package/dist/chunks/mq-videocall-CcRWCujw.js +870 -0
- package/dist/chunks/mutation-controller-CR2qcqhH.js +1 -0
- package/dist/chunks/next-appointment-card-DMCNzLUc.js +1 -0
- package/dist/chunks/next-appointment-card-Dhu45fRq.d.ts +123 -0
- package/dist/chunks/parseISO-CEksKisk.js +1 -0
- package/dist/chunks/price-DU3YLTpk.js +1 -0
- package/dist/chunks/price.d-CwLosdAN.d.ts +10 -0
- package/dist/chunks/professional-overview-QVHl_ITk.d.ts +26 -0
- package/dist/chunks/professional-overview-yVZgXRCU.js +1 -0
- package/dist/chunks/property-C1CmBSnw.js +1 -0
- package/dist/chunks/provide-BwI4DDGF.js +1 -0
- package/dist/chunks/pt_PT-D1CvMEpH.js +1 -0
- package/dist/chunks/query-CeeutdfT.js +1 -0
- package/dist/chunks/query-controller-B1byDHlF.js +1 -0
- package/dist/chunks/refund-cancel-policy-DoMzcLlL.js +1 -0
- package/dist/chunks/runtime-Bg1WXVCx.js +1 -0
- package/dist/chunks/schemas.d-b6_AekBb.d.ts +145 -0
- package/dist/chunks/state-Br45Av8Z.js +1 -0
- package/dist/chunks/style-map-MoXKugLp.js +1 -0
- package/dist/chunks/task-BYPV1iNw.js +1 -0
- package/dist/chunks/telemetry-client-DA2_SZBC.js +1 -0
- package/dist/env.d.ts +21 -0
- package/dist/env.js +1 -0
- package/dist/events.d.ts +134 -0
- package/dist/events.js +1 -0
- package/dist/i18n.d.ts +11 -0
- package/dist/i18n.js +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1 -0
- package/dist/mq-api-client-provider.d.ts +39 -0
- package/dist/mq-api-client-provider.js +1 -0
- package/dist/mq-apple-pay-checkout.d.ts +94 -0
- package/dist/mq-apple-pay-checkout.js +1 -0
- package/dist/mq-appointment-checkout.d.ts +65 -0
- package/dist/mq-appointment-checkout.js +1 -0
- package/dist/mq-appointment-documentation.d.ts +59 -0
- package/dist/mq-appointment-documentation.js +1 -0
- package/dist/mq-chat-room.d.ts +23 -0
- package/dist/mq-chat-room.js +1 -0
- package/dist/mq-checkout.d.ts +111 -0
- package/dist/mq-checkout.js +1 -0
- package/dist/mq-dashboard.d.ts +96 -0
- package/dist/mq-dashboard.js +1 -0
- package/dist/mq-documents.d.ts +96 -0
- package/dist/mq-documents.js +1 -0
- package/dist/mq-google-pay-checkout.d.ts +129 -0
- package/dist/mq-google-pay-checkout.js +1 -0
- package/dist/mq-immediate-videocall-checkout.d.ts +51 -0
- package/dist/mq-immediate-videocall-checkout.js +1 -0
- package/dist/mq-my-appointments.d.ts +172 -0
- package/dist/mq-my-appointments.js +1 -0
- package/dist/mq-next-appointments.d.ts +59 -0
- package/dist/mq-next-appointments.js +1 -0
- package/dist/mq-payment-poller.d.ts +71 -0
- package/dist/mq-payment-poller.js +1 -0
- package/dist/mq-professional-presence-sync.d.ts +32 -0
- package/dist/mq-professional-presence-sync.js +1 -0
- package/dist/mq-query-client-provider.d.ts +20 -0
- package/dist/mq-query-client-provider.js +1 -0
- package/dist/mq-recent-documents.d.ts +49 -0
- package/dist/mq-recent-documents.js +1 -0
- package/dist/mq-schedule-success.d.ts +100 -0
- package/dist/mq-schedule-success.js +4 -0
- package/dist/mq-schedule.d.ts +812 -0
- package/dist/mq-schedule.js +1 -0
- package/dist/mq-session-provider.d.ts +28 -0
- package/dist/mq-session-provider.js +1 -0
- package/dist/mq-socket-provider.d.ts +103 -0
- package/dist/mq-socket-provider.js +1 -0
- package/dist/mq-support-chat.d.ts +97 -0
- package/dist/mq-support-chat.js +1 -0
- package/dist/mq-terms-and-conditions.d.ts +27 -0
- package/dist/mq-terms-and-conditions.js +1 -0
- package/dist/mq-theme-provider.d.ts +33 -0
- package/dist/mq-theme-provider.js +1 -0
- package/dist/mq-unread-count-sync.d.ts +24 -0
- package/dist/mq-unread-count-sync.js +1 -0
- package/dist/mq-videocall.d.ts +698 -0
- package/dist/mq-videocall.js +1 -0
- package/dist/react/mq-api-client-provider.d.ts +26 -0
- package/dist/react/mq-api-client-provider.js +2 -0
- package/dist/react/mq-apple-pay-checkout.d.ts +35 -0
- package/dist/react/mq-apple-pay-checkout.js +2 -0
- package/dist/react/mq-appointment-checkout.d.ts +39 -0
- package/dist/react/mq-appointment-checkout.js +2 -0
- package/dist/react/mq-appointment-documentation.d.ts +43 -0
- package/dist/react/mq-appointment-documentation.js +2 -0
- package/dist/react/mq-chat-room.d.ts +47 -0
- package/dist/react/mq-chat-room.js +2 -0
- package/dist/react/mq-checkout.d.ts +38 -0
- package/dist/react/mq-checkout.js +2 -0
- package/dist/react/mq-dashboard.d.ts +62 -0
- package/dist/react/mq-dashboard.js +2 -0
- package/dist/react/mq-documents-page.d.ts +35 -0
- package/dist/react/mq-documents-page.js +2 -0
- package/dist/react/mq-documents.d.ts +32 -0
- package/dist/react/mq-documents.js +2 -0
- package/dist/react/mq-google-pay-checkout.d.ts +40 -0
- package/dist/react/mq-google-pay-checkout.js +2 -0
- package/dist/react/mq-immediate-videocall-checkout.d.ts +31 -0
- package/dist/react/mq-immediate-videocall-checkout.js +2 -0
- package/dist/react/mq-my-appointments.d.ts +51 -0
- package/dist/react/mq-my-appointments.js +2 -0
- package/dist/react/mq-next-appointments.d.ts +43 -0
- package/dist/react/mq-next-appointments.js +2 -0
- package/dist/react/mq-payment-poller.d.ts +37 -0
- package/dist/react/mq-payment-poller.js +2 -0
- package/dist/react/mq-professional-presence-sync.d.ts +13 -0
- package/dist/react/mq-professional-presence-sync.js +2 -0
- package/dist/react/mq-query-client-provider.d.ts +24 -0
- package/dist/react/mq-query-client-provider.js +2 -0
- package/dist/react/mq-recent-documents.d.ts +32 -0
- package/dist/react/mq-recent-documents.js +2 -0
- package/dist/react/mq-schedule-success.d.ts +54 -0
- package/dist/react/mq-schedule-success.js +2 -0
- package/dist/react/mq-schedule.d.ts +70 -0
- package/dist/react/mq-schedule.js +2 -0
- package/dist/react/mq-session-provider.d.ts +19 -0
- package/dist/react/mq-session-provider.js +2 -0
- package/dist/react/mq-socket-provider.d.ts +20 -0
- package/dist/react/mq-socket-provider.js +2 -0
- package/dist/react/mq-support-chat.d.ts +50 -0
- package/dist/react/mq-support-chat.js +2 -0
- package/dist/react/mq-terms-and-conditions.d.ts +34 -0
- package/dist/react/mq-terms-and-conditions.js +2 -0
- package/dist/react/mq-theme-provider.d.ts +19 -0
- package/dist/react/mq-theme-provider.js +2 -0
- package/dist/react/mq-toast-container.d.ts +17 -0
- package/dist/react/mq-toast-container.js +2 -0
- package/dist/react/mq-unread-count-sync.d.ts +13 -0
- package/dist/react/mq-unread-count-sync.js +2 -0
- package/dist/react/mq-videocall.d.ts +76 -0
- package/dist/react/mq-videocall.js +2 -0
- package/dist/theme.d.ts +218 -0
- package/dist/theme.js +11 -0
- package/dist/toast.d.ts +4 -0
- package/dist/toast.js +1 -0
- package/dist/ui/back-link.d.ts +24 -0
- package/dist/ui/back-link.js +1 -0
- package/dist/ui/icons/alert-circle-icon.d.ts +6 -0
- package/dist/ui/icons/alert-circle-icon.js +1 -0
- package/dist/ui/icons/annotation-question-icon.d.ts +6 -0
- package/dist/ui/icons/annotation-question-icon.js +1 -0
- package/dist/ui/icons/arrow-narrow-left-icon.d.ts +6 -0
- package/dist/ui/icons/arrow-narrow-left-icon.js +1 -0
- package/dist/ui/icons/arrow-right-icon.d.ts +6 -0
- package/dist/ui/icons/arrow-right-icon.js +1 -0
- package/dist/ui/icons/briefcase-icon.d.ts +6 -0
- package/dist/ui/icons/briefcase-icon.js +1 -0
- package/dist/ui/icons/calendar-icon.d.ts +6 -0
- package/dist/ui/icons/calendar-icon.js +1 -0
- package/dist/ui/icons/chat-bubble-icon.d.ts +6 -0
- package/dist/ui/icons/chat-bubble-icon.js +1 -0
- package/dist/ui/icons/check-circle-icon.d.ts +6 -0
- package/dist/ui/icons/check-circle-icon.js +1 -0
- package/dist/ui/icons/check-double-icon.d.ts +6 -0
- package/dist/ui/icons/check-double-icon.js +1 -0
- package/dist/ui/icons/check-icon.d.ts +6 -0
- package/dist/ui/icons/check-icon.js +1 -0
- package/dist/ui/icons/chevron-down-icon.d.ts +6 -0
- package/dist/ui/icons/chevron-down-icon.js +1 -0
- package/dist/ui/icons/chevron-left-icon.d.ts +6 -0
- package/dist/ui/icons/chevron-left-icon.js +1 -0
- package/dist/ui/icons/chevron-right-icon.d.ts +6 -0
- package/dist/ui/icons/chevron-right-icon.js +1 -0
- package/dist/ui/icons/clock-icon.d.ts +6 -0
- package/dist/ui/icons/clock-icon.js +1 -0
- package/dist/ui/icons/dots-horizontal-icon.d.ts +6 -0
- package/dist/ui/icons/dots-horizontal-icon.js +1 -0
- package/dist/ui/icons/download-02-icon.d.ts +6 -0
- package/dist/ui/icons/download-02-icon.js +1 -0
- package/dist/ui/icons/download-icon.d.ts +6 -0
- package/dist/ui/icons/download-icon.js +1 -0
- package/dist/ui/icons/file-icon.d.ts +6 -0
- package/dist/ui/icons/file-icon.js +1 -0
- package/dist/ui/icons/heartbeat-icon.d.ts +5 -0
- package/dist/ui/icons/heartbeat-icon.js +1 -0
- package/dist/ui/icons/help-circle-icon.d.ts +6 -0
- package/dist/ui/icons/help-circle-icon.js +1 -0
- package/dist/ui/icons/info-circle-outine-icon.d.ts +6 -0
- package/dist/ui/icons/info-circle-outine-icon.js +1 -0
- package/dist/ui/icons/message-bubble-icon.d.ts +6 -0
- package/dist/ui/icons/message-bubble-icon.js +1 -0
- package/dist/ui/icons/message-square-icon.d.ts +6 -0
- package/dist/ui/icons/message-square-icon.js +1 -0
- package/dist/ui/icons/mic-icon.d.ts +6 -0
- package/dist/ui/icons/mic-icon.js +1 -0
- package/dist/ui/icons/mic-off-icon.d.ts +6 -0
- package/dist/ui/icons/mic-off-icon.js +1 -0
- package/dist/ui/icons/phone-icon.d.ts +6 -0
- package/dist/ui/icons/phone-icon.js +1 -0
- package/dist/ui/icons/refresh-ccw-icon.d.ts +7 -0
- package/dist/ui/icons/refresh-ccw-icon.js +1 -0
- package/dist/ui/icons/refresh-icon.d.ts +6 -0
- package/dist/ui/icons/refresh-icon.js +1 -0
- package/dist/ui/icons/settings-icon.d.ts +6 -0
- package/dist/ui/icons/settings-icon.js +1 -0
- package/dist/ui/icons/spinner-icon.d.ts +6 -0
- package/dist/ui/icons/spinner-icon.js +1 -0
- package/dist/ui/icons/tag-icon.d.ts +6 -0
- package/dist/ui/icons/tag-icon.js +1 -0
- package/dist/ui/icons/time-left-icon.d.ts +5 -0
- package/dist/ui/icons/time-left-icon.js +1 -0
- package/dist/ui/icons/types.d.ts +10 -0
- package/dist/ui/icons/types.js +1 -0
- package/dist/ui/icons/upload-icon.d.ts +6 -0
- package/dist/ui/icons/upload-icon.js +1 -0
- package/dist/ui/icons/video-icon.d.ts +6 -0
- package/dist/ui/icons/video-icon.js +1 -0
- package/dist/ui/icons/video-off-icon.d.ts +6 -0
- package/dist/ui/icons/video-off-icon.js +1 -0
- package/dist/ui/icons/volume-icon.d.ts +6 -0
- package/dist/ui/icons/volume-icon.js +1 -0
- package/dist/ui/icons/x-icon.d.ts +6 -0
- package/dist/ui/icons/x-icon.js +1 -0
- package/dist/ui/mq-avatar.d.ts +37 -0
- package/dist/ui/mq-avatar.js +1 -0
- package/dist/ui/mq-badge.d.ts +18 -0
- package/dist/ui/mq-badge.js +4 -0
- package/dist/ui/mq-button.d.ts +37 -0
- package/dist/ui/mq-button.js +1 -0
- package/dist/ui/mq-calendar.d.ts +68 -0
- package/dist/ui/mq-calendar.js +1 -0
- package/dist/ui/mq-callout.d.ts +23 -0
- package/dist/ui/mq-callout.js +1 -0
- package/dist/ui/mq-card.d.ts +18 -0
- package/dist/ui/mq-card.js +1 -0
- package/dist/ui/mq-checkbox.d.ts +41 -0
- package/dist/ui/mq-checkbox.js +1 -0
- package/dist/ui/mq-clamped-text.d.ts +46 -0
- package/dist/ui/mq-clamped-text.js +1 -0
- package/dist/ui/mq-dialog.d.ts +98 -0
- package/dist/ui/mq-dialog.js +1 -0
- package/dist/ui/mq-floating-bubble.d.ts +42 -0
- package/dist/ui/mq-floating-bubble.js +1 -0
- package/dist/ui/mq-input.d.ts +42 -0
- package/dist/ui/mq-input.js +1 -0
- package/dist/ui/mq-page-title.d.ts +31 -0
- package/dist/ui/mq-page-title.js +1 -0
- package/dist/ui/mq-rating.d.ts +30 -0
- package/dist/ui/mq-rating.js +1 -0
- package/dist/ui/mq-select.d.ts +83 -0
- package/dist/ui/mq-select.js +1 -0
- package/dist/ui/mq-skeleton.d.ts +18 -0
- package/dist/ui/mq-skeleton.js +1 -0
- package/dist/ui/mq-tabs.d.ts +76 -0
- package/dist/ui/mq-tabs.js +106 -0
- package/dist/ui/mq-text-button.d.ts +39 -0
- package/dist/ui/mq-text-button.js +1 -0
- package/dist/ui/mq-textarea.d.ts +38 -0
- package/dist/ui/mq-textarea.js +1 -0
- package/dist/ui/mq-time-slot-picker.d.ts +85 -0
- package/dist/ui/mq-time-slot-picker.js +1 -0
- package/dist/ui/mq-toast.d.ts +20 -0
- package/dist/ui/mq-toast.js +1 -0
- package/dist/ui/mq-unread-badge.d.ts +15 -0
- package/dist/ui/mq-unread-badge.js +1 -0
- 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};
|