@mediquo/elements 0.12.0 → 0.12.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/api-chat-client-BZAeIvwy.js +1 -0
- package/dist/chunks/{apple-pay-outcomes--uAwZeLE.js → apple-pay-outcomes-BDEoZ3jG.js} +1 -1
- package/dist/chunks/{chunk-Y4EKUX25-Bdei04iw.js → chunk-Y4EKUX25-Bix9r5ry.js} +1 -1
- package/dist/chunks/{chunk-YTQUGGS3-sBILRfPo.js → chunk-YTQUGGS3-DH0H7ld7.js} +1 -1
- package/dist/chunks/{documentation-view-BcA4Vbhp.js → documentation-view-BUhSeZQQ.js} +1 -1
- package/dist/chunks/{external-cM_kgYO_.js → external-JLtsAfi6.js} +1 -1
- package/dist/chunks/{index-CGWd3FWG.js → index-C8H-Uzbs.js} +1 -1
- package/dist/chunks/{index-Dw4Aeoyg.js → index-DTBCUojx.js} +1 -1
- package/dist/chunks/{mq-chat-room-BkXGHzrd.js → mq-chat-room-D8z-cbzt.js} +1 -1
- package/dist/chunks/{mq-next-appointments-BngkXupq.js → mq-next-appointments-DsfhBPsc.js} +1 -1
- package/dist/chunks/{mq-recent-documents-Ee-JRTdl.js → mq-recent-documents-BW54beY8.js} +1 -1
- package/dist/chunks/{mq-schedule-DAKftQ3D.js → mq-schedule-DWa7lyBh.js} +1 -1
- package/dist/chunks/{mq-support-chat-Bzj5LYHb.js → mq-support-chat-Do9xyxf2.js} +1 -1
- package/dist/chunks/mq-videocall-BSUe9dXT.js +1 -0
- package/dist/chunks/{next-appointment-card-BE0KW2vv.js → next-appointment-card-CBf_4Err.js} +1 -1
- package/dist/env.js +1 -1
- package/dist/i18n.js +1 -1
- package/dist/mq-api-client-provider.js +1 -1
- package/dist/mq-apple-pay-checkout.js +1 -1
- package/dist/mq-appointment-checkout.js +1 -1
- package/dist/mq-appointment-documentation.js +1 -1
- package/dist/mq-chat-room.js +1 -1
- package/dist/mq-checkout.js +1 -1
- package/dist/mq-dashboard.js +1 -1
- package/dist/mq-documents.js +1 -1
- package/dist/mq-google-pay-checkout.js +1 -1
- package/dist/mq-immediate-videocall-checkout.js +1 -1
- package/dist/mq-my-appointments.js +1 -1
- package/dist/mq-next-appointments.js +1 -1
- package/dist/mq-payment-poller.js +1 -1
- package/dist/mq-professional-presence-sync.js +1 -1
- package/dist/mq-recent-documents.js +1 -1
- package/dist/mq-schedule-success.js +1 -1
- package/dist/mq-schedule.js +1 -1
- package/dist/mq-socket-provider.js +1 -1
- package/dist/mq-support-chat.js +1 -1
- package/dist/mq-terms-and-conditions.js +1 -1
- package/dist/mq-unread-count-sync.js +1 -1
- package/dist/mq-videocall.js +1 -1
- package/dist/react/mq-api-client-provider.js +1 -1
- package/dist/react/mq-apple-pay-checkout.js +1 -1
- package/dist/react/mq-appointment-checkout.js +1 -1
- package/dist/react/mq-appointment-documentation.js +1 -1
- package/dist/react/mq-chat-room.js +1 -1
- package/dist/react/mq-checkout.js +1 -1
- package/dist/react/mq-dashboard.js +1 -1
- package/dist/react/mq-documents-page.js +1 -1
- package/dist/react/mq-documents.js +1 -1
- package/dist/react/mq-google-pay-checkout.js +1 -1
- package/dist/react/mq-immediate-videocall-checkout.js +1 -1
- package/dist/react/mq-my-appointments.js +1 -1
- package/dist/react/mq-next-appointments.js +1 -1
- package/dist/react/mq-payment-poller.js +1 -1
- package/dist/react/mq-professional-presence-sync.js +1 -1
- package/dist/react/mq-recent-documents.js +1 -1
- package/dist/react/mq-schedule-success.js +1 -1
- package/dist/react/mq-schedule.js +1 -1
- package/dist/react/mq-socket-provider.js +1 -1
- package/dist/react/mq-support-chat.js +1 -1
- package/dist/react/mq-terms-and-conditions.js +1 -1
- package/dist/react/mq-unread-count-sync.js +1 -1
- package/dist/react/mq-videocall.js +1 -1
- package/dist/ui/mq-input.d.ts +1 -0
- package/dist/ui/mq-input.js +1 -1
- package/package.json +2 -2
- package/dist/chunks/api-chat-client-Dx-sFrf2.js +0 -1
- package/dist/chunks/mq-videocall-Cp7LSoDs.js +0 -1
package/dist/mq-documents.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as n}from"./i18n.js";import{_ as o,c as r}from"./chunks/custom-element-D2ziPxYE.js";import{e as s}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as c,s as p}from"./chunks/runtime-Bg1WXVCx.js";import{l as u}from"./chunks/localized-decorator-BlOuLhym.js";import{Q as l}from"./chunks/query-controller-B1byDHlF.js";import{A as m}from"./chunks/api-client-context-BXGqBAlO.js";import{g as h}from"./chunks/telemetry-client-DA2_SZBC.js";import{g as d,t as g}from"./chunks/index-
|
|
1
|
+
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as n}from"./i18n.js";import{_ as o,c as r}from"./chunks/custom-element-D2ziPxYE.js";import{e as s}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as c,s as p}from"./chunks/runtime-Bg1WXVCx.js";import{l as u}from"./chunks/localized-decorator-BlOuLhym.js";import{Q as l}from"./chunks/query-controller-B1byDHlF.js";import{A as m}from"./chunks/api-client-context-BXGqBAlO.js";import{g as h}from"./chunks/telemetry-client-DA2_SZBC.js";import{g as d,t as g}from"./chunks/index-DTBCUojx.js";import{g as k}from"./chunks/get-patient-profile-query-D9btgcxl.js";import{i as y,a as v,x as f}from"./chunks/lit-element-DiWJYFwC.js";import{n as j}from"./chunks/property-scuRaFcM.js";import{r as b}from"./chunks/state-LQivXIgA.js";import{setEnv as P}from"./env.js";import{c as x,n as $}from"./chunks/api-chat-client-BZAeIvwy.js";import{chevronLeftIcon as S}from"./ui/icons/chevron-left-icon.js";import{chevronRightIcon as q}from"./ui/icons/chevron-right-icon.js";import"./chunks/index-D3_2tkC3.js";import{o as C}from"./chunks/if-defined-BYeVdwgd.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"@tanstack/query-core";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/blob-to-base64-CUL1trde.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./events.js";import"./ui/icons/download-02-icon.js";import"./ui/icons/types.js";import"./ui/mq-button.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./ui/mq-toast.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/isBefore-DBi1CiNR.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/file-icon.js";const _=y`:host{display:block}.container{background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);padding:var(--mq-documents-padding,var(--sp-6));border-radius:var(--mq-documents-radius,12px)}.pagination{display:flex;align-items:center;justify-content:center;gap:var(--sp-2_5);margin-top:var(--sp-4)}.pagination-text{font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--font-weight-normal);color:var(--color-neutrals-text-default);line-height:normal}.pagination-button{background:0 0;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--color-neutrals-text-default)}.pagination-button:disabled{opacity:0;cursor:not-allowed}.pagination-button:not(:disabled):hover{opacity:.7}`;let w=class MqDocuments extends v{constructor(){super(...arguments),this.currentPage=1,this.apiClient=x(),this.getPatientProfileQuery=new l(this,()=>k(this.apiClient)),this.getPatientDocumentsQuery=new l(this,()=>({...d(this.apiClient,{patient_hash:this._patientHash,page:this.currentPage,per_page:6}),enabled:!!this._patientHash})),this.getOrganizationSpecialtiesQuery=new l(this,()=>h(this.apiClient))}static{this.styles=_}willUpdate(i){i.has("env")&&this.env&&P(this.env),i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale);const n=$(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);n&&(this.apiClient=n)}get _patientHash(){return this.getPatientProfileQuery.result?.data?.hash??""}handlePreviousPage(){this.currentPage>1&&(this.currentPage-=1)}handleNextPage(){const t=this.getPatientDocumentsQuery.result?.data?.meta?.last_page??1;this.currentPage<t&&(this.currentPage+=1)}renderSkeleton(){return f`<document-list placeholders="${6}"></document-list>`}renderEmptyState(){return f`<widget-empty-state icon="document" heading="${c("No tienes documentación")}" description="${c("Aquí se mostrarán tus recetas e informes médicos.")}"></widget-empty-state>`}renderError(){return f`<widget-empty-state icon="document" heading="${c("No hemos podido cargar tu documentación")}" description="${c("Vuelve a intentarlo en unos minutos.")}"></widget-empty-state>`}renderDocuments(){return this.getPatientDocumentsQuery.render({complete:t=>0===t.data.length?this.renderEmptyState():f`<document-list .documents="${g(t.data,this.getOrganizationSpecialtiesQuery.result?.data,i())}" patientHash="${this._patientHash}"></document-list>${this.renderPagination(t.meta)}`,initial:()=>this.getPatientProfileQuery.result?.isError?this.renderError():this.renderSkeleton(),pending:()=>this.renderSkeleton(),error:()=>this.renderError()})}renderPagination(t){const e=t.current_page>1,i=t.current_page<t.last_page;return f`<div class="pagination"><button class="pagination-button" @click="${this.handlePreviousPage}" ?disabled="${!e}" aria-label="${c("Página anterior")}">${S({size:24})}</button> <span class="pagination-text">${c(p`${t.current_page} de ${t.last_page}`)} </span><button class="pagination-button" @click="${this.handleNextPage}" ?disabled="${!i}" aria-label="${c("Página siguiente")}">${q({size:24})}</button></div>`}render(){return f`<div class="container">${this.renderDocuments()}</div>`}};o([j({type:String,attribute:"api-key"})],w.prototype,"apiKey",void 0),o([j({type:String,attribute:"token"})],w.prototype,"token",void 0),o([j({type:String,attribute:"locale"})],w.prototype,"locale",void 0),o([j({type:String,attribute:"env"})],w.prototype,"env",void 0),o([b()],w.prototype,"currentPage",void 0),o([a({context:m,subscribe:!0}),b()],w.prototype,"inheritedApiClient",void 0),o([s({context:m}),b()],w.prototype,"apiClient",void 0),w=o([u(),r("mq-documents")],w);const D=y`:host{display:block}.container{display:flex;flex-direction:column;gap:var(--size-3)}`;let Q=class MqDocumentsPage extends v{static{this.styles=D}render(){return f`<div class="container"><mq-documents api-key="${C(this.apiKey)}" token="${C(this.token)}" locale="${C(this.locale)}" env="${C(this.env)}"></mq-documents></div>`}};o([j({type:String,attribute:"api-key"})],Q.prototype,"apiKey",void 0),o([j({type:String,attribute:"token"})],Q.prototype,"token",void 0),o([j({type:String,attribute:"locale"})],Q.prototype,"locale",void 0),o([j({type:String,attribute:"env"})],Q.prototype,"env",void 0),Q=o([u(),r("mq-documents-page")],Q),n();export{w as MqDocuments,Q as MqDocumentsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as t,c as e}from"./chunks/custom-element-D2ziPxYE.js";import{e as n}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as o}from"./chunks/runtime-Bg1WXVCx.js";import{l as i}from"./chunks/localized-decorator-BlOuLhym.js";import{A as s}from"./chunks/api-client-context-BXGqBAlO.js";import{L as r}from"./chunks/login-token-task-NQJ77O_q.js";import{l}from"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import{i as c,a as h,x as u}from"./chunks/lit-element-DiWJYFwC.js";import{n as p}from"./chunks/property-scuRaFcM.js";import{r as y}from"./chunks/state-LQivXIgA.js";import{setEnv as d}from"./env.js";import{initLocalization as m,setLocale as g,isValidLocale as v}from"./i18n.js";import{i as b,c as k,n as _}from"./chunks/api-chat-client-Dx-sFrf2.js";import{r as C}from"./chunks/apple-pay-outcomes--uAwZeLE.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/task-CqjSKFwZ.js";import"./chunks/external-cM_kgYO_.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/isBefore-DBi1CiNR.js";function f(){return"undefined"!=typeof google&&"function"==typeof google.payments?.api?.PaymentsClient}const E=["PAN_ONLY","CRYPTOGRAM_3DS"],w=["VISA","MASTERCARD","AMEX"];function P(t){return{type:"PAYMENT_GATEWAY",parameters:{gateway:"globalpayments",gatewayMerchantId:t}}}function I(t){return{type:"CARD",parameters:{allowedAuthMethods:[...E],allowedCardNetworks:[...w]},tokenizationSpecification:P(t)}}function G(t){return[I(t)]}function S(t,e){return"test"===e?"TEST":"production"===e?"PRODUCTION":"development"===t?"TEST":"PRODUCTION"}function j(t,e){return function(t,e){return{apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:G(t.gatewayMerchantId),merchantInfo:{merchantId:t.merchantId,merchantName:t.merchantName},transactionInfo:{totalPriceStatus:"FINAL",totalPrice:e.amount,currencyCode:e.currencyCode,countryCode:e.countryCode}}}(t,e)}async function A(t,e,n,a={}){if("undefined"==typeof window||!window.isSecureContext)return l.warn("google-pay: unavailable outside a secure context"),{available:!1,reason:"unsupported"};if(!t.trim())return l.warn("google-pay: missing merchant id"),{available:!1,reason:"merchant-id-missing"};if(!e.trim())return l.warn("google-pay: missing gateway merchant id"),{available:!1,reason:"gateway-merchant-id-missing"};if(!await function(t=8e3,e){return f()?Promise.resolve(!0):t<=0||e?.aborted?Promise.resolve(!1):new Promise(n=>{const a=Date.now()+t,o=t=>{clearInterval(s),e?.removeEventListener("abort",i),n(t)},i=()=>o(!1),s=setInterval(()=>{f()?o(!0):Date.now()>=a&&o(!1)},100);e?.addEventListener("abort",i,{once:!0})})}(a.sdkWaitTimeoutMs,a.signal))return l.warn("google-pay: pay.js was not loaded by the host page"),{available:!1,reason:"sdk-missing"};const o=S(n,a.gatewayEnvironment);try{const t=new google.payments.api.PaymentsClient({environment:o}),n=await t.isReadyToPay(function(t){return{apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:G(t)}}(e));return n.result?{available:!0}:(l.warn("google-pay: isReadyToPay returned false",{environment:o}),{available:!1,reason:"unsupported"})}catch(t){return l.warn("google-pay: isReadyToPay threw",{environment:o,error:t instanceof Error?t.message:String(t)}),{available:!1,reason:"unsupported"}}}function T(t,e){return function(t){if(function(t){return"object"==typeof t&&null!==t&&"statusCode"in t&&"string"==typeof t.statusCode}(t)){const e=t.statusCode.toUpperCase();if("CANCELED"===e||"CANCELLED"===e)return!0}if(t instanceof Error){const e=t.message.toLowerCase();return e.includes("cancel")||e.includes("closed")||e.includes("abort")}return!1}(t)?{kind:"cancelled"}:b(t)&&400===t.response?.status?{kind:"denied",sessionId:e}:{kind:"authorize"}}function D(t){if(null!==t&&"object"==typeof t){const e=t.paymentMethodData?.tokenizationData,n=e?.token;if("string"==typeof n&&n.length>0)return n}throw new Error("Invalid Google Pay payment data: missing tokenizationData.token")}try{m()}catch{}const N=c`:host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:12px;width:100%;min-height:48px}.pay-row{display:block;width:100%}.pay-row--paying{opacity:.55;pointer-events:none}::slotted([slot=google-pay-button]){display:block;width:100%;height:var(--mq-google-pay-button-height,48px)}.state{text-align:center;font-family:system-ui,sans-serif;font-size:15px;color:#86868b;margin:0}`;class GooglePayCheckoutSuccessEvent extends Event{static{this.eventName="payment-success"}constructor(t){super(GooglePayCheckoutSuccessEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class GooglePayCheckoutDeniedEvent extends Event{static{this.eventName="payment-denied"}constructor(t){super(GooglePayCheckoutDeniedEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class GooglePayCheckoutErrorEvent extends Event{static{this.eventName="payment-error"}constructor(t){super(GooglePayCheckoutErrorEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}const x=new Set(["sdk-missing","unsupported"]);function M(t,e){l.warn(t,{error:e instanceof Error?e.message:String(e)})}let R=class MqGooglePayCheckout extends h{constructor(){super(...arguments),this._availabilityPhase="checking",this._unavailableReason=null,this._paying=!1,this._paymentsClient=null,this._paymentsClientEnvironment=null,this._buttonHost=null,this._availabilityGeneration=0,this._availabilityAbortController=null,this._terminalErrorDispatched=!1,this.apiClient=k(),this._loginTokenTask=new r(this,()=>this.apiClient,{args:()=>[this.apiKey,this.token],onComplete:t=>{this._sessionToken=t.access_token,this.apiClient.setAuthToken(t.access_token),this._refreshAvailability()},onError:()=>{this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"auth"}))}}),this._onPayClick=()=>{this._paying||"ready"!==this._availabilityPhase||this._processPayment()}}static{this.styles=N}willUpdate(t){t.has("env")&&(this.env&&d(this.env),this._resetPaymentsClient()),t.has("gatewayEnvironment")&&this._resetPaymentsClient(),t.has("locale")&&g(v(this.locale)?this.locale:"es_ES");const e=_(t,{env:this.env,apiKey:this.apiKey,token:this._sessionToken,locale:v(this.locale)?this.locale:"es_ES"},this.inheritedApiClient);e&&(this.apiClient=e),(t.has("merchantId")||t.has("gatewayMerchantId")||t.has("env")||t.has("gatewayEnvironment"))&&this._loginTokenTask.value&&this._refreshAvailability()}connectedCallback(){super.connectedCallback(),this._availabilityAbortController=new AbortController,this._terminalErrorDispatched=!1}disconnectedCallback(){this._availabilityAbortController?.abort(),this._availabilityAbortController=null,this._resetPaymentsClient(),super.disconnectedCallback()}_dispatchTerminalError(){this._terminalErrorDispatched||(this._terminalErrorDispatched=!0,this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"unsupported"})))}_resetPaymentsClient(){this._paymentsClient=null,this._paymentsClientEnvironment=null,this._removeButtonHost()}_getPaymentsClient(){const t=S(this.env,this.gatewayEnvironment);return this._paymentsClient&&this._paymentsClientEnvironment===t||(this._paymentsClient=new google.payments.api.PaymentsClient({environment:t}),this._paymentsClientEnvironment=t,this._buttonHost=null),this._paymentsClient}async _refreshAvailability(){const t=++this._availabilityGeneration;this._availabilityPhase="checking",this._unavailableReason=null,this._removeButtonHost();const e=await A(this.merchantId??"",this.gatewayMerchantId??"",this.env,{signal:this._availabilityAbortController?.signal,gatewayEnvironment:this.gatewayEnvironment});if(t===this._availabilityGeneration&&this.isConnected){if(!e.available)return this._availabilityPhase="unavailable",this._unavailableReason=e.reason,void(x.has(e.reason)&&this._dispatchTerminalError());this._availabilityPhase="ready",this._unavailableReason=null}}_ensureButtonHost(){const t=this.querySelector(':scope > [slot="google-pay-button"]');if(t)return t;const e=document.createElement("div");return e.slot="google-pay-button",this.appendChild(e),e}_removeButtonHost(){this.querySelector(':scope > [slot="google-pay-button"]')?.remove(),this._buttonHost=null}_mountGooglePayButton(){if(this._buttonHost||"ready"!==this._availabilityPhase)return;const t=this._ensureButtonHost();try{const e=this._getPaymentsClient().createButton({onClick:this._onPayClick,buttonColor:"black",buttonType:"pay",buttonSizeMode:"fill"});t.replaceChildren(e),this._buttonHost=t}catch(t){M("mq-google-pay-checkout: failed to create Google Pay button",t),this._removeButtonHost(),this._availabilityPhase="unavailable",this._unavailableReason="unsupported",this._dispatchTerminalError()}}updated(t){super.updated(t),"ready"===this._availabilityPhase&&this._mountGooglePayButton()}async _processPayment(){this._paying=!0;try{const t=await this._getPaymentsClient().loadPaymentData(j({merchantId:this.merchantId,gatewayMerchantId:this.gatewayMerchantId,merchantName:this.merchantName||this.label},{amount:this.amount,currencyCode:this.currency,countryCode:this.country})),e=await this.apiClient.payments.authorizeGooglePay({order_id:this.sessionId,token:D(t)}),{status:n,consultation_id:a}=e.data,o=C(n,a,this.sessionId);switch(o.kind){case"success":this.dispatchEvent(new GooglePayCheckoutSuccessEvent({sessionId:o.sessionId,reference:o.reference}));break;case"denied":this.dispatchEvent(new GooglePayCheckoutDeniedEvent({sessionId:o.sessionId}));break;case"error":this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:o.reason}))}}catch(t){const e=T(t,this.sessionId);switch(e.kind){case"cancelled":this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"cancelled"}));break;case"denied":this.dispatchEvent(new GooglePayCheckoutDeniedEvent({sessionId:e.sessionId}));break;case"authorize":M("mq-google-pay-checkout: authorize failed",t),this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"authorize"}))}}finally{this._paying=!1}}_renderUnavailable(){switch(this._unavailableReason){case"merchant-id-missing":return u`<p class="state">${o("Falta el identificador de comercio de Google Pay")}</p>`;case"gateway-merchant-id-missing":return u`<p class="state">${o("Falta el identificador de pasarela de Google Pay")}</p>`;case"sdk-missing":return u`<p class="state">${o("No se ha podido cargar Google Pay. Comprueba la configuración del sitio e inténtalo de nuevo.")}</p>`;default:return u`<p class="state">${o("Google Pay no está disponible. Prueba con tarjeta u otro método de pago.")}</p>`}}render(){return this._loginTokenTask.render({pending:()=>u`<p class="state">${o("Preparando Google Pay…")}</p>`,error:()=>u`<p class="state">${o("No hemos podido iniciar el pago")}</p>`,complete:()=>"checking"===this._availabilityPhase?u`<p class="state">${o("Comprobando Google Pay…")}</p>`:"unavailable"===this._availabilityPhase?this._renderUnavailable():u`<div class="pay-row ${this._paying?"pay-row--paying":""}"><slot name="google-pay-button"></slot></div>`})}};t([p({type:String,attribute:"env"})],R.prototype,"env",void 0),t([p({type:String,attribute:"gateway-environment"})],R.prototype,"gatewayEnvironment",void 0),t([p({type:String,attribute:"api-key"})],R.prototype,"apiKey",void 0),t([p({type:String,attribute:"token"})],R.prototype,"token",void 0),t([p({type:String,attribute:"locale",reflect:!0})],R.prototype,"locale",void 0),t([p({type:String,attribute:"merchant-id"})],R.prototype,"merchantId",void 0),t([p({type:String,attribute:"gateway-merchant-id"})],R.prototype,"gatewayMerchantId",void 0),t([p({type:String,attribute:"merchant-name"})],R.prototype,"merchantName",void 0),t([p({type:String,attribute:"session-id"})],R.prototype,"sessionId",void 0),t([p({type:String,attribute:"amount"})],R.prototype,"amount",void 0),t([p({type:String,attribute:"currency"})],R.prototype,"currency",void 0),t([p({type:String,attribute:"country"})],R.prototype,"country",void 0),t([p({type:String,attribute:"label"})],R.prototype,"label",void 0),t([y()],R.prototype,"_availabilityPhase",void 0),t([y()],R.prototype,"_unavailableReason",void 0),t([y()],R.prototype,"_paying",void 0),t([a({context:s,subscribe:!0}),y()],R.prototype,"inheritedApiClient",void 0),t([n({context:s}),y()],R.prototype,"apiClient",void 0),R=t([i(),e("mq-google-pay-checkout")],R);export{GooglePayCheckoutDeniedEvent,GooglePayCheckoutErrorEvent,GooglePayCheckoutSuccessEvent,R as MqGooglePayCheckout};
|
|
1
|
+
import{_ as t,c as e}from"./chunks/custom-element-D2ziPxYE.js";import{e as n}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as o}from"./chunks/runtime-Bg1WXVCx.js";import{l as i}from"./chunks/localized-decorator-BlOuLhym.js";import{A as s}from"./chunks/api-client-context-BXGqBAlO.js";import{L as r}from"./chunks/login-token-task-NQJ77O_q.js";import{l}from"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import{i as c,a as h,x as u}from"./chunks/lit-element-DiWJYFwC.js";import{n as p}from"./chunks/property-scuRaFcM.js";import{r as y}from"./chunks/state-LQivXIgA.js";import{setEnv as d}from"./env.js";import{initLocalization as m,setLocale as g,isValidLocale as v}from"./i18n.js";import{i as b,c as k,n as _}from"./chunks/api-chat-client-BZAeIvwy.js";import{r as C}from"./chunks/apple-pay-outcomes-BDEoZ3jG.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/task-CqjSKFwZ.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/isBefore-DBi1CiNR.js";function f(){return"undefined"!=typeof google&&"function"==typeof google.payments?.api?.PaymentsClient}const E=["PAN_ONLY","CRYPTOGRAM_3DS"],w=["VISA","MASTERCARD","AMEX"];function P(t){return{type:"PAYMENT_GATEWAY",parameters:{gateway:"globalpayments",gatewayMerchantId:t}}}function I(t){return{type:"CARD",parameters:{allowedAuthMethods:[...E],allowedCardNetworks:[...w]},tokenizationSpecification:P(t)}}function G(t){return[I(t)]}function S(t,e){return"test"===e?"TEST":"production"===e?"PRODUCTION":"development"===t?"TEST":"PRODUCTION"}function j(t,e){return function(t,e){return{apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:G(t.gatewayMerchantId),merchantInfo:{merchantId:t.merchantId,merchantName:t.merchantName},transactionInfo:{totalPriceStatus:"FINAL",totalPrice:e.amount,currencyCode:e.currencyCode,countryCode:e.countryCode}}}(t,e)}async function A(t,e,n,a={}){if("undefined"==typeof window||!window.isSecureContext)return l.warn("google-pay: unavailable outside a secure context"),{available:!1,reason:"unsupported"};if(!t.trim())return l.warn("google-pay: missing merchant id"),{available:!1,reason:"merchant-id-missing"};if(!e.trim())return l.warn("google-pay: missing gateway merchant id"),{available:!1,reason:"gateway-merchant-id-missing"};if(!await function(t=8e3,e){return f()?Promise.resolve(!0):t<=0||e?.aborted?Promise.resolve(!1):new Promise(n=>{const a=Date.now()+t,o=t=>{clearInterval(s),e?.removeEventListener("abort",i),n(t)},i=()=>o(!1),s=setInterval(()=>{f()?o(!0):Date.now()>=a&&o(!1)},100);e?.addEventListener("abort",i,{once:!0})})}(a.sdkWaitTimeoutMs,a.signal))return l.warn("google-pay: pay.js was not loaded by the host page"),{available:!1,reason:"sdk-missing"};const o=S(n,a.gatewayEnvironment);try{const t=new google.payments.api.PaymentsClient({environment:o}),n=await t.isReadyToPay(function(t){return{apiVersion:2,apiVersionMinor:0,allowedPaymentMethods:G(t)}}(e));return n.result?{available:!0}:(l.warn("google-pay: isReadyToPay returned false",{environment:o}),{available:!1,reason:"unsupported"})}catch(t){return l.warn("google-pay: isReadyToPay threw",{environment:o,error:t instanceof Error?t.message:String(t)}),{available:!1,reason:"unsupported"}}}function T(t,e){return function(t){if(function(t){return"object"==typeof t&&null!==t&&"statusCode"in t&&"string"==typeof t.statusCode}(t)){const e=t.statusCode.toUpperCase();if("CANCELED"===e||"CANCELLED"===e)return!0}if(t instanceof Error){const e=t.message.toLowerCase();return e.includes("cancel")||e.includes("closed")||e.includes("abort")}return!1}(t)?{kind:"cancelled"}:b(t)&&400===t.response?.status?{kind:"denied",sessionId:e}:{kind:"authorize"}}function D(t){if(null!==t&&"object"==typeof t){const e=t.paymentMethodData?.tokenizationData,n=e?.token;if("string"==typeof n&&n.length>0)return n}throw new Error("Invalid Google Pay payment data: missing tokenizationData.token")}try{m()}catch{}const N=c`:host{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:12px;width:100%;min-height:48px}.pay-row{display:block;width:100%}.pay-row--paying{opacity:.55;pointer-events:none}::slotted([slot=google-pay-button]){display:block;width:100%;height:var(--mq-google-pay-button-height,48px)}.state{text-align:center;font-family:system-ui,sans-serif;font-size:15px;color:#86868b;margin:0}`;class GooglePayCheckoutSuccessEvent extends Event{static{this.eventName="payment-success"}constructor(t){super(GooglePayCheckoutSuccessEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class GooglePayCheckoutDeniedEvent extends Event{static{this.eventName="payment-denied"}constructor(t){super(GooglePayCheckoutDeniedEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}class GooglePayCheckoutErrorEvent extends Event{static{this.eventName="payment-error"}constructor(t){super(GooglePayCheckoutErrorEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}const x=new Set(["sdk-missing","unsupported"]);function M(t,e){l.warn(t,{error:e instanceof Error?e.message:String(e)})}let R=class MqGooglePayCheckout extends h{constructor(){super(...arguments),this._availabilityPhase="checking",this._unavailableReason=null,this._paying=!1,this._paymentsClient=null,this._paymentsClientEnvironment=null,this._buttonHost=null,this._availabilityGeneration=0,this._availabilityAbortController=null,this._terminalErrorDispatched=!1,this.apiClient=k(),this._loginTokenTask=new r(this,()=>this.apiClient,{args:()=>[this.apiKey,this.token],onComplete:t=>{this._sessionToken=t.access_token,this.apiClient.setAuthToken(t.access_token),this._refreshAvailability()},onError:()=>{this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"auth"}))}}),this._onPayClick=()=>{this._paying||"ready"!==this._availabilityPhase||this._processPayment()}}static{this.styles=N}willUpdate(t){t.has("env")&&(this.env&&d(this.env),this._resetPaymentsClient()),t.has("gatewayEnvironment")&&this._resetPaymentsClient(),t.has("locale")&&g(v(this.locale)?this.locale:"es_ES");const e=_(t,{env:this.env,apiKey:this.apiKey,token:this._sessionToken,locale:v(this.locale)?this.locale:"es_ES"},this.inheritedApiClient);e&&(this.apiClient=e),(t.has("merchantId")||t.has("gatewayMerchantId")||t.has("env")||t.has("gatewayEnvironment"))&&this._loginTokenTask.value&&this._refreshAvailability()}connectedCallback(){super.connectedCallback(),this._availabilityAbortController=new AbortController,this._terminalErrorDispatched=!1}disconnectedCallback(){this._availabilityAbortController?.abort(),this._availabilityAbortController=null,this._resetPaymentsClient(),super.disconnectedCallback()}_dispatchTerminalError(){this._terminalErrorDispatched||(this._terminalErrorDispatched=!0,this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"unsupported"})))}_resetPaymentsClient(){this._paymentsClient=null,this._paymentsClientEnvironment=null,this._removeButtonHost()}_getPaymentsClient(){const t=S(this.env,this.gatewayEnvironment);return this._paymentsClient&&this._paymentsClientEnvironment===t||(this._paymentsClient=new google.payments.api.PaymentsClient({environment:t}),this._paymentsClientEnvironment=t,this._buttonHost=null),this._paymentsClient}async _refreshAvailability(){const t=++this._availabilityGeneration;this._availabilityPhase="checking",this._unavailableReason=null,this._removeButtonHost();const e=await A(this.merchantId??"",this.gatewayMerchantId??"",this.env,{signal:this._availabilityAbortController?.signal,gatewayEnvironment:this.gatewayEnvironment});if(t===this._availabilityGeneration&&this.isConnected){if(!e.available)return this._availabilityPhase="unavailable",this._unavailableReason=e.reason,void(x.has(e.reason)&&this._dispatchTerminalError());this._availabilityPhase="ready",this._unavailableReason=null}}_ensureButtonHost(){const t=this.querySelector(':scope > [slot="google-pay-button"]');if(t)return t;const e=document.createElement("div");return e.slot="google-pay-button",this.appendChild(e),e}_removeButtonHost(){this.querySelector(':scope > [slot="google-pay-button"]')?.remove(),this._buttonHost=null}_mountGooglePayButton(){if(this._buttonHost||"ready"!==this._availabilityPhase)return;const t=this._ensureButtonHost();try{const e=this._getPaymentsClient().createButton({onClick:this._onPayClick,buttonColor:"black",buttonType:"pay",buttonSizeMode:"fill"});t.replaceChildren(e),this._buttonHost=t}catch(t){M("mq-google-pay-checkout: failed to create Google Pay button",t),this._removeButtonHost(),this._availabilityPhase="unavailable",this._unavailableReason="unsupported",this._dispatchTerminalError()}}updated(t){super.updated(t),"ready"===this._availabilityPhase&&this._mountGooglePayButton()}async _processPayment(){this._paying=!0;try{const t=await this._getPaymentsClient().loadPaymentData(j({merchantId:this.merchantId,gatewayMerchantId:this.gatewayMerchantId,merchantName:this.merchantName||this.label},{amount:this.amount,currencyCode:this.currency,countryCode:this.country})),e=await this.apiClient.payments.authorizeGooglePay({order_id:this.sessionId,token:D(t)}),{status:n,consultation_id:a}=e.data,o=C(n,a,this.sessionId);switch(o.kind){case"success":this.dispatchEvent(new GooglePayCheckoutSuccessEvent({sessionId:o.sessionId,reference:o.reference}));break;case"denied":this.dispatchEvent(new GooglePayCheckoutDeniedEvent({sessionId:o.sessionId}));break;case"error":this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:o.reason}))}}catch(t){const e=T(t,this.sessionId);switch(e.kind){case"cancelled":this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"cancelled"}));break;case"denied":this.dispatchEvent(new GooglePayCheckoutDeniedEvent({sessionId:e.sessionId}));break;case"authorize":M("mq-google-pay-checkout: authorize failed",t),this.dispatchEvent(new GooglePayCheckoutErrorEvent({reason:"authorize"}))}}finally{this._paying=!1}}_renderUnavailable(){switch(this._unavailableReason){case"merchant-id-missing":return u`<p class="state">${o("Falta el identificador de comercio de Google Pay")}</p>`;case"gateway-merchant-id-missing":return u`<p class="state">${o("Falta el identificador de pasarela de Google Pay")}</p>`;case"sdk-missing":return u`<p class="state">${o("No se ha podido cargar Google Pay. Comprueba la configuración del sitio e inténtalo de nuevo.")}</p>`;default:return u`<p class="state">${o("Google Pay no está disponible. Prueba con tarjeta u otro método de pago.")}</p>`}}render(){return this._loginTokenTask.render({pending:()=>u`<p class="state">${o("Preparando Google Pay…")}</p>`,error:()=>u`<p class="state">${o("No hemos podido iniciar el pago")}</p>`,complete:()=>"checking"===this._availabilityPhase?u`<p class="state">${o("Comprobando Google Pay…")}</p>`:"unavailable"===this._availabilityPhase?this._renderUnavailable():u`<div class="pay-row ${this._paying?"pay-row--paying":""}"><slot name="google-pay-button"></slot></div>`})}};t([p({type:String,attribute:"env"})],R.prototype,"env",void 0),t([p({type:String,attribute:"gateway-environment"})],R.prototype,"gatewayEnvironment",void 0),t([p({type:String,attribute:"api-key"})],R.prototype,"apiKey",void 0),t([p({type:String,attribute:"token"})],R.prototype,"token",void 0),t([p({type:String,attribute:"locale",reflect:!0})],R.prototype,"locale",void 0),t([p({type:String,attribute:"merchant-id"})],R.prototype,"merchantId",void 0),t([p({type:String,attribute:"gateway-merchant-id"})],R.prototype,"gatewayMerchantId",void 0),t([p({type:String,attribute:"merchant-name"})],R.prototype,"merchantName",void 0),t([p({type:String,attribute:"session-id"})],R.prototype,"sessionId",void 0),t([p({type:String,attribute:"amount"})],R.prototype,"amount",void 0),t([p({type:String,attribute:"currency"})],R.prototype,"currency",void 0),t([p({type:String,attribute:"country"})],R.prototype,"country",void 0),t([p({type:String,attribute:"label"})],R.prototype,"label",void 0),t([y()],R.prototype,"_availabilityPhase",void 0),t([y()],R.prototype,"_unavailableReason",void 0),t([y()],R.prototype,"_paying",void 0),t([a({context:s,subscribe:!0}),y()],R.prototype,"inheritedApiClient",void 0),t([n({context:s}),y()],R.prototype,"apiClient",void 0),R=t([i(),e("mq-google-pay-checkout")],R);export{GooglePayCheckoutDeniedEvent,GooglePayCheckoutErrorEvent,GooglePayCheckoutSuccessEvent,R as MqGooglePayCheckout};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t}from"./chunks/custom-element-D2ziPxYE.js";import{a as i,x as s}from"./chunks/lit-element-DiWJYFwC.js";import{n as o}from"./chunks/property-scuRaFcM.js";import{o as c}from"./chunks/if-defined-BYeVdwgd.js";import"./mq-checkout.js";import"./chunks/provide-BwI4DDGF.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/consume-CovVqBjI.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/runtime-Bg1WXVCx.js";import"./chunks/localized-decorator-BlOuLhym.js";import"./chunks/task-CqjSKFwZ.js";import"./chunks/api-client-context-BXGqBAlO.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/login-token-task-NQJ77O_q.js";import"./chunks/state-LQivXIgA.js";import"./chunks/query-CeeutdfT.js";import"./env.js";import"./theme.js";import"./i18n.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-
|
|
1
|
+
import{_ as e,c as t}from"./chunks/custom-element-D2ziPxYE.js";import{a as i,x as s}from"./chunks/lit-element-DiWJYFwC.js";import{n as o}from"./chunks/property-scuRaFcM.js";import{o as c}from"./chunks/if-defined-BYeVdwgd.js";import"./mq-checkout.js";import"./chunks/provide-BwI4DDGF.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/consume-CovVqBjI.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/runtime-Bg1WXVCx.js";import"./chunks/localized-decorator-BlOuLhym.js";import"./chunks/task-CqjSKFwZ.js";import"./chunks/api-client-context-BXGqBAlO.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/login-token-task-NQJ77O_q.js";import"./chunks/state-LQivXIgA.js";import"./chunks/query-CeeutdfT.js";import"./env.js";import"./theme.js";import"./i18n.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/api-chat-client-BZAeIvwy.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/isBefore-DBi1CiNR.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/checkout-bridge-BFpVxNww.js";class ImmediateVideocallPaidEvent extends Event{static{this.eventName="payment-success"}constructor(e){super(ImmediateVideocallPaidEvent.eventName,{bubbles:!0,composed:!0}),this.detail=e}}let r=class MqImmediateVideocallCheckout extends i{constructor(){super(...arguments),this._onSuccess=e=>{e.stopPropagation(),this.dispatchEvent(new ImmediateVideocallPaidEvent({videoCallId:e.detail.reference}))}}render(){return s`<mq-checkout env="${c(this.env)}" api-key="${c(this.apiKey)}" token="${c(this.token)}" locale="${c(this.locale)}" payable-reference="${c(this.payableReference)}" @payment-success="${this._onSuccess}"></mq-checkout>`}};e([o({type:String,attribute:"env"})],r.prototype,"env",void 0),e([o({type:String,attribute:"api-key"})],r.prototype,"apiKey",void 0),e([o({type:String,attribute:"token"})],r.prototype,"token",void 0),e([o({type:String,attribute:"locale",reflect:!0})],r.prototype,"locale",void 0),e([o({type:String,attribute:"video-call-schedule-id"})],r.prototype,"videoCallScheduleId",void 0),e([o({type:String,attribute:"payable-reference"})],r.prototype,"payableReference",void 0),r=e([t("mq-immediate-videocall-checkout")],r);export{ImmediateVideocallPaidEvent,r as MqImmediateVideocallCheckout};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getLocale as t,isValidLocale as e,setLocale as i,initLocalization as n}from"./i18n.js";export{A as AppointmentDetails}from"./chunks/appointment-details-BM8peAHH.js";import{_ as a,c as o}from"./chunks/custom-element-D2ziPxYE.js";import{m as s}from"./chunks/runtime-Bg1WXVCx.js";import{l as r}from"./chunks/localized-decorator-BlOuLhym.js";import{a as p,i as l,x as c,E as d}from"./chunks/lit-element-DiWJYFwC.js";import{n as m}from"./chunks/property-scuRaFcM.js";import{e as h}from"./chunks/external-cM_kgYO_.js";import"./ui/mq-tabs.js";import{c as u}from"./chunks/consume-CovVqBjI.js";import{A as v}from"./chunks/api-client-context-BXGqBAlO.js";import{A as g,e as b,d as f}from"./chunks/api-chat-client-Dx-sFrf2.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./ui/mq-button.js";import{g as y,a as x}from"./chunks/next-appointment-card-BE0KW2vv.js";import{Q as k}from"./chunks/query-controller-B1byDHlF.js";import{g as $}from"./chunks/get-organization-setup-query-De7eM6V3.js";import{t as q,o as C,p as j,q as w,l as H,s as V,g as R,a as M,n as S}from"./chunks/telemetry-client-DA2_SZBC.js";import{g as E}from"./chunks/get-schedule-services-query-Io2aQ_7G.js";import{g as D}from"./chunks/chunk-Y4EKUX25-Bdei04iw.js";import{r as I}from"./chunks/state-LQivXIgA.js";export{P as ProfessionalOverview}from"./chunks/professional-overview-Ck_SPivX.js";import{l as z}from"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/mq-chat-room-BkXGHzrd.js";import"./ui/mq-floating-bubble.js";import{e as O}from"./chunks/class-map-Co76I6aw.js";import{MqAppointmentRescheduleEvent as N,MqAppointmentBookEvent as U,MqAppointmentJoinVideocallEvent as _,MqAppointmentViewDocumentationEvent as T}from"./events.js";import{videoIcon as Z}from"./ui/icons/video-icon.js";import"./ui/mq-unread-badge.js";import{c as Q}from"./chunks/refund-cancel-policy-DoMzcLlL.js";import{toast as B}from"./ui/mq-toast.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/addSeconds-fO5orJrt.js";import"./chunks/parseISO-CEksKisk.js";import"./ui/icons/briefcase-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./chunks/custom-element-CiOhPWP1-DPpsGZrV.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/isBefore-DBi1CiNR.js";import"./env.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import"./ui/icons/dots-horizontal-icon.js";import"./ui/mq-dialog.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/price-DU3YLTpk.js";import"@tanstack/query-core";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";import"./ui/mq-avatar.js";import"./chunks/index-Djkwyh_M.js";import"./chunks/provide-BwI4DDGF.js";import"./theme.js";import"./ui/icons/x-icon.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/addDays-CdyO-PRI.js";import"./chunks/chunk-YTQUGGS3-sBILRfPo.js";const G=h(["next","history"]).enum;class MqMyAppointmentsSelectEvent extends Event{static{this.eventName="ontabchange"}constructor(t){super(MqMyAppointmentsSelectEvent.eventName,{bubbles:!0,composed:!0}),this.value=t}}let W=class AppointmentCardSkeleton extends p{static{this.styles=l`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 c`<div></div>`}};W=a([o("appointment-card-skeleton")],W);let J=class EmptyState extends p{static{this.styles=l`.container{border-radius:var(--border-radius-md);background-color:var(--color-neutrals-background-weak);padding:var(--sp-10) var(--sp-6)}.card{border-radius:var(--border-radius-md);max-width:512px;margin:0 auto;background-color:var(--color-neutrals-background-extraWeak);padding:var(--sp-6);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.card>*{max-width:323px;margin:0 auto}.title{font-family:var(--font-body);font-size:var(--text-lg);line-height:var(--text-lg--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0}.description{font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--text-xs--line-height);font-weight:var(--font-weight-normal);text-align:center;color:var(--color-neutrals-text-default);margin:0}@media (min-width:768px){.container{padding:var(--sp-6)}mq-button{max-width:323px}}`}handleRequestAppointment(){this.dispatchEvent(new CustomEvent("request-appointment",{bubbles:!0,composed:!0}))}render(){return c`<div class="container"><div class="card">${function({color:t="currentColor"}){return c`<svg width="31" height="32" viewBox="0 0 31 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.6 2.4H23.2V0H21.6V2.4H18.4V0H16.8V2.4H13.6V0H12V2.4H8.8V0H7.2V2.4H0.8C0.587827 2.4 0.384344 2.48429 0.234315 2.63431C0.0842855 2.78434 0 2.98783 0 3.2V31.2C0 31.4122 0.0842855 31.6157 0.234315 31.7657C0.384344 31.9157 0.587827 32 0.8 32H29.6C29.8122 32 30.0157 31.9157 30.1657 31.7657C30.3157 31.6157 30.4 31.4122 30.4 31.2V3.2C30.4 2.98783 30.3157 2.78434 30.1657 2.63431C30.0157 2.48429 29.8122 2.4 29.6 2.4ZM28.8 30.4H1.6V10.4H27.2V8.8H1.6V4H7.2V7.2H8.8V4H12V7.2H13.6V4H16.8V7.2H18.4V4H21.6V7.2H23.2V4H28.8V30.4ZM3.2 19.2H9.6V12.8H3.2V19.2ZM4.8 14.4H8V17.6H4.8V14.4ZM20.8 19.2H27.2V12.8H20.8V19.2ZM22.4 14.4H25.6V17.6H22.4V14.4ZM12 19.2H18.4V12.8H12V19.2ZM13.6 14.4H16.8V17.6H13.6V14.4ZM3.2 28H9.6V21.6H3.2V28ZM4.8 23.2H8V26.4H4.8V23.2ZM20.8 28H27.2V21.6H20.8V28ZM22.4 23.2H25.6V26.4H22.4V23.2ZM12 28H18.4V21.6H12V28ZM13.6 23.2H16.8V26.4H13.6V23.2Z" fill="${t}"/></svg>`}({color:"var(--color-primary)"})}<p class="title">${this.title}</p><p class="description">${this.description}</p><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}">${s("Pedir cita")}</mq-button></div></div>`}};a([m({type:String})],J.prototype,"title",void 0),a([m({type:String})],J.prototype,"description",void 0),J=a([o("empty-state")],J);const L=[g.pending,g.accepted],X=l`.appointments-list{display:grid;grid-template-columns:1fr;align-items:start;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}.card{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:12px;padding:var(--sp-6)}`;let Y=class NextAppointmentsTab extends p{constructor(){super(...arguments),this.getAppointmentsQuery=new k(this,()=>y(this.apiClient,{status:L,order:{field:"starts_at",direction:"asc"}}))}static{this.styles=X}render(){return this.getAppointmentsQuery.render({complete:t=>c`${t.data.length>0?c`<div class="appointments-list">${t.data.map(t=>c`<div class="card"><next-appointment-card .appointmentResource="${t}"></next-appointment-card></div>`)}</div>`:c`<empty-state title="${s("No tienes próximas citas")}" description="${s("Agenda una consulta médica cuando la necesites. Aquí verás todos los detalles y podrás gestionar tus próximas citas.")}"></empty-state>`}`,pending:()=>c`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};a([u({context:v,subscribe:!0})],Y.prototype,"apiClient",void 0),Y=a([r(),o("next-appointments-tab")],Y);let F=class AppointmentCardActions extends p{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":(q.track(C(this.patientHash,this.appointmentId)),this.dispatchEvent(new N({appointmentId:this.appointmentId})))},this.handleCancelClick=()=>{this.isCancelUnavailable?this.openDialog="cancel":(q.track(j(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?(q.track(w(this.patientHash,this.appointmentId)),this.dispatchEvent(new U({specialty:this.repeatTarget.specialty,service:this.repeatTarget.service,professional:this.professionalHash}))):this.openDialog="repeat-error"},this.handleDialogClose=()=>{this.openDialog=null}}static{this.styles=l`:host{display:contents}.actions{--button-height-md:2.75rem;display:flex;gap:10px}.actions.next{flex-direction:column}.actions-secondary{display:flex;gap:var(--sp-3)}.actions mq-button{flex:1;min-width:0}.chat-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-badge{--mq-unread-badge-size:8px;flex-shrink:0}`}get patientHash(){return this.loginToken.patient.hash}renderChatButton(){return c`<mq-button variant="outline" fullwidth noPadding @click="${()=>{this.dispatchEvent(new CustomEvent("toggle-chat",{bubbles:!0,composed:!0}))}}"><span class="chat-label">${s("Ir a chat")}</span> ${this.unreadCount>0?c`<mq-unread-badge class="chat-badge"></mq-unread-badge>`:d}</mq-button>`}renderNextActions(){return c`${this.isVideocall?c`<mq-button variant="outline" fullwidth noPadding @click="${()=>{q.track(H(this.patientHash,this.appointmentId)),this.dispatchEvent(new _({appointmentId:this.appointmentId}))}}">${Z({size:24})} ${s("Ir a videollamada")}</mq-button>`:d}<div class="actions-secondary">${this.hasChatSupport?this.renderChatButton():d}<mq-button variant="outline" fullwidth noPadding @click="${this.handleModifyClick}">${s("Modificar")}</mq-button><mq-button variant="outline-negative" fullwidth noPadding @click="${this.handleCancelClick}">${s("Cancelar")}</mq-button></div>`}renderHistoryActions(){return c`${this.hasChatSupport?this.renderChatButton():d}<mq-button variant="outline" fullwidth noPadding @click="${()=>{q.track(V(this.patientHash,this.appointmentId)),this.dispatchEvent(new T({appointmentId:this.appointmentId}))}}">${s("Documentos")}</mq-button><mq-button variant="outline" fullwidth noPadding @click="${this.handleRepeatClick}">${s("Repetir")}</mq-button>`}render(){return c`<div class="${O({actions:!0,next:"next"===this.variant})}">${"next"===this.variant?this.renderNextActions():this.renderHistoryActions()}</div><appointment-action-unavailable-dialog .open="${"modify"===this.openDialog}" .heading="${s("Modificar cita")}" .message="${this.modifyUnavailableMessage}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"cancel"===this.openDialog}" .heading="${s("Anular cita")}" .message="${this.cancelUnavailableMessage}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"repeat-no-slots"===this.openDialog}" .heading="${s("Repetir cita")}" .message="${s("Este profesional no tiene horarios disponibles")}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"repeat-error"===this.openDialog}" .heading="${s("Repetir cita")}" .message="${s("Lo sentimos, no hemos podido repetir tu cita. Por favor, contacta con soporte.")}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog>`}};a([u({context:z})],F.prototype,"loginToken",void 0),a([m({type:String})],F.prototype,"variant",void 0),a([m({type:String})],F.prototype,"appointmentId",void 0),a([m({type:Boolean})],F.prototype,"isVideocall",void 0),a([m({type:Boolean})],F.prototype,"hasChatSupport",void 0),a([m({type:Number})],F.prototype,"unreadCount",void 0),a([m({type:Boolean})],F.prototype,"isModifyUnavailable",void 0),a([m({type:Boolean})],F.prototype,"isCancelUnavailable",void 0),a([m({type:Boolean})],F.prototype,"hasNoSlots",void 0),a([m({type:String})],F.prototype,"modifyUnavailableMessage",void 0),a([m({type:String})],F.prototype,"cancelUnavailableMessage",void 0),a([m({type:Object})],F.prototype,"repeatTarget",void 0),a([m({type:String})],F.prototype,"professionalHash",void 0),a([I()],F.prototype,"openDialog",void 0),F=a([r(),o("appointment-card-actions")],F);let K=class AppointmentCard extends p{constructor(){super(...arguments),this.variant="next",this.isChatOpen=!1,this.isCancelDialogOpen=!1,this.unreadQuery=new k(this,()=>D(this.apiClient,{roomId:this.appointmentResource?.room?.id})),this.getOrganizationSpecialtiesQuery=new k(this,()=>R(this.apiClient,{enabled:!!this.appointmentResource?.speciality?.id})),this.getOrganizationSetupQuery=new k(this,()=>$(this.apiClient)),this.getScheduleServicesQuery=new k(this,()=>E(this.apiClient))}static{this.styles=l`:host{display:flex}.card{display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-6);width:100%;min-width:0;box-sizing:border-box;padding:var(--sp-6);color:var(--color-text-icons--primary,#0a0a22);background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:12px}.card-top-content{display:flex;flex-direction:column;gap:var(--sp-6)}professional-overview{--avatar-size-lg:66px;--text-lg--line-height:1.35;display:block}`}render(){const e=this.appointmentResource.appointment.channel===b.videocall,i=this.appointmentResource.appointment.channel===b.phonecall,n=!0===this.appointmentResource.appointment.has_chat_in_appointment,a=(e||i)&&n,o=t(),r=f(this.appointmentResource.appointment.expires_at),p=0===this.appointmentResource.slots.length,l=this.getOrganizationSetupQuery.result?.data?.appointments?.seconds_before_start_to_refund_on_cancel,m=Q({startsAtIso:this.appointmentResource.appointment.starts_at,refundPolicySeconds:l}),h=r||p||!m,u=r||!m,v=x({action:"modify",refundPolicySeconds:l}),g=x({action:"cancel",refundPolicySeconds:l}),y=this.getOrganizationSpecialtiesQuery.result?.data?.find(t=>Number(t.id)===Number(this.appointmentResource.speciality.id)),k=M(y?.code??"",o,y?.name??this.appointmentResource.speciality.name),$=this.getScheduleServicesQuery.result?.data?.find(t=>t.id===this.appointmentResource.appointment.service_id)?.code,C=y?.code&&$?{specialty:y.code,service:$}:null;return c`<div class="card"><div class="card-top-content"><professional-overview .specialtyName="${k??""}" .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-card-details .startsAt="${this.appointmentResource.appointment.starts_at}" .channel="${this.appointmentResource.appointment.channel}" .timezone="${this.loginToken?.patient?.timezone}"></appointment-card-details></div><appointment-card-actions .variant="${this.variant}" .appointmentId="${this.appointmentResource.appointment.id??""}" .isVideocall="${e}" .hasChatSupport="${a}" .unreadCount="${this.unreadQuery.result?.data?.unread_count??0}" .isModifyUnavailable="${h}" .isCancelUnavailable="${u}" .hasNoSlots="${p}" .modifyUnavailableMessage="${v}" .cancelUnavailableMessage="${g}" .repeatTarget="${C}" .professionalHash="${this.appointmentResource.professional.hash}" @toggle-chat="${()=>{this.isChatOpen=!this.isChatOpen,this.isChatOpen&&q.track(S(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?c`<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="${r}"></mq-chat-room>`:d}</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,B.success(s("Consulta anulada correctamente")),this.dispatchEvent(new CustomEvent("appointment-cancel-confirmed",{bubbles:!0,composed:!0,detail:{id:this.appointmentResource.appointment.id}}))}}"></cancel-appointment-confirmation-dialog></div>`}};a([u({context:v,subscribe:!0})],K.prototype,"apiClient",void 0),a([m({type:Object})],K.prototype,"appointmentResource",void 0),a([m({type:Number})],K.prototype,"specialtyId",void 0),a([m({type:String})],K.prototype,"variant",void 0),a([u({context:z})],K.prototype,"loginToken",void 0),a([I()],K.prototype,"isChatOpen",void 0),a([I()],K.prototype,"isCancelDialogOpen",void 0),K=a([r(),o("appointment-card")],K);const tt=[g.finished,g.reporting];let et=class AppointmentsHistoryTab extends p{constructor(){super(...arguments),this.getAppointmentsQuery=new k(this,()=>y(this.apiClient,{status:tt,order:{field:"starts_at",direction:"desc"}}))}static{this.styles=l`.appointments-list{display:grid;grid-template-columns:1fr;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}`}render(){return this.getAppointmentsQuery.render({complete:t=>c`${t.data.length>0?c`<div class="appointments-list">${t.data.map(t=>c`<appointment-card .appointmentResource="${t}" .specialtyId="${t.speciality?.id}" variant="history"></appointment-card>`)}</div>`:c`<empty-state title="${s("No tienes citas en el historial")}" description="${s("Aquí verás todas las citas que has tenido. Puedes acceder a los documentos de cada consulta y reagendar una cita si es necesario.")}"></empty-state>`}`,pending:()=>c`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};a([u({context:v,subscribe:!0})],et.prototype,"apiClient",void 0),et=a([r(),o("appointments-history-tab")],et);const it=l`.container{display:flex;flex-direction:column;gap:var(--size-3)}`;let nt=class MqMyAppointments extends p{constructor(){super(...arguments),this.tab=G.next}static{this.styles=it}willUpdate(t){t.has("locale")&&this.locale&&e(this.locale)&&i(this.locale)}handleSelect(t){this.dispatchEvent(new MqMyAppointmentsSelectEvent(t.value))}render(){return c`<div class="container"><mq-tabs .value="${this.tab}" @onvaluechange="${this.handleSelect}"><mq-tabs-list label="${s("Mis citas")}"><mq-tabs-trigger value="${G.next}">${s("Próximas citas")}</mq-tabs-trigger><mq-tabs-trigger value="${G.history}">${s("Histórico")}</mq-tabs-trigger></mq-tabs-list><mq-tabs-content value="${G.next}"><next-appointments-tab></next-appointments-tab></mq-tabs-content><mq-tabs-content value="${G.history}"><appointments-history-tab></appointments-history-tab></mq-tabs-content></mq-tabs></div>`}};a([m({type:String,reflect:!0})],nt.prototype,"tab",void 0),a([m({type:String,attribute:"locale"})],nt.prototype,"locale",void 0),nt=a([r(),o("mq-my-appointments")],nt);const at=l`:host{display:block}.request-appointment-cta{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:var(--sp-12) var(--sp-4);background:var(--color-card);gap:var(--sp-4)}.title-body{display:flex;flex-direction:column;gap:var(--sp-2);flex:1}.title{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0;text-align:center}.subtitle{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);font-weight:var(--font-weight-normal);color:var(--color-neutrals-text-default);margin:0;display:none}mq-button{width:100%}.button-text-desktop{display:none}.button-text-mobile{display:inline}@media (min-width:768px){.request-appointment-cta{flex-direction:row;padding:var(--sp-12) var(--sp-20);gap:var(--sp-2)}.title-body{align-items:flex-start;flex:1;max-width:843px}.title{font-size:var(--text-3xl);line-height:var(--text-3xl--line-height);font-weight:var(--font-weight-extrabold);text-align:left}.subtitle{display:block}mq-button{width:auto;flex-shrink:0;--button-height-md:var(--button-height-lg);--text-sm:var(--text-base);--text-sm--line-height:var(--text-base--line-height)}.button-text-desktop{display:inline}.button-text-mobile{display:none}}`;class RequestAppointmentEvent extends Event{static{this.eventName="request-appointment"}constructor(){super(RequestAppointmentEvent.eventName,{bubbles:!0,composed:!0})}}let ot=class RequestAppointmentCta extends p{static{this.styles=at}handleRequestAppointment(){this.dispatchEvent(new RequestAppointmentEvent)}render(){return c`<div class="request-appointment-cta"><div class="title-body"><h2 class="title">${s("Nueva cita de especialidades digitales")}</h2><p class="subtitle">${s("Realiza la búsqueda en tu cuadro médico digital")}</p></div><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}"><span class="button-text-mobile">${s("Pedir cita")}</span> <span class="button-text-desktop">${s("Pedir una nueva cita")}</span></mq-button></div>`}};ot=a([r(),o("request-appointment-cta")],ot),n();export{nt as MqMyAppointments,MqMyAppointmentsSelectEvent,ot as RequestAppointmentCta,RequestAppointmentEvent};
|
|
1
|
+
import{getLocale as t,isValidLocale as e,setLocale as i,initLocalization as n}from"./i18n.js";export{A as AppointmentDetails}from"./chunks/appointment-details-BM8peAHH.js";import{_ as a,c as o}from"./chunks/custom-element-D2ziPxYE.js";import{m as s}from"./chunks/runtime-Bg1WXVCx.js";import{l as r}from"./chunks/localized-decorator-BlOuLhym.js";import{a as p,i as l,x as c,E as d}from"./chunks/lit-element-DiWJYFwC.js";import{n as m}from"./chunks/property-scuRaFcM.js";import{e as h}from"./chunks/external-JLtsAfi6.js";import"./ui/mq-tabs.js";import{c as u}from"./chunks/consume-CovVqBjI.js";import{A as v}from"./chunks/api-client-context-BXGqBAlO.js";import{A as g,e as b,d as f}from"./chunks/api-chat-client-BZAeIvwy.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./ui/mq-button.js";import{g as y,a as x}from"./chunks/next-appointment-card-CBf_4Err.js";import{Q as k}from"./chunks/query-controller-B1byDHlF.js";import{g as $}from"./chunks/get-organization-setup-query-De7eM6V3.js";import{t as q,o as C,p as j,q as w,l as H,s as V,g as R,a as M,n as S}from"./chunks/telemetry-client-DA2_SZBC.js";import{g as E}from"./chunks/get-schedule-services-query-Io2aQ_7G.js";import{g as D}from"./chunks/chunk-Y4EKUX25-Bix9r5ry.js";import{r as I}from"./chunks/state-LQivXIgA.js";export{P as ProfessionalOverview}from"./chunks/professional-overview-Ck_SPivX.js";import{l as z}from"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/mq-chat-room-D8z-cbzt.js";import"./ui/mq-floating-bubble.js";import{e as O}from"./chunks/class-map-Co76I6aw.js";import{MqAppointmentRescheduleEvent as N,MqAppointmentBookEvent as U,MqAppointmentJoinVideocallEvent as _,MqAppointmentViewDocumentationEvent as T}from"./events.js";import{videoIcon as Z}from"./ui/icons/video-icon.js";import"./ui/mq-unread-badge.js";import{c as Q}from"./chunks/refund-cancel-policy-DoMzcLlL.js";import{toast as B}from"./ui/mq-toast.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/addSeconds-fO5orJrt.js";import"./chunks/parseISO-CEksKisk.js";import"./ui/icons/briefcase-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./chunks/custom-element-CiOhPWP1-DPpsGZrV.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/isBefore-DBi1CiNR.js";import"./env.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import"./ui/icons/dots-horizontal-icon.js";import"./ui/mq-dialog.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/price-DU3YLTpk.js";import"@tanstack/query-core";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";import"./ui/mq-avatar.js";import"./chunks/index-Djkwyh_M.js";import"./chunks/provide-BwI4DDGF.js";import"./theme.js";import"./ui/icons/x-icon.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/addDays-CdyO-PRI.js";import"./chunks/chunk-YTQUGGS3-DH0H7ld7.js";const G=h(["next","history"]).enum;class MqMyAppointmentsSelectEvent extends Event{static{this.eventName="ontabchange"}constructor(t){super(MqMyAppointmentsSelectEvent.eventName,{bubbles:!0,composed:!0}),this.value=t}}let W=class AppointmentCardSkeleton extends p{static{this.styles=l`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 c`<div></div>`}};W=a([o("appointment-card-skeleton")],W);let J=class EmptyState extends p{static{this.styles=l`.container{border-radius:var(--border-radius-md);background-color:var(--color-neutrals-background-weak);padding:var(--sp-10) var(--sp-6)}.card{border-radius:var(--border-radius-md);max-width:512px;margin:0 auto;background-color:var(--color-neutrals-background-extraWeak);padding:var(--sp-6);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.card>*{max-width:323px;margin:0 auto}.title{font-family:var(--font-body);font-size:var(--text-lg);line-height:var(--text-lg--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0}.description{font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--text-xs--line-height);font-weight:var(--font-weight-normal);text-align:center;color:var(--color-neutrals-text-default);margin:0}@media (min-width:768px){.container{padding:var(--sp-6)}mq-button{max-width:323px}}`}handleRequestAppointment(){this.dispatchEvent(new CustomEvent("request-appointment",{bubbles:!0,composed:!0}))}render(){return c`<div class="container"><div class="card">${function({color:t="currentColor"}){return c`<svg width="31" height="32" viewBox="0 0 31 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.6 2.4H23.2V0H21.6V2.4H18.4V0H16.8V2.4H13.6V0H12V2.4H8.8V0H7.2V2.4H0.8C0.587827 2.4 0.384344 2.48429 0.234315 2.63431C0.0842855 2.78434 0 2.98783 0 3.2V31.2C0 31.4122 0.0842855 31.6157 0.234315 31.7657C0.384344 31.9157 0.587827 32 0.8 32H29.6C29.8122 32 30.0157 31.9157 30.1657 31.7657C30.3157 31.6157 30.4 31.4122 30.4 31.2V3.2C30.4 2.98783 30.3157 2.78434 30.1657 2.63431C30.0157 2.48429 29.8122 2.4 29.6 2.4ZM28.8 30.4H1.6V10.4H27.2V8.8H1.6V4H7.2V7.2H8.8V4H12V7.2H13.6V4H16.8V7.2H18.4V4H21.6V7.2H23.2V4H28.8V30.4ZM3.2 19.2H9.6V12.8H3.2V19.2ZM4.8 14.4H8V17.6H4.8V14.4ZM20.8 19.2H27.2V12.8H20.8V19.2ZM22.4 14.4H25.6V17.6H22.4V14.4ZM12 19.2H18.4V12.8H12V19.2ZM13.6 14.4H16.8V17.6H13.6V14.4ZM3.2 28H9.6V21.6H3.2V28ZM4.8 23.2H8V26.4H4.8V23.2ZM20.8 28H27.2V21.6H20.8V28ZM22.4 23.2H25.6V26.4H22.4V23.2ZM12 28H18.4V21.6H12V28ZM13.6 23.2H16.8V26.4H13.6V23.2Z" fill="${t}"/></svg>`}({color:"var(--color-primary)"})}<p class="title">${this.title}</p><p class="description">${this.description}</p><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}">${s("Pedir cita")}</mq-button></div></div>`}};a([m({type:String})],J.prototype,"title",void 0),a([m({type:String})],J.prototype,"description",void 0),J=a([o("empty-state")],J);const L=[g.pending,g.accepted],X=l`.appointments-list{display:grid;grid-template-columns:1fr;align-items:start;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}.card{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:12px;padding:var(--sp-6)}`;let Y=class NextAppointmentsTab extends p{constructor(){super(...arguments),this.getAppointmentsQuery=new k(this,()=>y(this.apiClient,{status:L,order:{field:"starts_at",direction:"asc"}}))}static{this.styles=X}render(){return this.getAppointmentsQuery.render({complete:t=>c`${t.data.length>0?c`<div class="appointments-list">${t.data.map(t=>c`<div class="card"><next-appointment-card .appointmentResource="${t}"></next-appointment-card></div>`)}</div>`:c`<empty-state title="${s("No tienes próximas citas")}" description="${s("Agenda una consulta médica cuando la necesites. Aquí verás todos los detalles y podrás gestionar tus próximas citas.")}"></empty-state>`}`,pending:()=>c`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};a([u({context:v,subscribe:!0})],Y.prototype,"apiClient",void 0),Y=a([r(),o("next-appointments-tab")],Y);let F=class AppointmentCardActions extends p{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":(q.track(C(this.patientHash,this.appointmentId)),this.dispatchEvent(new N({appointmentId:this.appointmentId})))},this.handleCancelClick=()=>{this.isCancelUnavailable?this.openDialog="cancel":(q.track(j(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?(q.track(w(this.patientHash,this.appointmentId)),this.dispatchEvent(new U({specialty:this.repeatTarget.specialty,service:this.repeatTarget.service,professional:this.professionalHash}))):this.openDialog="repeat-error"},this.handleDialogClose=()=>{this.openDialog=null}}static{this.styles=l`:host{display:contents}.actions{--button-height-md:2.75rem;display:flex;gap:10px}.actions.next{flex-direction:column}.actions-secondary{display:flex;gap:var(--sp-3)}.actions mq-button{flex:1;min-width:0}.chat-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-badge{--mq-unread-badge-size:8px;flex-shrink:0}`}get patientHash(){return this.loginToken.patient.hash}renderChatButton(){return c`<mq-button variant="outline" fullwidth noPadding @click="${()=>{this.dispatchEvent(new CustomEvent("toggle-chat",{bubbles:!0,composed:!0}))}}"><span class="chat-label">${s("Ir a chat")}</span> ${this.unreadCount>0?c`<mq-unread-badge class="chat-badge"></mq-unread-badge>`:d}</mq-button>`}renderNextActions(){return c`${this.isVideocall?c`<mq-button variant="outline" fullwidth noPadding @click="${()=>{q.track(H(this.patientHash,this.appointmentId)),this.dispatchEvent(new _({appointmentId:this.appointmentId}))}}">${Z({size:24})} ${s("Ir a videollamada")}</mq-button>`:d}<div class="actions-secondary">${this.hasChatSupport?this.renderChatButton():d}<mq-button variant="outline" fullwidth noPadding @click="${this.handleModifyClick}">${s("Modificar")}</mq-button><mq-button variant="outline-negative" fullwidth noPadding @click="${this.handleCancelClick}">${s("Cancelar")}</mq-button></div>`}renderHistoryActions(){return c`${this.hasChatSupport?this.renderChatButton():d}<mq-button variant="outline" fullwidth noPadding @click="${()=>{q.track(V(this.patientHash,this.appointmentId)),this.dispatchEvent(new T({appointmentId:this.appointmentId}))}}">${s("Documentos")}</mq-button><mq-button variant="outline" fullwidth noPadding @click="${this.handleRepeatClick}">${s("Repetir")}</mq-button>`}render(){return c`<div class="${O({actions:!0,next:"next"===this.variant})}">${"next"===this.variant?this.renderNextActions():this.renderHistoryActions()}</div><appointment-action-unavailable-dialog .open="${"modify"===this.openDialog}" .heading="${s("Modificar cita")}" .message="${this.modifyUnavailableMessage}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"cancel"===this.openDialog}" .heading="${s("Anular cita")}" .message="${this.cancelUnavailableMessage}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"repeat-no-slots"===this.openDialog}" .heading="${s("Repetir cita")}" .message="${s("Este profesional no tiene horarios disponibles")}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"repeat-error"===this.openDialog}" .heading="${s("Repetir cita")}" .message="${s("Lo sentimos, no hemos podido repetir tu cita. Por favor, contacta con soporte.")}" @close="${this.handleDialogClose}"></appointment-action-unavailable-dialog>`}};a([u({context:z})],F.prototype,"loginToken",void 0),a([m({type:String})],F.prototype,"variant",void 0),a([m({type:String})],F.prototype,"appointmentId",void 0),a([m({type:Boolean})],F.prototype,"isVideocall",void 0),a([m({type:Boolean})],F.prototype,"hasChatSupport",void 0),a([m({type:Number})],F.prototype,"unreadCount",void 0),a([m({type:Boolean})],F.prototype,"isModifyUnavailable",void 0),a([m({type:Boolean})],F.prototype,"isCancelUnavailable",void 0),a([m({type:Boolean})],F.prototype,"hasNoSlots",void 0),a([m({type:String})],F.prototype,"modifyUnavailableMessage",void 0),a([m({type:String})],F.prototype,"cancelUnavailableMessage",void 0),a([m({type:Object})],F.prototype,"repeatTarget",void 0),a([m({type:String})],F.prototype,"professionalHash",void 0),a([I()],F.prototype,"openDialog",void 0),F=a([r(),o("appointment-card-actions")],F);let K=class AppointmentCard extends p{constructor(){super(...arguments),this.variant="next",this.isChatOpen=!1,this.isCancelDialogOpen=!1,this.unreadQuery=new k(this,()=>D(this.apiClient,{roomId:this.appointmentResource?.room?.id})),this.getOrganizationSpecialtiesQuery=new k(this,()=>R(this.apiClient,{enabled:!!this.appointmentResource?.speciality?.id})),this.getOrganizationSetupQuery=new k(this,()=>$(this.apiClient)),this.getScheduleServicesQuery=new k(this,()=>E(this.apiClient))}static{this.styles=l`:host{display:flex}.card{display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-6);width:100%;min-width:0;box-sizing:border-box;padding:var(--sp-6);color:var(--color-text-icons--primary,#0a0a22);background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:12px}.card-top-content{display:flex;flex-direction:column;gap:var(--sp-6)}professional-overview{--avatar-size-lg:66px;--text-lg--line-height:1.35;display:block}`}render(){const e=this.appointmentResource.appointment.channel===b.videocall,i=this.appointmentResource.appointment.channel===b.phonecall,n=!0===this.appointmentResource.appointment.has_chat_in_appointment,a=(e||i)&&n,o=t(),r=f(this.appointmentResource.appointment.expires_at),p=0===this.appointmentResource.slots.length,l=this.getOrganizationSetupQuery.result?.data?.appointments?.seconds_before_start_to_refund_on_cancel,m=Q({startsAtIso:this.appointmentResource.appointment.starts_at,refundPolicySeconds:l}),h=r||p||!m,u=r||!m,v=x({action:"modify",refundPolicySeconds:l}),g=x({action:"cancel",refundPolicySeconds:l}),y=this.getOrganizationSpecialtiesQuery.result?.data?.find(t=>Number(t.id)===Number(this.appointmentResource.speciality.id)),k=M(y?.code??"",o,y?.name??this.appointmentResource.speciality.name),$=this.getScheduleServicesQuery.result?.data?.find(t=>t.id===this.appointmentResource.appointment.service_id)?.code,C=y?.code&&$?{specialty:y.code,service:$}:null;return c`<div class="card"><div class="card-top-content"><professional-overview .specialtyName="${k??""}" .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-card-details .startsAt="${this.appointmentResource.appointment.starts_at}" .channel="${this.appointmentResource.appointment.channel}" .timezone="${this.loginToken?.patient?.timezone}"></appointment-card-details></div><appointment-card-actions .variant="${this.variant}" .appointmentId="${this.appointmentResource.appointment.id??""}" .isVideocall="${e}" .hasChatSupport="${a}" .unreadCount="${this.unreadQuery.result?.data?.unread_count??0}" .isModifyUnavailable="${h}" .isCancelUnavailable="${u}" .hasNoSlots="${p}" .modifyUnavailableMessage="${v}" .cancelUnavailableMessage="${g}" .repeatTarget="${C}" .professionalHash="${this.appointmentResource.professional.hash}" @toggle-chat="${()=>{this.isChatOpen=!this.isChatOpen,this.isChatOpen&&q.track(S(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?c`<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="${r}"></mq-chat-room>`:d}</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,B.success(s("Consulta anulada correctamente")),this.dispatchEvent(new CustomEvent("appointment-cancel-confirmed",{bubbles:!0,composed:!0,detail:{id:this.appointmentResource.appointment.id}}))}}"></cancel-appointment-confirmation-dialog></div>`}};a([u({context:v,subscribe:!0})],K.prototype,"apiClient",void 0),a([m({type:Object})],K.prototype,"appointmentResource",void 0),a([m({type:Number})],K.prototype,"specialtyId",void 0),a([m({type:String})],K.prototype,"variant",void 0),a([u({context:z})],K.prototype,"loginToken",void 0),a([I()],K.prototype,"isChatOpen",void 0),a([I()],K.prototype,"isCancelDialogOpen",void 0),K=a([r(),o("appointment-card")],K);const tt=[g.finished,g.reporting];let et=class AppointmentsHistoryTab extends p{constructor(){super(...arguments),this.getAppointmentsQuery=new k(this,()=>y(this.apiClient,{status:tt,order:{field:"starts_at",direction:"desc"}}))}static{this.styles=l`.appointments-list{display:grid;grid-template-columns:1fr;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}`}render(){return this.getAppointmentsQuery.render({complete:t=>c`${t.data.length>0?c`<div class="appointments-list">${t.data.map(t=>c`<appointment-card .appointmentResource="${t}" .specialtyId="${t.speciality?.id}" variant="history"></appointment-card>`)}</div>`:c`<empty-state title="${s("No tienes citas en el historial")}" description="${s("Aquí verás todas las citas que has tenido. Puedes acceder a los documentos de cada consulta y reagendar una cita si es necesario.")}"></empty-state>`}`,pending:()=>c`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};a([u({context:v,subscribe:!0})],et.prototype,"apiClient",void 0),et=a([r(),o("appointments-history-tab")],et);const it=l`.container{display:flex;flex-direction:column;gap:var(--size-3)}`;let nt=class MqMyAppointments extends p{constructor(){super(...arguments),this.tab=G.next}static{this.styles=it}willUpdate(t){t.has("locale")&&this.locale&&e(this.locale)&&i(this.locale)}handleSelect(t){this.dispatchEvent(new MqMyAppointmentsSelectEvent(t.value))}render(){return c`<div class="container"><mq-tabs .value="${this.tab}" @onvaluechange="${this.handleSelect}"><mq-tabs-list label="${s("Mis citas")}"><mq-tabs-trigger value="${G.next}">${s("Próximas citas")}</mq-tabs-trigger><mq-tabs-trigger value="${G.history}">${s("Histórico")}</mq-tabs-trigger></mq-tabs-list><mq-tabs-content value="${G.next}"><next-appointments-tab></next-appointments-tab></mq-tabs-content><mq-tabs-content value="${G.history}"><appointments-history-tab></appointments-history-tab></mq-tabs-content></mq-tabs></div>`}};a([m({type:String,reflect:!0})],nt.prototype,"tab",void 0),a([m({type:String,attribute:"locale"})],nt.prototype,"locale",void 0),nt=a([r(),o("mq-my-appointments")],nt);const at=l`:host{display:block}.request-appointment-cta{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:var(--sp-12) var(--sp-4);background:var(--color-card);gap:var(--sp-4)}.title-body{display:flex;flex-direction:column;gap:var(--sp-2);flex:1}.title{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0;text-align:center}.subtitle{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);font-weight:var(--font-weight-normal);color:var(--color-neutrals-text-default);margin:0;display:none}mq-button{width:100%}.button-text-desktop{display:none}.button-text-mobile{display:inline}@media (min-width:768px){.request-appointment-cta{flex-direction:row;padding:var(--sp-12) var(--sp-20);gap:var(--sp-2)}.title-body{align-items:flex-start;flex:1;max-width:843px}.title{font-size:var(--text-3xl);line-height:var(--text-3xl--line-height);font-weight:var(--font-weight-extrabold);text-align:left}.subtitle{display:block}mq-button{width:auto;flex-shrink:0;--button-height-md:var(--button-height-lg);--text-sm:var(--text-base);--text-sm--line-height:var(--text-base--line-height)}.button-text-desktop{display:inline}.button-text-mobile{display:none}}`;class RequestAppointmentEvent extends Event{static{this.eventName="request-appointment"}constructor(){super(RequestAppointmentEvent.eventName,{bubbles:!0,composed:!0})}}let ot=class RequestAppointmentCta extends p{static{this.styles=at}handleRequestAppointment(){this.dispatchEvent(new RequestAppointmentEvent)}render(){return c`<div class="request-appointment-cta"><div class="title-body"><h2 class="title">${s("Nueva cita de especialidades digitales")}</h2><p class="subtitle">${s("Realiza la búsqueda en tu cuadro médico digital")}</p></div><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}"><span class="button-text-mobile">${s("Pedir cita")}</span> <span class="button-text-desktop">${s("Pedir una nueva cita")}</span></mq-button></div>`}};ot=a([r(),o("request-appointment-cta")],ot),n();export{nt as MqMyAppointments,MqMyAppointmentsSelectEvent,ot as RequestAppointmentCta,RequestAppointmentEvent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initLocalization as i}from"./i18n.js";export{M as MqNextAppointments}from"./chunks/mq-next-appointments-
|
|
1
|
+
import{initLocalization as i}from"./i18n.js";export{M as MqNextAppointments}from"./chunks/mq-next-appointments-DsfhBPsc.js";export{MqAppointmentJoinVideocallEvent,MqAppointmentRescheduleEvent,MqViewAppointmentsEvent}from"./events.js";import"./chunks/runtime-Bg1WXVCx.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/custom-element-D2ziPxYE.js";import"./chunks/provide-BwI4DDGF.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/consume-CovVqBjI.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/localized-decorator-BlOuLhym.js";import"./chunks/query-controller-B1byDHlF.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"@tanstack/query-core";import"./chunks/api-client-context-BXGqBAlO.js";import"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/api-chat-client-BZAeIvwy.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/isBefore-DBi1CiNR.js";import"./env.js";import"./chunks/next-appointment-card-CBf_4Err.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import"./chunks/get-organization-setup-query-De7eM6V3.js";import"./chunks/telemetry-client-DA2_SZBC.js";import"./chunks/chunk-Y4EKUX25-Bix9r5ry.js";import"./chunks/refund-cancel-policy-DoMzcLlL.js";import"./chunks/lit-element-DiWJYFwC.js";import"./chunks/property-scuRaFcM.js";import"./chunks/state-LQivXIgA.js";import"./ui/icons/dots-horizontal-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./chunks/mq-chat-room-D8z-cbzt.js";import"./theme.js";import"./ui/icons/x-icon.js";import"./ui/mq-avatar.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./ui/mq-button.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/addDays-CdyO-PRI.js";import"./chunks/chunk-YTQUGGS3-DH0H7ld7.js";import"./chunks/index-Djkwyh_M.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./ui/mq-dialog.js";import"./chunks/custom-element-CiOhPWP1-DPpsGZrV.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./ui/icons/video-icon.js";import"./chunks/price-DU3YLTpk.js";import"./chunks/professional-overview-Ck_SPivX.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";import"./ui/mq-floating-bubble.js";import"./ui/mq-unread-badge.js";import"./ui/mq-toast.js";import"./chunks/get-patient-profile-query-D9btgcxl.js";import"./chunks/index-D3_2tkC3.js";import"./ui/icons/file-icon.js";import"./chunks/index-MfyXh-qX.js";import"./ui/icons/arrow-right-icon.js";i();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isValidLocale as e,setLocale as t,initLocalization as i}from"./i18n.js";import{_ as s,c as o}from"./chunks/custom-element-D2ziPxYE.js";import{e as r}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as n}from"./chunks/runtime-Bg1WXVCx.js";import{l}from"./chunks/localized-decorator-BlOuLhym.js";import{i as d,a as c,b as p,c as u,n as h,P as m}from"./chunks/api-chat-client-
|
|
1
|
+
import{isValidLocale as e,setLocale as t,initLocalization as i}from"./i18n.js";import{_ as s,c as o}from"./chunks/custom-element-D2ziPxYE.js";import{e as r}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as n}from"./chunks/runtime-Bg1WXVCx.js";import{l}from"./chunks/localized-decorator-BlOuLhym.js";import{i as d,a as c,b as p,c as u,n as h,P as m}from"./chunks/api-chat-client-BZAeIvwy.js";import{A as v}from"./chunks/api-client-context-BXGqBAlO.js";import{i as f,a as g,x as _}from"./chunks/lit-element-DiWJYFwC.js";import{n as y}from"./chunks/property-scuRaFcM.js";import{r as b}from"./chunks/state-LQivXIgA.js";import{setEnv as x}from"./env.js";import{MqHomeEvent as k,MqPaymentSucceededEvent as j}from"./events.js";import{spinnerIcon as w}from"./ui/icons/spinner-icon.js";import"./ui/mq-button.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/isBefore-DBi1CiNR.js";import"./chunks/create-context-DqP79qjF.js";import"./ui/icons/types.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/if-defined-BYeVdwgd.js";const $="support@mediquo.com",I=f`:host{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:320px;padding:var(--sp-6);box-sizing:border-box}.card{width:100%;max-width:460px;box-sizing:border-box;padding:var(--sp-10);background:var(--color-card);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg)}.verifying{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);text-align:center}.outcome{display:flex;flex-direction:column;gap:var(--sp-4)}.title{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);color:var(--color-negative);margin:0}.verifying .title{font-size:var(--text-lg);line-height:var(--text-lg--line-height);font-weight:var(--font-weight-semibold);color:var(--color-neutrals-text-default)}.message{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-subtle);margin:0}.support a{color:var(--color-primary-text-link);font-weight:var(--font-weight-medium);text-decoration:none}.support a:hover{text-decoration:underline}.actions{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-2)}`;let C=class MqPaymentPoller extends g{constructor(){super(...arguments),this.timeoutMs=9e4,this._view="verifying",this._refunded=!1,this._deadline=0,this._settled=!1,this.apiClient=u(),this._onHome=()=>{this.dispatchEvent(new k)}}static{this.styles=I}willUpdate(i){i.has("env")&&this.env&&x(this.env),i.has("locale")&&this.locale&&e(this.locale)&&t(this.locale);const s=h(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);s&&(this.apiClient=s)}updated(e){e.has("sessionId")&&this._restart()}disconnectedCallback(){this._stop(),super.disconnectedCallback()}_restart(){this._stop(),this._settled=!1,this._refunded=!1,this._view="verifying",this.sessionId&&(this._deadline=Date.now()+this.timeoutMs,this._pollOnce(),this._intervalId=setInterval(()=>{this._pollOnce()},2e3))}_stop(){void 0!==this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0)}_settle(e){this._stop(),this._settled=!0,this._view=e}async _pollOnce(){const e=this.sessionId;if(this._settled||!e)return;if(Date.now()>=this._deadline)return void this._settle("timeout");let t;try{t=await this.apiClient.payments.getPaymentSession(e)}catch(t){const i=function(e){if(!d(e)||e.response?.status!==c.SlotUnavailable)return{kind:"retry"};const t=p.safeParse(e.response.data);return{kind:"unavailable",refunded:!0===t.data?.refunded}}(t);return void("unavailable"!==i.kind||this._settled||e!==this.sessionId||(this._refunded=i.refunded,this._settle("unavailable")))}return this._settled||e!==this.sessionId?void 0:t.status===m.Paid?(this._stop(),this._settled=!0,void this.dispatchEvent(new j({appointmentId:t.consultation_id,consultationType:t.consultation_type}))):t.status===m.Refunded?(this._refunded=!0,void this._settle("unavailable")):void(t.status===m.Denied&&this._settle("denied"))}_renderVerifying(){return _`<div class="card"><div class="verifying" role="status" aria-live="polite">${w({size:28,color:"var(--color-primary)"})}<p class="title">${n("Confirmando tu pago")}</p><p class="message">${n("No cierres, vuelvas atrás ni actualices la ventana; esto puede tardar unos momentos.")}</p></div></div>`}_renderOutcome(e,t){return _`<div class="card"><div class="outcome" role="alert"><p class="title">${e}</p>${t}<div class="actions"><mq-button variant="primary" size="lg" fullwidth @click="${this._onHome}">${n("Volver al inicio")}</mq-button></div></div></div>`}_renderDenied(){return this._renderOutcome(n("Tu pago no se ha completado"),_`<p class="message">${n("El pago ha sido rechazado y no hemos creado la cita. No se te ha cobrado nada: puedes volver a reservar desde el inicio.")}</p>`)}_renderUnavailable(){return this._renderOutcome(n("Ese horario ya no está disponible"),_`<p class="message">${n("Otro paciente ha reservado esa cita mientras completabas el pago, así que no hemos podido crearla.")}</p>${this._refunded?_`<p class="message">${n("Te hemos devuelto el importe automáticamente; puede tardar unos días en reflejarse en tu cuenta.")}</p>`:_`<p class="message support">${n("No hemos podido devolverte el importe automáticamente. Escríbenos y lo resolvemos:")} <a href="mailto:${$}">${$}</a></p>`}`)}_renderTimeout(){return this._renderOutcome(n("Ha ocurrido un error"),_`<p class="message">${n("No hemos podido confirmar tu pago. Por favor, inténtalo de nuevo más tarde.")}</p><p class="message support">${n("Si se te ha cobrado sin una cita confirmada, contacta con nuestro equipo en")} <a href="mailto:${$}">${$}</a></p>`)}render(){switch(this._view){case"denied":return this._renderDenied();case"unavailable":return this._renderUnavailable();case"timeout":return this._renderTimeout();default:return this._renderVerifying()}}};s([y({type:String,attribute:"session-id"})],C.prototype,"sessionId",void 0),s([y({type:String,attribute:"api-key"})],C.prototype,"apiKey",void 0),s([y({type:String,attribute:"token"})],C.prototype,"token",void 0),s([y({type:String,attribute:"locale"})],C.prototype,"locale",void 0),s([y({type:String,attribute:"env"})],C.prototype,"env",void 0),s([y({type:Number,attribute:"timeout-ms"})],C.prototype,"timeoutMs",void 0),s([b()],C.prototype,"_view",void 0),s([b()],C.prototype,"_refunded",void 0),s([a({context:v,subscribe:!0}),b()],C.prototype,"inheritedApiClient",void 0),s([r({context:v}),b()],C.prototype,"apiClient",void 0),C=s([l(),o("mq-payment-poller")],C),i();export{k as MqHomeEvent,C as MqPaymentPoller,j as MqPaymentSucceededEvent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as s}from"./chunks/custom-element-D2ziPxYE.js";import{a as t,E as n}from"./chunks/lit-element-DiWJYFwC.js";import{s as c}from"./chunks/context-consumer-ESdICVAb.js";import{Q as i}from"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import{A as r}from"./chunks/api-client-context-BXGqBAlO.js";import{S as o,E as a}from"./chunks/chunk-YTQUGGS3-
|
|
1
|
+
import{_ as e,c as s}from"./chunks/custom-element-D2ziPxYE.js";import{a as t,E as n}from"./chunks/lit-element-DiWJYFwC.js";import{s as c}from"./chunks/context-consumer-ESdICVAb.js";import{Q as i}from"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import{A as r}from"./chunks/api-client-context-BXGqBAlO.js";import{S as o,E as a}from"./chunks/chunk-YTQUGGS3-DH0H7ld7.js";import{g as h}from"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import{b as l}from"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/parseISO-CEksKisk.js";class ProfessionalPresenceSyncController{constructor(e){this.host=e,this.clearTimers=new Map,this._onAbsenceCreated=e=>{if(!e?.professional_hash||!e.finishes_at)return;const{professional_hash:s,id:t,finishes_at:n}=e;this._setActiveAbsence(s,{id:t,finishes_at:n}),this._clearTimer(s);const c=l(n).getTime()-Date.now();c>0&&c<2147483647&&this.clearTimers.set(s,setTimeout(()=>{this.clearTimers.delete(s),this._setActiveAbsence(s,null)},c))},this._onAbsenceCancelled=e=>{e?.professional_hash&&(this._clearTimer(e.professional_hash),this._setActiveAbsence(e.professional_hash,null))},new c(this.host,{context:o,subscribe:!0,callback:e=>{this._unsubscribe(),this.socket=e,this.socket?.on(a.absence_created,this._onAbsenceCreated),this.socket?.on(a.absence_cancelled,this._onAbsenceCancelled)}}),new c(this.host,{context:i,subscribe:!0,callback:e=>{e&&(this.queryClient=e)}}),new c(this.host,{context:r,subscribe:!0,callback:e=>{this.apiClient=e}}),this.host.addController(this)}_queryKey(e){if(this.apiClient)return h(this.apiClient,{hash:e}).queryKey}_setActiveAbsence(e,s){const t=this._queryKey(e);t&&this.queryClient?.setQueryData(t,e=>e?{...e,active_absence:s}:void 0)}_clearTimer(e){const s=this.clearTimers.get(e);s&&(clearTimeout(s),this.clearTimers.delete(e))}_unsubscribe(){this.socket?.off(a.absence_created,this._onAbsenceCreated),this.socket?.off(a.absence_cancelled,this._onAbsenceCancelled)}hostConnected(){}hostDisconnected(){this._unsubscribe(),this.socket=void 0;for(const e of this.clearTimers.values())clearTimeout(e);this.clearTimers.clear()}}let u=class MqProfessionalPresenceSync extends t{constructor(){super(),new ProfessionalPresenceSyncController(this)}createRenderRoot(){return this}render(){return n}};u=e([s("mq-professional-presence-sync")],u);export{u as MqProfessionalPresenceSync,ProfessionalPresenceSyncController};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initLocalization as s}from"./i18n.js";export{M as MqRecentDocuments}from"./chunks/mq-recent-documents-
|
|
1
|
+
import{initLocalization as s}from"./i18n.js";export{M as MqRecentDocuments}from"./chunks/mq-recent-documents-BW54beY8.js";export{DownloadFileEvent,MqViewDocumentsEvent}from"./events.js";import"./chunks/runtime-Bg1WXVCx.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/custom-element-D2ziPxYE.js";import"./chunks/provide-BwI4DDGF.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/consume-CovVqBjI.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/localized-decorator-BlOuLhym.js";import"./chunks/query-controller-B1byDHlF.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"@tanstack/query-core";import"./chunks/api-client-context-BXGqBAlO.js";import"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/telemetry-client-DA2_SZBC.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import"./chunks/index-DTBCUojx.js";import"./chunks/lit-element-DiWJYFwC.js";import"./chunks/property-scuRaFcM.js";import"./chunks/api-chat-client-BZAeIvwy.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/isBefore-DBi1CiNR.js";import"./env.js";import"./chunks/blob-to-base64-CUL1trde.js";import"./chunks/state-LQivXIgA.js";import"./ui/icons/download-02-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/mq-button.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./ui/mq-toast.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/get-patient-profile-query-D9btgcxl.js";import"./chunks/index-MfyXh-qX.js";import"./ui/icons/arrow-right-icon.js";import"./chunks/index-D3_2tkC3.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/file-icon.js";s();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as o}from"./i18n.js";import{_ as n,c as a}from"./chunks/custom-element-D2ziPxYE.js";import{m as s,s as r}from"./chunks/runtime-Bg1WXVCx.js";import{l as c}from"./chunks/localized-decorator-BlOuLhym.js";import{A as p}from"./chunks/api-client-context-BXGqBAlO.js";import{i as l,a as d,x as m,E as u}from"./chunks/lit-element-DiWJYFwC.js";import{n as h}from"./chunks/property-scuRaFcM.js";import{r as v}from"./chunks/state-LQivXIgA.js";import{setEnv as g}from"./env.js";import{MqViewAppointmentsEvent as f,MqHomeEvent as k}from"./events.js";import{c as b,e as y,n as x,C as j}from"./chunks/api-chat-client-
|
|
1
|
+
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as o}from"./i18n.js";import{_ as n,c as a}from"./chunks/custom-element-D2ziPxYE.js";import{m as s,s as r}from"./chunks/runtime-Bg1WXVCx.js";import{l as c}from"./chunks/localized-decorator-BlOuLhym.js";import{A as p}from"./chunks/api-client-context-BXGqBAlO.js";import{i as l,a as d,x as m,E as u}from"./chunks/lit-element-DiWJYFwC.js";import{n as h}from"./chunks/property-scuRaFcM.js";import{r as v}from"./chunks/state-LQivXIgA.js";import{setEnv as g}from"./env.js";import{MqViewAppointmentsEvent as f,MqHomeEvent as k}from"./events.js";import{c as b,e as y,n as x,C as j}from"./chunks/api-chat-client-BZAeIvwy.js";import{checkIcon as w}from"./ui/icons/check-icon.js";import"./ui/mq-callout.js";import"./ui/mq-button.js";import{e as $}from"./chunks/provide-BwI4DDGF.js";import{c as q}from"./chunks/consume-CovVqBjI.js";import{l as C}from"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/professional-overview-Ck_SPivX.js";import"./chunks/appointment-details-BM8peAHH.js";import{Q as _}from"./chunks/query-controller-B1byDHlF.js";import{s as S}from"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import{D as z}from"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import{g as I}from"./chunks/get-appointment-query-DuHrjd8L.js";import{g as A}from"./chunks/get-patient-profile-query-D9btgcxl.js";import{g as E}from"./chunks/chunk-Y4EKUX25-Bix9r5ry.js";import{r as O,b as P}from"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import{calendarIcon as Q}from"./ui/icons/calendar-icon.js";import{chatbubbleIcon as T}from"./ui/icons/chat-bubble-icon.js";import{videoIcon as N}from"./ui/icons/video-icon.js";import"./chunks/mq-chat-room-D8z-cbzt.js";import"./ui/mq-floating-bubble.js";import"./ui/mq-unread-badge.js";import{g as V,t as G,f as U,a as B,i as H,j as K,k as M}from"./chunks/telemetry-client-DA2_SZBC.js";import{f as R}from"./chunks/price-DU3YLTpk.js";import"./ui/mq-skeleton.js";import"./ui/mq-card.js";import{Q as L}from"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import{a as W}from"./chunks/addSeconds-fO5orJrt.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/isBefore-DBi1CiNR.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/icons/info-circle-outine-icon.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";import"./ui/mq-avatar.js";import"./chunks/index-Djkwyh_M.js";import"./ui/icons/briefcase-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"@tanstack/query-core";import"./theme.js";import"./ui/icons/x-icon.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./chunks/addDays-CdyO-PRI.js";import"./chunks/chunk-YTQUGGS3-DH0H7ld7.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/style-map-CIdqdn7C.js";const D=l`header{padding:var(--sp-6) var(--sp-4);display:flex;align-items:center;gap:var(--sp-2);max-width:var(--content-max-width);margin:0 auto}.summary{padding:var(--sp-6) var(--sp-4);background-color:var(--color-neutrals-background-weak);max-width:var(--content-max-width);margin:0 auto}.summary-content{display:flex;flex-direction:column;gap:var(--sp-4)}.manage-appointment{box-sizing:border-box;max-width:var(--content-max-width);margin:0 auto}`;let F=class MqScheduleSuccessSkeleton extends d{static{this.styles=D}render(){return m`<div><header><mq-skeleton width="220px" height="40px" border-radius="md"></mq-skeleton></header><div class="summary"><div class="summary-content"><mq-skeleton width="280px" height="32px" border-radius="md"></mq-skeleton><mq-skeleton width="100%" height="400px" border-radius="lg"></mq-skeleton><mq-skeleton width="100%" height="80px" border-radius="lg"></mq-skeleton></div></div><div class="manage-appointment"><mq-skeleton width="100%" height="313px" border-radius="lg"></mq-skeleton></div></div>`}};F=n([a("mq-schedule-success-skeleton")],F);const J=l`.success-title{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}.success-title .check{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;border-radius:50%;background:var(--color-primary-background-extraWeak);color:var(--color-primary-icon-link)}header h1{font-family:var(--font-titles);font-size:var(--text-3xl);line-height:var(--text-3xl--line-height);font-weight:var(--font-weight-semibold);margin: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;margin-bottom:var(--sp-6)}.summary{padding:var(--sp-6) var(--sp-4)}.professional-card{padding:var(--sp-4)}.appointment-summary{margin-bottom:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-4)}.add-to-calendar-container{padding-top:var(--sp-4);border-top:1px solid var(--color-neutrals-border-disabled)}.price-breakdown{display:flex;flex-direction:column;gap:var(--sp-2)}.price-row{display:flex;justify-content:space-between;gap:var(--sp-4);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-default)}.price-row--total{font-weight:var(--font-weight-semibold)}.price-breakdown hr{width:100%;border:none;border-top:1px solid var(--color-neutrals-border-disabled);margin:var(--sp-1) 0}.floating-content{height:100%}.actions{display:flex;flex-direction:column;gap:var(--sp-4)}@media (min-width:768px){.actions{flex-direction:row}}.footer-cta{margin-top:var(--sp-4);padding:var(--sp-6) var(--sp-4)}.footer-cta h2{margin-bottom:var(--sp-2)}.footer-cta .description{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-default);margin:0 0 var(--sp-6)}.footer-cta .actions{display:flex;flex-direction:column;gap:var(--sp-3)}`;class OpenVideocallEvent extends Event{static{this.eventName="open-videocall"}constructor(t){super(OpenVideocallEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}let X=class MqScheduleSuccess extends d{constructor(){super(...arguments),this.kind="schedule",this.showNavCtas=!1,this._trackedPageView=!1,this.apiClient=b(),this.getPatientProfileQuery=new _(this,()=>A(this.apiClient)),this.getAppointmentQuery=new _(this,()=>I(this.apiClient,{id:this.appointmentId})),this.getCouponQuery=new _(this,()=>{return t=this.apiClient,e={appointmentId:this.appointmentId},i={enabled:!!this.appointmentId},{queryKey:S(t,"appointment-consultation-coupon",e.appointmentId),queryFn:()=>t.payments.getAppointmentConsultationCoupon(e.appointmentId),retry:!1,staleTime:z,...i};var t,e,i}),this.getOrganizationSpecialtiesQuery=new _(this,()=>V(this.apiClient)),this.isChatOpen=!1,this.unreadQuery=new _(this,()=>E(this.apiClient,{roomId:Number(this.getAppointmentQuery.result?.data?.room_id)},{enabled:!!this.getAppointmentQuery.result?.data?.room_id})),this._getCalloutText=t=>{switch(t.channel){case y.videocall:return s("Te enviaremos un enlace al email indicado cuando sea el momento de conectarte a la vídeoconsulta. Asegúrate de tener buena conexión a internet y un dispositivo con cámara y micrófono.");case y.phonecall:return s(r`El profesional te llamará al
|
|
2
2
|
${this.getPatientProfileQuery.result?.data?.profile.phone??""} en el horario
|
|
3
3
|
seleccionado. Asegúrate de tener buena cobertura y poder atender en
|
|
4
4
|
el horario elegido.`);case y.chat:return s("El profesional te enviará un mensaje para que podamos coordinar la cita. Asegúrate de tener buena cobertura y poder atender en el horario elegido.");default:return u}}}static{this.styles=J}get _accessToken(){return this.token??this.loginToken?.access_token}get _timezone(){return O(this.timezone,this.loginToken?.patient?.timezone)}willUpdate(i){i.has("env")&&this.env&&g(this.env),i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale);const o=x(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);o&&(this.apiClient=o)}get _patientHash(){return this.getPatientProfileQuery.result?.data?.hash??""}firstUpdated(){this.queryClientContext?.invalidateQueries({queryKey:S(this.apiClient)})}updated(){!this._trackedPageView&&this._patientHash&&(this._trackedPageView=!0,G.track(U(this._patientHash,this.appointmentId)))}renderPriceBreakdown(t,e,i){const o=t.price;if(null==o||o<=0)return u;const n=t.currency??"EUR",a=t.discount_amount??0,r=a>0,c=o-a,p=this.getCouponQuery.result?.data,l=p?.name??p?.code,d=r?p?.percent_off??Math.round(a/o*100):0,h=l?`${s("Promoción")} ${l}`:s("Promoción");return m`<div class="price-breakdown"><div class="price-row"><span>${i}</span> <span>${R({amount:o,currency:n},e)}</span></div>${r?m`<div class="price-row"><span>${h} (-${d}%)</span> <span>${R({amount:-a,currency:n},e)}</span></div><hr><div class="price-row price-row--total"><span>${s("Total")}</span> <span>${R({amount:c,currency:n},e)}</span></div>`:u}</div>`}render(){return this.getAppointmentQuery.render({pending:()=>m`<mq-schedule-success-skeleton></mq-schedule-success-skeleton>`,complete:t=>{const e=i(),o=P(t.start_date),n=W(o,t.duration),a=this.getOrganizationSpecialtiesQuery.result?.data?.find(e=>e.id===Number(t.speciality_id)),c=B(a?.code??"",e,a?.name),p=t.channel===y.videocall,l=t.channel===y.phonecall,d=!0===t.has_chat_in_appointment,h=(p||l)&&d,v=this._accessToken;return m`<div><header><div class="success-title"><span class="check">${w()}</span><h1>${"schedule"===this.kind?s("Cita confirmada"):s("Cita modificada")}</h1></div><h2>${s(r`Resumen de la cita para ${t?.to?.name??""}`)}</h2></header><mq-card class="summary" roundness="md"><div class="appointment-summary"><professional-overview .name="${t.from.name??""}" .specialtyName="${c}" .collegiateNumber="${t.from.collegiate_number??void 0}" .description="${t.from.description??""}" .languages="${t.from.languages??[]}" .avatar="${t.from.avatar??""}" always-expanded-on-desktop></professional-overview><appointment-details .startsAt="${o.toISOString()}" .duration="${t.duration}" .channel="${t.channel}" .timezone="${this._timezone}"></appointment-details>${this.renderPriceBreakdown(t,e,c||s("Consulta"))}<div class="add-to-calendar-container"><mq-text-button fontWeight="bold" size="sm" @click="${()=>{G.track(H(this._patientHash,this.appointmentId));const e=function({title:t,description:e,startsAt:i,endsAt:o}){const n=t=>t.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}/,""),a=n(i),s=n(o);return`https://www.google.com/calendar/render?${new URLSearchParams({action:"TEMPLATE",text:t,dates:`${a}/${s}`,...e&&{details:e}}).toString()}`}({title:s(r`Cita agendada de ${t.from.speciality??""}`),startsAt:o,endsAt:n,description:p&&t.consultation_short_url?s(r`Enlace a la cita: ${t.consultation_short_url}`):void 0});window.open(e,"_blank")}}">${Q({size:24})} ${s("Añadir al calendario")}</mq-text-button></div>${h||p?m`<div class="actions">${h?m`<mq-button variant="primary" fullwidth size="md" @click="${()=>{G.track(K(this._patientHash,this.appointmentId)),this.isChatOpen=!this.isChatOpen}}">${T({size:24})} ${s("Chatear con el profesional")} ${(this.unreadQuery.result?.data?.unread_count??0)>0?m`<mq-unread-badge></mq-unread-badge>`:u}</mq-button>`:u} ${p?m`<mq-button variant="outline" fullwidth size="md" @click="${()=>{G.track(M(this._patientHash,this.appointmentId)),this.dispatchEvent(new OpenVideocallEvent({appointmentId:this.appointmentId}))}}">${N({size:24})} ${s("Ir a videollamada")}</mq-button>`:u}</div>`:u}</div><mq-callout background="default" variant="info" ?noPadding="${!(h||p)}">${this._getCalloutText(t)}</mq-callout></mq-card>${this.showNavCtas?m`<mq-card class="footer-cta" roundness="md"><h2>${s("Tus citas")}</h2><p class="description">${s("Accede, modifica o anula tus citas.")}</p><div class="actions"><mq-button variant="primary" size="md" fullwidth @click="${()=>{this.dispatchEvent(new f({tab:"next"}))}}">${s("Ver mis citas")}</mq-button><mq-button variant="outline" size="md" fullwidth @click="${()=>{this.dispatchEvent(new k)}}">${s("Volver al inicio")}</mq-button></div></mq-card>`:u}</div><mq-floating-bubble ?dismissable="${!1}" .open="${this.isChatOpen}" @mq-close="${()=>{this.isChatOpen=!1}}" hideCloseButton>${this.isChatOpen&&v?m`<div slot="content" class="floating-content"><mq-chat-room .consultationId="${t.id}" .consultationType="${j.appointment}" .token="${v}" .roomId="${Number(t.room_id)}" .professionalHash="${t.from.hash}" @mq-chat-room-close="${()=>{this.isChatOpen=!1}}"></mq-chat-room></div>`:u}</mq-floating-bubble>`}})}};n([h({type:String})],X.prototype,"kind",void 0),n([h({type:String})],X.prototype,"appointmentId",void 0),n([h({type:String,attribute:"api-key"})],X.prototype,"apiKey",void 0),n([h({type:String,attribute:"token"})],X.prototype,"token",void 0),n([h({type:String,attribute:"timezone"})],X.prototype,"timezone",void 0),n([h({type:String,attribute:"locale"})],X.prototype,"locale",void 0),n([h({type:String,attribute:"env"})],X.prototype,"env",void 0),n([h({type:Boolean,attribute:"show-nav-ctas"})],X.prototype,"showNavCtas",void 0),n([q({context:L,subscribe:!0})],X.prototype,"queryClientContext",void 0),n([q({context:C,subscribe:!0})],X.prototype,"loginToken",void 0),n([q({context:p,subscribe:!0}),v()],X.prototype,"inheritedApiClient",void 0),n([$({context:p}),v()],X.prototype,"apiClient",void 0),n([v()],X.prototype,"isChatOpen",void 0),X=n([c(),a("mq-schedule-success")],X),o();export{X as MqScheduleSuccess,OpenVideocallEvent};
|
package/dist/mq-schedule.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{A as AppointmentCreatedEvent,a as AuthRequiredEvent,M as MqSchedule}from"./chunks/mq-schedule-
|
|
1
|
+
export{A as AppointmentCreatedEvent,a as AuthRequiredEvent,M as MqSchedule}from"./chunks/mq-schedule-DWa7lyBh.js";import"./chunks/custom-element-D2ziPxYE.js";import"./chunks/query-controller-B1byDHlF.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/context-request-event-Dfydf1ub.js";import"@tanstack/query-core";import"./chunks/api-client-context-BXGqBAlO.js";import"./chunks/chunk-S5RWG6G2-CQJ38pW6.js";import"./chunks/get-appointment-query-DuHrjd8L.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/chunk-5EJXDIGT-Bb4_pfDr.js";import"./chunks/get-organization-setup-query-De7eM6V3.js";import"./chunks/telemetry-client-DA2_SZBC.js";import"./chunks/get-patient-profile-query-D9btgcxl.js";import"./chunks/get-schedule-services-query-Io2aQ_7G.js";import"./chunks/chunk-NIAGR3ZC-BDlNUZa1.js";import"./chunks/parseISO-CEksKisk.js";import"./chunks/refund-cancel-policy-DoMzcLlL.js";import"./events.js";import"./chunks/api-chat-client-BZAeIvwy.js";import"./chunks/external-JLtsAfi6.js";import"./chunks/isBefore-DBi1CiNR.js";import"./env.js";import"./ui/mq-button.js";import"./chunks/lit-element-DiWJYFwC.js";import"./chunks/property-scuRaFcM.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/if-defined-BYeVdwgd.js";import"./chunks/provide-BwI4DDGF.js";import"./chunks/consume-CovVqBjI.js";import"./chunks/runtime-Bg1WXVCx.js";import"./chunks/localized-decorator-BlOuLhym.js";import"./chunks/state-LQivXIgA.js";import"./chunks/index-C76yAope.js";import"./chunks/style-map-CIdqdn7C.js";import"./ui/mq-text-button.js";import"./i18n.js";import"./chunks/chunk-FUCSYDW7-Duj5hy8S.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./ui/mq-input.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/types.js";import"./ui/mq-callout.js";import"./ui/icons/info-circle-outine-icon.js";import"./ui/mq-page-title.js";import"./ui/icons/arrow-narrow-left-icon.js";import"./chunks/professional-overview-Ck_SPivX.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-avatar.js";import"./chunks/index-Djkwyh_M.js";import"./chunks/appointment-details-BM8peAHH.js";import"./chunks/addSeconds-fO5orJrt.js";import"./ui/icons/briefcase-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./ui/mq-card.js";import"./ui/icons/spinner-icon.js";import"./ui/icons/tag-icon.js";import"./chunks/price-DU3YLTpk.js";import"./ui/mq-toast.js";import"./ui/icons/file-icon.js";import"./ui/icons/upload-icon.js";import"./ui/icons/x-icon.js";import"./ui/mq-textarea.js";import"./chunks/checkout-bridge-BFpVxNww.js";import"./ui/mq-skeleton.js";import"./ui/mq-select.js";import"./ui/mq-badge.js";import"./chunks/index-VQqG1eyA.js";import"./ui/icons/chevron-left-icon.js";import"./ui/icons/chevron-right-icon.js";import"./chunks/format-tMwfQwDf.js";import"./ui/mq-time-slot-picker.js";import"./chunks/addDays-CdyO-PRI.js";import"./theme.js";
|