@mediquo/elements 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +61 -5
  2. package/dist/chunks/action-unavailable-message-BIgsXk9u.js +1 -0
  3. package/dist/chunks/api-chat-client-pGZWREjK.js +1 -0
  4. package/dist/chunks/api-client-context-V1UAGtKW.js +1 -0
  5. package/dist/chunks/{apple-pay-outcomes-BpcbdGfO.js → apple-pay-outcomes-BONpT54d.js} +1 -1
  6. package/dist/chunks/appointment-action-unavailable-dialog-BYse3uIa.d.ts +54 -0
  7. package/dist/chunks/{appointment-card-skeleton-B7dKtGv0.d.ts → appointment-card-skeleton-C3mV8Ky1.d.ts} +5 -3
  8. package/dist/chunks/appointment-card-skeleton-CAQmlCTm.js +1 -0
  9. package/dist/chunks/appointment-details-DXLBQnPN.js +1 -0
  10. package/dist/chunks/chunk-6CCJWPGL-TiaqZaPV.js +1 -0
  11. package/dist/chunks/{chunk-BUV4MGML-Bn3JWCAv.js → chunk-BUV4MGML-CkhBbfUu.js} +1 -1
  12. package/dist/chunks/chunk-HN62IQ7S-xbkIy7k_.js +1 -0
  13. package/dist/chunks/chunk-Y4EKUX25-QqMl3eiq.js +1 -0
  14. package/dist/chunks/consume-CovVqBjI.js +1 -0
  15. package/dist/chunks/{chunk-6CCJWPGL-DlOpbEYH.js → context-consumer-ESdICVAb.js} +1 -1
  16. package/dist/chunks/documentation-view-GZI-DC3e.js +1 -0
  17. package/dist/chunks/{get-appointment-query-lJe75hGS.js → get-appointment-query-C-gTTuiQ.js} +1 -1
  18. package/dist/chunks/{get-organization-setup-query-DxHNY0w8.js → get-organization-setup-query-Dr1cXnHl.js} +1 -1
  19. package/dist/chunks/{get-patient-documents-query-D1SfC_k_.js → get-patient-documents-query-NC9xCa_N.js} +1 -1
  20. package/dist/chunks/{get-patient-profile-query-DiU2f_QH.js → get-patient-profile-query-4AO6xvVn.js} +1 -1
  21. package/dist/chunks/{get-schedule-services-query-Ckvz9Fqh.js → get-schedule-services-query-Fzvb9ug9.js} +1 -1
  22. package/dist/chunks/index-6gxzoTLM.js +1 -0
  23. package/dist/chunks/{index-Ca-l41nB.js → index-CXb3gOFA.js} +1 -1
  24. package/dist/chunks/index-CoZKmhwT.js +1 -0
  25. package/dist/chunks/{index-63zQSBy4.js → index-CyteNROM.js} +1 -1
  26. package/dist/chunks/{index-czcKClL3.d.ts → index-KhJ8hC0H.d.ts} +8 -0
  27. package/dist/chunks/index-PGYfkbm6.js +1 -0
  28. package/dist/chunks/index.d-Bl682CAX.d.ts +2977 -0
  29. package/dist/chunks/login-token-task-Yib__6a9.js +1 -0
  30. package/dist/chunks/{mq-chat-room-CRPruRJD.d.ts → mq-chat-room-t3j3Tq4o.d.ts} +12 -227
  31. package/dist/chunks/mq-layout-D1j50tKd.d.ts +51 -0
  32. package/dist/chunks/mq-layout-L3TlCxI0.js +1 -0
  33. package/dist/chunks/provide-BwI4DDGF.js +1 -0
  34. package/dist/chunks/query-controller-BlO1Ax65.js +1 -0
  35. package/dist/chunks/refund-cancel-policy-CcsJ-pMx.js +1 -0
  36. package/dist/chunks/{schemas.d-D7bCe24u.d.ts → schemas.d-b6_AekBb.d.ts} +12 -1
  37. package/dist/chunks/telemetry-client-CoWay8es.js +1 -0
  38. package/dist/env.js +1 -1
  39. package/dist/i18n.js +1 -1
  40. package/dist/mq-api-client-provider.d.ts +39 -0
  41. package/dist/mq-api-client-provider.js +1 -0
  42. package/dist/mq-apple-pay-checkout.d.ts +12 -0
  43. package/dist/mq-apple-pay-checkout.js +1 -1
  44. package/dist/mq-appointment-checkout.d.ts +3 -1
  45. package/dist/mq-appointment-checkout.js +1 -1
  46. package/dist/mq-appointment-documentation.d.ts +13 -5
  47. package/dist/mq-appointment-documentation.js +1 -1
  48. package/dist/mq-chat-room.d.ts +5 -2
  49. package/dist/mq-chat-room.js +1 -1
  50. package/dist/mq-checkout.d.ts +21 -1
  51. package/dist/mq-checkout.js +1 -1
  52. package/dist/mq-dashboard.d.ts +22 -122
  53. package/dist/mq-dashboard.js +1 -1
  54. package/dist/mq-documents.d.ts +14 -4
  55. package/dist/mq-documents.js +1 -1
  56. package/dist/mq-google-pay-checkout.d.ts +12 -0
  57. package/dist/mq-google-pay-checkout.js +1 -1
  58. package/dist/mq-immediate-videocall-checkout.d.ts +3 -0
  59. package/dist/mq-immediate-videocall-checkout.js +1 -1
  60. package/dist/mq-my-appointments.d.ts +11 -7
  61. package/dist/mq-my-appointments.js +1 -1
  62. package/dist/mq-next-appointments.d.ts +15 -5
  63. package/dist/mq-next-appointments.js +1 -1
  64. package/dist/mq-payment-poller.d.ts +11 -0
  65. package/dist/mq-payment-poller.js +1 -1
  66. package/dist/mq-professional-presence-sync.d.ts +1 -0
  67. package/dist/mq-professional-presence-sync.js +1 -1
  68. package/dist/mq-query-client-provider.d.ts +4 -1
  69. package/dist/mq-query-client-provider.js +1 -1
  70. package/dist/mq-recent-documents.d.ts +10 -25
  71. package/dist/mq-recent-documents.js +1 -1
  72. package/dist/mq-schedule-success.d.ts +12 -2
  73. package/dist/mq-schedule-success.js +2 -2
  74. package/dist/mq-schedule.d.ts +25 -221
  75. package/dist/mq-schedule.js +1 -1
  76. package/dist/mq-session-provider.d.ts +1 -1
  77. package/dist/mq-session-provider.js +1 -1
  78. package/dist/mq-socket-provider.js +1 -1
  79. package/dist/mq-support-chat.d.ts +13 -3
  80. package/dist/mq-support-chat.js +1 -1
  81. package/dist/mq-terms-and-conditions.d.ts +5 -1
  82. package/dist/mq-terms-and-conditions.js +1 -1
  83. package/dist/mq-unread-count-sync.d.ts +1 -0
  84. package/dist/mq-unread-count-sync.js +1 -1
  85. package/dist/mq-videocall.d.ts +13 -4
  86. package/dist/mq-videocall.js +1 -1
  87. package/dist/react/mq-api-client-provider.d.ts +26 -0
  88. package/dist/react/mq-api-client-provider.js +2 -0
  89. package/dist/react/mq-apple-pay-checkout.d.ts +4 -1
  90. package/dist/react/mq-apple-pay-checkout.js +1 -1
  91. package/dist/react/mq-appointment-checkout.d.ts +3 -1
  92. package/dist/react/mq-appointment-checkout.js +1 -1
  93. package/dist/react/mq-appointment-documentation.d.ts +6 -5
  94. package/dist/react/mq-appointment-documentation.js +1 -1
  95. package/dist/react/mq-chat-room.d.ts +5 -2
  96. package/dist/react/mq-chat-room.js +1 -1
  97. package/dist/react/mq-checkout.d.ts +4 -1
  98. package/dist/react/mq-checkout.js +1 -1
  99. package/dist/react/mq-dashboard.d.ts +11 -11
  100. package/dist/react/mq-dashboard.js +1 -1
  101. package/dist/react/mq-documents-page.d.ts +5 -4
  102. package/dist/react/mq-documents-page.js +1 -1
  103. package/dist/react/mq-documents.d.ts +5 -4
  104. package/dist/react/mq-documents.js +1 -1
  105. package/dist/react/mq-google-pay-checkout.d.ts +4 -1
  106. package/dist/react/mq-google-pay-checkout.js +1 -1
  107. package/dist/react/mq-immediate-videocall-checkout.d.ts +3 -0
  108. package/dist/react/mq-immediate-videocall-checkout.js +1 -1
  109. package/dist/react/mq-my-appointments.d.ts +10 -8
  110. package/dist/react/mq-my-appointments.js +1 -1
  111. package/dist/react/mq-next-appointments.d.ts +10 -7
  112. package/dist/react/mq-next-appointments.js +1 -1
  113. package/dist/react/mq-payment-poller.d.ts +4 -0
  114. package/dist/react/mq-payment-poller.js +1 -1
  115. package/dist/react/mq-professional-presence-sync.js +1 -1
  116. package/dist/react/mq-query-client-provider.d.ts +1 -0
  117. package/dist/react/mq-query-client-provider.js +1 -1
  118. package/dist/react/mq-recent-documents.d.ts +4 -3
  119. package/dist/react/mq-recent-documents.js +1 -1
  120. package/dist/react/mq-schedule-success.d.ts +5 -2
  121. package/dist/react/mq-schedule-success.js +1 -1
  122. package/dist/react/mq-schedule.d.ts +4 -2
  123. package/dist/react/mq-schedule.js +1 -1
  124. package/dist/react/mq-session-provider.d.ts +1 -1
  125. package/dist/react/mq-session-provider.js +1 -1
  126. package/dist/react/mq-socket-provider.js +1 -1
  127. package/dist/react/mq-support-chat.d.ts +5 -2
  128. package/dist/react/mq-support-chat.js +1 -1
  129. package/dist/react/mq-terms-and-conditions.d.ts +5 -1
  130. package/dist/react/mq-terms-and-conditions.js +1 -1
  131. package/dist/react/mq-toast-container.js +1 -1
  132. package/dist/react/mq-unread-count-sync.js +1 -1
  133. package/dist/react/mq-videocall.d.ts +6 -5
  134. package/dist/react/mq-videocall.js +1 -1
  135. package/dist/theme.js +1 -1
  136. package/dist/ui/mq-calendar.js +1 -1
  137. package/dist/ui/mq-clamped-text.js +1 -1
  138. package/package.json +5 -1
  139. package/dist/chunks/action-unavailable-message-CRLimFj5.js +0 -1
  140. package/dist/chunks/api-chat-client-BiiYnU-b.js +0 -1
  141. package/dist/chunks/appointment-action-unavailable-dialog-Da2IATYj.d.ts +0 -321
  142. package/dist/chunks/appointment-card-skeleton-ZfTAElLq.js +0 -1
  143. package/dist/chunks/appointment-details-Bm3Uuw2g.js +0 -1
  144. package/dist/chunks/chunk-Y4EKUX25-CqL3lLdx.js +0 -1
  145. package/dist/chunks/consume-BhoQNO_8.js +0 -1
  146. package/dist/chunks/context-provider--AKuwfs9.js +0 -1
  147. package/dist/chunks/document.model.d-DIzMiOmd.d.ts +0 -6
  148. package/dist/chunks/documentation-view-CTnpWIxq.js +0 -1
  149. package/dist/chunks/i18n-formats-EgnwLxKt.js +0 -1
  150. package/dist/chunks/index-CSJzkkRA.d.ts +0 -28
  151. package/dist/chunks/index-CZ9HtP96.js +0 -1
  152. package/dist/chunks/index-DMiowcMQ.js +0 -1
  153. package/dist/chunks/index-DZjrAnPq.js +0 -1
  154. package/dist/chunks/login-token-task-BI-L2zSV.js +0 -1
  155. package/dist/chunks/mq-layout-BndHxkbb.js +0 -1
  156. package/dist/chunks/mq-layout-D8Mak16a.d.ts +0 -21
  157. package/dist/chunks/provide-D2fnEhT2.js +0 -1
  158. package/dist/chunks/query-controller-D7jBX4X7.js +0 -1
  159. package/dist/chunks/refund-cancel-policy-DV6bzqcu.js +0 -1
  160. package/dist/chunks/schemas.d-Bss7CeCZ.d.ts +0 -53
  161. package/dist/chunks/telemetry-client-Bkbn48Dd.js +0 -1
package/README.md CHANGED
@@ -79,6 +79,7 @@ Mount these as ancestors of the features that need them:
79
79
  | `mq-query-client-provider` | `@mediquo/elements/mq-query-client-provider` | Data-fetching features (`mq-schedule`, `mq-chat-room`, …) |
80
80
  | `mq-socket-provider` | `@mediquo/elements/mq-socket-provider` | Realtime features (`mq-chat-room`) |
81
81
  | `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 |
82
+ | `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 |
82
83
 
83
84
  Set `mq-session-provider`'s `session` as a **property** (it's the login-token
84
85
  response object from your auth exchange, not a string attribute):
@@ -101,12 +102,65 @@ response object from your auth exchange, not a string attribute):
101
102
 
102
103
  In React, pass it as a prop: `<MqSessionProvider session={loginTokenResponse}>`.
103
104
 
105
+ ## Organizations
106
+
107
+ `api-key` identifies the organization an element speaks for. Each element builds
108
+ its **own** API client from the `api-key` it was given and keeps it for its whole
109
+ lifetime, so requests always carry the key that element was configured with —
110
+ whatever other elements mount, update or unmount alongside it.
111
+
112
+ Cached data is scoped by that key too. Two organizations never read each other's
113
+ cache, and changing an element's `api-key` in place shows the new organization's
114
+ data, not the previous one's.
115
+
116
+ ### Several organizations on one page
117
+
118
+ Supported, with no extra setup. Give each element its own `api-key`:
119
+
120
+ ```html
121
+ <mq-query-client-provider>
122
+ <!-- clinic booking -->
123
+ <mq-schedule api-key="CLINIC_KEY" token="..."></mq-schedule>
124
+
125
+ <!-- your tenant's support chat, at the same time -->
126
+ <mq-support-chat api-key="TENANT_KEY" token="..."></mq-support-chat>
127
+ </mq-query-client-provider>
128
+ ```
129
+
130
+ One `mq-query-client-provider` for the whole session is fine — the cache is
131
+ partitioned by organization inside it. You do not need to remount it, clear the
132
+ cache, or key elements by organization.
133
+
134
+ ### Elements without an `api-key`
135
+
136
+ > **Upgrading:** `mq-my-appointments`, `mq-unread-count-sync` and
137
+ > `mq-professional-presence-sync` used to inherit whatever organization the last
138
+ > element on the page happened to configure. That is what made two organizations
139
+ > unsafe. Wrap them in `mq-api-client-provider` — it is the only integration
140
+ > change this release asks for.
141
+
142
+ Some features take no `api-key` of their own (`mq-my-appointments`,
143
+ `mq-unread-count-sync`, `mq-professional-presence-sync`), and some accept one but
144
+ are often embedded (`mq-chat-room`). Wrap those in `mq-api-client-provider` to say
145
+ which organization the subtree belongs to:
146
+
147
+ ```html
148
+ <mq-api-client-provider api-key="CLINIC_KEY" token="...">
149
+ <mq-my-appointments></mq-my-appointments>
150
+ </mq-api-client-provider>
151
+ ```
152
+
153
+ An element inside a provider that is given its own `api-key` uses its own; one
154
+ given only a `token` binds that token to the organization it inherited. Mount one
155
+ provider per organization — they nest and coexist.
156
+
104
157
  ## Background sync
105
158
 
106
159
  Two headless elements keep the shared query cache in sync with realtime socket
107
160
  events, so unread badges and presence indicators update without refetching.
108
- Mount each once, anywhere under the query-client + socket providers; they render
109
- nothing:
161
+ Mount each once, under the query-client + socket providers and inside the
162
+ `mq-api-client-provider` for the organization whose data they keep fresh; they
163
+ render nothing:
110
164
 
111
165
  | Element | Import | Keeps in sync |
112
166
  | --- | --- | --- |
@@ -116,9 +170,11 @@ nothing:
116
170
  ```html
117
171
  <mq-query-client-provider>
118
172
  <mq-socket-provider>
119
- <mq-unread-count-sync></mq-unread-count-sync>
120
- <mq-professional-presence-sync></mq-professional-presence-sync>
121
- <!-- feature elements whose cached data these keep fresh -->
173
+ <mq-api-client-provider api-key="YOUR_API_KEY" token="...">
174
+ <mq-unread-count-sync></mq-unread-count-sync>
175
+ <mq-professional-presence-sync></mq-professional-presence-sync>
176
+ <!-- feature elements whose cached data these keep fresh -->
177
+ </mq-api-client-provider>
122
178
  </mq-socket-provider>
123
179
  </mq-query-client-provider>
124
180
  ```
@@ -0,0 +1 @@
1
+ import{s as t}from"./chunk-6CCJWPGL-TiaqZaPV.js";import{_ as e,c as i}from"./custom-element-D2ziPxYE.js";import{Q as o}from"./chunk-RCFIJTXZ-C6Ir0-sM.js";import{A as n}from"./api-client-context-V1UAGtKW.js";import{M as a}from"./mutation-controller-CR2qcqhH.js";import{h as s,f as r}from"./price-DU3YLTpk.js";import{getLocale as l}from"../i18n.js";import"../ui/mq-button.js";import"../ui/mq-dialog.js";import{c as p}from"./consume-CovVqBjI.js";import{m,s as c}from"./runtime-Bg1WXVCx.js";import{l as d}from"./localized-decorator-BlOuLhym.js";import{a as h,i as u,x as f}from"./lit-element-DiWJYFwC.js";import{n as v}from"./property-scuRaFcM.js";function g(e,i){return{queryKey:t(e,"appointments",i),queryFn:()=>e.appointments.getAppointments(i)}}let b=class CancelAppointmentConfirmationDialog extends h{constructor(){super(...arguments),this.open=!1,this.cancelAppointmentMutation=new a(this,{mutationFn:async t=>this.apiClient.appointments.cancelAppointment(t),onSuccess:()=>{this.queryClientContext?.invalidateQueries(),this.dispatchEvent(new CustomEvent("success",{bubbles:!0,composed:!0}))}}),this.handleClose=()=>{this.open=!1,this.dispatchEvent(new CustomEvent("cancel",{bubbles:!0,composed:!0}))},this.handleDismissClick=()=>{this.open=!1,this.dispatchEvent(new CustomEvent("cancel",{bubbles:!0,composed:!0}))},this.handleConfirmClick=()=>{this.cancelAppointmentMutation.run({id:this.appointmentId})}}static{this.styles=u`:host{display:contents}h2{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);margin:0}p{font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--text-sm--line-height);font-weight:var(--font-weight-normal);margin:0}.subheading-payable{font-size:var(--text-base);line-height:22px}.price-rows{display:flex;flex-direction:column;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:var(--text-sm--line-height);color:var(--color-card-foreground);width:100%;margin-bottom:var(--sp-4)}.price-row{display:flex;align-items:center;justify-content:space-between;min-height:34px;gap:var(--sp-2)}.price-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-4);justify-content:flex-end;flex-wrap:wrap}`}render(){const t=l(),e=this.price,i=s(e),o=this.cancelAppointmentMutation.isPending;if(i){const i=r(e,t),n=`-${i}`;return f`<mq-dialog .open="${this.open}" @mq-close="${this.handleClose}" dismissable><h2 slot="heading">${m("Confirmar cancelación")}</h2><p slot="subheading" class="subheading-payable">${m("¿Seguro que quieres cancelar esta cita? Se te devolverá el importe pagado en un plazo de 5-10 días hábiles.")}</p><div><div class="price-rows"><div class="price-row"><span>${m("Importe pagado")}</span> <span>${i}</span></div><div class="price-row"><span>${m("Importe a devolver")}</span> <span>${n}</span></div></div><div class="actions"><mq-button variant="outline" ?disabled="${o}" @click="${this.handleDismissClick}">${m("Volver")}</mq-button><mq-button variant="primary" ?disabled="${o}" @click="${this.handleConfirmClick}">${m("Confirmar")}</mq-button></div></div></mq-dialog>`}return f`<mq-dialog .open="${this.open}" @mq-close="${this.handleClose}" dismissable><h2 slot="heading">${m("Confirmar cancelación")}</h2><p slot="subheading">${m("¿Seguro que quieres cancelar esta cita?")}</p><div><div class="actions"><mq-button variant="outline" ?disabled="${o}" @click="${this.handleDismissClick}">${m("Cancelar")}</mq-button><mq-button variant="primary" ?disabled="${o}" @click="${this.handleConfirmClick}">${m("Confirmar")}</mq-button></div></div></mq-dialog>`}};e([p({context:n,subscribe:!0})],b.prototype,"apiClient",void 0),e([v({type:Boolean,reflect:!0})],b.prototype,"open",void 0),e([p({context:o,subscribe:!0})],b.prototype,"queryClientContext",void 0),e([v({type:String})],b.prototype,"appointmentId",void 0),e([v({type:Object})],b.prototype,"price",void 0),b=e([d(),i("cancel-appointment-confirmation-dialog")],b);let y=class AppointmentActionUnavailableDialog extends h{constructor(){super(...arguments),this.open=!1,this.heading="",this.message="",this.handleClose=()=>{this.open=!1,this.dispatchEvent(new CustomEvent("close",{bubbles:!0,composed:!0}))}}static{this.styles=u`:host{display:contents}mq-dialog::part(dialog){max-width:343px;min-width:0}h2{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);margin:0}p{font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--text-sm--line-height);font-weight:var(--font-weight-normal);margin:0}.actions{display:flex;margin-top:var(--sp-4)}`}render(){return f`<mq-dialog .open="${this.open}" @mq-close="${this.handleClose}" dismissable><h2 slot="heading">${this.heading}</h2><p slot="subheading">${this.message}</p><div class="actions"><mq-button variant="primary" fullwidth @click="${this.handleClose}">${m("Volver")}</mq-button></div></mq-dialog>`}};function x(t){const{action:e,refundPolicySeconds:i}=t,o=null!=i&&i<3600,n=Math.ceil((i??0)/60),a=Math.ceil((i??0)/3600);return m(0===(o?n:a)?"modify"===e?"Esta cita ya ha pasado, por lo que no se puede modificar.":"Esta cita ya ha pasado, por lo que no se puede anular.":"modify"===e?o?c`Lo sentimos, como faltan menos de ${n} minutos para tu cita no podemos modificarla.`:c`Lo sentimos, como faltan menos de ${a} horas para tu cita no podemos modificarla.`:o?c`Lo sentimos, como faltan menos de ${n} minutos para tu cita no podemos anularla.`:c`Lo sentimos, como faltan menos de ${a} horas para tu cita no podemos anularla.`)}e([v({type:Boolean,reflect:!0})],y.prototype,"open",void 0),e([v({type:String})],y.prototype,"heading",void 0),e([v({type:String})],y.prototype,"message",void 0),y=e([d(),i("appointment-action-unavailable-dialog")],y);export{g as a,x as g};
@@ -0,0 +1 @@
1
+ import{a as e}from"./chunk-HN62IQ7S-xbkIy7k_.js";import{z as t,o as n,s as i,n as r,a as s,e as o,i as a,b as l,r as c,u,c as d,d as p,f as h,l as f,g as m}from"./external-CJj32K_p.js";import{i as g}from"./isBefore-CPpTogxo.js";import{env as b}from"../env.js";var y=t.enum(["pending","expired","accepted","inCall","declined","cancelled","finished","free_of_charge","owed","unpaid","reporting"]),_=y.enum,v=t.enum(["videocall","chat","phonecall"]),w=v.enum,C=t.object({id:t.string().uuid(),room_id:t.string(),channel:v,consultation_short_url:t.string().url().nullable(),call_id:t.string().url(),duration:t.number(),from:t.object({hash:t.string(),name:t.string().nullable(),avatar:t.string().url().nullable(),speciality:t.string().nullable(),collegiate_number:t.string().nullable(),is_dismissed:t.boolean(),languages:t.array(t.string()),description:t.string().nullable()}),to:t.object({id:t.number(),hash:t.string(),name:t.string().nullable(),avatar:t.string().url().nullable(),is_dismissed:t.boolean()}),speciality_id:t.number().nullable(),has_chat_in_appointment:t.boolean().optional(),created_at:t.string(),status:y,seconds_to_open:t.number().nonnegative(),start_date:t.string(),started_at:t.string().nullable(),expires_at:t.string().nullable(),consultation_reason:t.string().nullable(),preconsultation_documents:t.array(t.object({file_path:t.string(),file_name:t.string(),id:t.string().uuid()})).nullable(),service_id:t.string().uuid().nullable(),price:t.number().nullable().optional(),currency:t.string().nullable().optional(),discount_amount:t.number().nullable().optional()}),E=t.enum(["appointment","chat","immediate"]),R=E.enum;function S(e){return 0===e.seconds_to_open}function O(t){if(!t)return!1;const n=new Date,i=e(t);return g(i,n)}var A=o(["available","reserved"]),T=A.enum,j=n({id:i().uuid(),channel:v,duration:r(),starts_at:i(),finishes_at:i(),professional:n({id:i().uuid(),name:i()}),services:s(n({id:i().uuid(),name:i()})),speciality:n({id:r(),price:n({amount:r(),currency:i()}).nullish()}),status:A}),x=t.array(t.object({id:t.string().uuid(),name:t.string(),code:t.string(),channel:v,price:t.object({amount:t.number(),currency:t.string()}).nullable()})),P=t.array(t.object({id:t.string().uuid(),avatar:t.string().url().nullable(),description:t.string().nullable(),collegiate_number:t.string().nullable(),languages:t.array(t.string()),name:t.string(),slots:t.array(j),speciality:t.object({id:t.number()}),tax_id:t.string().nullable()}));t.object({speciality_id:t.number(),organization_schedule_service_id:t.string().uuid(),closest_slots_days:t.number().optional(),slots_per_day:t.number().optional()}),t.object({service_id:t.string().uuid(),professional_hash:t.string().uuid(),starts_at:t.string(),finishes_at:t.string(),rescheduling_appointment_id:t.string().uuid().optional()});var k=t.array(j),N=t.array(t.object({id:t.number(),name:t.string(),code:t.string().nullish(),price:t.object({amount:t.number(),currency:t.string()}).nullable()}));t.object({slot_id:t.string().uuid(),service_id:t.string().uuid().optional(),speciality_id:t.number().optional()});var U=j;n({consultation_id:i(),consultation_type:E,rating:r().int().min(1).max(5),comment:i().nullable().optional()});var L=n({rating:r().int().optional(),comment:i().nullable().optional()}).passthrough();n({file:a(File)});var F=n({url:i().url()});function D(e){return n({data:s(e),meta:n({current_page:r(),last_page:r(),per_page:r(),total:r()})})}var B=t.enum(["prescription","report","diagnosticTestPrescription"]),I=B.enum,$=t.enum(["published","draft"]);$.enum;var q=t.object({document_id:t.string().uuid(),document_type:B,name:t.string(),professional:t.object({speciality_id:t.number()}),status:$,url:t.string().url(),created_at:t.string()}),z=n({hash:i(),profile:n({first_name:i().nullable(),last_name:i().nullable(),birth_date:i().nullable(),gender:o(["male","female"]).nullable(),email:i().nullable(),phone_prefix:i().nullable(),phone:i().nullable(),billing:n({tax_id:i().nullable(),address:i().nullable(),country_code:i().nullable(),region:i().nullable(),postal_code:i().nullable()})})});function M(e){const t=e?.profile;return`${t?.first_name??""} ${t?.last_name??""}`.trim()}function K(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)}t.object({appointmentId:t.string()});var H=C;t.object({callId:t.string()});var J=t.object({session_id:t.string(),session_token:t.string()});t.object({professional_hash:t.string(),consultation_id:t.string(),consultation_type:t.enum(["appointment"])}),t.object({professional_hash:t.string(),consultation_id:t.string(),consultation_type:t.enum(["appointment"])}),t.object({appointment_id:t.string()});var W=t.array(q);t.object({url:t.string().url()}),t.object({first_name:z.shape.profile.shape.first_name,last_name:z.shape.profile.shape.last_name,tax_id:z.shape.profile.shape.billing.shape.tax_id,birth_date:z.shape.profile.shape.birth_date,gender:z.shape.profile.shape.gender.optional(),email:z.shape.profile.shape.email,phone_prefix:z.shape.profile.shape.phone_prefix,phone:z.shape.profile.shape.phone,terms_accepted:t.boolean(),privacy_accepted:t.boolean()}),t.object({patient_hash:t.string(),page:t.number().optional(),per_page:t.number().optional()});var V=D(q);n({slot_id:i().uuid(),service_id:i().uuid(),specialty_id:i(),consultation_reason:i().optional(),preconsultation_documents:s(n({file_path:i(),file_name:i()})).optional(),discount_code:i().optional(),return_url:i().url().optional()});var X=n({id:i(),percent_off:r(),code:i(),after_discount_amount:r().nullable()}),G=n({id:i(),percent_off:r(),code:i(),name:i().nullish()}),Q={Addon:"addon",Stripe:"stripe"},Z=n({session_id:i(),payment_link:i().url(),provider:l(Q).optional()});n({video_call_schedule_id:i()});var Y=Z;n({professional_hash:i().uuid()});var ee=Z,te={Paid:"paid",Unpaid:"unpaid",Denied:"denied"},ne=n({status:l(te),consultation_id:i(),consultation_type:i()});n({order_id:i(),validation_url:i().url()});var ie=c(u());n({order_id:i(),token:i()});var re=n({data:n({status:l(te),consultation_id:i(),consultation_type:i().optional()})});n({order_id:i(),token:i()});var se=n({data:n({status:l(te),consultation_id:i(),consultation_type:i().optional()})}),oe=t.array(t.object({id:t.number(),name:t.string(),code:t.string()})),ae=t.object({primary_color:t.string().nullable(),logo:t.string().nullable(),favicon:t.string().nullable(),support_professional:t.object({hash:t.string().nullable()}).optional(),home:t.object({title:t.string().nullable(),description:t.string().nullable(),image_url:t.string().nullable()}),appointments:t.object({reserve_conditions:t.string().nullable(),seconds_before_start_to_refund_on_cancel:t.number().nullable(),has_nps:t.boolean().optional(),has_chat_in_appointment:t.boolean().optional(),has_discount_coupons_show:t.boolean().optional(),payment_provider:t.nativeEnum(Q).nullish()}),legal_consent:t.object({terms_url:t.string().nullable(),privacy_url:t.string().nullable()})}),le=o(["monday","tuesday","wednesday","thursday","friday","saturday","sunday","working_week","weekend","all_week"]);le.enum;var ce=n({days_of_week:le,from_time:i(),to_time:i()});n({hash:i().uuid()});var ue=n({hash:i().uuid(),active_absence:n({id:i().uuid(),finishes_at:i()}).nullable(),avatar:i().url().nullable(),collegiate_number:i().nullable(),description:i().nullable(),is_available:d(),name:i(),overview:i().nullable(),schedule_description:i().nullable(),speciality_id:r().nullable(),status:o(["online","offline"]),title:i().nullable(),chat_schedule:n({channel:v,duration:r(),name:i(),timezone:i(),starts_at:i(),gaps:s(ce)}).nullable()});function de(e){return e.active_absence?"absent":"online"===e.status?"online":"offline"}o(["online","offline","absent"]),n({roomId:r()});var pe=z;n({first_name:i(),last_name:i(),tax_id:i(),birth_date:i(),gender:o(["male","female"]),email:i(),phone_prefix:i(),phone:i(),terms_accepted:d(),privacy_accepted:d()}),n({terms_accepted:d(),privacy_accepted:d(),commercial_accepted:d()}),n({hash:i().uuid()});var he=n({id:r(),hash:i().uuid(),speciality_alias:i(),name:i(),avatar:i().url(),description:i(),collegiate_number:i(),languages:s(i()),centers:s(n({id:i().uuid(),name:i()}))});p([f(1),f(2),f(3)]);var fe={Sent:1,Received:2,Read:3},me=n({roomId:r(),messageId:i().uuid(),string:i(),status:r(),senderType:o(["ordinary","system"]),fromUserHash:i().uuid(),auto:p([f(0),f(1)]),createdAt:i().nullable(),deletedAt:i().nullable(),time:r().nullable()}),ge=n({file_name:i(),file_size:r(),url:i().url(),signed_url:i().url().nullable(),type:o(["uncategorized","voice_note"]),meta:n({duration:r()})}),be=me.extend({type:f("string"),attachment:h()}),ye=me.extend({type:f("file"),attachment:ge}),_e=me.extend({type:f("image"),attachment:ge});n({roomId:r()});var ve=s(p([be,ye,_e]));n({roomId:r()});var we=n({unread_count:r()});n({professional_hash:i()});var Ce=n({room_id:r()});n({status:s(y).optional(),order:n({field:o(["starts_at"]).optional(),direction:o(["asc","desc"]).optional()}).optional(),page:r().optional(),per_page:r().optional()});var Ee=D(n({appointment:n({id:i().uuid(),url:i().url(),starts_at:i(),duration:r(),status:y,channel:v,expires_at:i().nullable(),service_id:i().uuid().nullable(),has_chat_in_appointment:d().optional()}),room:n({id:r()}),price:n({amount:r(),currency:i()}).nullable(),patient:n({hash:i().uuid()}),slots:s(m()),professional:n({hash:i().uuid(),name:i(),avatar:i().url().optional(),description:i().optional(),languages:s(i()),collegiate_number:i().optional()}),speciality:n({id:r(),name:i()})}));n({slot_id:i().uuid(),service_id:i().uuid(),consultation_reason:i().optional(),preconsultation_documents:s(n({file_path:i(),file_name:i()})).optional(),discount_code:i().optional()});var Re=n({appointment:n({id:i().uuid()})});n({id:i().uuid()});var Se=C,Oe=n({file_path:i(),presigned_storage_url:i().url()});n({id:i().uuid(),slot_id:i().uuid(),consultation_reason:i().optional(),preconsultation_documents:s(n({file_path:i(),file_name:i()})).optional()}),n({id:i().uuid()}),n({appointment_id:i().uuid(),consultation_reason:i().optional()}),n({appointment_id:i().uuid(),file_path:i(),file_name:i()}),n({appointment_id:i().uuid(),document_id:i().uuid()}),n({appointmentId:i().uuid()}),t.object({api_key:t.string(),token:t.string()});var Ae=t.object({access_token:t.string(),patient:t.object({hash:t.string(),country_code:t.string(),timezone:t.string(),first_name:t.string(),last_name:t.string().nullable(),name:t.string(),birth_date:t.string().nullable(),email:t.string().email().nullable(),language_code:t.string(),phone:t.string(),phone_prefix:t.string(),tax_id:t.string().nullable(),legal_consent:t.object({accepted_at:t.string().nullable(),last_version_at:t.string().nullable(),terms_url:t.string(),privacy_url:t.string(),has_commercial_communications:t.boolean(),organization_name:t.string()})})});function Te(e,t){return function(){return e.apply(t,arguments)}}const{toString:je}=Object.prototype,{getPrototypeOf:xe}=Object,{iterator:Pe,toStringTag:ke}=Symbol,Ne=(Ue=Object.create(null),e=>{const t=je.call(e);return Ue[t]||(Ue[t]=t.slice(8,-1).toLowerCase())});var Ue;const Le=e=>(e=e.toLowerCase(),t=>Ne(t)===e),Fe=e=>t=>typeof t===e,{isArray:De}=Array,Be=Fe("undefined");function Ie(e){return null!==e&&!Be(e)&&null!==e.constructor&&!Be(e.constructor)&&ze(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const $e=Le("ArrayBuffer");const qe=Fe("string"),ze=Fe("function"),Me=Fe("number"),Ke=e=>null!==e&&"object"==typeof e,He=e=>{if("object"!==Ne(e))return!1;const t=xe(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||ke in e||Pe in e)},Je=Le("Date"),We=Le("File"),Ve=Le("Blob"),Xe=Le("FileList"),Ge=Le("URLSearchParams"),[Qe,Ze,Ye,et]=["ReadableStream","Request","Response","Headers"].map(Le);function tt(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let i,r;if("object"!=typeof e&&(e=[e]),De(e))for(i=0,r=e.length;i<r;i++)t.call(null,e[i],i,e);else{if(Ie(e))return;const r=n?Object.getOwnPropertyNames(e):Object.keys(e),s=r.length;let o;for(i=0;i<s;i++)o=r[i],t.call(null,e[o],o,e)}}function nt(e,t){if(Ie(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 it="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,rt=e=>!Be(e)&&e!==it;const st=(ot="undefined"!=typeof Uint8Array&&xe(Uint8Array),e=>ot&&e instanceof ot);var ot;const at=Le("HTMLFormElement"),lt=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),ct=Le("RegExp"),ut=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),i={};tt(n,(n,r)=>{let s;!1!==(s=t(n,r,e))&&(i[r]=s||n)}),Object.defineProperties(e,i)};const dt=Le("AsyncFunction"),pt=(ht="function"==typeof setImmediate,ft=ze(it.postMessage),ht?setImmediate:ft?(mt=`axios@${Math.random()}`,gt=[],it.addEventListener("message",({source:e,data:t})=>{e===it&&t===mt&&gt.length&&gt.shift()()},!1),e=>{gt.push(e),it.postMessage(mt,"*")}):e=>setTimeout(e));var ht,ft,mt,gt;const bt="undefined"!=typeof queueMicrotask?queueMicrotask.bind(it):"undefined"!=typeof process&&process.nextTick||pt;var yt={isArray:De,isArrayBuffer:$e,isBuffer:Ie,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||ze(e.append)&&("formdata"===(t=Ne(e))||"object"===t&&ze(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&$e(e.buffer),t},isString:qe,isNumber:Me,isBoolean:e=>!0===e||!1===e,isObject:Ke,isPlainObject:He,isEmptyObject:e=>{if(!Ke(e)||Ie(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:Qe,isRequest:Ze,isResponse:Ye,isHeaders:et,isUndefined:Be,isDate:Je,isFile:We,isBlob:Ve,isRegExp:ct,isFunction:ze,isStream:e=>Ke(e)&&ze(e.pipe),isURLSearchParams:Ge,isTypedArray:st,isFileList:Xe,forEach:tt,merge:function e(){const{caseless:t}=rt(this)&&this||{},n={},i=(i,r)=>{const s=t&&nt(n,r)||r;He(n[s])&&He(i)?n[s]=e(n[s],i):He(i)?n[s]=e({},i):De(i)?n[s]=i.slice():n[s]=i};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&tt(arguments[e],i);return n},extend:(e,t,n,{allOwnKeys:i}={})=>(tt(t,(t,i)=>{n&&ze(t)?e[i]=Te(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,o;const a={};if(t=t||{},null==e)return t;do{for(r=Object.getOwnPropertyNames(e),s=r.length;s-- >0;)o=r[s],i&&!i(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==n&&xe(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:Ne,kindOfTest:Le,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(De(e))return e;let t=e.length;if(!Me(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Pe]).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:at,hasOwnProperty:lt,hasOwnProp:lt,reduceDescriptors:ut,freezeMethods:e=>{ut(e,(t,n)=>{if(ze(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const i=e[n];ze(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 De(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:nt,global:it,isContextDefined:rt,isSpecCompliantForm:function(e){return!!(e&&ze(e.append)&&"FormData"===e[ke]&&e[Pe])},toJSONObject:e=>{const t=new Array(10),n=(e,i)=>{if(Ke(e)){if(t.indexOf(e)>=0)return;if(Ie(e))return e;if(!("toJSON"in e)){t[i]=e;const r=De(e)?[]:{};return tt(e,(e,t)=>{const s=n(e,i+1);!Be(s)&&(r[t]=s)}),t[i]=void 0,r}}return e};return n(e,0)},isAsyncFn:dt,isThenable:e=>e&&(Ke(e)||ze(e))&&ze(e.then)&&ze(e.catch),setImmediate:pt,asap:bt,isIterable:e=>null!=e&&ze(e[Pe])};function _t(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)}yt.inherits(_t,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:yt.toJSONObject(this.config),code:this.code,status:this.status}}});const vt=_t.prototype,wt={};["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=>{wt[e]={value:e}}),Object.defineProperties(_t,wt),Object.defineProperty(vt,"isAxiosError",{value:!0}),_t.from=(e,t,n,i,r,s)=>{const o=Object.create(vt);return yt.toFlatObject(e,o,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),_t.call(o,e.message,t,n,i,r),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function Ct(e){return yt.isPlainObject(e)||yt.isArray(e)}function Et(e){return yt.endsWith(e,"[]")?e.slice(0,-2):e}function Rt(e,t,n){return e?e.concat(t).map(function(e,t){return e=Et(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const St=yt.toFlatObject(yt,{},null,function(e){return/^is[A-Z]/.test(e)});function Ot(e,t,n){if(!yt.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const i=(n=yt.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!yt.isUndefined(t[e])})).metaTokens,r=n.visitor||c,s=n.dots,o=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&yt.isSpecCompliantForm(t);if(!yt.isFunction(r))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(yt.isDate(e))return e.toISOString();if(yt.isBoolean(e))return e.toString();if(!a&&yt.isBlob(e))throw new _t("Blob is not supported. Use a Buffer instead.");return yt.isArrayBuffer(e)||yt.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,r){let a=e;if(e&&!r&&"object"==typeof e)if(yt.endsWith(n,"{}"))n=i?n:n.slice(0,-2),e=JSON.stringify(e);else if(yt.isArray(e)&&function(e){return yt.isArray(e)&&!e.some(Ct)}(e)||(yt.isFileList(e)||yt.endsWith(n,"[]"))&&(a=yt.toArray(e)))return n=Et(n),a.forEach(function(e,i){!yt.isUndefined(e)&&null!==e&&t.append(!0===o?Rt([n],i,s):null===o?n:n+"[]",l(e))}),!1;return!!Ct(e)||(t.append(Rt(r,n,s),l(e)),!1)}const u=[],d=Object.assign(St,{defaultVisitor:c,convertValue:l,isVisitable:Ct});if(!yt.isObject(e))throw new TypeError("data must be an object");return function e(n,i){if(!yt.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+i.join("."));u.push(n),yt.forEach(n,function(n,s){!0===(!(yt.isUndefined(n)||null===n)&&r.call(t,n,yt.isString(s)?s.trim():s,i,d))&&e(n,i?i.concat(s):[s])}),u.pop()}}(e),t}function At(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function Tt(e,t){this._pairs=[],e&&Ot(e,this,t)}const jt=Tt.prototype;function xt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Pt(e,t,n){if(!t)return e;const i=n&&n.encode||xt;yt.isFunction(n)&&(n={serialize:n});const r=n&&n.serialize;let s;if(s=r?r(t,n):yt.isURLSearchParams(t)?t.toString():new Tt(t,n).toString(i),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}jt.append=function(e,t){this._pairs.push([e,t])},jt.toString=function(e){const t=e?function(t){return e.call(this,t,At)}:At;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){yt.forEach(this.handlers,function(t){null!==t&&e(t)})}}var kt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Nt={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Tt,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Ut="undefined"!=typeof window&&"undefined"!=typeof document,Lt="object"==typeof navigator&&navigator||void 0,Ft=Ut&&(!Lt||["ReactNative","NativeScript","NS"].indexOf(Lt.product)<0),Dt="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Bt=Ut&&window.location.href||"http://localhost";var It={...Object.freeze({__proto__:null,hasBrowserEnv:Ut,hasStandardBrowserEnv:Ft,hasStandardBrowserWebWorkerEnv:Dt,navigator:Lt,origin:Bt}),...Nt};function $t(e){function t(e,n,i,r){let s=e[r++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=r>=e.length;if(s=!s&&yt.isArray(i)?i.length:s,a)return yt.hasOwnProp(i,s)?i[s]=[i[s],n]:i[s]=n,!o;i[s]&&yt.isObject(i[s])||(i[s]=[]);return t(e,n,i[s],r)&&yt.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])),!o}if(yt.isFormData(e)&&yt.isFunction(e.entries)){const n={};return yt.forEachEntry(e,(e,i)=>{t(function(e){return yt.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),i,n,0)}),n}return null}const qt={transitional:kt,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",i=n.indexOf("application/json")>-1,r=yt.isObject(e);r&&yt.isHTMLForm(e)&&(e=new FormData(e));if(yt.isFormData(e))return i?JSON.stringify($t(e)):e;if(yt.isArrayBuffer(e)||yt.isBuffer(e)||yt.isStream(e)||yt.isFile(e)||yt.isBlob(e)||yt.isReadableStream(e))return e;if(yt.isArrayBufferView(e))return e.buffer;if(yt.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 Ot(e,new It.classes.URLSearchParams,{visitor:function(e,t,n,i){return It.isNode&&yt.isBuffer(e)?(this.append(t,e.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((s=yt.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Ot(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return r||i?(t.setContentType("application/json",!1),function(e,t,n){if(yt.isString(e))try{return(t||JSON.parse)(e),yt.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||qt.transitional,n=t&&t.forcedJSONParsing,i="json"===this.responseType;if(yt.isResponse(e)||yt.isReadableStream(e))return e;if(e&&yt.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 _t.from(e,_t.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:It.classes.FormData,Blob:It.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};yt.forEach(["delete","get","head","post","put","patch"],e=>{qt.headers[e]={}});const zt=yt.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 Mt=Symbol("internals");function Kt(e){return e&&String(e).trim().toLowerCase()}function Ht(e){return!1===e||null==e?e:yt.isArray(e)?e.map(Ht):String(e)}function Jt(e,t,n,i,r){return yt.isFunction(i)?i.call(this,t,n):(r&&(t=n),yt.isString(t)?yt.isString(i)?-1!==t.indexOf(i):yt.isRegExp(i)?i.test(t):void 0:void 0)}let Wt=class AxiosHeaders{constructor(e){e&&this.set(e)}set(e,t,n){const i=this;function r(e,t,n){const r=Kt(t);if(!r)throw new Error("header name must be a non-empty string");const s=yt.findKey(i,r);(!s||void 0===i[s]||!0===n||void 0===n&&!1!==i[s])&&(i[s||t]=Ht(e))}const s=(e,t)=>yt.forEach(e,(e,n)=>r(e,n,t));if(yt.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(yt.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]&&zt[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(yt.isObject(e)&&yt.isIterable(e)){let n,i,r={};for(const t of e){if(!yt.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[i=t[0]]=(n=r[i])?yt.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=Kt(e)){const n=yt.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(yt.isFunction(t))return t.call(this,e,n);if(yt.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Kt(e)){const n=yt.findKey(this,e);return!(!n||void 0===this[n]||t&&!Jt(0,this[n],n,t))}return!1}delete(e,t){const n=this;let i=!1;function r(e){if(e=Kt(e)){const r=yt.findKey(n,e);!r||t&&!Jt(0,n[r],r,t)||(delete n[r],i=!0)}}return yt.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&&!Jt(0,this[r],r,e,!0)||(delete this[r],i=!0)}return i}normalize(e){const t=this,n={};return yt.forEach(this,(i,r)=>{const s=yt.findKey(n,r);if(s)return t[s]=Ht(i),void delete t[r];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(r):String(r).trim();o!==r&&delete t[r],t[o]=Ht(i),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return yt.forEach(this,(n,i)=>{null!=n&&!1!==n&&(t[i]=e&&yt.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[Mt]=this[Mt]={accessors:{}}).accessors,n=this.prototype;function i(e){const i=Kt(e);t[i]||(!function(e,t){const n=yt.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 yt.isArray(e)?e.forEach(i):i(e),this}};function Vt(e,t){const n=this||qt,i=t||n,r=Wt.from(i.headers);let s=i.data;return yt.forEach(e,function(e){s=e.call(n,s,r.normalize(),t?t.status:void 0)}),r.normalize(),s}function Xt(e){return!(!e||!e.__CANCEL__)}function Gt(e,t,n){_t.call(this,e??"canceled",_t.ERR_CANCELED,t,n),this.name="CanceledError"}function Qt(e,t,n){const i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(new _t("Request failed with status code "+n.status,[_t.ERR_BAD_REQUEST,_t.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}Wt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),yt.reduceDescriptors(Wt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),yt.freezeMethods(Wt),yt.inherits(Gt,_t,{__CANCEL__:!0});const Zt=(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,o=0;return t=void 0!==t?t:1e3,function(a){const l=Date.now(),c=i[o];r||(r=l),n[s]=a,i[s]=l;let u=o,d=0;for(;u!==s;)d+=n[u++],u%=e;if(s=(s+1)%e,s===o&&(o=(o+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 o=(t,s=Date.now())=>{r=s,n=null,i&&(clearTimeout(i),i=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-r;a>=s?o(e,t):(n=e,i||(i=setTimeout(()=>{i=null,o(n)},s-a)))},()=>n&&o(n)]}(n=>{const s=n.loaded,o=n.lengthComputable?n.total:void 0,a=s-i,l=r(a);i=s;e({loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:l||void 0,estimated:l&&o&&s<=o?(o-s)/l:void 0,event:n,lengthComputable:null!=o,[t?"download":"upload"]:!0})},n)},Yt=(e,t)=>{const n=null!=e;return[i=>t[0]({lengthComputable:n,total:e,loaded:i}),t[1]]},en=e=>(...t)=>yt.asap(()=>e(...t));var tn=It.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,It.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(It.origin),It.navigator&&/(msie|trident)/i.test(It.navigator.userAgent)):()=>!0,nn=It.hasStandardBrowserEnv?{write(e,t,n,i,r,s){const o=[e+"="+encodeURIComponent(t)];yt.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),yt.isString(i)&&o.push("path="+i),yt.isString(r)&&o.push("domain="+r),!0===s&&o.push("secure"),document.cookie=o.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 rn(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 sn=e=>e instanceof Wt?{...e}:e;function on(e,t){t=t||{};const n={};function i(e,t,n,i){return yt.isPlainObject(e)&&yt.isPlainObject(t)?yt.merge.call({caseless:i},e,t):yt.isPlainObject(t)?yt.merge({},t):yt.isArray(t)?t.slice():t}function r(e,t,n,r){return yt.isUndefined(t)?yt.isUndefined(e)?void 0:i(void 0,e,0,r):i(e,t,0,r)}function s(e,t){if(!yt.isUndefined(t))return i(void 0,t)}function o(e,t){return yt.isUndefined(t)?yt.isUndefined(e)?void 0:i(void 0,e):i(void 0,t)}function a(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:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(e,t,n)=>r(sn(e),sn(t),0,!0)};return yt.forEach(Object.keys({...e,...t}),function(i){const s=l[i]||r,o=s(e[i],t[i],i);yt.isUndefined(o)&&s!==a||(n[i]=o)}),n}var an=e=>{const t=on({},e);let n,{data:i,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:a,auth:l}=t;if(t.headers=a=Wt.from(a),t.url=Pt(rn(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),yt.isFormData(i))if(It.hasStandardBrowserEnv||It.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(n=a.getContentType())){const[e,...t]=n?n.split(";").map(e=>e.trim()).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...t].join("; "))}if(It.hasStandardBrowserEnv&&(r&&yt.isFunction(r)&&(r=r(t)),r||!1!==r&&tn(t.url))){const e=s&&o&&nn.read(o);e&&a.set(s,e)}return t};var ln="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const i=an(e);let r=i.data;const s=Wt.from(i.headers).normalize();let o,a,l,c,u,{responseType:d,onUploadProgress:p,onDownloadProgress:h}=i;function f(){c&&c(),u&&u(),i.cancelToken&&i.cancelToken.unsubscribe(o),i.signal&&i.signal.removeEventListener("abort",o)}let m=new XMLHttpRequest;function g(){if(!m)return;const i=Wt.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());Qt(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 _t("Request aborted",_t.ECONNABORTED,e,m)),m=null)},m.onerror=function(){n(new _t("Network Error",_t.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||kt;i.timeoutErrorMessage&&(t=i.timeoutErrorMessage),n(new _t(t,r.clarifyTimeoutError?_t.ETIMEDOUT:_t.ECONNABORTED,e,m)),m=null},void 0===r&&s.setContentType(null),"setRequestHeader"in m&&yt.forEach(s.toJSON(),function(e,t){m.setRequestHeader(t,e)}),yt.isUndefined(i.withCredentials)||(m.withCredentials=!!i.withCredentials),d&&"json"!==d&&(m.responseType=i.responseType),h&&([l,u]=Zt(h,!0),m.addEventListener("progress",l)),p&&m.upload&&([a,c]=Zt(p),m.upload.addEventListener("progress",a),m.upload.addEventListener("loadend",c)),(i.cancelToken||i.signal)&&(o=t=>{m&&(n(!t||t.type?new Gt(null,e,m):t),m.abort(),m=null)},i.cancelToken&&i.cancelToken.subscribe(o),i.signal&&(i.signal.aborted?o():i.signal.addEventListener("abort",o)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(i.url);b&&-1===It.protocols.indexOf(b)?n(new _t("Unsupported protocol "+b+":",_t.ERR_BAD_REQUEST,e)):m.send(r||null)})};const cn=(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,o();const t=e instanceof Error?e:this.reason;i.abort(t instanceof _t?t:new Gt(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,r(new _t(`timeout ${t} of ms exceeded`,_t.ETIMEDOUT))},t);const o=()=>{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:a}=i;return a.unsubscribe=()=>yt.asap(o),a}},un=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},dn=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()}},pn=(e,t,n,i)=>{const r=async function*(e,t){for await(const n of dn(e))yield*un(n,t)}(e,t);let s,o=0,a=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 a(),void e.close();let s=i.byteLength;if(n){let e=o+=s;n(e)}e.enqueue(new Uint8Array(i))}catch(e){throw a(e),e}},cancel:e=>(a(e),r.return())},{highWaterMark:2})},hn="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,fn=hn&&"function"==typeof ReadableStream,mn=hn&&("function"==typeof TextEncoder?(gn=new TextEncoder,e=>gn.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var gn;const bn=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},yn=fn&&bn(()=>{let e=!1;const t=new Request(It.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),_n=fn&&bn(()=>yt.isReadableStream(new Response("").body)),vn={stream:_n&&(e=>e.body)};var wn;hn&&(wn=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!vn[e]&&(vn[e]=yt.isFunction(wn[e])?t=>t[e]():(t,n)=>{throw new _t(`Response type '${e}' is not supported`,_t.ERR_NOT_SUPPORT,n)})}));const Cn=async(e,t)=>{const n=yt.toFiniteNumber(e.getContentLength());return n??(async e=>{if(null==e)return 0;if(yt.isBlob(e))return e.size;if(yt.isSpecCompliantForm(e)){const t=new Request(It.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return yt.isArrayBufferView(e)||yt.isArrayBuffer(e)?e.byteLength:(yt.isURLSearchParams(e)&&(e+=""),yt.isString(e)?(await mn(e)).byteLength:void 0)})(t)};const En={http:null,xhr:ln,fetch:hn&&(async e=>{let{url:t,method:n,data:i,signal:r,cancelToken:s,timeout:o,onDownloadProgress:a,onUploadProgress:l,responseType:c,headers:u,withCredentials:d="same-origin",fetchOptions:p}=an(e);c=c?(c+"").toLowerCase():"text";let h,f=cn([r,s&&s.toAbortSignal()],o);const m=f&&f.unsubscribe&&(()=>{f.unsubscribe()});let g;try{if(l&&yn&&"get"!==n&&"head"!==n&&0!==(g=await Cn(u,i))){let e,n=new Request(t,{method:"POST",body:i,duplex:"half"});if(yt.isFormData(i)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body){const[e,t]=Yt(g,Zt(en(l)));i=pn(n.body,65536,e,t)}}yt.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 o=_n&&("stream"===c||"response"===c);if(_n&&(a||o&&m)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=s[t]});const t=yt.toFiniteNumber(s.headers.get("content-length")),[n,i]=a&&Yt(t,Zt(en(a),!0))||[];s=new Response(pn(s.body,65536,n,()=>{i&&i(),m&&m()}),e)}c=c||"text";let b=await vn[yt.findKey(vn,c)||"text"](s,e);return!o&&m&&m(),await new Promise((t,n)=>{Qt(t,n,{data:b,headers:Wt.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 _t("Network Error",_t.ERR_NETWORK,e,h),{cause:t.cause||t});throw _t.from(t,t&&t.code,e,h)}})};yt.forEach(En,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Rn=e=>`- ${e}`,Sn=e=>yt.isFunction(e)||null===e||!1===e;var On=e=>{e=yt.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,!Sn(n)&&(i=En[(t=String(n)).toLowerCase()],void 0===i))throw new _t(`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 _t("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Rn).join("\n"):" "+Rn(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return i};function An(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Gt(null,e)}function Tn(e){An(e),e.headers=Wt.from(e.headers),e.data=Vt.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return On(e.adapter||qt.adapter)(e).then(function(t){return An(e),t.data=Vt.call(e,e.transformResponse,t),t.headers=Wt.from(t.headers),t},function(t){return Xt(t)||(An(e),t&&t.response&&(t.response.data=Vt.call(e,e.transformResponse,t.response),t.response.headers=Wt.from(t.response.headers))),Promise.reject(t)})}const jn="1.11.0",xn={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{xn[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const Pn={};xn.transitional=function(e,t,n){function i(e,t){return"[Axios v"+jn+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,r,s)=>{if(!1===e)throw new _t(i(r," has been removed"+(t?" in "+t:"")),_t.ERR_DEPRECATED);return t&&!Pn[r]&&(Pn[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)}},xn.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var kn={assertOptions:function(e,t,n){if("object"!=typeof e)throw new _t("options must be an object",_t.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let r=i.length;for(;r-- >0;){const s=i[r],o=t[s];if(o){const t=e[s],n=void 0===t||o(t,s,e);if(!0!==n)throw new _t("option "+s+" must be "+n,_t.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new _t("Unknown option "+s,_t.ERR_BAD_OPTION)}},validators:xn};const Nn=kn.validators;let Un=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=on(this.defaults,t);const{transitional:n,paramsSerializer:i,headers:r}=t;void 0!==n&&kn.assertOptions(n,{silentJSONParsing:Nn.transitional(Nn.boolean),forcedJSONParsing:Nn.transitional(Nn.boolean),clarifyTimeoutError:Nn.transitional(Nn.boolean)},!1),null!=i&&(yt.isFunction(i)?t.paramsSerializer={serialize:i}:kn.assertOptions(i,{encode:Nn.function,serialize:Nn.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),kn.assertOptions(t,{baseUrl:Nn.spelling("baseURL"),withXsrfToken:Nn.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=r&&yt.merge(r.common,r[t.method]);r&&yt.forEach(["delete","get","head","post","put","patch","common"],e=>{delete r[e]}),t.headers=Wt.concat(s,r);const o=[];let a=!0;this.interceptors.request.forEach(function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,o.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(!a){const e=[Tn.bind(this),void 0];for(e.unshift(...o),e.push(...l),u=e.length,c=Promise.resolve(t);d<u;)c=c.then(e[d++],e[d++]);return c}u=o.length;let p=t;for(d=0;d<u;){const e=o[d++],t=o[d++];try{p=e(p)}catch(e){t.call(this,e);break}}try{c=Tn.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 Pt(rn((e=on(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}};yt.forEach(["delete","get","head","options"],function(e){Un.prototype[e]=function(t,n){return this.request(on(n||{},{method:e,url:t,data:(n||{}).data}))}}),yt.forEach(["post","put","patch"],function(e){function t(t){return function(n,i,r){return this.request(on(r||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:i}))}}Un.prototype[e]=t(),Un.prototype[e+"Form"]=t(!0)});const Ln={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(Ln).forEach(([e,t])=>{Ln[t]=e});const Fn=function e(t){const n=new Un(t),i=Te(Un.prototype.request,n);return yt.extend(i,Un.prototype,n,{allOwnKeys:!0}),yt.extend(i,n,null,{allOwnKeys:!0}),i.create=function(n){return e(on(t,n))},i}(qt);Fn.Axios=Un,Fn.CanceledError=Gt,Fn.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 Gt(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}}},Fn.isCancel=Xt,Fn.VERSION=jn,Fn.toFormData=Ot,Fn.AxiosError=_t,Fn.Cancel=Fn.CanceledError,Fn.all=function(e){return Promise.all(e)},Fn.spread=function(e){return function(t){return e.apply(null,t)}},Fn.isAxiosError=function(e){return yt.isObject(e)&&!0===e.isAxiosError},Fn.mergeConfig=on,Fn.AxiosHeaders=Wt,Fn.formToJSON=e=>$t(yt.isHTMLForm(e)?new FormData(e):e),Fn.getAdapter=On,Fn.HttpStatusCode=Ln,Fn.default=Fn;const{Axios:Dn,AxiosError:Bn,CanceledError:In,isCancel:$n,CancelToken:qn,VERSION:zn,all:Mn,Cancel:Kn,isAxiosError:Hn,spread:Jn,toFormData:Wn,AxiosHeaders:Vn,HttpStatusCode:Xn,formToJSON:Gn,getAdapter:Qn,mergeConfig:Zn}=Fn;var Yn=class{constructor(e,t){this.httpClient=e,this.validate=t}async getAppointments(e){return this.httpClient.get("/appointments/v1",{params:e}).then(this.validate(Ee))}async createAppointment(e){return this.httpClient.post(`/appointments/v1/slots/${e.slot_id}`,e).then(e=>e.data).then(this.validate(Re))}async getAppointment(e){return this.httpClient.get(`/api/v1/appointments/${e.id}`).then(e=>e.data).then(this.validate(Se))}async getDocumentsStorage(){return this.httpClient.get("/appointments/v1/documents/storage").then(e=>e.data).then(this.validate(Oe))}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`)}},ei=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(Ae))}};var ti=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(L))}},ni=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(F))}},ii=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(H))}async joinCall(e){return this.httpClient.get(`/flash/v1/calls/${e.callId}/join`).then(e=>e.data).then(this.validate(J))}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(W))}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(V))}},ri=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(oe))}async getOrganizationSetup(){return this.httpClient.get("/organizations/v1/setup").then(e=>e.data).then(this.validate(ae))}},si=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(Z))}async createImmediateVideocallPaymentLink(e){return this.httpClient.post("/payments/v1/immediate-videocall",e).then(e=>e.data).then(this.validate(Y))}async createChatConsultationPaymentLink(e){return this.httpClient.post("/payments/v1/schedule",e).then(e=>e.data).then(this.validate(ee))}async getConsultationCoupon(e,t){return this.httpClient.get(`/payments/v1/consultation-coupon/${encodeURIComponent(e)}`,{params:{amount:t}}).then(e=>e.data).then(this.validate(X))}async getAppointmentConsultationCoupon(e){return this.httpClient.get(`/payments/v1/appointment/${encodeURIComponent(e)}/consultation-coupon`).then(e=>e.data).then(this.validate(G))}async getPaymentSession(e){return this.httpClient.get(`/payments/v1/session/${e}`).then(e=>e.data).then(this.validate(ne))}async validateApplePayMerchant(e){return this.httpClient.post("/payments/v1/apple-pay/validate-merchant",e).then(this.validate(ie))}async authorizeApplePay(e){return this.httpClient.post("/payments/v1/apple-pay/authorize",e).then(this.validate(re))}async authorizeGooglePay(e){return this.httpClient.post("/payments/v1/google-pay/authorize",e).then(this.validate(se))}},oi=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(ue))}async readAllMessages(e){return this.httpClient.put(`sdk/v1/rooms/${e.roomId}/messages/read`).then(e=>e.data)}},ai=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(pe))}async getProfessionalPublicProfile(e){return this.httpClient.get(`/profile/v1/public/professionals/${e.hash}`).then(e=>e.data).then(this.validate(he))}async acceptLegalConsent(e){return this.httpClient.post("/profile/v1/legal-consent",e)}},li=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(ve))}async getUnreadMessagesCount(e){return this.httpClient.get(`chat/v1/${e.roomId}/unread-count`).then(e=>e.data).then(this.validate(we))}async createSupportRoom(e){return this.httpClient.post("chat/v1/support-room",e).then(e=>e.data).then(this.validate(Ce))}},ci=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(x))}async getProfessionalsBySpecialtyAndService(e){return this.httpClient.get("/schedules/v1/professionals",{params:e}).then(e=>e.data).then(this.validate(P))}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(this.validate(k))}async getScheduleServiceSpecialities(e){return this.httpClient.get(`/schedules/v1/services/${e}/specialities`).then(e=>e.data).then(this.validate(N))}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(U))}};var ui={development:"https://chat-dev.mediquo.com",production:"https://chat.mediquo.com"},di=class{constructor({env:e="production",baseURL:t,debug:n,apiKey:i,token:r,locale:s}={}){const o=t??ui[e];var a;this.httpClient=(a=o,Fn.create({baseURL:a,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 ii(this.httpClient,l),this.auth=new ei(this.httpClient,l),this.appointments=new Yn(this.httpClient,l),this.payments=new si(this.httpClient,l),this.schedules=new ci(this.httpClient,l),this.organizations=new ri(this.httpClient,l),this.profile=new ai(this.httpClient,l),this.professionals=new oi(this.httpClient,l),this.rooms=new li(this.httpClient,l),this.documents=new ni(this.httpClient,l),this.consultations=new ti(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 pi({env:e,apiKey:t,token:n,locale:i}={}){const r=e??b.MODE;return new di({env:r,debug:"development"===r,apiKey:t,token:n,locale:i})}const hi=["env","apiKey","token","locale","inheritedApiClient"];function fi(e,t,n){if(hi.some(t=>e.has(t)))return t.apiKey||t.token||t.locale||!n?pi({...t,apiKey:t.apiKey??n?.getApiKey()}):n}export{w as A,R as C,I as D,fe as M,te as P,T as S,_ as a,Hn as b,pi as c,Q as d,M as e,K as f,de as g,S as h,O as i,fi as n};
@@ -0,0 +1 @@
1
+ import{n as o}from"./create-context-DqP79qjF.js";var e=o(Symbol.for("mediquo-api-client"));export{e as A};
@@ -1 +1 @@
1
- import{P as n}from"./api-chat-client-BiiYnU-b.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};
1
+ import{P as n}from"./api-chat-client-pGZWREjK.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,54 @@
1
+ import * as lit_html from 'lit-html';
2
+ import * as lit from 'lit';
3
+ import { LitElement } from 'lit';
4
+ import { M as MediquoApiChatClient } from './index.d-Bl682CAX.js';
5
+ import { P as PriceInCents } from './price.d-CwLosdAN.js';
6
+ import '../ui/mq-button.js';
7
+ import '../ui/mq-dialog.js';
8
+ import { QueryClient } from '@tanstack/query-core';
9
+
10
+ declare class CancelAppointmentConfirmationDialog extends LitElement {
11
+ apiClient: MediquoApiChatClient;
12
+ static styles: lit.CSSResult;
13
+ open: boolean;
14
+ queryClientContext: QueryClient | undefined;
15
+ appointmentId: string;
16
+ price?: PriceInCents;
17
+ private cancelAppointmentMutation;
18
+ private handleClose;
19
+ private handleDismissClick;
20
+ private handleConfirmClick;
21
+ render(): lit_html.TemplateResult<1>;
22
+ }
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ "cancel-appointment-confirmation-dialog": CancelAppointmentConfirmationDialog;
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Informational dialog shown when an appointment action (modify, cancel,
31
+ * repeat) is currently unavailable. Purely presentational: the parent owns
32
+ * the copy (already translated) and decides when to open it.
33
+ *
34
+ * Usage:
35
+ * <appointment-action-unavailable-dialog
36
+ * .open=${true}
37
+ * .heading=${"Anular cita"}
38
+ * .message=${"Lo sentimos, ..."}
39
+ * @close=${() => { ... }}
40
+ * ></appointment-action-unavailable-dialog>
41
+ */
42
+ declare class AppointmentActionUnavailableDialog extends LitElement {
43
+ static styles: lit.CSSResult;
44
+ open: boolean;
45
+ heading: string;
46
+ message: string;
47
+ private handleClose;
48
+ render(): lit_html.TemplateResult<1>;
49
+ }
50
+ declare global {
51
+ interface HTMLElementTagNameMap {
52
+ "appointment-action-unavailable-dialog": AppointmentActionUnavailableDialog;
53
+ }
54
+ }
@@ -1,13 +1,14 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
3
  import { LitElement } from 'lit';
4
- import { G as GetAppointmentsResponse } from './appointment-action-unavailable-dialog-Da2IATYj.js';
4
+ import { M as MediquoApiChatClient, G as GetAppointmentsResponse } from './index.d-Bl682CAX.js';
5
5
  import './appointment-details-CVEDe_k0.js';
6
6
  import '../ui/mq-card.js';
7
7
  import './professional-overview-mO3tuMuH.js';
8
- import { L as LoginTokenResponse } from './schemas.d-D7bCe24u.js';
9
- import './mq-chat-room-CRPruRJD.js';
8
+ import { L as LoginTokenResponse } from './schemas.d-b6_AekBb.js';
9
+ import './mq-chat-room-t3j3Tq4o.js';
10
10
  import '../ui/mq-floating-bubble.js';
11
+ import './appointment-action-unavailable-dialog-BYse3uIa.js';
11
12
  import '../ui/mq-button.js';
12
13
  import '../ui/mq-unread-badge.js';
13
14
 
@@ -60,6 +61,7 @@ declare global {
60
61
  }
61
62
 
62
63
  declare class AppointmentCard extends LitElement {
64
+ apiClient: MediquoApiChatClient;
63
65
  static styles: lit.CSSResult;
64
66
  appointmentResource: GetAppointmentsResponse["data"][number];
65
67
  specialtyId: number;
@@ -0,0 +1 @@
1
+ import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{c as i}from"./consume-CovVqBjI.js";import{m as a}from"./runtime-Bg1WXVCx.js";import{l as o}from"./localized-decorator-BlOuLhym.js";import{Q as n}from"./query-controller-BlO1Ax65.js";import{A as s}from"./api-client-context-V1UAGtKW.js";import{g as p}from"./get-organization-setup-query-Dr1cXnHl.js";import{t as r,f as l,h as c,i as d,j as h,k as m,g as u,a as g,l as v}from"./telemetry-client-CoWay8es.js";import{g as f}from"./get-schedule-services-query-Fzvb9ug9.js";import{g as y}from"./chunk-Y4EKUX25-QqMl3eiq.js";import{a as b,i as $,E as C,x}from"./lit-element-DiWJYFwC.js";import{n as k}from"./property-scuRaFcM.js";import{r as R}from"./state-LQivXIgA.js";import{getLocale as j}from"../i18n.js";import"./appointment-details-DXLBQnPN.js";import"../ui/mq-card.js";import"./professional-overview-C4H_znIJ.js";import{l as q}from"./chunk-S5RWG6G2-DPesx3Od.js";import"../mq-chat-room.js";import"../ui/mq-floating-bubble.js";import{A as w,i as S}from"./api-chat-client-pGZWREjK.js";import{g as D}from"./action-unavailable-message-BIgsXk9u.js";import{e as I}from"./class-map-Co76I6aw.js";import{MqAppointmentRescheduleEvent as O,MqAppointmentBookEvent as M,MqAppointmentJoinVideocallEvent as U,MqAppointmentViewDocumentationEvent as _}from"../events.js";import{messageBubbleIcon as A}from"../ui/icons/message-bubble-icon.js";import{videoIcon as H}from"../ui/icons/video-icon.js";import"../ui/mq-button.js";import"../ui/mq-unread-badge.js";import{c as z}from"./refund-cancel-policy-CcsJ-pMx.js";import{toast as E}from"../ui/mq-toast.js";let N=class AppointmentCardActions extends b{constructor(){super(...arguments),this.variant="next",this.isVideocall=!1,this.hasChatSupport=!1,this.unreadCount=0,this.isModifyUnavailable=!1,this.isCancelUnavailable=!1,this.hasNoSlots=!1,this.modifyUnavailableMessage="",this.cancelUnavailableMessage="",this.repeatTarget=null,this.professionalHash="",this.openDialog=null,this.handleModifyClick=()=>{this.isModifyUnavailable?this.openDialog="modify":(r.track(l(this.patientHash,this.appointmentId)),this.dispatchEvent(new O({appointmentId:this.appointmentId})))},this.handleCancelClick=()=>{this.isCancelUnavailable?this.openDialog="cancel":(r.track(c(this.patientHash,this.appointmentId)),this.dispatchEvent(new CustomEvent("request-cancel",{bubbles:!0,composed:!0})))},this.handleRepeatClick=()=>{this.hasNoSlots?this.openDialog="repeat-no-slots":this.repeatTarget?(r.track(d(this.patientHash,this.appointmentId)),this.dispatchEvent(new M({specialty:this.repeatTarget.specialty,service:this.repeatTarget.service,professional:this.professionalHash}))):this.openDialog="repeat-error"},this.handleDialogClose=()=>{this.openDialog=null}}static{this.styles=$`:host{display:contents}.actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-2)}.actions.next{flex-direction:column}.actions-secondary{display:flex;gap:var(--sp-3)}.actions mq-button{flex:1}`}get patientHash(){return this.loginToken.patient.hash}renderChatButton(){return x`<mq-button variant="primary" fullwidth noPadding @click="${()=>{this.dispatchEvent(new CustomEvent("toggle-chat",{bubbles:!0,composed:!0}))}}">${A({size:24})} ${a("Chat")} ${this.unreadCount>0?x`<mq-unread-badge></mq-unread-badge>`:C}</mq-button>`}renderNextActions(){return x`${this.isVideocall?x`<mq-button variant="outline" fullwidth noPadding @click="${()=>{r.track(h(this.patientHash,this.appointmentId)),this.dispatchEvent(new U({appointmentId:this.appointmentId}))}}">${H({size:24})} ${a("Ir a videollamada")}</mq-button>`:C}<div class="actions-secondary">${this.hasChatSupport?this.renderChatButton():C}<mq-button variant="outline" fullwidth noPadding @click="${this.handleModifyClick}">${a("Modificar")}</mq-button><mq-button variant="outline-negative" fullwidth noPadding @click="${this.handleCancelClick}">${a("Cancelar")}</mq-button></div>`}renderHistoryActions(){return x`${this.hasChatSupport?this.renderChatButton():C}<mq-button variant="outline" fullwidth noPadding @click="${()=>{r.track(m(this.patientHash,this.appointmentId)),this.dispatchEvent(new _({appointmentId:this.appointmentId}))}}">${a("Documentos")}</mq-button><mq-button variant="outline" fullwidth noPadding @click="${this.handleRepeatClick}">${a("Repetir")}</mq-button>`}render(){return x`<div class="${I({actions:!0,next:"next"===this.variant})}">${"next"===this.variant?this.renderNextActions():this.renderHistoryActions()}</div><appointment-action-unavailable-dialog .open="${"modify"===this.openDialog}" .heading="${a("Modificar cita")}" .message="${this.modifyUnavailableMessage}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"cancel"===this.openDialog}" .heading="${a("Anular cita")}" .message="${this.cancelUnavailableMessage}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"repeat-no-slots"===this.openDialog}" .heading="${a("Repetir cita")}" .message="${a("Este profesional no tiene horarios disponibles")}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"repeat-error"===this.openDialog}" .heading="${a("Repetir cita")}" .message="${a("Lo sentimos, no hemos podido repetir tu cita. Por favor, contacta con soporte.")}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog>`}};t([i({context:q})],N.prototype,"loginToken",void 0),t([k({type:String})],N.prototype,"variant",void 0),t([k({type:String})],N.prototype,"appointmentId",void 0),t([k({type:Boolean})],N.prototype,"isVideocall",void 0),t([k({type:Boolean})],N.prototype,"hasChatSupport",void 0),t([k({type:Number})],N.prototype,"unreadCount",void 0),t([k({type:Boolean})],N.prototype,"isModifyUnavailable",void 0),t([k({type:Boolean})],N.prototype,"isCancelUnavailable",void 0),t([k({type:Boolean})],N.prototype,"hasNoSlots",void 0),t([k({type:String})],N.prototype,"modifyUnavailableMessage",void 0),t([k({type:String})],N.prototype,"cancelUnavailableMessage",void 0),t([k({type:Object})],N.prototype,"repeatTarget",void 0),t([k({type:String})],N.prototype,"professionalHash",void 0),t([R()],N.prototype,"openDialog",void 0),N=t([o(),e("appointment-card-actions")],N);let T=class AppointmentCard extends b{constructor(){super(...arguments),this.variant="next",this.detailsVariant="wide",this.isChatOpen=!1,this.isCancelDialogOpen=!1,this.unreadQuery=new n(this,()=>y(this.apiClient,{roomId:this.appointmentResource?.room?.id})),this.getOrganizationSpecialtiesQuery=new n(this,()=>u(this.apiClient,{enabled:!!this.appointmentResource?.speciality?.id})),this.getOrganizationSetupQuery=new n(this,()=>p(this.apiClient)),this.getScheduleServicesQuery=new n(this,()=>f(this.apiClient))}static{this.styles=$`:host{display:flex}.card{width:100%;padding:var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-4);justify-content:space-between}.card-top-content{display:flex;flex-direction:column;gap:var(--sp-6)}.see-details{color:var(--color-primary-link-default);font-size:var(--text-sm);line-height:var(--text-sm--line-height);font-weight:var(--font-weight-bold)}.see-details:hover{text-decoration:underline}.chevron-down{width:16px;height:16px;transition:transform .2s ease}.appointment-details{display:flex;flex-direction:column;gap:12px}.clock-icon-wrapper{width:24px;height:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.clock-icon-wrapper svg{width:100%;height:100%}.appointment-type{display:flex;align-items:center;gap:12px;font-size:18px;color:#2c3e50}.actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-2)}.actions.next{flex-direction:column}.actions-secondary{display:flex;gap:var(--sp-3)}.actions mq-button{flex:1}`}render(){const t=this.appointmentResource.appointment.channel===w.videocall,e=this.appointmentResource.appointment.channel===w.phonecall,i=!0===this.appointmentResource.appointment.has_chat_in_appointment,o=(t||e)&&i,n=j(),s=S(this.appointmentResource.appointment.expires_at),p=0===this.appointmentResource.slots.length,l=this.getOrganizationSetupQuery.result?.data?.appointments?.seconds_before_start_to_refund_on_cancel,c=z({startsAtIso:this.appointmentResource.appointment.starts_at,refundPolicySeconds:l}),d=s||p||!c,h=s||!c,m=D({action:"modify",refundPolicySeconds:l}),u=D({action:"cancel",refundPolicySeconds:l}),f=this.getOrganizationSpecialtiesQuery.result?.data?.find(t=>Number(t.id)===Number(this.appointmentResource.speciality.id)),y=g(f?.code??"",n,f?.name??this.appointmentResource.speciality.name),b=this.getScheduleServicesQuery.result?.data?.find(t=>t.id===this.appointmentResource.appointment.service_id)?.code,$=f?.code&&b?{specialty:f.code,service:b}:null;return x`<mq-card class="card" roundness="md"><div class="card-top-content"><professional-overview .specialtyName="${y??""}" .collegiateNumber="${this.appointmentResource.professional.collegiate_number??void 0}" .description="${this.appointmentResource.professional.description??""}" .languages="${this.appointmentResource.professional.languages}" .avatar="${this.appointmentResource.professional.avatar??""}" .name="${this.appointmentResource.professional.name}"></professional-overview><appointment-details .startsAt="${this.appointmentResource.appointment.starts_at}" .duration="${this.appointmentResource.appointment.duration}" .channel="${this.appointmentResource.appointment.channel}" .timezone="${this.loginToken?.patient?.timezone}" variant="${this.detailsVariant}"></appointment-details></div><appointment-card-actions .variant="${this.variant}" .appointmentId="${this.appointmentResource.appointment.id??""}" .isVideocall="${t}" .hasChatSupport="${o}" .unreadCount="${this.unreadQuery.result?.data?.unread_count??0}" .isModifyUnavailable="${d}" .isCancelUnavailable="${h}" .hasNoSlots="${p}" .modifyUnavailableMessage="${m}" .cancelUnavailableMessage="${u}" .repeatTarget="${$}" .professionalHash="${this.appointmentResource.professional.hash}" @toggle-chat="${()=>{this.isChatOpen=!this.isChatOpen,this.isChatOpen&&r.track(v(this.loginToken.patient.hash,this.appointmentResource.appointment.id??""))}}" @request-cancel="${()=>{this.isCancelDialogOpen=!0}}"></appointment-card-actions><mq-floating-bubble ?dismissable="${!1}" .open="${this.isChatOpen}" @mq-close="${()=>{this.isChatOpen=!1}}" hideCloseButton>${this.isChatOpen?x`<mq-chat-room slot="content" .consultationId="${this.appointmentResource.appointment.id}" consultation-type="appointment" token="${this.loginToken.access_token}" .roomId="${this.appointmentResource.room.id}" .professionalHash="${this.appointmentResource.professional.hash}" @mq-chat-room-close="${()=>{this.isChatOpen=!1}}" ?readonly="${s}"></mq-chat-room>`:C}</mq-floating-bubble><cancel-appointment-confirmation-dialog .appointmentId="${this.appointmentResource.appointment.id}" .price="${this.appointmentResource.price??void 0}" .open="${this.isCancelDialogOpen}" @cancel="${()=>{this.isCancelDialogOpen=!1}}" @success="${()=>{this.isCancelDialogOpen=!1,E.success(a("Consulta anulada correctamente")),this.dispatchEvent(new CustomEvent("appointment-cancel-confirmed",{bubbles:!0,composed:!0,detail:{id:this.appointmentResource.appointment.id}}))}}"></cancel-appointment-confirmation-dialog></mq-card>`}};t([i({context:s,subscribe:!0})],T.prototype,"apiClient",void 0),t([k({type:Object})],T.prototype,"appointmentResource",void 0),t([k({type:Number})],T.prototype,"specialtyId",void 0),t([k({type:String})],T.prototype,"variant",void 0),t([k({type:String})],T.prototype,"detailsVariant",void 0),t([i({context:q})],T.prototype,"loginToken",void 0),t([R()],T.prototype,"isChatOpen",void 0),t([R()],T.prototype,"isCancelDialogOpen",void 0),T=t([o(),e("appointment-card")],T);let P=class AppointmentCardSkeleton extends b{static{this.styles=$`div{border-radius:var(--border-radius-md);background:color-mix(in srgb,var(--color-neutrals-background-disabled) 50%,#fff 50%);height:337px;width:100%}`}render(){return x`<div></div>`}};P=t([e("appointment-card-skeleton")],P);
@@ -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}from"./chunk-HN62IQ7S-xbkIy7k_.js";import{a}from"./addSeconds-ofMnxlgT.js";import{i as r,a as s,E as l,x as p}from"./lit-element-DiWJYFwC.js";import{n as m}from"./property-scuRaFcM.js";import{e as c}from"./class-map-Co76I6aw.js";import{getLocale as h}from"../i18n.js";import{briefcaseIcon as d}from"../ui/icons/briefcase-icon.js";import{calendarIcon as u}from"../ui/icons/calendar-icon.js";import{clockIcon as f}from"../ui/icons/clock-icon.js";import{messageBubbleIcon as v}from"../ui/icons/message-bubble-icon.js";import{phoneIcon as w}from"../ui/icons/phone-icon.js";const y=r`.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}@media (min-width:768px){.appointment-details.wide{flex-direction:row;flex-wrap:wrap}}`;let g=class AppointmentDetails extends s{constructor(){super(...arguments),this.channel=void 0,this.variant="default",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 d({size:24});case"chat":return v({size:24});case"phonecall":return w({size:24});default:return l}}}static{this.styles=y}render(){const t=h().replace("_","-"),e=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric",...this.timezone?{timeZone:this.timezone}:{}}),i=new Intl.DateTimeFormat(t,{timeStyle:"short",...this.timezone?{timeZone:this.timezone}:{}}),o=new Date(this.startsAt),r=a(o,this.duration),s=e.format(o),m=i.format(o),d=i.format(r),v=this.timezone?n(this.timezone,o):"";return p`<div class="${c({"appointment-details":!0,wide:"wide"===this.variant})}"><div class="detail-row">${u({size:24})} <span>${s}</span></div><div class="detail-row">${f({size:24})} <span>${m} - ${d}${v?` (${v})`:""}</span></div>${this.channel?p`<div class="detail-row full-width">${this._appointmentChannelToIcon(this.channel)} <span>${this._appointmentChannelToLabel(this.channel)}</span></div>`:l}</div>`}};t([m({type:String})],g.prototype,"startsAt",void 0),t([m({type:Number})],g.prototype,"duration",void 0),t([m({type:String})],g.prototype,"channel",void 0),t([m({type:String})],g.prototype,"variant",void 0),t([m({type:Boolean,attribute:"strike-through"})],g.prototype,"strikeThrough",void 0),t([m({type:String})],g.prototype,"timezone",void 0),g=t([o(),e("appointment-details")],g);export{g as A};
@@ -0,0 +1 @@
1
+ function e(e,...t){return[e.getApiKey()??"_",...t]}export{e as s};
@@ -1 +1 @@
1
- import{s}from"./chunk-6CCJWPGL-DlOpbEYH.js";function e(e,o,r){return{queryKey:s(e,"professionals",o.hash),queryFn:()=>e.professionals.getProfessional(o),staleTime:0,...r}}export{e as g};
1
+ import{s}from"./chunk-6CCJWPGL-TiaqZaPV.js";function e(e,o,r){return{queryKey:s(e,"professionals",o.hash),queryFn:()=>e.professionals.getProfessional(o),staleTime:0,...r}}export{e as g};
@@ -0,0 +1 @@
1
+ import{p as t}from"./parseISO-Dj3qSTG8.js";import{f as e}from"./format-CRFiCNHw.js";function n(e){return t(`${e.replace(" ","T")}Z`)}function r(t){const n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds()));return e(n,"yyyy-MM-dd HH:mm:ss")}function a(t,e){try{const n=new Intl.DateTimeFormat("en",{timeZone:t,timeZoneName:"shortOffset"}).formatToParts(e);return n.find(t=>"timeZoneName"===t.type)?.value??""}catch{return""}}export{n as a,r as b,a as g};
@@ -0,0 +1 @@
1
+ import{z as e}from"./external-CJj32K_p.js";import{s as r}from"./chunk-6CCJWPGL-TiaqZaPV.js";var s=e.enum(["ordinary","system"]).enum;function n(e,s,n){return{queryKey:r(e,"unread-messages",s),queryFn:()=>e.rooms.getUnreadMessagesCount(s),staleTime:0,...n}}export{s as S,n as g};
@@ -0,0 +1 @@
1
+ import{s as t}from"./context-consumer-ESdICVAb.js";function c({context:c,subscribe:e}){return(n,i)=>{"object"==typeof i?i.addInitializer(function(){new t(this,{context:c,callback:t=>{n.set.call(this,t)},subscribe:e})}):n.constructor.addInitializer(n=>{new t(n,{context:c,callback:t=>{n[i]=t},subscribe:e})})}}export{c};
@@ -1 +1 @@
1
- import{s as t}from"./context-request-event-Dfydf1ub.js";class s{constructor(t,i,e,h){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(t,i)=>{this.unsubscribe&&(this.unsubscribe!==i&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=t,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(t,i)),this.unsubscribe=i},this.host=t,void 0!==i.context){const t=i;this.context=t.context,this.callback=t.callback,this.subscribe=t.subscribe??!1}else this.context=i,this.callback=e,this.subscribe=h??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new t(this.context,this.host,this.t,this.subscribe))}}function i(t,...i){return[t.getApiKey()??"_",...i]}export{s as a,i as s};
1
+ import{s as t}from"./context-request-event-Dfydf1ub.js";class s{constructor(t,i,e,h){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(t,i)=>{this.unsubscribe&&(this.unsubscribe!==i&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=t,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(t,i)),this.unsubscribe=i},this.host=t,void 0!==i.context){const t=i;this.context=t.context,this.callback=t.callback,this.subscribe=t.subscribe??!1}else this.context=i,this.callback=e,this.subscribe=h??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new t(this.context,this.host,this.t,this.subscribe))}}export{s};
@@ -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{h as a,s as n}from"./task-Bj8p7kJX.js";import{A as s}from"./api-client-context-V1UAGtKW.js";import{C as r,i as l}from"./api-chat-client-pGZWREjK.js";import{g as d}from"./chunk-HN62IQ7S-xbkIy7k_.js";import{a as c}from"./addSeconds-ofMnxlgT.js";import{a as m,i as p,E as h,x as u}from"./lit-element-DiWJYFwC.js";import{n as f}from"./property-scuRaFcM.js";import{getLocale as g}from"../i18n.js";import{calendarIcon as v}from"../ui/icons/calendar-icon.js";import{clockIcon as y}from"../ui/icons/clock-icon.js";import{r as b}from"./state-LQivXIgA.js";import{infoCircleOutineIcon as x}from"../ui/icons/info-circle-outine-icon.js";import"../ui/mq-button.js";import{l as $}from"./chunk-S5RWG6G2-DPesx3Od.js";import{messageBubbleIcon as k}from"../ui/icons/message-bubble-icon.js";import"../mq-chat-room.js";import"../ui/mq-floating-bubble.js";import"../ui/mq-card.js";import"../ui/mq-unread-badge.js";import{c as q}from"./consume-CovVqBjI.js";import{Q as w}from"./query-controller-BlO1Ax65.js";import{g as z}from"./chunk-Y4EKUX25-QqMl3eiq.js";import"../ui/mq-page-title.js";import"./mq-layout-L3TlCxI0.js";import{M as j}from"./mutation-controller-CR2qcqhH.js";import{g as C,t as _,b as I,a as T,c as O,e as S}from"./telemetry-client-CoWay8es.js";import{MqViewAppointmentsEvent as D}from"../events.js";let E=class ChatCta extends m{constructor(){super(...arguments),this.text=i("Utiliza el chat para enviar el motivo de consulta, documentos o imágenes"),this.readonly=!1,this.isChatOpen=!1,this.unreadQuery=new w(this,()=>z(this.apiClient,{roomId:this.roomId}))}static{this.styles=[p`.chat-cta{padding:var(--sp-6) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-4)}.cta-message{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-4);font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--text-sm--line-height);color:var(--color-neutrals-text-default)}.cta-message svg{flex-shrink:0}mq-button svg{flex-shrink:0}mq-chat-room{height:100%}@media (min-width:768px){.chat-cta{padding:var(--sp-6)}mq-button{max-width:323px;margin:0 auto}}`]}render(){return u`<mq-card class="chat-cta" roundness="md"><div class="cta-message">${x({size:24})} <span>${this.text}</span></div><mq-button variant="primary" size="md" fullwidth @click="${()=>{this.isChatOpen=!this.isChatOpen,this.isChatOpen&&this.onOpenChat?.()}}">${k({size:24})} ${i("Chatea con el profesional")} ${(this.unreadQuery.result?.data?.unread_count??0)>0?u`<mq-unread-badge></mq-unread-badge>`:h}</mq-button></mq-card><mq-floating-bubble ?dismissable="${!1}" .open="${this.isChatOpen}" @mq-close="${()=>{this.isChatOpen=!1}}" hideCloseButton>${this.isChatOpen?u`<mq-chat-room slot="content" .consultationId="${this.consultationId}" .consultationType="${r.appointment}" token="${this.loginToken.access_token}" .roomId="${this.roomId}" .professionalHash="${this.professionalHash}" ?readonly="${this.readonly}" @mq-chat-room-close="${()=>{this.isChatOpen=!1}}"></mq-chat-room>`:h}</mq-floating-bubble>`}};t([q({context:s,subscribe:!0})],E.prototype,"apiClient",void 0),t([f({type:Number})],E.prototype,"roomId",void 0),t([f({type:String})],E.prototype,"professionalHash",void 0),t([f({type:String})],E.prototype,"text",void 0),t([f({type:String})],E.prototype,"consultationId",void 0),t([f({type:Boolean,reflect:!0})],E.prototype,"readonly",void 0),t([f({attribute:!1})],E.prototype,"onOpenChat",void 0),t([q({context:$})],E.prototype,"loginToken",void 0),t([b()],E.prototype,"isChatOpen",void 0),E=t([o(),e("chat-cta")],E);let Q=class PageLayout extends m{constructor(){super(...arguments),this.yCentered=!1,this.background="solid"}static{this.styles=p`:host([background=transparent]){background-color:transparent}:host([background=solid]){background-color:var(--color-background)}:host([y-centered]) div{display:grid;place-items:center}div{width:100%;max-width:1000px;padding:var(--mq-layout-padding,0);margin:0 auto;box-sizing:border-box}:host([y-centered]) div{height:100%}main{width:100%}`}render(){return u`<div><main><slot></slot></main></div>`}};t([f({type:Boolean,attribute:"y-centered"})],Q.prototype,"yCentered",void 0),t([f({type:String})],Q.prototype,"background",void 0),Q=t([e("page-layout")],Q);const H=p`mq-page-title{margin:var(--size-3) 0}.description{font-size:var(--text-sm);line-height:var(--text-sm--line-height);color:var(--color-neutrals-text-default);font-weight:var(--font-weight-normal);margin:0;margin-bottom:var(--size-5)}.professional-card{padding:var(--size-4);margin-bottom:var(--size-4)}.professional-card>:not(:first-child){margin-top:var(--size-4)}.professional-name{font-family:var(--font-titles);font-size:var(--text-lg);line-height:var(--text-lg--line-height);color:var(--color-neutrals-text-default);font-weight:var(--font-weight-bold);margin:0;margin-bottom:var(--size-1)}.professional-speciality{font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-default);font-weight:var(--font-weight-normal);margin:0}.description-list{display:flex;flex-direction:column;gap:var(--size-4)}.description-list-item{display:flex;flex-direction:row;align-items:center;gap:var(--size-2);color:var(--color-neutrals-text-default)}.description-list-item dt{display:inline-flex}.description-list-item dd{margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);font-weight:var(--font-weight-semibold)}.description-list-item dd::first-letter{text-transform:uppercase}.documents-card{padding:var(--size-4);margin-bottom:var(--size-6)}.documents-card-empty{font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--text-sm--line-height);color:var(--color-neutrals-text-default);font-weight:var(--font-weight-normal)}.documents-card-title{font-family:var(--font-titles);font-size:var(--text-lg);line-height:var(--text-lg--line-height);color:var(--color-neutrals-text-default);font-weight:var(--font-weight-bold);margin:0;margin-bottom:var(--size-4)}.documents-list{margin-bottom:var(--size-4)}.documents-list>:not(:first-child){margin-top:var(--size-2)}.finished-consultation-footer{display:flex;flex-direction:column;gap:var(--size-5)}.document-item-skeleton{height:57px;width:100%;background-color:var(--color-muted);animation:skeleton-pulse 1.5s infinite}@keyframes skeleton-pulse{0%{opacity:1}50%{opacity:.6}100%{opacity:1}}@media (min-width:768px){.description-list{flex-direction:row}mq-button{display:block;max-width:323px;margin:0 auto}}`;let N=class DocumentationView extends m{constructor(){super(...arguments),this.canReconnect=!1,this._sharedocumentsTask=new a(this,{task:async([t])=>await this.apiClient.flash.getSharedDocuments({appointment_id:t}),args:()=>[this.appointment.id]}),this.getOrganizationSpecialtiesQuery=new w(this,()=>C(this.apiClient)),this._reconnectMutation=new j(this,{mutationFn:t=>this.apiClient.appointments.reconnectAppointment(t),onSuccess:()=>{this.dispatchEvent(new CustomEvent("reconnect",{bubbles:!0,composed:!0}))}})}static{this.styles=H}firstUpdated(){_.track(I(this.loginToken.patient.hash,this.appointment.id??""))}render(){const t=!0===this.appointment.has_chat_in_appointment,e=g(),o=e.replace("_","-"),a=this.loginToken.patient.timezone,s=a?{timeZone:a}:{},r=new Intl.DateTimeFormat(o,{dateStyle:"full",...s}),m=new Intl.DateTimeFormat(o,{hour:"2-digit",minute:"2-digit",...s}),p=new Date(this.appointment.start_date),f=c(p,this.appointment.duration),b=a?d(a,p):"";return u`<mq-page-title .title="${i("Consulta finalizada")}" back-label="${i("Salir")}" @mq-back="${t=>{t.stopPropagation(),this.dispatchEvent(new D({tab:"history"}))}}"></mq-page-title><p class="description">${i("Si tu médico ha generado alguna documentación podrás verla y descargarla aquí, desde la sección de documentación, tu correo o el chat.")}</p><mq-card class="professional-card" roundness="md"><div><h2 class="professional-name">${this.appointment.from.name}</h2><p class="professional-speciality">${this.appointment.from.speciality}</p></div><dl class="description-list"><div class="description-list-item"><dt>${v()}</dt><dd>${r.format(p)}</dd></div><div class="description-list-item"><dt>${y()}</dt><dd>${m.format(p)} - ${m.format(f)}${b?` (${b})`:""}</dd></div></dl></mq-card><mq-card class="documents-card" roundness="md"><h2 class="documents-card-title">${i("Documentación")}</h2><div class="documents-list">${this._sharedocumentsTask?.render({pending:()=>u`<div class="document-item-skeleton"></div>`,complete:()=>0===this._sharedocumentsTask?.value?.length?u`<p class="documents-card-empty">${i("El médico está terminando de gestionar tu consulta. Actualiza en unos minutos para ver si tienes documentación.")}</p>`:this._sharedocumentsTask?.value?.map(t=>u`<patient-document .kind="${t.document_type}" .filename="${t.name}" .specialty="${(()=>{const i=this.getOrganizationSpecialtiesQuery.result?.data?.find(e=>e.id===t.professional.speciality_id);return T(i?.code??"",e,i?.name)})()}" .description="${t.name}" .date="${t.created_at}" .downloadUrl="${t.url}"></patient-document>`)})}</div><mq-button variant="outline" size="md" fullwidth @click="${()=>{_.track(O(this.loginToken.patient.hash,this.appointment.id??"")),this._sharedocumentsTask?.run()}}" .disabled="${this._sharedocumentsTask?.status===n.PENDING}">${i("Actualizar")}</mq-button></mq-card><div class="finished-consultation-footer">${this.canReconnect?u`<mq-button variant="primary" size="md" fullwidth ?disabled="${this._reconnectMutation.isPending}" @click="${()=>this._reconnectMutation.run({appointmentId:this.appointment.id})}">${i("Volver a la sala de espera")}</mq-button>`:h} ${t?u`<chat-cta .consultationId="${this.appointment.id}" .roomId="${Number(this.appointment.room_id)}" .professionalHash="${this.appointment.from.hash}" .text="${i("Puedes chatear con tu profesional hasta 48 horas finalizada tu cita")}" ?readonly="${l(this.appointment.expires_at)}" .onOpenChat="${()=>{_.track(S(this.loginToken.patient.hash,this.appointment.id??""))}}"></chat-cta>`:h}</div>`}};t([q({context:s,subscribe:!0})],N.prototype,"apiClient",void 0),t([f({type:Object})],N.prototype,"appointment",void 0),t([f({type:String})],N.prototype,"token",void 0),t([f({type:Boolean,attribute:"can-reconnect"})],N.prototype,"canReconnect",void 0),t([q({context:$})],N.prototype,"loginToken",void 0),N=t([o(),e("documentation-view")],N);
@@ -1 +1 @@
1
- import{s as n}from"./chunk-6CCJWPGL-DlOpbEYH.js";function t(t,e,p){return{queryKey:n(t,"appointments",e.id),queryFn:()=>t.appointments.getAppointment(e),...p}}export{t as g};
1
+ import{s as n}from"./chunk-6CCJWPGL-TiaqZaPV.js";function t(t,e,p){return{queryKey:n(t,"appointments",e.id),queryFn:()=>t.appointments.getAppointment(e),...p}}export{t as g};
@@ -1 +1 @@
1
- import{s as n}from"./chunk-6CCJWPGL-DlOpbEYH.js";function r(r,t){return{queryKey:n(r,"organization-setup"),queryFn:()=>r.organizations.getOrganizationSetup(),...t}}export{r as g};
1
+ import{s as n}from"./chunk-6CCJWPGL-TiaqZaPV.js";function r(r,t){return{queryKey:n(r,"organization-setup"),queryFn:()=>r.organizations.getOrganizationSetup(),...t}}export{r as g};
@@ -1 +1 @@
1
- import{s as t}from"./chunk-6CCJWPGL-DlOpbEYH.js";function e(e,n){return{queryKey:t(e,"patient-documents",n),queryFn:()=>e.flash.getPatientDocuments(n)}}export{e as g};
1
+ import{s as t}from"./chunk-6CCJWPGL-TiaqZaPV.js";function e(e,n){return{queryKey:t(e,"patient-documents",n),queryFn:()=>e.flash.getPatientDocuments(n)}}export{e as g};
@@ -1 +1 @@
1
- import{s as e}from"./chunk-6CCJWPGL-DlOpbEYH.js";function r(r,t){return{queryKey:e(r,"patient-profile"),queryFn:()=>r.profile.getPatientProfile(),...t}}export{r as g};
1
+ import{s as e}from"./chunk-6CCJWPGL-TiaqZaPV.js";function r(r,t){return{queryKey:e(r,"patient-profile"),queryFn:()=>r.profile.getPatientProfile(),...t}}export{r as g};
@@ -1 +1 @@
1
- import{s as e}from"./chunk-6CCJWPGL-DlOpbEYH.js";function s(s){return{queryKey:e(s,"schedule-services"),queryFn:()=>s.schedules.getScheduleServices()}}export{s as g};
1
+ import{s as e}from"./chunk-6CCJWPGL-TiaqZaPV.js";function s(s){return{queryKey:e(s,"schedule-services"),queryFn:()=>s.schedules.getScheduleServices()}}export{s as g};
@@ -0,0 +1 @@
1
+ import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{c as o}from"./consume-CovVqBjI.js";import{m as i}from"./runtime-Bg1WXVCx.js";import{l as a}from"./localized-decorator-BlOuLhym.js";import{A as r}from"./api-client-context-V1UAGtKW.js";import{D as s}from"./api-chat-client-pGZWREjK.js";import{t as n,d as l}from"./telemetry-client-CoWay8es.js";import{b as d}from"./blob-to-base64-CUL1trde.js";import{i as c,a as p,x as m}from"./lit-element-DiWJYFwC.js";import{n as f}from"./property-scuRaFcM.js";import{r as h}from"./state-LQivXIgA.js";import{DownloadFileEvent as g}from"../events.js";import{getLocale as u}from"../i18n.js";import{downloadIcon as v}from"../ui/icons/download-icon.js";import"../ui/mq-button.js";import{toast as w}from"../ui/mq-toast.js";const y=c`:host{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-1) 0;width:100%;min-width:0;box-sizing:border-box}.details{display:flex;flex-direction:column;align-items:flex-start;gap:6px;flex:1;min-width:0}.tag{display:inline-flex;align-items:center;border-radius:var(--border-radius-sm);padding:var(--sp-1) var(--sp-2);font-family:var(--font-body);font-size:var(--text-xs);line-height:1.35;font-weight:var(--font-weight-normal)}.tag.prescription{background-color:var(--color-feedback--info-subtle,#eceefd);color:var(--color-feedback--info-text,#4a1ea7)}.tag.report{background-color:var(--color-feedback--warning-subtle,#ffebce);color:var(--color-feedback--warning-text,#8f4700)}.tag.diagnostic-test-prescription{background-color:var(--color-feedback--success-subtle,#e8f6ec);color:var(--color-feedback--success-text,#16653a)}.text{display:flex;flex-direction:column;gap:var(--sp-1);width:100%;min-width:0}.name{font-family:var(--font-body);font-size:var(--text-sm);line-height:1.35;font-weight:var(--font-weight-normal);color:var(--color-text-icons--primary,#0a0a22);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta{font-family:var(--font-body);font-size:var(--text-xs);line-height:1.35;font-weight:var(--font-weight-normal);color:var(--color-text-icons--secondary,#6d658b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}`,b="77px";let x=class DocumentRow extends p{constructor(){super(...arguments),this.documentId="",this.name="",this.specialty="",this.date="",this.downloadUrl="",this.patientHash="",this.isDownloading=!1,this.handleDownload=async()=>{this.isDownloading=!0;try{n.track(l(this.patientHash,this.documentId));const t=await this.apiClient.flash.downloadDocument({url:this.downloadUrl}),e=await d(t);this.dispatchEvent(new g({url:e,filename:`${this.name}.pdf`}))}catch{w.error(i("No hemos podido descargar el documento."))}finally{this.isDownloading=!1}}}static{this.styles=y}formatDate(){const t=new Date(this.date);if(Number.isNaN(t.getTime()))return"";const e=u().replace("_","-");return new Intl.DateTimeFormat(e,{day:"2-digit",month:"2-digit",year:"2-digit"}).format(t)}formatKind(){switch(this.kind){case s.prescription:return i("Receta");case s.report:return i("Informe");case s.diagnosticTestPrescription:return i("Orden médica")}}get kindClass(){return(this.kind??"").replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}get metaLine(){return[this.formatDate(),this.specialty].filter(Boolean).join(" - ")}render(){return m`<div class="details"><span class="tag ${this.kindClass}">${this.formatKind()}</span><div class="text"><span class="name" title="${this.name}">${this.name}</span> <span class="meta">${this.metaLine}</span></div></div><mq-button variant="outline" size="icon-lg" aria-label="${i("Descargar documento")}" ?disabled="${this.isDownloading}" @click="${this.handleDownload}">${v({size:24})}</mq-button>`}};t([o({context:r,subscribe:!0})],x.prototype,"apiClient",void 0),t([f({type:String})],x.prototype,"documentId",void 0),t([f({type:String})],x.prototype,"kind",void 0),t([f({type:String})],x.prototype,"name",void 0),t([f({type:String})],x.prototype,"specialty",void 0),t([f({type:String})],x.prototype,"date",void 0),t([f({type:String})],x.prototype,"downloadUrl",void 0),t([f({type:String})],x.prototype,"patientHash",void 0),t([h()],x.prototype,"isDownloading",void 0),x=t([a(),e("document-row")],x);export{b as D};
@@ -1 +1 @@
1
- import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{m as a}from"./runtime-Bg1WXVCx.js";import{l as r}from"./localized-decorator-BlOuLhym.js";import{i as n,a as s,x as o}from"./lit-element-DiWJYFwC.js";import{n as i}from"./property-scuRaFcM.js";import{r as l}from"./state-LQivXIgA.js";import{e as d}from"./class-map-Co76I6aw.js";import{chevronLeftIcon as c}from"../ui/icons/chevron-left-icon.js";import{chevronRightIcon as v}from"../ui/icons/chevron-right-icon.js";import{spinnerIcon as h}from"../ui/icons/spinner-icon.js";import{t as u,c as p,n as g,g as m,p as y,a as b,s as f}from"./parseISO-Dj3qSTG8.js";import{i as D}from"./isSameDay-CuhZMy1T.js";import{i as k}from"./isBefore-CPpTogxo.js";function w(t,e,a){const r=u(t,a?.in);if(isNaN(e))return p(t,NaN);if(!e)return r;const n=r.getDate(),s=p(t,r.getTime());s.setMonth(r.getMonth()+e+1,0);return n>=s.getDate()?s:(r.setFullYear(s.getFullYear(),s.getMonth(),n),r)}function M(t,e){const a=u(t,e?.in),r=a.getMonth();return a.setFullYear(a.getFullYear(),r+1,0),a.setHours(23,59,59,999),a}function x(t,e){const{start:a,end:r}=function(t,e){const[a,r]=g(t,e.start,e.end);return{start:a,end:r}}(e?.in,t);let n=+a>+r;const s=n?+a:+r,o=n?r:a;o.setHours(0,0,0,0);const i=[];for(;+o<=s;)i.push(p(a,o)),o.setDate(o.getDate()+1),o.setHours(0,0,0,0);return n?i.reverse():i}function S(t,e){const a=u(t,e?.in);return a.setDate(1),a.setHours(0,0,0,0),a}function j(t,e){const a=m(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,n=u(t,e?.in),s=n.getDay(),o=6+(s<r?-7:0)-(s-r);return n.setDate(n.getDate()+o),n.setHours(23,59,59,999),n}function E(t,e){return+u(t)>+u(e)}function $(t,e){return D(p(t,t),function(t){return p(t,Date.now())}(t))}const N=n`:host{display:block;font-family:var(--font-body)}.calendar{background:var(--color-card);border-radius:var(--border-radius-lg);user-select:none}.calendar-header{display:flex;align-items:center;justify-content:space-between;background:var(--color-primary-background-extraWeak);padding:var(--sp-4);border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0}.calendar-header-title{font-family:var(--font-titles);font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:var(--color-gray-darkest)}.calendar-body{position:relative;transition:opacity .2s}.calendar-body.loading{opacity:.4;pointer-events:none}.calendar-nav{display:flex;gap:var(--sp-2)}.calendar-nav-button{display:flex;align-items:center;justify-content:center;width:var(--size-8);height:var(--size-8);border:none;background:0 0;border-radius:var(--border-radius-md);cursor:pointer;transition:background-color .2s;color:var(--color-gray-darkest);padding:0}.calendar-nav-button:hover{background:var(--color-background-primary-light)}.calendar-nav-button:disabled{opacity:.3;cursor:not-allowed}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,var(--sp-11));justify-content:space-between;padding:var(--sp-4) var(--sp-4) var(--sp-2) var(--sp-4)}.calendar-weekday{text-align:center;font-size:var(--text-sm);font-weight:var(--font-weight-bold);color:var(--color-gray-darkest);padding:var(--sp-2)}.calendar-days{display:grid;gap:var(--sp-1);grid-template-columns:repeat(7,var(--sp-11));justify-content:space-between;padding:0 var(--sp-4) var(--sp-4) var(--sp-4)}.calendar-day{width:var(--sp-11);height:var(--sp-11);display:flex;align-items:center;justify-content:center;border:none;background:0 0;border-radius:var(--border-radius-full);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-darkest);transition:all .2s;padding:0;position:relative}.calendar-day:hover:not(:disabled):not(.other-month){background:var(--color-gray-lighter)}.calendar-day.other-month{color:var(--color-gray-medium);background:0 0}.calendar-day:disabled{color:var(--color-gray-medium);background:0 0;cursor:not-allowed}.calendar-day.available:not(.selected){background:var(--color-primary);color:var(--color-white);font-weight:var(--font-weight-semibold)}.calendar-day.available:hover:not(:disabled):not(.selected){background:var(--color-primary-dark)}.calendar-day.selected{background:var(--color-primary);color:var(--color-white);font-weight:var(--font-weight-bold)}.calendar-day.selected:hover:not(:disabled){background:var(--color-primary-dark)}.calendar-day-empty{width:var(--sp-11);height:var(--sp-11)}.calendar-spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10}@media (min-width:640px){.calendar-weekdays{gap:var(--sp-2)}.calendar-days{gap:var(--sp-2)}}@media (min-width:768px){.calendar-weekdays{gap:var(--sp-3)}.calendar-days{gap:var(--sp-3)}}@media (min-width:1024px){.calendar-weekdays{gap:var(--sp-4)}.calendar-days{gap:var(--sp-4)}}`;class DateSelectEvent extends Event{static{this.eventName="date-select"}constructor(t){super(DateSelectEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class PrevMonthEvent extends Event{static{this.eventName="prev-month"}constructor(t){super(PrevMonthEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class NextMonthEvent extends Event{static{this.eventName="next-month"}constructor(t){super(NextMonthEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}let C=class MqCalendar extends s{constructor(){super(...arguments),this.locale="es-ES",this.isLoading=!1,this.handlePrevMonth=()=>{const t=this.getCurrentMonthDate(),e=w(t,-1,a);var a;this.dispatchEvent(new PrevMonthEvent({currentMonth:e.toISOString()}))},this.handleNextMonth=()=>{const t=w(this.getCurrentMonthDate(),1);this.dispatchEvent(new NextMonthEvent({currentMonth:t.toISOString()}))},this.handleDayClick=t=>{t.isDisabled||(this.selectedDate=t.date,this.value=t.date.toISOString(),this.dispatchEvent(new DateSelectEvent({date:t.date.toISOString()})),this.requestUpdate())}}static{this.styles=[N]}connectedCallback(){super.connectedCallback(),this.value&&(this.selectedDate=y(this.value))}getMonthYear(){const t=this.getCurrentMonthDate();return new Intl.DateTimeFormat(this.locale,{month:"long",year:"numeric"}).format(t)}getCurrentMonthDate(){return this.currentMonth?y(this.currentMonth):new Date}getWeekdays(){const t=b(new Date(2024,0,1),{weekStartsOn:1}),e=x({start:t,end:j(t,{weekStartsOn:1})}),a=new Intl.DateTimeFormat(this.locale,{weekday:"narrow"});return e.map(t=>a.format(t).toUpperCase())}getDaysInMonth(){const t=this.getCurrentMonthDate(),e=S(t),a=M(t);return x({start:b(e,{weekStartsOn:1}),end:j(a,{weekStartsOn:1})}).map(e=>{const a=function(t,e,a){const[r,n]=g(a?.in,t,e);return r.getFullYear()===n.getFullYear()&&r.getMonth()===n.getMonth()}(e,t);return this.createCalendarDay(e,a)})}createCalendarDay(t,e){const a=f(t),r=$(a),n=this.isDateAvailable(a);return{date:a,isCurrentMonth:e,isToday:r,isDisabled:this.isDateDisabled(a,n),isSelected:!!this.selectedDate&&D(a,this.selectedDate),isAvailable:n}}isDateAvailable(t){if(!this.availableDays||0===this.availableDays.length)return!1;const e=f(t);return this.availableDays.some(t=>{const a=f(y(t));return D(e,a)})}isDateDisabled(t,e){const a=f(t);if(this.availableDays&&this.availableDays.length>0)return!e;if(this.minDate){const t=f(y(this.minDate));if(k(a,t))return!0}if(this.maxDate){if(E(a,f(y(this.maxDate))))return!0}return!1}render(){const t=this.getDaysInMonth(),e=this.getWeekdays();return o`<div class="calendar"><div class="calendar-header"><button class="calendar-nav-button" @click="${this.handlePrevMonth}" aria-label="${a("Mes anterior")}">${c({size:24})}</button><div class="calendar-header-title">${this.getMonthYear()}</div><button class="calendar-nav-button" @click="${this.handleNextMonth}" aria-label="${a("Mes siguiente")}">${v({size:24})}</button></div><div class="calendar-body ${this.isLoading?"loading":""}"><div class="calendar-weekdays">${e.map(t=>o`<div class="calendar-weekday">${t}</div>`)}</div><div class="calendar-days">${t.map(t=>t.isCurrentMonth?o`<button class="${d({"calendar-day":!0,"other-month":!t.isCurrentMonth,today:t.isToday,selected:t.isSelected,available:t.isAvailable})}" ?disabled="${t.isDisabled||this.isLoading}" @click="${()=>this.handleDayClick(t)}" aria-label="${t.date.toLocaleDateString(this.locale)}">${t.date.getDate()}</button>`:o`<div class="calendar-day-empty"></div>`)}</div>${this.isLoading?o`<div class="calendar-spinner">${h({size:40,color:"var(--color-primary)"})}</div>`:""}</div></div>`}};t([i({type:String})],C.prototype,"locale",void 0),t([i({type:String,attribute:"min-date"})],C.prototype,"minDate",void 0),t([i({type:String,attribute:"max-date"})],C.prototype,"maxDate",void 0),t([i({type:String})],C.prototype,"value",void 0),t([i({type:Boolean,attribute:"is-loading"})],C.prototype,"isLoading",void 0),t([i({type:String,attribute:"current-month"})],C.prototype,"currentMonth",void 0),t([i({type:Array,attribute:"available-days"})],C.prototype,"availableDays",void 0),t([l()],C.prototype,"selectedDate",void 0),C=t([r(),e("mq-calendar")],C);export{DateSelectEvent as D,C as M,NextMonthEvent as N,PrevMonthEvent as P,M as e,E as i,S as s};
1
+ import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{m as a}from"./runtime-Bg1WXVCx.js";import{l as r}from"./localized-decorator-BlOuLhym.js";import{i as n,a as s,x as o}from"./lit-element-DiWJYFwC.js";import{n as i}from"./property-scuRaFcM.js";import{r as l}from"./state-LQivXIgA.js";import{e as d}from"./class-map-Co76I6aw.js";import{chevronLeftIcon as c}from"../ui/icons/chevron-left-icon.js";import{chevronRightIcon as v}from"../ui/icons/chevron-right-icon.js";import{spinnerIcon as h}from"../ui/icons/spinner-icon.js";import{t as u,c as p,n as g,g as m,p as y,a as b,s as f}from"./parseISO-Dj3qSTG8.js";import{i as D}from"./isSameDay-CuhZMy1T.js";import{i as k}from"./isBefore-CPpTogxo.js";function w(t,e,a){const r=u(t,a?.in);if(isNaN(e))return p(t,NaN);if(!e)return r;const n=r.getDate(),s=p(t,r.getTime());s.setMonth(r.getMonth()+e+1,0);return n>=s.getDate()?s:(r.setFullYear(s.getFullYear(),s.getMonth(),n),r)}function M(t,e){const a=u(t,e?.in),r=a.getMonth();return a.setFullYear(a.getFullYear(),r+1,0),a.setHours(23,59,59,999),a}function S(t,e){const{start:a,end:r}=function(t,e){const[a,r]=g(t,e.start,e.end);return{start:a,end:r}}(e?.in,t);let n=+a>+r;const s=n?+a:+r,o=n?r:a;o.setHours(0,0,0,0);const i=[];for(;+o<=s;)i.push(p(a,o)),o.setDate(o.getDate()+1),o.setHours(0,0,0,0);return n?i.reverse():i}function x(t,e){const a=u(t,e?.in);return a.setDate(1),a.setHours(0,0,0,0),a}function j(t,e){const a=m(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,n=u(t,e?.in),s=n.getDay(),o=6+(s<r?-7:0)-(s-r);return n.setDate(n.getDate()+o),n.setHours(23,59,59,999),n}function E(t,e){return+u(t)>+u(e)}function $(t,e){return D(p(t,t),function(t){return p(t,Date.now())}(t))}const N=n`:host{display:block;font-family:var(--font-body)}.calendar{background:var(--color-card);border-radius:var(--border-radius-lg);user-select:none}.calendar-header{display:flex;align-items:center;justify-content:space-between;background:var(--color-primary-background-extraWeak);padding:var(--sp-4);border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0}.calendar-header-title{font-family:var(--font-titles);font-size:var(--text-lg);font-weight:var(--font-weight-bold);color:var(--color-gray-darkest)}.calendar-body{position:relative;transition:opacity .2s}.calendar-body.loading{opacity:.4;pointer-events:none}.calendar-nav{display:flex;gap:var(--sp-2)}.calendar-nav-button{display:flex;align-items:center;justify-content:center;width:var(--size-8);height:var(--size-8);border:none;background:0 0;border-radius:var(--border-radius-md);cursor:pointer;transition:background-color .2s;color:var(--color-gray-darkest);padding:0}.calendar-nav-button:hover{background:var(--color-background-primary-light)}.calendar-nav-button:disabled{opacity:.3;cursor:not-allowed}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,var(--sp-11));justify-content:space-between;padding:var(--sp-4) var(--sp-4) var(--sp-2) var(--sp-4)}.calendar-weekday{text-align:center;font-size:var(--text-sm);font-weight:var(--font-weight-bold);color:var(--color-gray-darkest);padding:var(--sp-2)}.calendar-days{display:grid;gap:var(--sp-1);grid-template-columns:repeat(7,var(--sp-11));justify-content:space-between;padding:0 var(--sp-4) var(--sp-4) var(--sp-4)}.calendar-day{width:var(--sp-11);height:var(--sp-11);display:flex;align-items:center;justify-content:center;border:none;background:0 0;border-radius:var(--border-radius-full);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-darkest);transition:all .2s;padding:0;position:relative}.calendar-day:hover:not(:disabled):not(.other-month){background:var(--color-gray-lighter)}.calendar-day.other-month{color:var(--color-gray-medium);background:0 0}.calendar-day:disabled{color:var(--color-gray-medium);background:0 0;cursor:not-allowed}.calendar-day.available:not(.selected){background:var(--color-primary);color:var(--color-white);font-weight:var(--font-weight-semibold)}.calendar-day.available:hover:not(:disabled):not(.selected){background:var(--color-primary-dark)}.calendar-day.selected{background:var(--color-primary);color:var(--color-white);font-weight:var(--font-weight-bold)}.calendar-day.selected:hover:not(:disabled){background:var(--color-primary-dark)}.calendar-day-empty{width:var(--sp-11);height:var(--sp-11)}.calendar-spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10}@media (min-width:640px){.calendar-weekdays{gap:var(--sp-2)}.calendar-days{gap:var(--sp-2)}}@media (min-width:768px){.calendar-weekdays{gap:var(--sp-3)}.calendar-days{gap:var(--sp-3)}}@media (min-width:1024px){.calendar-weekdays{gap:var(--sp-4)}.calendar-days{gap:var(--sp-4)}}`;class DateSelectEvent extends Event{static{this.eventName="date-select"}constructor(t){super(DateSelectEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class PrevMonthEvent extends Event{static{this.eventName="prev-month"}constructor(t){super(PrevMonthEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class NextMonthEvent extends Event{static{this.eventName="next-month"}constructor(t){super(NextMonthEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}let C=class MqCalendar extends s{constructor(){super(...arguments),this.locale="es-ES",this.isLoading=!1,this.handlePrevMonth=()=>{const t=this.getCurrentMonthDate(),e=w(t,-1,a);var a;this.dispatchEvent(new PrevMonthEvent({currentMonth:e.toISOString()}))},this.handleNextMonth=()=>{const t=w(this.getCurrentMonthDate(),1);this.dispatchEvent(new NextMonthEvent({currentMonth:t.toISOString()}))},this.handleDayClick=t=>{t.isDisabled||(this.selectedDate=t.date,this.value=t.date.toISOString(),this.dispatchEvent(new DateSelectEvent({date:t.date.toISOString()})),this.requestUpdate())}}static{this.styles=[N]}connectedCallback(){super.connectedCallback(),this.value&&(this.selectedDate=y(this.value))}getMonthYear(){const t=this.getCurrentMonthDate();return new Intl.DateTimeFormat(this.locale,{month:"long",year:"numeric"}).format(t)}getCurrentMonthDate(){return this.currentMonth?y(this.currentMonth):new Date}getWeekdays(){const t=b(new Date(2024,0,1),{weekStartsOn:1}),e=S({start:t,end:j(t,{weekStartsOn:1})}),a=new Intl.DateTimeFormat(this.locale,{weekday:"narrow"});return e.map(t=>a.format(t).toUpperCase())}getDaysInMonth(){const t=this.getCurrentMonthDate(),e=x(t),a=M(t);return S({start:b(e,{weekStartsOn:1}),end:j(a,{weekStartsOn:1})}).map(e=>{const a=function(t,e,a){const[r,n]=g(a?.in,t,e);return r.getFullYear()===n.getFullYear()&&r.getMonth()===n.getMonth()}(e,t);return this.createCalendarDay(e,a)})}createCalendarDay(t,e){const a=f(t),r=$(a),n=this.isDateAvailable(a);return{date:a,isCurrentMonth:e,isToday:r,isDisabled:this.isDateDisabled(a,n),isSelected:!!this.selectedDate&&D(a,this.selectedDate),isAvailable:n}}isDateAvailable(t){if(!this.availableDays||0===this.availableDays.length)return!1;const e=f(t);return this.availableDays.some(t=>{const a=f(y(t));return D(e,a)})}isDateDisabled(t,e){const a=f(t);if(this.availableDays&&this.availableDays.length>0)return!e;if(this.minDate){const t=f(y(this.minDate));if(k(a,t))return!0}if(this.maxDate){if(E(a,f(y(this.maxDate))))return!0}return!1}render(){const t=this.getDaysInMonth(),e=this.getWeekdays();return o`<div class="calendar"><div class="calendar-header"><button class="calendar-nav-button" @click="${this.handlePrevMonth}" aria-label="${a("Mes anterior")}">${c({size:24})}</button><div class="calendar-header-title">${this.getMonthYear()}</div><button class="calendar-nav-button" @click="${this.handleNextMonth}" aria-label="${a("Mes siguiente")}">${v({size:24})}</button></div><div class="calendar-body ${this.isLoading?"loading":""}"><div class="calendar-weekdays">${e.map(t=>o`<div class="calendar-weekday">${t}</div>`)}</div><div class="calendar-days">${t.map(t=>t.isCurrentMonth?o`<button class="${d({"calendar-day":!0,"other-month":!t.isCurrentMonth,today:t.isToday,selected:t.isSelected,available:t.isAvailable})}" ?disabled="${t.isDisabled||this.isLoading}" @click="${()=>this.handleDayClick(t)}" aria-label="${t.date.toLocaleDateString(this.locale)}">${t.date.getDate()}</button>`:o`<div class="calendar-day-empty"></div>`)}</div>${this.isLoading?o`<div class="calendar-spinner">${h({size:40,color:"var(--color-primary)"})}</div>`:""}</div></div>`}};t([i({type:String})],C.prototype,"locale",void 0),t([i({type:String,attribute:"min-date"})],C.prototype,"minDate",void 0),t([i({type:String,attribute:"max-date"})],C.prototype,"maxDate",void 0),t([i({type:String})],C.prototype,"value",void 0),t([i({type:Boolean,attribute:"is-loading"})],C.prototype,"isLoading",void 0),t([i({type:String,attribute:"current-month"})],C.prototype,"currentMonth",void 0),t([i({type:Array,attribute:"available-days"})],C.prototype,"availableDays",void 0),t([l()],C.prototype,"selectedDate",void 0),C=t([r(),e("mq-calendar")],C);export{DateSelectEvent as D,C as M,NextMonthEvent as N,PrevMonthEvent as P,M as e,E as i,x as s};
@@ -0,0 +1 @@
1
+ import{_ as t,c as i}from"./custom-element-D2ziPxYE.js";import{l as e}from"./localized-decorator-BlOuLhym.js";import"./runtime-Bg1WXVCx.js";import{i as o,a as n,x as r,E as a}from"./lit-element-DiWJYFwC.js";import{n as s}from"./property-scuRaFcM.js";import{calendarIcon as c}from"../ui/icons/calendar-icon.js";import{fileIcon as l}from"../ui/icons/file-icon.js";import{arrowRightIcon as p}from"../ui/icons/arrow-right-icon.js";const d=o`:host{display:flex;flex-direction:column;gap:var(--sp-4);width:100%;box-sizing:border-box}svg{flex-shrink:0;width:25px;height:25px}.content{display:flex;flex-direction:column;gap:var(--sp-2)}.title{font-family:var(--font-titles);font-size:var(--text-base);line-height:1.5;font-weight:var(--font-weight-medium);color:var(--color-text-icons--primary,#0a0a22);margin:0}.description{font-family:var(--font-body);font-size:var(--text-sm);line-height:1.35;font-weight:var(--font-weight-normal);color:var(--color-text-icons--secondary,#6d658b);margin:0}@media (min-width:768px){:host{flex-direction:row;align-items:flex-start;gap:var(--sp-6)}svg{width:32px;height:32px}.description{min-height:2.7em}}`;let h=class HomeWidgetEmptyState extends n{constructor(){super(...arguments),this.icon="document",this.heading="",this.description=""}static{this.styles=d}render(){const t="calendar"===this.icon?c:l;return r`${t({size:32,color:"var(--color-primary, #4a1ea7)"})}<div class="content"><p class="title">${this.heading}</p><p class="description">${this.description}</p></div>`}};t([s({type:String})],h.prototype,"icon",void 0),t([s({type:String})],h.prototype,"heading",void 0),t([s({type:String})],h.prototype,"description",void 0),h=t([e(),i("home-widget-empty-state")],h);const m=o`:host{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);width:100%}.heading{font-family:var(--font-titles);font-size:var(--text-base);line-height:1.5;font-weight:var(--font-weight-medium);color:var(--color-text-icons--primary,#0a0a22);margin:0}.action{display:inline-flex;align-items:center;gap:6px;background:0 0;border:none;padding:0;cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);line-height:1.35;font-weight:var(--font-weight-normal);color:var(--color-primary-text-link,#4a1ea7);white-space:nowrap}.action:hover{text-decoration:underline}.action svg{flex-shrink:0}`;let g=class SectionHeader extends n{constructor(){super(...arguments),this.heading=""}static{this.styles=m}render(){return r`<h2 class="heading">${this.heading}</h2>${this.actionLabel?r`<button class="action" type="button" @click="${()=>{this.dispatchEvent(new CustomEvent("section-action",{bubbles:!0,composed:!0}))}}">${this.actionLabel} ${p({size:18,color:"var(--color-primary-text-link, #4a1ea7)"})}</button>`:a}`}};t([s({type:String})],g.prototype,"heading",void 0),t([s({type:String,attribute:"action-label"})],g.prototype,"actionLabel",void 0),g=t([e(),i("section-header")],g);
@@ -1 +1 @@
1
- import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{E as s,i,a as o,x as n}from"./lit-element-DiWJYFwC.js";import{n as r}from"./property-scuRaFcM.js";import{r as l}from"./state-LQivXIgA.js";import{e as a}from"./class-map-Co76I6aw.js";import{i as d,t as c,e as p}from"./directive-2EDmOukv.js";import{o as v}from"./style-map-CIdqdn7C.js";import"../ui/mq-text-button.js";const u={},m=(t,e=u)=>t._$AH=e,x=(t,e)=>{const s=t._$AN;if(void 0===s)return!1;for(const t of s)t._$AO?.(e,!1),x(t,e);return!0},$=t=>{let e,s;do{if(void 0===(e=t._$AM))break;s=e._$AN,s.delete(t),t=e}while(0===s?.size)},b=t=>{for(let e;e=t._$AM;t=e){let s=e._$AN;if(void 0===s)e._$AN=s=new Set;else if(s.has(t))break;s.add(t),A(e)}};function _(t){void 0!==this._$AN?($(this),this._$AM=t,b(this)):this._$AM=t}function g(t,e=!1,s=0){const i=this._$AH,o=this._$AN;if(void 0!==o&&0!==o.size)if(e)if(Array.isArray(i))for(let t=s;t<i.length;t++)x(i[t],!1),$(i[t]);else null!=i&&(x(i,!1),$(i));else x(this,t)}const A=t=>{t.type==c.CHILD&&(t._$AP??=g,t._$AQ??=_)};class f extends d{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),b(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&(x(this,t),$(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class h{}const y=new WeakMap,w=p(class extends f{render(t){return s}update(t,[e]){const i=e!==this.G;return i&&void 0!==this.G&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.G=e,this.ht=t.options?.host,this.rt(this.ct=t.element)),s}rt(t){if(this.isConnected||(t=void 0),"function"==typeof this.G){const e=this.ht??globalThis;let s=y.get(e);void 0===s&&(s=new WeakMap,y.set(e,s)),void 0!==s.get(this.G)&&this.G.call(this.ht,void 0),s.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return"function"==typeof this.G?y.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),C=i`:host{display:flex;flex-direction:column;gap:var(--sp-1)}.text{margin:0}.text.is-clamped{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.toggle{align-self:flex-start}`;let G=class MqClampedText extends o{constructor(){super(...arguments),this.lines=2,this.expandLabel="",this.collapseLabel="",this.expanded=!1,this.overflowing=!1,this.textRef=new h,this.measure=()=>{const t=this.textRef.value;if(!t||this.expanded)return;const e=t.scrollHeight-t.clientHeight>1;e!==this.overflowing&&(this.overflowing=e)}}static{this.styles=C}updated(){const t=this.textRef.value;t&&!this.resizeObserver&&(this.resizeObserver=new ResizeObserver(()=>this.measure()),this.resizeObserver.observe(t)),this.measure()}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0}render(){return n`<div ${w(this.textRef)} class="text ${a({"is-clamped":!this.expanded})}" style="${v({"-webkit-line-clamp":this.expanded?"":String(this.lines)})}"><slot @slotchange="${this.measure}"></slot></div>${this.expanded||this.overflowing?n`<mq-text-button class="toggle" type="button" size="sm" fontWeight="normal" underlined @click="${()=>{this.expanded=!this.expanded}}">${this.expanded?this.collapseLabel:this.expandLabel}</mq-text-button>`:s}`}};t([r({type:Number})],G.prototype,"lines",void 0),t([r({type:String,attribute:"expand-label"})],G.prototype,"expandLabel",void 0),t([r({type:String,attribute:"collapse-label"})],G.prototype,"collapseLabel",void 0),t([l()],G.prototype,"expanded",void 0),t([l()],G.prototype,"overflowing",void 0),G=t([e("mq-clamped-text")],G);export{G as M,f,m};
1
+ import{_ as t,c as e}from"./custom-element-D2ziPxYE.js";import{E as s,i,a as o,x as n}from"./lit-element-DiWJYFwC.js";import{n as r}from"./property-scuRaFcM.js";import{r as l}from"./state-LQivXIgA.js";import{e as a}from"./class-map-Co76I6aw.js";import{i as d,t as c,e as p}from"./directive-2EDmOukv.js";import{o as v}from"./style-map-CIdqdn7C.js";import"../ui/mq-text-button.js";const u={},m=(t,e=u)=>t._$AH=e,$=(t,e)=>{const s=t._$AN;if(void 0===s)return!1;for(const t of s)t._$AO?.(e,!1),$(t,e);return!0},x=t=>{let e,s;do{if(void 0===(e=t._$AM))break;s=e._$AN,s.delete(t),t=e}while(0===s?.size)},b=t=>{for(let e;e=t._$AM;t=e){let s=e._$AN;if(void 0===s)e._$AN=s=new Set;else if(s.has(t))break;s.add(t),A(e)}};function _(t){void 0!==this._$AN?(x(this),this._$AM=t,b(this)):this._$AM=t}function g(t,e=!1,s=0){const i=this._$AH,o=this._$AN;if(void 0!==o&&0!==o.size)if(e)if(Array.isArray(i))for(let t=s;t<i.length;t++)$(i[t],!1),x(i[t]);else null!=i&&($(i,!1),x(i));else $(this,t)}const A=t=>{t.type==c.CHILD&&(t._$AP??=g,t._$AQ??=_)};class f extends d{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),b(this),this.isConnected=t._$AU}_$AO(t,e=!0){t!==this.isConnected&&(this.isConnected=t,t?this.reconnected?.():this.disconnected?.()),e&&($(this,t),x(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class h{}const y=new WeakMap,w=p(class extends f{render(t){return s}update(t,[e]){const i=e!==this.G;return i&&void 0!==this.G&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.G=e,this.ht=t.options?.host,this.rt(this.ct=t.element)),s}rt(t){if(this.isConnected||(t=void 0),"function"==typeof this.G){const e=this.ht??globalThis;let s=y.get(e);void 0===s&&(s=new WeakMap,y.set(e,s)),void 0!==s.get(this.G)&&this.G.call(this.ht,void 0),s.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return"function"==typeof this.G?y.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),C=i`:host{display:flex;flex-direction:column;gap:var(--sp-1)}.text{margin:0}.text.is-clamped{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.toggle{align-self:flex-start}`;let G=class MqClampedText extends o{constructor(){super(...arguments),this.lines=2,this.expandLabel="",this.collapseLabel="",this.expanded=!1,this.overflowing=!1,this.textRef=new h,this.measure=()=>{const t=this.textRef.value;if(!t||this.expanded)return;const e=t.scrollHeight-t.clientHeight>1;e!==this.overflowing&&(this.overflowing=e)}}static{this.styles=C}updated(){const t=this.textRef.value;t&&!this.resizeObserver&&(this.resizeObserver=new ResizeObserver(()=>this.measure()),this.resizeObserver.observe(t)),this.measure()}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver?.disconnect(),this.resizeObserver=void 0}render(){return n`<div ${w(this.textRef)} class="text ${a({"is-clamped":!this.expanded})}" style="${v({"-webkit-line-clamp":this.expanded?"":String(this.lines)})}"><slot @slotchange="${this.measure}"></slot></div>${this.expanded||this.overflowing?n`<mq-text-button class="toggle" type="button" size="sm" fontWeight="normal" underlined @click="${()=>{this.expanded=!this.expanded}}">${this.expanded?this.collapseLabel:this.expandLabel}</mq-text-button>`:s}`}};t([r({type:Number})],G.prototype,"lines",void 0),t([r({type:String,attribute:"expand-label"})],G.prototype,"expandLabel",void 0),t([r({type:String,attribute:"collapse-label"})],G.prototype,"collapseLabel",void 0),t([l()],G.prototype,"expanded",void 0),t([l()],G.prototype,"overflowing",void 0),G=t([e("mq-clamped-text")],G);export{G as M,f,m};
@@ -1,6 +1,7 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
3
  import { LitElement, PropertyValues } from 'lit';
4
+ import { M as MediquoApiChatClient } from './index.d-Bl682CAX.js';
4
5
  import '../ui/mq-checkbox.js';
5
6
  import '../ui/mq-button.js';
6
7
  import { Env } from '../env.js';
@@ -31,6 +32,13 @@ declare class MqTermsAndConditions extends LitElement {
31
32
  /** Environment override ("development" | "production"). Optional. */
32
33
  env?: Env;
33
34
  private _accepted;
35
+ /** The organization scope this element was mounted under, if any. */
36
+ private inheritedApiClient?;
37
+ /**
38
+ * This element's own transport, bound to its `api-key` and provided to every
39
+ * descendant. Never shared with another element.
40
+ */
41
+ apiClient: MediquoApiChatClient;
34
42
  protected willUpdate(changed: PropertyValues<this>): void;
35
43
  private handleCheckboxChange;
36
44
  private acceptLegalConsentMutation;