@mediquo/elements 0.5.0 → 0.5.2

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 (87) hide show
  1. package/README.md +3 -1
  2. package/dist/chunks/api-chat-client-1Vz6ZOwp.js +1 -0
  3. package/dist/chunks/{apple-pay-outcomes-CjCnBYOD.js → apple-pay-outcomes-0ozxSHyb.js} +1 -1
  4. package/dist/chunks/appointment-card-skeleton-1c7552Ln.d.ts +398 -0
  5. package/dist/chunks/appointment-card-skeleton-hglMW7x6.js +1 -0
  6. package/dist/chunks/{documentation-view-fFbvjJqx.js → documentation-view-geQU8ttU.js} +1 -1
  7. package/dist/chunks/get-patient-documents-query-DIQH-TMM.js +1 -0
  8. package/dist/chunks/{index-CLdWVaEs.js → index-BBUiLb3Y.js} +1 -1
  9. package/dist/chunks/index-BJYWtEmT.js +1 -0
  10. package/dist/chunks/{index-Xcn-xs13.js → index-Bx8TWBsk.js} +1 -1
  11. package/dist/chunks/{price-BmA2Dl9f.js → price-DIhNpS8n.js} +1 -1
  12. package/dist/chunks/{refund-cancel-policy-D_tUYPyv.js → refund-cancel-policy-BQDnePq9.js} +1 -1
  13. package/dist/chunks/{schemas.d-BEA8Pl6w.d.ts → schemas.d-5CaMrfOq.d.ts} +6 -0
  14. package/dist/chunks/telemetry-client-BLJVs9me.js +1 -0
  15. package/dist/env.js +1 -1
  16. package/dist/events.d.ts +56 -1
  17. package/dist/events.js +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/mq-apple-pay-checkout.js +1 -1
  21. package/dist/mq-appointment-checkout.d.ts +1 -1
  22. package/dist/mq-appointment-checkout.js +1 -1
  23. package/dist/mq-appointment-documentation.js +1 -1
  24. package/dist/mq-chat-room.js +1 -1
  25. package/dist/mq-checkout.js +1 -1
  26. package/dist/mq-dashboard.d.ts +224 -0
  27. package/dist/mq-dashboard.js +1 -0
  28. package/dist/mq-documents.js +1 -1
  29. package/dist/mq-google-pay-checkout.js +1 -1
  30. package/dist/mq-immediate-videocall-checkout.js +1 -1
  31. package/dist/mq-my-appointments.d.ts +9 -391
  32. package/dist/mq-my-appointments.js +1 -1
  33. package/dist/mq-payment-poller.d.ts +61 -0
  34. package/dist/mq-payment-poller.js +1 -0
  35. package/dist/mq-professional-presence-sync.js +1 -1
  36. package/dist/mq-schedule-success.js +2 -2
  37. package/dist/mq-schedule.d.ts +8 -2
  38. package/dist/mq-schedule.js +1 -1
  39. package/dist/mq-support-chat.d.ts +1 -1
  40. package/dist/mq-support-chat.js +1 -1
  41. package/dist/mq-terms-and-conditions.js +1 -1
  42. package/dist/mq-unread-count-sync.js +1 -1
  43. package/dist/mq-videocall.js +1 -1
  44. package/dist/react/mq-apple-pay-checkout.d.ts +24 -7
  45. package/dist/react/mq-apple-pay-checkout.js +1 -1
  46. package/dist/react/mq-appointment-checkout.d.ts +21 -6
  47. package/dist/react/mq-appointment-checkout.js +1 -1
  48. package/dist/react/mq-appointment-documentation.d.ts +17 -6
  49. package/dist/react/mq-appointment-documentation.js +1 -1
  50. package/dist/react/mq-chat-room.d.ts +30 -7
  51. package/dist/react/mq-chat-room.js +1 -1
  52. package/dist/react/mq-checkout.d.ts +22 -8
  53. package/dist/react/mq-checkout.js +1 -1
  54. package/dist/react/mq-dashboard.d.ts +57 -0
  55. package/dist/react/mq-dashboard.js +2 -0
  56. package/dist/react/mq-documents.d.ts +16 -2
  57. package/dist/react/mq-documents.js +1 -1
  58. package/dist/react/mq-google-pay-checkout.d.ts +29 -7
  59. package/dist/react/mq-google-pay-checkout.js +1 -1
  60. package/dist/react/mq-immediate-videocall-checkout.d.ts +15 -5
  61. package/dist/react/mq-immediate-videocall-checkout.js +1 -1
  62. package/dist/react/mq-my-appointments.d.ts +26 -6
  63. package/dist/react/mq-my-appointments.js +1 -1
  64. package/dist/react/mq-payment-poller.d.ts +33 -0
  65. package/dist/react/mq-payment-poller.js +2 -0
  66. package/dist/react/mq-professional-presence-sync.d.ts +8 -2
  67. package/dist/react/mq-professional-presence-sync.js +1 -1
  68. package/dist/react/mq-query-client-provider.d.ts +9 -2
  69. package/dist/react/mq-schedule-success.d.ts +30 -7
  70. package/dist/react/mq-schedule-success.js +1 -1
  71. package/dist/react/mq-schedule.d.ts +47 -8
  72. package/dist/react/mq-schedule.js +1 -1
  73. package/dist/react/mq-session-provider.d.ts +11 -2
  74. package/dist/react/mq-socket-provider.d.ts +13 -2
  75. package/dist/react/mq-support-chat.d.ts +31 -2
  76. package/dist/react/mq-support-chat.js +1 -1
  77. package/dist/react/mq-terms-and-conditions.d.ts +21 -5
  78. package/dist/react/mq-terms-and-conditions.js +1 -1
  79. package/dist/react/mq-theme-provider.d.ts +13 -2
  80. package/dist/react/mq-toast-container.d.ts +10 -2
  81. package/dist/react/mq-unread-count-sync.d.ts +8 -2
  82. package/dist/react/mq-unread-count-sync.js +1 -1
  83. package/dist/react/mq-videocall.d.ts +30 -12
  84. package/dist/react/mq-videocall.js +1 -1
  85. package/package.json +9 -1
  86. package/dist/chunks/api-chat-client-CqMn2JEn.js +0 -1
  87. package/dist/chunks/telemetry-client-Ca71sobH.js +0 -1
package/README.md CHANGED
@@ -54,6 +54,7 @@ schedule?.addEventListener("back", () => {
54
54
 
55
55
  | Element | Import | Description |
56
56
  | --- | --- | --- |
57
+ | `mq-dashboard` | `@mediquo/elements/mq-dashboard` | Patient home dashboard (hero, next appointment, recent documents, support banner); emits redirect events |
57
58
  | `mq-schedule` | `@mediquo/elements/mq-schedule` | Multi-step appointment booking / reschedule |
58
59
  | `mq-schedule-success` | `@mediquo/elements/mq-schedule-success` | Post-booking confirmation screen |
59
60
  | `mq-my-appointments` | `@mediquo/elements/mq-my-appointments` | Upcoming and past appointments |
@@ -77,7 +78,7 @@ Mount these as ancestors of the features that need them:
77
78
  | `mq-theme-provider` | `@mediquo/elements/mq-theme-provider` | Always — design tokens |
78
79
  | `mq-query-client-provider` | `@mediquo/elements/mq-query-client-provider` | Data-fetching features (`mq-schedule`, `mq-chat-room`, …) |
79
80
  | `mq-socket-provider` | `@mediquo/elements/mq-socket-provider` | Realtime features (`mq-chat-room`) |
80
- | `mq-session-provider` | `@mediquo/elements/mq-session-provider` | Features that read the patient session — `mq-my-appointments`, `mq-videocall`, `mq-appointment-documentation`, background sync |
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 |
81
82
 
82
83
  Set `mq-session-provider`'s `session` as a **property** (it's the login-token
83
84
  response object from your auth exchange, not a string attribute):
@@ -207,6 +208,7 @@ Shared contract (also exported from `@mediquo/elements/events`):
207
208
  | `mq-appointment-reschedule` | `{ appointmentId }` | Reschedule |
208
209
  | `mq-appointment-join-videocall` | `{ appointmentId }` | Join videocall |
209
210
  | `mq-appointment-view-documentation` | `{ appointmentId }` | Open documentation |
211
+ | `mq-view-documents` | — | Open the full documents list (from `mq-dashboard`) |
210
212
  | `mq-download-file` | `{ url, filename }` | Host should persist / download a file |
211
213
 
212
214
  Feature-specific events (e.g. `appointment-created` on `mq-schedule`) are documented per component.
@@ -0,0 +1 @@
1
+ import{o as e,n as t,a as n,z as r,s as i,e as s,b as o,r as a,u as l,c,d as u,f as d,l as p,g as h,i as f}from"./external-CJj32K_p.js";import{p as m}from"./parseISO-Dj3qSTG8.js";import{f as g}from"./format-CRFiCNHw.js";import{i as b}from"./isBefore-CPpTogxo.js";import{env as y}from"../env.js";function _(r){return e({data:n(r),meta:e({current_page:t(),last_page:t(),per_page:t(),total:t()})})}var v=r.enum(["prescription","report","diagnosticTestPrescription"]),w=v.enum,E=r.enum(["published","draft"]);E.enum;var C=r.object({document_id:r.string().uuid(),document_type:v,name:r.string(),professional:r.object({speciality_id:r.number()}),status:E,url:r.string().url(),created_at:r.string()}),R=e({hash:i(),profile:e({first_name:i().nullable(),last_name:i().nullable(),birth_date:i().nullable(),gender:s(["male","female"]).nullable(),email:i().nullable(),phone_prefix:i().nullable(),phone:i().nullable(),billing:e({tax_id:i().nullable(),address:i().nullable(),country_code:i().nullable(),region:i().nullable(),postal_code:i().nullable()})})});function O(e){const t=e?.profile;return`${t?.first_name??""} ${t?.last_name??""}`.trim()}function S(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)}function A(e){return m(`${e.replace(" ","T")}Z`)}function T(e){const t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds()));return g(t,"yyyy-MM-dd HH:mm:ss")}function j(e,t){try{const n=new Intl.DateTimeFormat("en",{timeZone:e,timeZoneName:"shortOffset"}).formatToParts(t);return n.find(e=>"timeZoneName"===e.type)?.value??""}catch{return""}}var x=r.enum(["pending","expired","accepted","inCall","declined","cancelled","finished","free_of_charge","owed","unpaid","reporting"]),P=x.enum,k=r.enum(["videocall","chat","phonecall"]),N=k.enum,U=r.object({id:r.string().uuid(),room_id:r.string(),channel:k,consultation_short_url:r.string().url().nullable(),call_id:r.string().url(),duration:r.number(),from:r.object({hash:r.string(),name:r.string().nullable(),avatar:r.string().url().nullable(),speciality:r.string().nullable(),collegiate_number:r.string().nullable(),is_dismissed:r.boolean(),languages:r.array(r.string()),description:r.string().nullable()}),to:r.object({id:r.number(),hash:r.string(),name:r.string().nullable(),avatar:r.string().url().nullable(),is_dismissed:r.boolean()}),speciality_id:r.number().nullable(),created_at:r.string(),status:x,seconds_to_open:r.number().nonnegative(),start_date:r.string(),started_at:r.string().nullable(),expires_at:r.string().nullable(),consultation_reason:r.string().nullable(),preconsultation_documents:r.array(r.object({file_path:r.string(),file_name:r.string(),id:r.string().uuid()})).nullable(),service_id:r.string().uuid().nullable(),price:r.number().nullable().optional(),currency:r.string().nullable().optional(),discount_amount:r.number().nullable().optional()}),D=r.enum(["appointment","chat","immediate"]),L=D.enum;function F(e){return 0===e.seconds_to_open}function B(e){if(!e)return!1;const t=new Date,n=A(e);return b(n,t)}r.object({appointmentId:r.string()});var I=U;r.object({callId:r.string()});var $=r.object({session_id:r.string(),session_token:r.string()});r.object({professional_hash:r.string(),consultation_id:r.string(),consultation_type:r.enum(["appointment"])}),r.object({professional_hash:r.string(),consultation_id:r.string(),consultation_type:r.enum(["appointment"])}),r.object({appointment_id:r.string()});var M=r.array(C);r.object({url:r.string().url()}),r.object({first_name:R.shape.profile.shape.first_name,last_name:R.shape.profile.shape.last_name,tax_id:R.shape.profile.shape.billing.shape.tax_id,birth_date:R.shape.profile.shape.birth_date,gender:R.shape.profile.shape.gender.optional(),email:R.shape.profile.shape.email,phone_prefix:R.shape.profile.shape.phone_prefix,phone:R.shape.profile.shape.phone,terms_accepted:r.boolean(),privacy_accepted:r.boolean()}),r.object({patient_hash:r.string(),page:r.number().optional(),per_page:r.number().optional()});var q=_(C),z=r.array(r.object({id:r.number(),name:r.string(),code:r.string()})),H=r.object({primary_color:r.string().nullable(),logo:r.string().nullable(),favicon:r.string().nullable(),support_professional:r.object({hash:r.string().nullable()}).optional(),home:r.object({title:r.string().nullable(),description:r.string().nullable(),image_url:r.string().nullable()}),appointments:r.object({reserve_conditions:r.string().nullable(),seconds_before_start_to_refund_on_cancel:r.number().nullable(),has_nps:r.boolean().optional(),has_chat_in_appointment:r.boolean().optional(),has_discount_coupons_show:r.boolean().optional()}),legal_consent:r.object({terms_url:r.string().nullable(),privacy_url:r.string().nullable()})});e({slot_id:i().uuid(),service_id:i().uuid(),specialty_id:i(),consultation_reason:i().optional(),preconsultation_documents:n(e({file_path:i(),file_name:i()})).optional(),discount_code:i().optional()});var J=e({id:i(),percent_off:t(),code:i(),after_discount_amount:t().nullable()}),W=e({id:i(),percent_off:t(),code:i(),name:i().nullish()}),V={Addon:"addon",Stripe:"stripe"},K=e({session_id:i(),payment_link:i().url(),provider:o(V).optional()});e({video_call_schedule_id:i()});var X=K,G={Paid:"paid",Unpaid:"unpaid",Denied:"denied"},Z=e({status:o(G),consultation_id:i(),consultation_type:i()});e({order_id:i(),validation_url:i().url()});var Q=a(l());e({order_id:i(),token:i()});var Y=e({data:e({status:o(G),consultation_id:i(),consultation_type:i().optional()})});e({order_id:i(),token:i()});var ee=e({data:e({status:o(G),consultation_id:i(),consultation_type:i().optional()})}),te=s(["monday","tuesday","wednesday","thursday","friday","saturday","sunday","working_week","weekend","all_week"]);te.enum;var ne=e({days_of_week:te,from_time:i(),to_time:i()});e({hash:i().uuid()});var re=e({hash:i().uuid(),active_absence:e({id:i().uuid(),finishes_at:i()}).nullable(),avatar:i().url().nullable(),collegiate_number:i().nullable(),description:i().nullable(),is_available:c(),name:i(),overview:i().nullable(),schedule_description:i().nullable(),speciality_id:t().nullable(),status:s(["online","offline"]),title:i().nullable(),chat_schedule:e({channel:k,duration:t(),name:i(),timezone:i(),starts_at:i(),gaps:n(ne)}).nullable()});function ie(e){return e.active_absence?"absent":"online"===e.status?"online":"offline"}s(["online","offline","absent"]),e({roomId:t()});var se=R;e({first_name:i(),last_name:i(),tax_id:i(),birth_date:i(),gender:s(["male","female"]),email:i(),phone_prefix:i(),phone:i(),terms_accepted:c(),privacy_accepted:c()}),e({terms_accepted:c(),privacy_accepted:c(),commercial_accepted:c()}),e({hash:i().uuid()});var oe=e({id:t(),hash:i().uuid(),speciality_alias:i(),name:i(),avatar:i().url(),description:i(),collegiate_number:i(),languages:n(i()),centers:n(e({id:i().uuid(),name:i()}))});u([p(1),p(2),p(3)]);var ae={Sent:1,Received:2,Read:3},le=e({roomId:t(),messageId:i().uuid(),string:i(),status:t(),senderType:s(["ordinary","system"]),fromUserHash:i().uuid(),auto:u([p(0),p(1)]),createdAt:i().nullable(),deletedAt:i().nullable(),time:t().nullable()}),ce=e({file_name:i(),file_size:t(),url:i().url(),signed_url:i().url().nullable(),type:s(["uncategorized","voice_note"]),meta:e({duration:t()})}),ue=le.extend({type:p("string"),attachment:d()}),de=le.extend({type:p("file"),attachment:ce}),pe=le.extend({type:p("image"),attachment:ce});e({roomId:t()});var he=n(u([ue,de,pe]));e({roomId:t()});var fe=e({unread_count:t()});e({professional_hash:i()});var me=e({room_id:t()}),ge=s(["available","reserved"]),be=ge.enum,ye=e({id:i().uuid(),channel:k,duration:t(),starts_at:i(),finishes_at:i(),professional:e({id:i().uuid(),name:i()}),services:n(e({id:i().uuid(),name:i()})),speciality:e({id:t(),price:e({amount:t(),currency:i()}).nullish()}),status:ge}),_e=r.array(r.object({id:r.string().uuid(),name:r.string(),code:r.string(),channel:k,price:r.object({amount:r.number(),currency:r.string()}).nullable()})),ve=r.array(r.object({id:r.string().uuid(),avatar:r.string().url().nullable(),description:r.string().nullable(),collegiate_number:r.string().nullable(),languages:r.array(r.string()),name:r.string(),slots:r.array(ye),speciality:r.object({id:r.number()}),tax_id:r.string().nullable()}));r.object({speciality_id:r.number(),organization_schedule_service_id:r.string().uuid(),closest_slots_days:r.number().optional(),slots_per_day:r.number().optional()}),r.object({service_id:r.string().uuid(),professional_hash:r.string().uuid(),starts_at:r.string(),finishes_at:r.string(),rescheduling_appointment_id:r.string().uuid().optional()});var we=r.array(ye),Ee=r.array(r.object({id:r.number(),name:r.string(),code:r.string().nullish(),price:r.object({amount:r.number(),currency:r.string()}).nullable()}));r.object({slot_id:r.string().uuid(),service_id:r.string().uuid().optional(),speciality_id:r.number().optional()});var Ce=ye;e({status:n(x).optional(),order:e({field:s(["starts_at"]).optional(),direction:s(["asc","desc"]).optional()}).optional(),page:t().optional(),per_page:t().optional()});var Re=_(e({appointment:e({id:i().uuid(),url:i().url(),starts_at:i(),duration:t(),status:x,channel:k,expires_at:i().nullable(),service_id:i().uuid().nullable()}),room:e({id:t()}),price:e({amount:t(),currency:i()}).nullable(),patient:e({hash:i().uuid()}),slots:n(h()),professional:e({hash:i().uuid(),name:i(),avatar:i().url().optional(),description:i().optional(),languages:n(i()),collegiate_number:i().optional()}),speciality:e({id:t(),name:i()})}));e({slot_id:i().uuid(),service_id:i().uuid(),consultation_reason:i().optional(),preconsultation_documents:n(e({file_path:i(),file_name:i()})).optional(),discount_code:i().optional()});var Oe=e({appointment:e({id:i().uuid()})});e({id:i().uuid()});var Se=U,Ae=e({file_path:i(),presigned_storage_url:i().url()});e({id:i().uuid(),slot_id:i().uuid(),consultation_reason:i().optional(),preconsultation_documents:n(e({file_path:i(),file_name:i()})).optional()}),e({id:i().uuid()}),e({appointment_id:i().uuid(),consultation_reason:i().optional()}),e({appointment_id:i().uuid(),file_path:i(),file_name:i()}),e({appointment_id:i().uuid(),document_id:i().uuid()}),e({appointmentId:i().uuid()}),r.object({api_key:r.string(),token:r.string()});var Te=r.object({access_token:r.string(),patient:r.object({hash:r.string(),country_code:r.string(),timezone:r.string(),first_name:r.string(),last_name:r.string(),name:r.string(),birth_date:r.string(),email:r.string().email(),language_code:r.string(),phone:r.string(),phone_prefix:r.string(),tax_id:r.string(),legal_consent:r.object({accepted_at:r.string().nullable(),last_version_at:r.string().nullable(),terms_url:r.string(),privacy_url:r.string(),has_commercial_communications:r.boolean(),organization_name:r.string()})})});e({consultation_id:i(),consultation_type:D,rating:t().int().min(1).max(5),comment:i().nullable().optional()});var je=e({rating:t().int().optional(),comment:i().nullable().optional()}).passthrough();e({file:f(File)});var xe=e({url:i().url()});function Pe(e,t){return function(){return e.apply(t,arguments)}}const{toString:ke}=Object.prototype,{getPrototypeOf:Ne}=Object,{iterator:Ue,toStringTag:De}=Symbol,Le=(Fe=Object.create(null),e=>{const t=ke.call(e);return Fe[t]||(Fe[t]=t.slice(8,-1).toLowerCase())});var Fe;const Be=e=>(e=e.toLowerCase(),t=>Le(t)===e),Ie=e=>t=>typeof t===e,{isArray:$e}=Array,Me=Ie("undefined");function qe(e){return null!==e&&!Me(e)&&null!==e.constructor&&!Me(e.constructor)&&Je(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const ze=Be("ArrayBuffer");const He=Ie("string"),Je=Ie("function"),We=Ie("number"),Ve=e=>null!==e&&"object"==typeof e,Ke=e=>{if("object"!==Le(e))return!1;const t=Ne(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||De in e||Ue in e)},Xe=Be("Date"),Ge=Be("File"),Ze=Be("Blob"),Qe=Be("FileList"),Ye=Be("URLSearchParams"),[et,tt,nt,rt]=["ReadableStream","Request","Response","Headers"].map(Be);function it(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,i;if("object"!=typeof e&&(e=[e]),$e(e))for(r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else{if(qe(e))return;const i=n?Object.getOwnPropertyNames(e):Object.keys(e),s=i.length;let o;for(r=0;r<s;r++)o=i[r],t.call(null,e[o],o,e)}}function st(e,t){if(qe(e))return null;t=t.toLowerCase();const n=Object.keys(e);let r,i=n.length;for(;i-- >0;)if(r=n[i],t===r.toLowerCase())return r;return null}const ot="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,at=e=>!Me(e)&&e!==ot;const lt=(ct="undefined"!=typeof Uint8Array&&Ne(Uint8Array),e=>ct&&e instanceof ct);var ct;const ut=Be("HTMLFormElement"),dt=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),pt=Be("RegExp"),ht=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};it(n,(n,i)=>{let s;!1!==(s=t(n,i,e))&&(r[i]=s||n)}),Object.defineProperties(e,r)};const ft=Be("AsyncFunction"),mt=(gt="function"==typeof setImmediate,bt=Je(ot.postMessage),gt?setImmediate:bt?(yt=`axios@${Math.random()}`,_t=[],ot.addEventListener("message",({source:e,data:t})=>{e===ot&&t===yt&&_t.length&&_t.shift()()},!1),e=>{_t.push(e),ot.postMessage(yt,"*")}):e=>setTimeout(e));var gt,bt,yt,_t;const vt="undefined"!=typeof queueMicrotask?queueMicrotask.bind(ot):"undefined"!=typeof process&&process.nextTick||mt;var wt={isArray:$e,isArrayBuffer:ze,isBuffer:qe,isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||Je(e.append)&&("formdata"===(t=Le(e))||"object"===t&&Je(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ze(e.buffer),t},isString:He,isNumber:We,isBoolean:e=>!0===e||!1===e,isObject:Ve,isPlainObject:Ke,isEmptyObject:e=>{if(!Ve(e)||qe(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:et,isRequest:tt,isResponse:nt,isHeaders:rt,isUndefined:Me,isDate:Xe,isFile:Ge,isBlob:Ze,isRegExp:pt,isFunction:Je,isStream:e=>Ve(e)&&Je(e.pipe),isURLSearchParams:Ye,isTypedArray:lt,isFileList:Qe,forEach:it,merge:function e(){const{caseless:t}=at(this)&&this||{},n={},r=(r,i)=>{const s=t&&st(n,i)||i;Ke(n[s])&&Ke(r)?n[s]=e(n[s],r):Ke(r)?n[s]=e({},r):$e(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&it(arguments[e],r);return n},extend:(e,t,n,{allOwnKeys:r}={})=>(it(t,(t,r)=>{n&&Je(t)?e[r]=Pe(t,n):e[r]=t},{allOwnKeys:r}),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,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let i,s,o;const a={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),s=i.length;s-- >0;)o=i[s],r&&!r(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==n&&Ne(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:Le,kindOfTest:Be,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if($e(e))return e;let t=e.length;if(!We(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Ue]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:ut,hasOwnProperty:dt,hasOwnProp:dt,reduceDescriptors:ht,freezeMethods:e=>{ht(e,(t,n)=>{if(Je(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];Je(r)&&(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={},r=e=>{e.forEach(e=>{n[e]=!0})};return $e(e)?r(e):r(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:st,global:ot,isContextDefined:at,isSpecCompliantForm:function(e){return!!(e&&Je(e.append)&&"FormData"===e[De]&&e[Ue])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(Ve(e)){if(t.indexOf(e)>=0)return;if(qe(e))return e;if(!("toJSON"in e)){t[r]=e;const i=$e(e)?[]:{};return it(e,(e,t)=>{const s=n(e,r+1);!Me(s)&&(i[t]=s)}),t[r]=void 0,i}}return e};return n(e,0)},isAsyncFn:ft,isThenable:e=>e&&(Ve(e)||Je(e))&&Je(e.then)&&Je(e.catch),setImmediate:mt,asap:vt,isIterable:e=>null!=e&&Je(e[Ue])};function Et(e,t,n,r,i){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),r&&(this.request=r),i&&(this.response=i,this.status=i.status?i.status:null)}wt.inherits(Et,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:wt.toJSONObject(this.config),code:this.code,status:this.status}}});const Ct=Et.prototype,Rt={};["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=>{Rt[e]={value:e}}),Object.defineProperties(Et,Rt),Object.defineProperty(Ct,"isAxiosError",{value:!0}),Et.from=(e,t,n,r,i,s)=>{const o=Object.create(Ct);return wt.toFlatObject(e,o,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),Et.call(o,e.message,t,n,r,i),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function Ot(e){return wt.isPlainObject(e)||wt.isArray(e)}function St(e){return wt.endsWith(e,"[]")?e.slice(0,-2):e}function At(e,t,n){return e?e.concat(t).map(function(e,t){return e=St(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const Tt=wt.toFlatObject(wt,{},null,function(e){return/^is[A-Z]/.test(e)});function jt(e,t,n){if(!wt.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=wt.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!wt.isUndefined(t[e])})).metaTokens,i=n.visitor||c,s=n.dots,o=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&wt.isSpecCompliantForm(t);if(!wt.isFunction(i))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(wt.isDate(e))return e.toISOString();if(wt.isBoolean(e))return e.toString();if(!a&&wt.isBlob(e))throw new Et("Blob is not supported. Use a Buffer instead.");return wt.isArrayBuffer(e)||wt.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,i){let a=e;if(e&&!i&&"object"==typeof e)if(wt.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(wt.isArray(e)&&function(e){return wt.isArray(e)&&!e.some(Ot)}(e)||(wt.isFileList(e)||wt.endsWith(n,"[]"))&&(a=wt.toArray(e)))return n=St(n),a.forEach(function(e,r){!wt.isUndefined(e)&&null!==e&&t.append(!0===o?At([n],r,s):null===o?n:n+"[]",l(e))}),!1;return!!Ot(e)||(t.append(At(i,n,s),l(e)),!1)}const u=[],d=Object.assign(Tt,{defaultVisitor:c,convertValue:l,isVisitable:Ot});if(!wt.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!wt.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),wt.forEach(n,function(n,s){!0===(!(wt.isUndefined(n)||null===n)&&i.call(t,n,wt.isString(s)?s.trim():s,r,d))&&e(n,r?r.concat(s):[s])}),u.pop()}}(e),t}function xt(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function Pt(e,t){this._pairs=[],e&&jt(e,this,t)}const kt=Pt.prototype;function Nt(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ut(e,t,n){if(!t)return e;const r=n&&n.encode||Nt;wt.isFunction(n)&&(n={serialize:n});const i=n&&n.serialize;let s;if(s=i?i(t,n):wt.isURLSearchParams(t)?t.toString():new Pt(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}kt.append=function(e,t){this._pairs.push([e,t])},kt.toString=function(e){const t=e?function(t){return e.call(this,t,xt)}:xt;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){wt.forEach(this.handlers,function(t){null!==t&&e(t)})}}var Dt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Lt={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Pt,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Ft="undefined"!=typeof window&&"undefined"!=typeof document,Bt="object"==typeof navigator&&navigator||void 0,It=Ft&&(!Bt||["ReactNative","NativeScript","NS"].indexOf(Bt.product)<0),$t="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Mt=Ft&&window.location.href||"http://localhost";var qt={...Object.freeze({__proto__:null,hasBrowserEnv:Ft,hasStandardBrowserEnv:It,hasStandardBrowserWebWorkerEnv:$t,navigator:Bt,origin:Mt}),...Lt};function zt(e){function t(e,n,r,i){let s=e[i++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=i>=e.length;if(s=!s&&wt.isArray(r)?r.length:s,a)return wt.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!o;r[s]&&wt.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],i)&&wt.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const i=n.length;let s;for(r=0;r<i;r++)s=n[r],t[s]=e[s];return t}(r[s])),!o}if(wt.isFormData(e)&&wt.isFunction(e.entries)){const n={};return wt.forEachEntry(e,(e,r)=>{t(function(e){return wt.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),r,n,0)}),n}return null}const Ht={transitional:Dt,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,i=wt.isObject(e);i&&wt.isHTMLForm(e)&&(e=new FormData(e));if(wt.isFormData(e))return r?JSON.stringify(zt(e)):e;if(wt.isArrayBuffer(e)||wt.isBuffer(e)||wt.isStream(e)||wt.isFile(e)||wt.isBlob(e)||wt.isReadableStream(e))return e;if(wt.isArrayBufferView(e))return e.buffer;if(wt.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return jt(e,new qt.classes.URLSearchParams,{visitor:function(e,t,n,r){return qt.isNode&&wt.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}(e,this.formSerializer).toString();if((s=wt.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return jt(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||r?(t.setContentType("application/json",!1),function(e,t,n){if(wt.isString(e))try{return(t||JSON.parse)(e),wt.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Ht.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(wt.isResponse(e)||wt.isReadableStream(e))return e;if(e&&wt.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Et.from(e,Et.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:qt.classes.FormData,Blob:qt.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};wt.forEach(["delete","get","head","post","put","patch"],e=>{Ht.headers[e]={}});const Jt=wt.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 Wt=Symbol("internals");function Vt(e){return e&&String(e).trim().toLowerCase()}function Kt(e){return!1===e||null==e?e:wt.isArray(e)?e.map(Kt):String(e)}function Xt(e,t,n,r,i){return wt.isFunction(r)?r.call(this,t,n):(i&&(t=n),wt.isString(t)?wt.isString(r)?-1!==t.indexOf(r):wt.isRegExp(r)?r.test(t):void 0:void 0)}let Gt=class AxiosHeaders{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function i(e,t,n){const i=Vt(t);if(!i)throw new Error("header name must be a non-empty string");const s=wt.findKey(r,i);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=Kt(e))}const s=(e,t)=>wt.forEach(e,(e,n)=>i(e,n,t));if(wt.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(wt.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,i;return e&&e.split("\n").forEach(function(e){i=e.indexOf(":"),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!n||t[n]&&Jt[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t})(e),t);else if(wt.isObject(e)&&wt.isIterable(e)){let n,r,i={};for(const t of e){if(!wt.isArray(t))throw TypeError("Object iterator must return a key-value pair");i[r=t[0]]=(n=i[r])?wt.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}s(i,t)}else null!=e&&i(t,e,n);return this}get(e,t){if(e=Vt(e)){const n=wt.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 r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(wt.isFunction(t))return t.call(this,e,n);if(wt.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Vt(e)){const n=wt.findKey(this,e);return!(!n||void 0===this[n]||t&&!Xt(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function i(e){if(e=Vt(e)){const i=wt.findKey(n,e);!i||t&&!Xt(0,n[i],i,t)||(delete n[i],r=!0)}}return wt.isArray(e)?e.forEach(i):i(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const i=t[n];e&&!Xt(0,this[i],i,e,!0)||(delete this[i],r=!0)}return r}normalize(e){const t=this,n={};return wt.forEach(this,(r,i)=>{const s=wt.findKey(n,i);if(s)return t[s]=Kt(r),void delete t[i];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,n)=>t.toUpperCase()+n)}(i):String(i).trim();o!==i&&delete t[i],t[o]=Kt(r),n[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return wt.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&wt.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[Wt]=this[Wt]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=Vt(e);t[r]||(!function(e,t){const n=wt.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})})}(n,e),t[r]=!0)}return wt.isArray(e)?e.forEach(r):r(e),this}};function Zt(e,t){const n=this||Ht,r=t||n,i=Gt.from(r.headers);let s=r.data;return wt.forEach(e,function(e){s=e.call(n,s,i.normalize(),t?t.status:void 0)}),i.normalize(),s}function Qt(e){return!(!e||!e.__CANCEL__)}function Yt(e,t,n){Et.call(this,e??"canceled",Et.ERR_CANCELED,t,n),this.name="CanceledError"}function en(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Et("Request failed with status code "+n.status,[Et.ERR_BAD_REQUEST,Et.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}Gt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),wt.reduceDescriptors(Gt.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),wt.freezeMethods(Gt),wt.inherits(Yt,Et,{__CANCEL__:!0});const tn=(e,t,n=3)=>{let r=0;const i=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i,s=0,o=0;return t=void 0!==t?t:1e3,function(a){const l=Date.now(),c=r[o];i||(i=l),n[s]=a,r[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-i<t)return;const p=c&&l-c;return p?Math.round(1e3*d/p):void 0}}(50,250);return function(e,t){let n,r,i=0,s=1e3/t;const o=(t,s=Date.now())=>{i=s,n=null,r&&(clearTimeout(r),r=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-i;a>=s?o(e,t):(n=e,r||(r=setTimeout(()=>{r=null,o(n)},s-a)))},()=>n&&o(n)]}(n=>{const s=n.loaded,o=n.lengthComputable?n.total:void 0,a=s-r,l=i(a);r=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)},nn=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},rn=e=>(...t)=>wt.asap(()=>e(...t));var sn=qt.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,qt.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(qt.origin),qt.navigator&&/(msie|trident)/i.test(qt.navigator.userAgent)):()=>!0,on=qt.hasStandardBrowserEnv?{write(e,t,n,r,i,s){const o=[e+"="+encodeURIComponent(t)];wt.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),wt.isString(r)&&o.push("path="+r),wt.isString(i)&&o.push("domain="+i),!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 an(e,t,n){let r=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(r||0==n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const ln=e=>e instanceof Gt?{...e}:e;function cn(e,t){t=t||{};const n={};function r(e,t,n,r){return wt.isPlainObject(e)&&wt.isPlainObject(t)?wt.merge.call({caseless:r},e,t):wt.isPlainObject(t)?wt.merge({},t):wt.isArray(t)?t.slice():t}function i(e,t,n,i){return wt.isUndefined(t)?wt.isUndefined(e)?void 0:r(void 0,e,0,i):r(e,t,0,i)}function s(e,t){if(!wt.isUndefined(t))return r(void 0,t)}function o(e,t){return wt.isUndefined(t)?wt.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,i,s){return s in t?r(n,i):s in e?r(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)=>i(ln(e),ln(t),0,!0)};return wt.forEach(Object.keys({...e,...t}),function(r){const s=l[r]||i,o=s(e[r],t[r],r);wt.isUndefined(o)&&s!==a||(n[r]=o)}),n}var un=e=>{const t=cn({},e);let n,{data:r,withXSRFToken:i,xsrfHeaderName:s,xsrfCookieName:o,headers:a,auth:l}=t;if(t.headers=a=Gt.from(a),t.url=Ut(an(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),wt.isFormData(r))if(qt.hasStandardBrowserEnv||qt.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(qt.hasStandardBrowserEnv&&(i&&wt.isFunction(i)&&(i=i(t)),i||!1!==i&&sn(t.url))){const e=s&&o&&on.read(o);e&&a.set(s,e)}return t};var dn="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const r=un(e);let i=r.data;const s=Gt.from(r.headers).normalize();let o,a,l,c,u,{responseType:d,onUploadProgress:p,onDownloadProgress:h}=r;function f(){c&&c(),u&&u(),r.cancelToken&&r.cancelToken.unsubscribe(o),r.signal&&r.signal.removeEventListener("abort",o)}let m=new XMLHttpRequest;function g(){if(!m)return;const r=Gt.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());en(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:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.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 Et("Request aborted",Et.ECONNABORTED,e,m)),m=null)},m.onerror=function(){n(new Et("Network Error",Et.ERR_NETWORK,e,m)),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const i=r.transitional||Dt;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new Et(t,i.clarifyTimeoutError?Et.ETIMEDOUT:Et.ECONNABORTED,e,m)),m=null},void 0===i&&s.setContentType(null),"setRequestHeader"in m&&wt.forEach(s.toJSON(),function(e,t){m.setRequestHeader(t,e)}),wt.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),d&&"json"!==d&&(m.responseType=r.responseType),h&&([l,u]=tn(h,!0),m.addEventListener("progress",l)),p&&m.upload&&([a,c]=tn(p),m.upload.addEventListener("progress",a),m.upload.addEventListener("loadend",c)),(r.cancelToken||r.signal)&&(o=t=>{m&&(n(!t||t.type?new Yt(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(o),r.signal&&(r.signal.aborted?o():r.signal.addEventListener("abort",o)));const b=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);b&&-1===qt.protocols.indexOf(b)?n(new Et("Unsupported protocol "+b+":",Et.ERR_BAD_REQUEST,e)):m.send(i||null)})};const pn=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const i=function(e){if(!n){n=!0,o();const t=e instanceof Error?e:this.reason;r.abort(t instanceof Et?t:new Yt(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,i(new Et(`timeout ${t} of ms exceeded`,Et.ETIMEDOUT))},t);const o=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(i):e.removeEventListener("abort",i)}),e=null)};e.forEach(e=>e.addEventListener("abort",i));const{signal:a}=r;return a.unsubscribe=()=>wt.asap(o),a}},hn=function*(e,t){let n=e.byteLength;if(n<t)return void(yield e);let r,i=0;for(;i<n;)r=i+t,yield e.slice(i,r),i=r},fn=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()}},mn=(e,t,n,r)=>{const i=async function*(e,t){for await(const n of fn(e))yield*hn(n,t)}(e,t);let s,o=0,a=e=>{s||(s=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await i.next();if(t)return a(),void e.close();let s=r.byteLength;if(n){let e=o+=s;n(e)}e.enqueue(new Uint8Array(r))}catch(e){throw a(e),e}},cancel:e=>(a(e),i.return())},{highWaterMark:2})},gn="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,bn=gn&&"function"==typeof ReadableStream,yn=gn&&("function"==typeof TextEncoder?(_n=new TextEncoder,e=>_n.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var _n;const vn=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},wn=bn&&vn(()=>{let e=!1;const t=new Request(qt.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),En=bn&&vn(()=>wt.isReadableStream(new Response("").body)),Cn={stream:En&&(e=>e.body)};var Rn;gn&&(Rn=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!Cn[e]&&(Cn[e]=wt.isFunction(Rn[e])?t=>t[e]():(t,n)=>{throw new Et(`Response type '${e}' is not supported`,Et.ERR_NOT_SUPPORT,n)})}));const On=async(e,t)=>{const n=wt.toFiniteNumber(e.getContentLength());return n??(async e=>{if(null==e)return 0;if(wt.isBlob(e))return e.size;if(wt.isSpecCompliantForm(e)){const t=new Request(qt.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return wt.isArrayBufferView(e)||wt.isArrayBuffer(e)?e.byteLength:(wt.isURLSearchParams(e)&&(e+=""),wt.isString(e)?(await yn(e)).byteLength:void 0)})(t)};const Sn={http:null,xhr:dn,fetch:gn&&(async e=>{let{url:t,method:n,data:r,signal:i,cancelToken:s,timeout:o,onDownloadProgress:a,onUploadProgress:l,responseType:c,headers:u,withCredentials:d="same-origin",fetchOptions:p}=un(e);c=c?(c+"").toLowerCase():"text";let h,f=pn([i,s&&s.toAbortSignal()],o);const m=f&&f.unsubscribe&&(()=>{f.unsubscribe()});let g;try{if(l&&wn&&"get"!==n&&"head"!==n&&0!==(g=await On(u,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});if(wt.isFormData(r)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body){const[e,t]=nn(g,tn(rn(l)));r=mn(n.body,65536,e,t)}}wt.isString(d)||(d=d?"include":"omit");const i="credentials"in Request.prototype;h=new Request(t,{...p,signal:f,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",credentials:i?d:void 0});let s=await fetch(h,p);const o=En&&("stream"===c||"response"===c);if(En&&(a||o&&m)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=s[t]});const t=wt.toFiniteNumber(s.headers.get("content-length")),[n,r]=a&&nn(t,tn(rn(a),!0))||[];s=new Response(mn(s.body,65536,n,()=>{r&&r(),m&&m()}),e)}c=c||"text";let b=await Cn[wt.findKey(Cn,c)||"text"](s,e);return!o&&m&&m(),await new Promise((t,n)=>{en(t,n,{data:b,headers:Gt.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 Et("Network Error",Et.ERR_NETWORK,e,h),{cause:t.cause||t});throw Et.from(t,t&&t.code,e,h)}})};wt.forEach(Sn,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const An=e=>`- ${e}`,Tn=e=>wt.isFunction(e)||null===e||!1===e;var jn=e=>{e=wt.isArray(e)?e:[e];const{length:t}=e;let n,r;const i={};for(let s=0;s<t;s++){let t;if(n=e[s],r=n,!Tn(n)&&(r=Sn[(t=String(n)).toLowerCase()],void 0===r))throw new Et(`Unknown adapter '${t}'`);if(r)break;i[t||"#"+s]=r}if(!r){const e=Object.entries(i).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new Et("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(An).join("\n"):" "+An(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function xn(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Yt(null,e)}function Pn(e){xn(e),e.headers=Gt.from(e.headers),e.data=Zt.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return jn(e.adapter||Ht.adapter)(e).then(function(t){return xn(e),t.data=Zt.call(e,e.transformResponse,t),t.headers=Gt.from(t.headers),t},function(t){return Qt(t)||(xn(e),t&&t.response&&(t.response.data=Zt.call(e,e.transformResponse,t.response),t.response.headers=Gt.from(t.response.headers))),Promise.reject(t)})}const kn="1.11.0",Nn={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Nn[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const Un={};Nn.transitional=function(e,t,n){function r(e,t){return"[Axios v"+kn+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,i,s)=>{if(!1===e)throw new Et(r(i," has been removed"+(t?" in "+t:"")),Et.ERR_DEPRECATED);return t&&!Un[i]&&(Un[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,s)}},Nn.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var Dn={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Et("options must be an object",Et.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const s=r[i],o=t[s];if(o){const t=e[s],n=void 0===t||o(t,s,e);if(!0!==n)throw new Et("option "+s+" must be "+n,Et.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new Et("Unknown option "+s,Et.ERR_BAD_OPTION)}},validators:Nn};const Ln=Dn.validators;let Fn=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=cn(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:i}=t;void 0!==n&&Dn.assertOptions(n,{silentJSONParsing:Ln.transitional(Ln.boolean),forcedJSONParsing:Ln.transitional(Ln.boolean),clarifyTimeoutError:Ln.transitional(Ln.boolean)},!1),null!=r&&(wt.isFunction(r)?t.paramsSerializer={serialize:r}:Dn.assertOptions(r,{encode:Ln.function,serialize:Ln.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Dn.assertOptions(t,{baseUrl:Ln.spelling("baseURL"),withXsrfToken:Ln.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=i&&wt.merge(i.common,i[t.method]);i&&wt.forEach(["delete","get","head","post","put","patch","common"],e=>{delete i[e]}),t.headers=Gt.concat(s,i);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=[Pn.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=Pn.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 Ut(an((e=cn(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}};wt.forEach(["delete","get","head","options"],function(e){Fn.prototype[e]=function(t,n){return this.request(cn(n||{},{method:e,url:t,data:(n||{}).data}))}}),wt.forEach(["post","put","patch"],function(e){function t(t){return function(n,r,i){return this.request(cn(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:n,data:r}))}}Fn.prototype[e]=t(),Fn.prototype[e+"Form"]=t(!0)});const Bn={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(Bn).forEach(([e,t])=>{Bn[t]=e});const In=function e(t){const n=new Fn(t),r=Pe(Fn.prototype.request,n);return wt.extend(r,Fn.prototype,n,{allOwnKeys:!0}),wt.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(cn(t,n))},r}(Ht);In.Axios=Fn,In.CanceledError=Yt,In.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 r=new Promise(e=>{n.subscribe(e),t=e}).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e(function(e,r,i){n.reason||(n.reason=new Yt(e,r,i),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}}},In.isCancel=Qt,In.VERSION=kn,In.toFormData=jt,In.AxiosError=Et,In.Cancel=In.CanceledError,In.all=function(e){return Promise.all(e)},In.spread=function(e){return function(t){return e.apply(null,t)}},In.isAxiosError=function(e){return wt.isObject(e)&&!0===e.isAxiosError},In.mergeConfig=cn,In.AxiosHeaders=Gt,In.formToJSON=e=>zt(wt.isHTMLForm(e)?new FormData(e):e),In.getAdapter=jn,In.HttpStatusCode=Bn,In.default=In;const{Axios:$n,AxiosError:Mn,CanceledError:qn,isCancel:zn,CancelToken:Hn,VERSION:Jn,all:Wn,Cancel:Vn,isAxiosError:Kn,spread:Xn,toFormData:Gn,AxiosHeaders:Zn,HttpStatusCode:Qn,formToJSON:Yn,getAdapter:er,mergeConfig:tr}=In;var nr=class{constructor(e,t){this.httpClient=e,this.validate=t}async getAppointments(e){return this.httpClient.get("/appointments/v1",{params:e}).then(this.validate(Re))}async createAppointment(e){return this.httpClient.post(`/appointments/v1/slots/${e.slot_id}`,e).then(e=>e.data).then(this.validate(Oe))}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(Ae))}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`)}},rr=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(Te))}};var ir=class{constructor(e,t){this.httpClient=e,this.validate=t}async postReview(e){return this.httpClient.post("/consultations/v1/review",e)}async getReview(e){return this.httpClient.get(`/consultations/v1/review/${e}`).then(e=>e.data).then(this.validate(je))}},sr=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(xe))}},or=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(I))}async joinCall(e){return this.httpClient.get(`/flash/v1/calls/${e.callId}/join`).then(e=>e.data).then(this.validate($))}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(M))}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(q))}},ar=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(z))}async getOrganizationSetup(){return this.httpClient.get("/organizations/v1/setup").then(e=>e.data).then(this.validate(H))}},lr=class{constructor(e,t){this.httpClient=e,this.validate=t}async createPaymentLink(e){const{specialty_id:t,...n}=e,r={...n,speciality_id:t};return this.httpClient.post("/payments/v1/schedule",r).then(e=>e.data).then(this.validate(K))}async createImmediateVideocallPaymentLink(e){return this.httpClient.post("/payments/v1/immediate-videocall",e).then(e=>e.data).then(this.validate(X))}async getConsultationCoupon(e,t){return this.httpClient.get(`/payments/v1/consultation-coupon/${encodeURIComponent(e)}`,{params:{amount:t}}).then(e=>e.data).then(this.validate(J))}async getAppointmentConsultationCoupon(e){return this.httpClient.get(`/payments/v1/appointment/${encodeURIComponent(e)}/consultation-coupon`).then(e=>e.data).then(this.validate(W))}async getPaymentSession(e){return this.httpClient.get(`/payments/v1/session/${e}`).then(e=>e.data).then(this.validate(Z))}async validateApplePayMerchant(e){return this.httpClient.post("/payments/v1/apple-pay/validate-merchant",e).then(this.validate(Q))}async authorizeApplePay(e){return this.httpClient.post("/payments/v1/apple-pay/authorize",e).then(this.validate(Y))}async authorizeGooglePay(e){return this.httpClient.post("/payments/v1/google-pay/authorize",e).then(this.validate(ee))}},cr=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(re))}async readAllMessages(e){return this.httpClient.put(`sdk/v1/rooms/${e.roomId}/messages/read`).then(e=>e.data)}},ur=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(se))}async getProfessionalPublicProfile(e){return this.httpClient.get(`/profile/v1/public/professionals/${e.hash}`).then(e=>e.data).then(this.validate(oe))}async acceptLegalConsent(e){return this.httpClient.post("/profile/v1/legal-consent",e)}},dr=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(he))}async getUnreadMessagesCount(e){return this.httpClient.get(`chat/v1/${e.roomId}/unread-count`).then(e=>e.data).then(this.validate(fe))}async createSupportRoom(e){return this.httpClient.post("chat/v1/support-room",e).then(e=>e.data).then(this.validate(me))}},pr=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(_e))}async getProfessionalsBySpecialtyAndService(e){return this.httpClient.get("/schedules/v1/professionals",{params:e}).then(e=>e.data).then(this.validate(ve))}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(we))}async getScheduleServiceSpecialities(e){return this.httpClient.get(`/schedules/v1/services/${e}/specialities`).then(e=>e.data).then(this.validate(Ee))}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(Ce))}};var hr={development:"https://chat-dev.mediquo.com",production:"https://chat.mediquo.com"},fr=class{constructor({env:e="production",baseURL:t,debug:n}={}){const r=t??hr[e];var i;this.httpClient=(i=r,In.create({baseURL:i,headers:{"Content-Type":"application/json"}}));const s=(o={debug:n},e=>t=>{const n=e.safeParse(t.data);if(n.error&&o?.debug){const e=t.config?.url??"";console.warn(`[Validation Error]${e?` - URL: ${e}`:""}\n${r=n.error,r.issues.map(e=>`${e.path.join(".")}: ${e.message}`).join("\n")}`)}var r;return n.data??t.data});var o;this.flash=new or(this.httpClient,s),this.auth=new rr(this.httpClient,s),this.appointments=new nr(this.httpClient,s),this.payments=new lr(this.httpClient,s),this.schedules=new pr(this.httpClient,s),this.organizations=new ar(this.httpClient,s),this.profile=new ur(this.httpClient,s),this.professionals=new cr(this.httpClient,s),this.rooms=new dr(this.httpClient,s),this.documents=new sr(this.httpClient,s),this.consultations=new ir(this.httpClient,s)}setAuthToken(e){this.httpClient.defaults.headers.common.Authorization=`Bearer ${e}`}setApiKey(e){this.httpClient.defaults.headers.common["x-api-key"]=e}setLanguage(e){this.httpClient.defaults.headers.common["Accept-Language"]=e}};let mr=null,gr=null;const br=new Proxy({},{get:(e,t)=>(mr&&gr===y.MODE||(mr=new fr({env:y.MODE,debug:"development"===y.MODE}),gr=y.MODE),mr)[t]});export{N as A,L as C,w as D,ae as M,G as P,be as S,br as a,j as b,ie as c,P as d,Kn as e,V as f,A as g,T as h,B as i,O as j,S as k,F as l};
@@ -1 +1 @@
1
- import{P as n}from"./api-chat-client-CqMn2JEn.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-1Vz6ZOwp.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,398 @@
1
+ import * as lit_html from 'lit-html';
2
+ import * as lit from 'lit';
3
+ import { LitElement } from 'lit';
4
+ import { z } from 'zod';
5
+ import './appointment-details-DpzdYLjq.js';
6
+ import '../ui/mq-card.js';
7
+ import './professional-overview-mO3tuMuH.js';
8
+ import { L as LoginTokenResponse } from './schemas.d-5LR6aN9I.js';
9
+ import './mq-chat-room-DuG4RuIp.js';
10
+ import '../ui/mq-floating-bubble.js';
11
+ import { P as PriceInCents } from './price.d-CwLosdAN.js';
12
+ import '../ui/mq-button.js';
13
+ import '../ui/mq-dialog.js';
14
+ import { QueryClient } from '@tanstack/query-core';
15
+ import '../ui/mq-unread-badge.js';
16
+
17
+ declare const GetAppointmentsResponseSchema: z.ZodObject<{
18
+ data: z.ZodArray<z.ZodObject<{
19
+ appointment: z.ZodObject<{
20
+ id: z.ZodString;
21
+ url: z.ZodString;
22
+ starts_at: z.ZodString;
23
+ duration: z.ZodNumber;
24
+ status: z.ZodEnum<["pending", "expired", "accepted", "inCall", "declined", "cancelled", "finished", "free_of_charge", "owed", "unpaid", "reporting"]>;
25
+ channel: z.ZodEnum<["videocall", "chat", "phonecall"]>;
26
+ expires_at: z.ZodNullable<z.ZodString>;
27
+ service_id: z.ZodNullable<z.ZodString>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ url: string;
30
+ status: "pending" | "expired" | "accepted" | "inCall" | "declined" | "cancelled" | "finished" | "free_of_charge" | "owed" | "unpaid" | "reporting";
31
+ id: string;
32
+ channel: "videocall" | "chat" | "phonecall";
33
+ duration: number;
34
+ expires_at: string | null;
35
+ service_id: string | null;
36
+ starts_at: string;
37
+ }, {
38
+ url: string;
39
+ status: "pending" | "expired" | "accepted" | "inCall" | "declined" | "cancelled" | "finished" | "free_of_charge" | "owed" | "unpaid" | "reporting";
40
+ id: string;
41
+ channel: "videocall" | "chat" | "phonecall";
42
+ duration: number;
43
+ expires_at: string | null;
44
+ service_id: string | null;
45
+ starts_at: string;
46
+ }>;
47
+ room: z.ZodObject<{
48
+ id: z.ZodNumber;
49
+ }, "strip", z.ZodTypeAny, {
50
+ id: number;
51
+ }, {
52
+ id: number;
53
+ }>;
54
+ price: z.ZodNullable<z.ZodObject<{
55
+ amount: z.ZodNumber;
56
+ currency: z.ZodString;
57
+ }, "strip", z.ZodTypeAny, {
58
+ currency: string;
59
+ amount: number;
60
+ }, {
61
+ currency: string;
62
+ amount: number;
63
+ }>>;
64
+ patient: z.ZodObject<{
65
+ hash: z.ZodString;
66
+ }, "strip", z.ZodTypeAny, {
67
+ hash: string;
68
+ }, {
69
+ hash: string;
70
+ }>;
71
+ slots: z.ZodArray<z.ZodAny, "many">;
72
+ professional: z.ZodObject<{
73
+ hash: z.ZodString;
74
+ name: z.ZodString;
75
+ avatar: z.ZodOptional<z.ZodString>;
76
+ description: z.ZodOptional<z.ZodString>;
77
+ languages: z.ZodArray<z.ZodString, "many">;
78
+ collegiate_number: z.ZodOptional<z.ZodString>;
79
+ }, "strip", z.ZodTypeAny, {
80
+ hash: string;
81
+ name: string;
82
+ languages: string[];
83
+ avatar?: string | undefined;
84
+ collegiate_number?: string | undefined;
85
+ description?: string | undefined;
86
+ }, {
87
+ hash: string;
88
+ name: string;
89
+ languages: string[];
90
+ avatar?: string | undefined;
91
+ collegiate_number?: string | undefined;
92
+ description?: string | undefined;
93
+ }>;
94
+ speciality: z.ZodObject<{
95
+ id: z.ZodNumber;
96
+ name: z.ZodString;
97
+ }, "strip", z.ZodTypeAny, {
98
+ id: number;
99
+ name: string;
100
+ }, {
101
+ id: number;
102
+ name: string;
103
+ }>;
104
+ }, "strip", z.ZodTypeAny, {
105
+ speciality: {
106
+ id: number;
107
+ name: string;
108
+ };
109
+ price: {
110
+ currency: string;
111
+ amount: number;
112
+ } | null;
113
+ appointment: {
114
+ url: string;
115
+ status: "pending" | "expired" | "accepted" | "inCall" | "declined" | "cancelled" | "finished" | "free_of_charge" | "owed" | "unpaid" | "reporting";
116
+ id: string;
117
+ channel: "videocall" | "chat" | "phonecall";
118
+ duration: number;
119
+ expires_at: string | null;
120
+ service_id: string | null;
121
+ starts_at: string;
122
+ };
123
+ room: {
124
+ id: number;
125
+ };
126
+ patient: {
127
+ hash: string;
128
+ };
129
+ slots: any[];
130
+ professional: {
131
+ hash: string;
132
+ name: string;
133
+ languages: string[];
134
+ avatar?: string | undefined;
135
+ collegiate_number?: string | undefined;
136
+ description?: string | undefined;
137
+ };
138
+ }, {
139
+ speciality: {
140
+ id: number;
141
+ name: string;
142
+ };
143
+ price: {
144
+ currency: string;
145
+ amount: number;
146
+ } | null;
147
+ appointment: {
148
+ url: string;
149
+ status: "pending" | "expired" | "accepted" | "inCall" | "declined" | "cancelled" | "finished" | "free_of_charge" | "owed" | "unpaid" | "reporting";
150
+ id: string;
151
+ channel: "videocall" | "chat" | "phonecall";
152
+ duration: number;
153
+ expires_at: string | null;
154
+ service_id: string | null;
155
+ starts_at: string;
156
+ };
157
+ room: {
158
+ id: number;
159
+ };
160
+ patient: {
161
+ hash: string;
162
+ };
163
+ slots: any[];
164
+ professional: {
165
+ hash: string;
166
+ name: string;
167
+ languages: string[];
168
+ avatar?: string | undefined;
169
+ collegiate_number?: string | undefined;
170
+ description?: string | undefined;
171
+ };
172
+ }>, "many">;
173
+ meta: z.ZodObject<{
174
+ current_page: z.ZodNumber;
175
+ last_page: z.ZodNumber;
176
+ per_page: z.ZodNumber;
177
+ total: z.ZodNumber;
178
+ }, "strip", z.ZodTypeAny, {
179
+ current_page: number;
180
+ last_page: number;
181
+ per_page: number;
182
+ total: number;
183
+ }, {
184
+ current_page: number;
185
+ last_page: number;
186
+ per_page: number;
187
+ total: number;
188
+ }>;
189
+ }, "strip", z.ZodTypeAny, {
190
+ data: {
191
+ speciality: {
192
+ id: number;
193
+ name: string;
194
+ };
195
+ price: {
196
+ currency: string;
197
+ amount: number;
198
+ } | null;
199
+ appointment: {
200
+ url: string;
201
+ status: "pending" | "expired" | "accepted" | "inCall" | "declined" | "cancelled" | "finished" | "free_of_charge" | "owed" | "unpaid" | "reporting";
202
+ id: string;
203
+ channel: "videocall" | "chat" | "phonecall";
204
+ duration: number;
205
+ expires_at: string | null;
206
+ service_id: string | null;
207
+ starts_at: string;
208
+ };
209
+ room: {
210
+ id: number;
211
+ };
212
+ patient: {
213
+ hash: string;
214
+ };
215
+ slots: any[];
216
+ professional: {
217
+ hash: string;
218
+ name: string;
219
+ languages: string[];
220
+ avatar?: string | undefined;
221
+ collegiate_number?: string | undefined;
222
+ description?: string | undefined;
223
+ };
224
+ }[];
225
+ meta: {
226
+ current_page: number;
227
+ last_page: number;
228
+ per_page: number;
229
+ total: number;
230
+ };
231
+ }, {
232
+ data: {
233
+ speciality: {
234
+ id: number;
235
+ name: string;
236
+ };
237
+ price: {
238
+ currency: string;
239
+ amount: number;
240
+ } | null;
241
+ appointment: {
242
+ url: string;
243
+ status: "pending" | "expired" | "accepted" | "inCall" | "declined" | "cancelled" | "finished" | "free_of_charge" | "owed" | "unpaid" | "reporting";
244
+ id: string;
245
+ channel: "videocall" | "chat" | "phonecall";
246
+ duration: number;
247
+ expires_at: string | null;
248
+ service_id: string | null;
249
+ starts_at: string;
250
+ };
251
+ room: {
252
+ id: number;
253
+ };
254
+ patient: {
255
+ hash: string;
256
+ };
257
+ slots: any[];
258
+ professional: {
259
+ hash: string;
260
+ name: string;
261
+ languages: string[];
262
+ avatar?: string | undefined;
263
+ collegiate_number?: string | undefined;
264
+ description?: string | undefined;
265
+ };
266
+ }[];
267
+ meta: {
268
+ current_page: number;
269
+ last_page: number;
270
+ per_page: number;
271
+ total: number;
272
+ };
273
+ }>;
274
+ type GetAppointmentsResponse = z.infer<typeof GetAppointmentsResponseSchema>;
275
+
276
+ declare class CancelAppointmentConfirmationDialog extends LitElement {
277
+ static styles: lit.CSSResult;
278
+ open: boolean;
279
+ queryClientContext: QueryClient | undefined;
280
+ appointmentId: string;
281
+ price?: PriceInCents;
282
+ private cancelAppointmentMutation;
283
+ private handleClose;
284
+ private handleDismissClick;
285
+ private handleConfirmClick;
286
+ render(): lit_html.TemplateResult<1>;
287
+ }
288
+ declare global {
289
+ interface HTMLElementTagNameMap {
290
+ "cancel-appointment-confirmation-dialog": CancelAppointmentConfirmationDialog;
291
+ }
292
+ }
293
+
294
+ /**
295
+ * Informational dialog shown when an appointment action (modify, cancel,
296
+ * repeat) is currently unavailable. Purely presentational: the parent owns
297
+ * the copy (already translated) and decides when to open it.
298
+ *
299
+ * Usage:
300
+ * <appointment-action-unavailable-dialog
301
+ * .open=${true}
302
+ * .heading=${"Anular cita"}
303
+ * .message=${"Lo sentimos, ..."}
304
+ * @close=${() => { ... }}
305
+ * ></appointment-action-unavailable-dialog>
306
+ */
307
+ declare class AppointmentActionUnavailableDialog extends LitElement {
308
+ static styles: lit.CSSResult;
309
+ open: boolean;
310
+ heading: string;
311
+ message: string;
312
+ private handleClose;
313
+ render(): lit_html.TemplateResult<1>;
314
+ }
315
+ declare global {
316
+ interface HTMLElementTagNameMap {
317
+ "appointment-action-unavailable-dialog": AppointmentActionUnavailableDialog;
318
+ }
319
+ }
320
+
321
+ type RepeatTarget = {
322
+ specialty: string;
323
+ service: string;
324
+ };
325
+ /**
326
+ * Action buttons block for an appointment card.
327
+ *
328
+ * The modify / cancel / repeat actions are ALWAYS rendered with a normal
329
+ * (enabled) appearance. When the corresponding action is currently
330
+ * unavailable, clicking it opens an informational dialog explaining why
331
+ * instead of executing the action — and no telemetry is tracked for that
332
+ * blocked click.
333
+ *
334
+ * Chat toggle and cancel-confirmation are owned by the parent card, so this
335
+ * element only emits `toggle-chat` and `request-cancel` for those.
336
+ */
337
+ declare class AppointmentCardActions extends LitElement {
338
+ static styles: lit.CSSResult;
339
+ loginToken: LoginTokenResponse;
340
+ variant: "next" | "history";
341
+ appointmentId: string;
342
+ isVideocall: boolean;
343
+ hasChatSupport: boolean;
344
+ unreadCount: number;
345
+ isModifyUnavailable: boolean;
346
+ isCancelUnavailable: boolean;
347
+ hasNoSlots: boolean;
348
+ modifyUnavailableMessage: string;
349
+ cancelUnavailableMessage: string;
350
+ repeatTarget: RepeatTarget | null;
351
+ professionalHash: string;
352
+ private openDialog;
353
+ private get patientHash();
354
+ private renderChatButton;
355
+ private handleModifyClick;
356
+ private handleCancelClick;
357
+ private handleRepeatClick;
358
+ private renderNextActions;
359
+ private renderHistoryActions;
360
+ private handleDialogClose;
361
+ render(): lit_html.TemplateResult<1>;
362
+ }
363
+ declare global {
364
+ interface HTMLElementTagNameMap {
365
+ "appointment-card-actions": AppointmentCardActions;
366
+ }
367
+ }
368
+
369
+ declare class AppointmentCard extends LitElement {
370
+ static styles: lit.CSSResult;
371
+ appointmentResource: GetAppointmentsResponse["data"][number];
372
+ specialtyId: number;
373
+ variant: "next" | "history";
374
+ detailsVariant: "default" | "wide";
375
+ loginToken: LoginTokenResponse;
376
+ private isChatOpen;
377
+ private isCancelDialogOpen;
378
+ private unreadQuery;
379
+ private getOrganizationSpecialtiesQuery;
380
+ private getOrganizationSetupQuery;
381
+ private getScheduleServicesQuery;
382
+ render(): lit_html.TemplateResult<1>;
383
+ }
384
+ declare global {
385
+ interface HTMLElementTagNameMap {
386
+ "appointment-card": AppointmentCard;
387
+ }
388
+ }
389
+
390
+ declare class AppointmentCardSkeleton extends LitElement {
391
+ static styles: lit.CSSResult;
392
+ render(): lit_html.TemplateResult<1>;
393
+ }
394
+ declare global {
395
+ interface HTMLElementTagNameMap {
396
+ "appointment-card-skeleton": AppointmentCardSkeleton;
397
+ }
398
+ }
@@ -0,0 +1 @@
1
+ import{_ as t,t as e}from"./custom-element-DA9Fxvxd.js";import{c as i}from"./consume-CovVqBjI.js";import{m as a,s as o}from"./runtime-Bg1WXVCx.js";import{l as n}from"./localized-decorator-BlOuLhym.js";import{Q as s}from"./query-controller-BlO1Ax65.js";import{g as p}from"./get-organization-setup-query-BMbuRi6v.js";import{g as r,a as l}from"./i18n-formats-DYS91YEa.js";import{g as c,c as d}from"./refund-cancel-policy-BQDnePq9.js";import{g as h}from"./chunk-GZF3YFSX-DM-GTqxg.js";import{a as m,i as u,x as g,E as v}from"./lit-element-DiWJYFwC.js";import{n as f}from"./property-scuRaFcM.js";import{r as y}from"./state-LQivXIgA.js";import{getLocale as b}from"../i18n.js";import{a as $,A as C,i as x}from"./api-chat-client-1Vz6ZOwp.js";import{h as q,f as w}from"./price-DIhNpS8n.js";import"../ui/mq-card.js";import"./professional-overview-CfjgnTw4.js";import{l as k}from"./chunk-S5RWG6G2-DPesx3Od.js";import"../mq-chat-room.js";import"../ui/mq-floating-bubble.js";import{Q as j}from"./chunk-RCFIJTXZ-C6Ir0-sM.js";import{M as S}from"./mutation-controller-CR2qcqhH.js";import"../ui/mq-button.js";import"../ui/mq-dialog.js";import{t as R,j as D,k as I,l as M,n as O,o as E,p as z}from"./telemetry-client-BLJVs9me.js";import{e as A}from"./class-map-Co76I6aw.js";import{MqAppointmentRescheduleEvent as U,MqAppointmentBookEvent as _,MqAppointmentJoinVideocallEvent as H,MqAppointmentViewDocumentationEvent as N}from"../events.js";import{messageBubbleIcon as T}from"../ui/icons/message-bubble-icon.js";import{videoIcon as B}from"../ui/icons/video-icon.js";import"../ui/mq-unread-badge.js";import{toast as P}from"../ui/mq-toast.js";function Q(t,e){return{queryKey:["appointments",e],queryFn:()=>t.appointments.getAppointments(e)}}let V=class CancelAppointmentConfirmationDialog extends m{constructor(){super(...arguments),this.open=!1,this.cancelAppointmentMutation=new S(this,{mutationFn:async t=>$.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=b(),e=this.price,i=q(e),o=this.cancelAppointmentMutation.isPending;if(i){const i=w(e,t),n=`-${i}`;return g`<mq-dialog .open="${this.open}" @mq-close="${this.handleClose}" dismissable><h2 slot="heading">${a("Confirmar cancelación")}</h2><p slot="subheading" class="subheading-payable">${a("¿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>${a("Importe pagado")}</span> <span>${i}</span></div><div class="price-row"><span>${a("Importe a devolver")}</span> <span>${n}</span></div></div><div class="actions"><mq-button variant="outline" ?disabled="${o}" @click="${this.handleDismissClick}">${a("Volver")}</mq-button><mq-button variant="primary" ?disabled="${o}" @click="${this.handleConfirmClick}">${a("Confirmar")}</mq-button></div></div></mq-dialog>`}return g`<mq-dialog .open="${this.open}" @mq-close="${this.handleClose}" dismissable><h2 slot="heading">${a("Confirmar cancelación")}</h2><p slot="subheading">${a("¿Seguro que quieres cancelar esta cita?")}</p><div><div class="actions"><mq-button variant="outline" ?disabled="${o}" @click="${this.handleDismissClick}">${a("Cancelar")}</mq-button><mq-button variant="primary" ?disabled="${o}" @click="${this.handleConfirmClick}">${a("Confirmar")}</mq-button></div></div></mq-dialog>`}};t([f({type:Boolean,reflect:!0})],V.prototype,"open",void 0),t([i({context:j,subscribe:!0})],V.prototype,"queryClientContext",void 0),t([f({type:String})],V.prototype,"appointmentId",void 0),t([f({type:Object})],V.prototype,"price",void 0),V=t([n(),e("cancel-appointment-confirmation-dialog")],V);let F=class AppointmentActionUnavailableDialog extends m{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 g`<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}">${a("Volver")}</mq-button></div></mq-dialog>`}};t([f({type:Boolean,reflect:!0})],F.prototype,"open",void 0),t([f({type:String})],F.prototype,"heading",void 0),t([f({type:String})],F.prototype,"message",void 0),F=t([n(),e("appointment-action-unavailable-dialog")],F);let L=class AppointmentCardActions extends m{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(D(this.patientHash,this.appointmentId)),this.dispatchEvent(new U({appointmentId:this.appointmentId})))},this.handleCancelClick=()=>{this.isCancelUnavailable?this.openDialog="cancel":(R.track(I(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(M(this.patientHash,this.appointmentId)),this.dispatchEvent(new _({specialty:this.repeatTarget.specialty,service:this.repeatTarget.service,professional:this.professionalHash}))):this.openDialog="repeat-error"},this.handleDialogClose=()=>{this.openDialog=null}}static{this.styles=u`: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 g`<mq-button variant="primary" fullwidth noPadding @click="${()=>{this.dispatchEvent(new CustomEvent("toggle-chat",{bubbles:!0,composed:!0}))}}">${T({size:24})} ${a("Chat")} ${this.unreadCount>0?g`<mq-unread-badge></mq-unread-badge>`:v}</mq-button>`}renderNextActions(){return g`${this.isVideocall?g`<mq-button variant="outline" fullwidth noPadding @click="${()=>{R.track(O(this.patientHash,this.appointmentId)),this.dispatchEvent(new H({appointmentId:this.appointmentId}))}}">${B({size:24})} ${a("Ir a videollamada")}</mq-button>`:v}<div class="actions-secondary">${this.hasChatSupport?this.renderChatButton():v}<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 g`${this.hasChatSupport?this.renderChatButton():v}<mq-button variant="outline" fullwidth noPadding @click="${()=>{R.track(E(this.patientHash,this.appointmentId)),this.dispatchEvent(new N({appointmentId:this.appointmentId}))}}">${a("Documentos")}</mq-button><mq-button variant="outline" fullwidth noPadding @click="${this.handleRepeatClick}">${a("Repetir")}</mq-button>`}render(){return g`<div class="${A({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>`}};function G(t){const{action:e,refundPolicySeconds:i}=t,n=null!=i&&i<3600,s=Math.ceil((i??0)/60),p=Math.ceil((i??0)/3600);return a(0===(n?s:p)?"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?n?o`Lo sentimos, como faltan menos de ${s} minutos para tu cita no podemos modificarla.`:o`Lo sentimos, como faltan menos de ${p} horas para tu cita no podemos modificarla.`:n?o`Lo sentimos, como faltan menos de ${s} minutos para tu cita no podemos anularla.`:o`Lo sentimos, como faltan menos de ${p} horas para tu cita no podemos anularla.`)}t([i({context:k})],L.prototype,"loginToken",void 0),t([f({type:String})],L.prototype,"variant",void 0),t([f({type:String})],L.prototype,"appointmentId",void 0),t([f({type:Boolean})],L.prototype,"isVideocall",void 0),t([f({type:Boolean})],L.prototype,"hasChatSupport",void 0),t([f({type:Number})],L.prototype,"unreadCount",void 0),t([f({type:Boolean})],L.prototype,"isModifyUnavailable",void 0),t([f({type:Boolean})],L.prototype,"isCancelUnavailable",void 0),t([f({type:Boolean})],L.prototype,"hasNoSlots",void 0),t([f({type:String})],L.prototype,"modifyUnavailableMessage",void 0),t([f({type:String})],L.prototype,"cancelUnavailableMessage",void 0),t([f({type:Object})],L.prototype,"repeatTarget",void 0),t([f({type:String})],L.prototype,"professionalHash",void 0),t([y()],L.prototype,"openDialog",void 0),L=t([n(),e("appointment-card-actions")],L);let X=class AppointmentCard extends m{constructor(){super(...arguments),this.variant="next",this.detailsVariant="wide",this.isChatOpen=!1,this.isCancelDialogOpen=!1,this.unreadQuery=new s(this,()=>h($,{roomId:this.appointmentResource?.room?.id})),this.getOrganizationSpecialtiesQuery=new s(this,()=>r($,{enabled:!!this.appointmentResource?.speciality?.id})),this.getOrganizationSetupQuery=new s(this,()=>p($)),this.getScheduleServicesQuery=new s(this,()=>c($))}static{this.styles=u`: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===C.videocall,e=this.appointmentResource.appointment.channel===C.phonecall,i=!0===this.getOrganizationSetupQuery.result?.data?.appointments?.has_chat_in_appointment,o=(t||e)&&i,n=b(),s=x(this.appointmentResource.appointment.expires_at),p=0===this.appointmentResource.slots.length,r=this.getOrganizationSetupQuery.result?.data?.appointments?.seconds_before_start_to_refund_on_cancel,c=d({startsAtIso:this.appointmentResource.appointment.starts_at,refundPolicySeconds:r}),h=s||p||!c,m=s||!c,u=G({action:"modify",refundPolicySeconds:r}),f=G({action:"cancel",refundPolicySeconds:r}),y=this.getOrganizationSpecialtiesQuery.result?.data?.find(t=>Number(t.id)===Number(this.appointmentResource.speciality.id)),$=l(y?.code??"",n,y?.name??this.appointmentResource.speciality.name),q=this.getScheduleServicesQuery.result?.data?.find(t=>t.id===this.appointmentResource.appointment.service_id)?.code,w=y?.code&&q?{specialty:y.code,service:q}:null;return g`<mq-card class="card" roundness="md"><div class="card-top-content"><professional-overview .specialtyName="${$??""}" .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="${h}" .isCancelUnavailable="${m}" .hasNoSlots="${p}" .modifyUnavailableMessage="${u}" .cancelUnavailableMessage="${f}" .repeatTarget="${w}" .professionalHash="${this.appointmentResource.professional.hash}" @toggle-chat="${()=>{this.isChatOpen=!this.isChatOpen,this.isChatOpen&&R.track(z(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?g`<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>`:v}</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,P.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([f({type:Object})],X.prototype,"appointmentResource",void 0),t([f({type:Number})],X.prototype,"specialtyId",void 0),t([f({type:String})],X.prototype,"variant",void 0),t([f({type:String})],X.prototype,"detailsVariant",void 0),t([i({context:k})],X.prototype,"loginToken",void 0),t([y()],X.prototype,"isChatOpen",void 0),t([y()],X.prototype,"isCancelDialogOpen",void 0),X=t([n(),e("appointment-card")],X);let Z=class AppointmentCardSkeleton extends m{static{this.styles=u`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 g`<div></div>`}};Z=t([e("appointment-card-skeleton")],Z);export{Q as g};