@everfur/sdk 0.3.0 → 0.4.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/CHANGELOG.md +69 -4
- package/README.md +6 -1
- package/dist/{Chat-DwAC2vhB.d.ts → Chat-BZZ-Py5l.d.ts} +3 -3
- package/dist/{Chat-DPUD6dnc.d.cts → Chat-Dq4fffIO.d.cts} +3 -3
- package/dist/{DepthViews-DNEM96Se.d.ts → DepthViews-BG3E25MD.d.ts} +1 -1
- package/dist/{DepthViews-DP0R-DhB.d.cts → DepthViews-B_hIypI6.d.cts} +1 -1
- package/dist/{DepthViews-DbFhR4Du.d.cts → DepthViews-CL75jyRA.d.cts} +1 -1
- package/dist/{DepthViews-D_3hl4xk.d.ts → DepthViews-CkYri51q.d.ts} +1 -1
- package/dist/animations/index.cjs +1 -1
- package/dist/animations/index.d.cts +3 -3
- package/dist/animations/index.d.ts +3 -3
- package/dist/animations/index.js +1 -1
- package/dist/{attachments-CQgFrEQ7.d.cts → attachments-BorG422I.d.cts} +2 -2
- package/dist/{attachments-5NeobOCd.d.ts → attachments-BrUWQYNK.d.ts} +5 -4
- package/dist/{attachments-D8T5re7e.d.cts → attachments-D_SECjr1.d.cts} +5 -4
- package/dist/{attachments-Bw3iMQgu.d.ts → attachments-DpldrvIW.d.ts} +2 -2
- package/dist/bookingCopy-CqtDYvCR.d.ts +732 -0
- package/dist/bookingCopy-SREvkG19.d.cts +732 -0
- package/dist/{entitlementRepository-DSbzuyAW.d.ts → branding-CsRdeNwK.d.cts} +1 -133
- package/dist/{entitlementRepository-DKdXFgTo.d.cts → branding-CsRdeNwK.d.ts} +1 -133
- package/dist/callCopy-DoQKG3-L.d.cts +40 -0
- package/dist/callCopy-DoQKG3-L.d.ts +40 -0
- package/dist/casesRepository-DwtZVsbj.d.cts +51 -0
- package/dist/casesRepository-v6QczS9N.d.ts +51 -0
- package/dist/chat/index.cjs +1 -1
- package/dist/chat/index.d.cts +9 -8
- package/dist/chat/index.d.ts +9 -8
- package/dist/chat/index.js +1 -1
- package/dist/client/index.cjs +5 -5
- package/dist/client/index.d.cts +10 -8
- package/dist/client/index.d.ts +10 -8
- package/dist/client/index.js +5 -5
- package/dist/{config-CzTZGlfF.d.cts → config--Wu1Umhd.d.cts} +2 -2
- package/dist/{config-DW60uRb9.d.ts → config-C7eb_IMD.d.ts} +2 -2
- package/dist/consent/index.cjs +1 -1
- package/dist/consent/index.d.cts +5 -5
- package/dist/consent/index.d.ts +5 -5
- package/dist/consent/index.js +1 -1
- package/dist/{context-XvTzq1tE.d.cts → context-CL3lyuy1.d.cts} +6 -6
- package/dist/{context-DXhqHlPU.d.ts → context-CahAEha8.d.ts} +6 -6
- package/dist/{copy-Mjoo91aS.d.ts → copy-DdVFDL01.d.ts} +2 -2
- package/dist/{copy-bKDNigLb.d.cts → copy-UeUJVk8X.d.cts} +2 -2
- package/dist/core/index.cjs +7 -7
- package/dist/core/index.d.cts +118 -29
- package/dist/core/index.d.ts +118 -29
- package/dist/core/index.js +7 -7
- package/dist/{depth-CErXCU8J.d.cts → depth-D5HwcvKC.d.cts} +34 -3
- package/dist/{depth-DjDcJ6kH.d.ts → depth-DvPwPuT_.d.ts} +34 -3
- package/dist/entitlementRepository-B7egEdW6.d.ts +43 -0
- package/dist/entitlementRepository-BpJ7tiwl.d.cts +43 -0
- package/dist/{identity-DI4eVx9S.d.cts → identity-C2-08BZW.d.cts} +2 -2
- package/dist/{identity-BMx2SUOM.d.ts → identity-CEi9GRFZ.d.ts} +2 -2
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +17 -16
- package/dist/index.d.ts +17 -16
- package/dist/index.js +6 -6
- package/dist/notifications/index.cjs +2 -2
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +2 -2
- package/dist/optionalModule-DbJmsq5f.d.cts +21 -0
- package/dist/optionalModule-DbJmsq5f.d.ts +21 -0
- package/dist/{pets-CtQdRpWo.d.ts → pets-DJv2sj2H.d.ts} +1 -1
- package/dist/{pets-aB8q0JyX.d.cts → pets-JVCXgRgR.d.cts} +1 -1
- package/dist/{casesRepository-DHwtGRYY.d.cts → petsRepository-B_gKbAzJ.d.cts} +2 -48
- package/dist/{casesRepository-ClLv6qMl.d.ts → petsRepository-Bk6GDwLs.d.ts} +2 -48
- package/dist/photo/index.cjs +1 -1
- package/dist/photo/index.js +1 -1
- package/dist/{ports-DEBzEhbp.d.cts → ports-BY2ph0_y.d.cts} +5 -15
- package/dist/{ports-DMolTRzU.d.ts → ports-D7YW8qz9.d.ts} +5 -15
- package/dist/records/depth/index.cjs +2 -2
- package/dist/records/depth/index.d.cts +7 -7
- package/dist/records/depth/index.d.ts +7 -7
- package/dist/records/depth/index.js +2 -2
- package/dist/records/index.cjs +3 -3
- package/dist/records/index.d.cts +9 -9
- package/dist/records/index.d.ts +9 -9
- package/dist/records/index.js +3 -3
- package/dist/{requestFunnel-L-BQfi0z.d.cts → requestFunnel-BjDpqqvm.d.cts} +25 -2
- package/dist/{requestFunnel-CjW7uDuA.d.ts → requestFunnel-DFMGcluw.d.ts} +25 -2
- package/dist/{runtime-B8s-_hv8.d.cts → runtimeTypes-gZEJu-da.d.cts} +9 -99
- package/dist/{runtime-BR9ysG0J.d.ts → runtimeTypes-w5KqBMcs.d.ts} +9 -99
- package/dist/server/events/index.cjs +1 -1
- package/dist/server/events/index.d.cts +2 -2
- package/dist/server/events/index.d.ts +2 -2
- package/dist/server/events/index.js +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.cts +3 -3
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +1 -1
- package/dist/televet/booking/index.cjs +1 -0
- package/dist/televet/booking/index.d.cts +294 -0
- package/dist/televet/booking/index.d.ts +294 -0
- package/dist/televet/booking/index.js +1 -0
- package/dist/televet/call/index.cjs +1 -0
- package/dist/televet/call/index.d.cts +141 -0
- package/dist/televet/call/index.d.ts +141 -0
- package/dist/televet/call/index.js +1 -0
- package/dist/televet/index.cjs +1 -1
- package/dist/televet/index.d.cts +87 -5
- package/dist/televet/index.d.ts +87 -5
- package/dist/televet/index.js +1 -1
- package/dist/testing/index.cjs +3 -3
- package/dist/testing/index.d.cts +2 -2
- package/dist/testing/index.d.ts +2 -2
- package/dist/testing/index.js +3 -3
- package/dist/testing/rn/index.cjs +1 -1
- package/dist/testing/rn/index.d.cts +9 -8
- package/dist/testing/rn/index.d.ts +9 -8
- package/dist/testing/rn/index.js +1 -1
- package/dist/testing/web/index.cjs +1 -1
- package/dist/testing/web/index.d.cts +9 -8
- package/dist/testing/web/index.d.ts +9 -8
- package/dist/testing/web/index.js +1 -1
- package/dist/{timelineRows-DZed6dAM.d.ts → timelineRows-C15jxFFH.d.ts} +1 -1
- package/dist/{timelineRows-CaohZzXS.d.cts → timelineRows-odO8g9r2.d.cts} +1 -1
- package/dist/typeStyle-CKqVYD6L.d.cts +111 -0
- package/dist/typeStyle-DmoyacDG.d.ts +111 -0
- package/dist/{useRecordsDepth-BHBzJ76R.d.cts → useRecordsDepth-C6rjEaLn.d.cts} +1 -1
- package/dist/{useRecordsDepth-BU-OhzH6.d.ts → useRecordsDepth-crhBllQK.d.ts} +1 -1
- package/dist/video/index.cjs +1 -1
- package/dist/video/index.js +1 -1
- package/dist/{view-DtSPYpKa.d.ts → view-Bxwxp4xD.d.ts} +2 -2
- package/dist/{view-C3qPIXGX.d.cts → view-DyitEO0m.d.cts} +2 -2
- package/dist/web/consent/index.cjs +1 -1
- package/dist/web/consent/index.d.cts +5 -5
- package/dist/web/consent/index.d.ts +5 -5
- package/dist/web/consent/index.js +1 -1
- package/dist/web/index.cjs +7 -7
- package/dist/web/index.d.cts +18 -17
- package/dist/web/index.d.ts +18 -17
- package/dist/web/index.js +7 -7
- package/dist/web/notifications/index.cjs +2 -2
- package/dist/web/notifications/index.d.cts +3 -3
- package/dist/web/notifications/index.d.ts +3 -3
- package/dist/web/notifications/index.js +2 -2
- package/dist/web/records/depth/index.cjs +2 -2
- package/dist/web/records/depth/index.d.cts +7 -7
- package/dist/web/records/depth/index.d.ts +7 -7
- package/dist/web/records/depth/index.js +2 -2
- package/dist/web/records/index.cjs +3 -3
- package/dist/web/records/index.d.cts +102 -11
- package/dist/web/records/index.d.ts +102 -11
- package/dist/web/records/index.js +3 -3
- package/dist/web/televet/booking/index.cjs +1 -0
- package/dist/web/televet/booking/index.d.cts +349 -0
- package/dist/web/televet/booking/index.d.ts +349 -0
- package/dist/web/televet/booking/index.js +1 -0
- package/dist/web/televet/call/index.cjs +1 -0
- package/dist/web/televet/call/index.d.cts +142 -0
- package/dist/web/televet/call/index.d.ts +142 -0
- package/dist/web/televet/call/index.js +1 -0
- package/dist/web/televet/index.cjs +1 -1
- package/dist/web/televet/index.d.cts +90 -4
- package/dist/web/televet/index.d.ts +90 -4
- package/dist/web/televet/index.js +1 -1
- package/package.json +72 -4
- package/televet/booking/package.json +8 -0
- package/televet/call/package.json +8 -0
- package/web/televet/booking/native-blocked.cjs +12 -0
- package/web/televet/booking/package.json +8 -0
- package/web/televet/call/native-blocked.cjs +12 -0
- package/web/televet/call/package.json +8 -0
- package/dist/typeStyle-0TydiZ1w.d.cts +0 -19
- package/dist/typeStyle-CWMsoe6b.d.ts +0 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {createContext,useMemo,useId,useState,useRef,useEffect,useCallback,useReducer,Component,createElement,useContext,useSyncExternalStore}from'react';import {jsxs,jsx}from'react/jsx-runtime';var Ji=Object.defineProperty;var o=(e,t)=>Ji(e,"name",{value:t,configurable:true});function vt(e){throw new Error(`assertNever: unhandled discriminated-union member ${JSON.stringify(e)}`)}o(vt,"assertNever");function vn(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}o(vn,"errorFrame");function or(e){let t=globalThis.console;try{t?.error?.("[everfur] A host callback threw; the SDK ignored it.",e);}catch{}}o(or,"reportHostFailure");function ta(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}o(ta,"isThenable");function $e(e,...t){if(typeof e=="function")try{let r=e(...t);return ta(r)&&Promise.resolve(r).then(void 0,or),r}catch(r){or(r);return}}o($e,"callHost");var bn=new WeakMap;function ra(e){if(typeof e!="function")return;let t=bn.get(e);if(t!==void 0)return t;let r=o((...n)=>{$e(e,...n);},"guarded");return bn.set(e,r),r}o(ra,"guardHost");function He(e,t){let r=null;for(let n of t){let i=e[n];typeof i=="function"&&(r??={...e},r[n]=ra(i));}return r??e}o(He,"guardHostProps");function bt(e,...t){let r;try{r=e(...t);}catch(n){return or(n),Promise.resolve({ok:false,error:n})}return Promise.resolve(r).then(n=>({ok:true,value:n}),n=>({ok:false,error:n}))}o(bt,"callHostAsync");var v=o(e=>e,"DRAFT"),na=["[PLACEHOLDER","[PLAN NAME]","[LINK]","[Last]","TODO","TBD"];function oa(e){return na.some(t=>e.toUpperCase().includes(t.toUpperCase()))}o(oa,"isPlaceholderCopy");function te(e,t){let r=e;for(let[n,i]of Object.entries(t))r=r.split(`{${n}}`).join(i);return r}o(te,"fill");var f=Object.freeze({stateBlockedTitle:v("Not available in this state yet"),noCliniciansTitle:v("No vets available right now"),noCliniciansBody:v("Nobody is free in your area at the moment. This changes through the day."),noCliniciansRetryCta:v("Check again"),yourVetTitle:v("Your Vet"),reviewsLabel:v("reviews"),rescheduleFromTemplate:v("Moving your visit on {when}"),rescheduleFailed:v("That did not move. Your original time is unchanged."),keepExistingCta:v("Keep my current time"),bookingPausedTitle:v("Booking is not available right now."),slotsErrorTitle:v("Could not load times"),noSlotsTitle:v("No times available"),nextOpeningTemplate:v("Next opening across our vets: {when}"),seeOtherVetsCta:v("See other vets"),retryCta:v("Try again"),holdExpired:v("That time is no longer held. Pick another."),slotTaken:v("That time was just taken. Pick another."),reasonPlaceholder:v("What is going on with your pet?"),reasonTooLong:v("That is too long. Please shorten it."),shareRecordsOff:v("Share health records with this vet"),confirmNotEntitled:v("A Pro membership is needed to book a video visit."),confirmFailed:v("That did not book. Try again."),navTitle:v("Book a visit"),rescheduleNavTitle:v("Change your visit"),close:v("Close"),continueCta:v("Continue"),petSelectTitle:v("Who is this visit for?"),addPetCta:v("Add a pet"),locationUnknownTitle:v("We need your location to find a vet"),locationUnknownBody:v("Turn on location for Everfur, then try again."),locationUnknownCta:v("Allow location"),locationBlockedTitle:v("Location is turned off"),locationBlockedBody:v("Everfur needs your location to match you with a vet in your area."),locationBlockedCta:v("Open Settings"),locationUnavailableTitle:v("We could not read your location"),locationUnavailableBody:v("Try again in a moment."),stateAttestTemplate:v("I confirm my pet and I are in {state} right now."),describeHeading:v("or Type to the vet what you're seeing"),describeHelpLong:v("A few sentences is plenty. When it started, what changed, anything you've already tried."),addPhotoCta:v("ADD PHOTO OR VIDEO"),removePhotoLabel:v("Remove photo"),summaryPet:v("Pet"),summaryVet:v("Vet"),summaryWhen:v("When"),summaryLength:v("Length"),summaryReason:v("Reason"),summaryLengthTemplate:v("{n} minutes"),confirmCta:v("Confirm visit"),bookedTitle:v("You are booked."),addToCalendarCta:v("Add to calendar"),doneCta:v("Done"),booked:Object.freeze({remindPromise:v("We will notify you 30 minutes before."),summaryPromise:v("{pet}'s summary goes to the vet ahead of the call."),joinPromise:v("Join right here in the app. No links to hunt for."),backToPet:v("Back to {pet}"),calendarAdded:v("Added to your calendar"),calendarFailedBody:v("That did not save to your calendar.")}),chrome:Object.freeze({closeHint:v("Closes without saving"),discardTitle:v("Leave without booking?"),discardBody:v("Your answers will not be saved."),discardConfirmCta:v("Leave"),discardKeepCta:v("Keep going"),noPetsTitle:v("No pets on this account"),loadFailedTitle:v("Could not load"),retryCta:v("Try again")}),emergency:Object.freeze({bannerTitle:v("This cannot wait for a scheduled call."),keepBookingCta:v("I have handled this, keep booking"),lede:v("What you are describing is the kind of thing vets want to see in person, now. Please call one of these first.")}),visit:Object.freeze({title:v("Your visit")}),loading:Object.freeze({pets:"Loading pets. Nothing to read yet.",clinicians:"Loading vets. Nothing to read yet.",slots:"Loading times. Nothing to read yet.",consult:"Loading your visit. Nothing to read yet.",progressTemplate:"Step {step} of {total}"})});function hn(e=f){return typeof e=="string"?[e]:typeof e!="object"||e===null?[]:Object.values(e).flatMap(t=>hn(t))}o(hn,"televetBookingCopyValues");function ce(){return hn().every(e=>e.trim().length>0&&!oa(e))}o(ce,"isTelevetBookingCopyReady");var lr=class lr extends Component{constructor(){super(...arguments);this.state={failed:false,key:this.props.resetKey};}static getDerivedStateFromError(){return {failed:true}}static getDerivedStateFromProps(r,n){return Object.is(r.resetKey,n.key)?null:{failed:false,key:r.resetKey}}render(){return this.state.failed?this.props.fallback:this.props.children}};o(lr,"HostRenderBoundary");var ir=lr;function la({render:e}){return e()}o(la,"RenderHost");function ar({render:e,fallback:t,resetKey:r}){return createElement(ir,{fallback:t,resetKey:r,children:createElement(la,{render:e})})}o(ar,"HostRender");function ur(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let t of Object.keys(e))ur(e[t]);}return e}o(ur,"deepFreeze");var sa=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),Tn={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},Cn={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},En={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},da={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},ua={regular:"400",medium:"500",bold:"700"},ca={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},pa=0,ht="System",St="monospace",fa=["content","heading","control","compact","badge"];function ya(e){let t={};for(let r of fa)t[r]=e;return t}o(ya,"authoredTierSizes");function kn(){return {family:ht,mono:St,fontUrl:null,families:{regular:ht,medium:ht,bold:ht,mono:St,monoMedium:St,monoBold:St},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:En,tierSizes:ya(En),lineHeight:da,weight:ua,letterSpacing:ca,scale:1,maxScale:pa,scaleCaps:sa}}o(kn,"baseType");var Rn={},sr=Object.freeze({standard:Object.freeze([.2,0,0,1]),emphasized:Object.freeze([.2,.8,.2,1]),exit:Object.freeze([.4,0,1,1])});function dr(e){return `cubic-bezier(${e.join(", ")})`}o(dr,"cssCubicBezier");var _n={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:dr(sr.standard),emphasized:dr(sr.emphasized),exit:dr(sr.exit)},reducedMotion:false},ma={brand:"#10462E",brandSoft:"rgba(16,70,46,0.10)",brandSofter:"rgba(16,70,46,0.15)",brandBorder:"rgba(16,70,46,0.18)",borderHairlineGreen:"rgba(16,70,46,0.25)",brandBorderStrong:"rgba(16,70,46,0.55)",brandInk:"#10462E",linkInk:"#10462E",surface:"#FFFFFF",surfaceCream:"#FDFBF8",surfaceSubtle:"#EFE9E3",background:"#FFFFFF",borderRingCream:"#D8D2C8",chatGround:"#FFFFFF",composerFill:"#FDFBF8",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#111111",secondary:"#0E462E",muted:"#6E6660",placeholder:"rgba(61,61,61,0.75)",onBrand:"#FFFFFF",metaCool:"#3D3D3D",timestamp:"rgba(61,61,61,0.75)"},primary:"#10462E",onPrimary:"#FFFFFF",accent:"#10462E",onAccent:"#FFFFFF",accentEdge:"#07C168",success:"#07C168",danger:"#B91C1C",errorRed:"#FF1B00",warningStrong:"#A45610",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.12)",badgeBgCaution:"rgba(217,130,29,0.14)",badgeBgCritical:"rgba(185,28,28,0.12)",badgeBgNeutral:"rgba(110,102,96,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",skeleton:"#EFE9E3",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)"},xn=ur({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:ma,space:Tn,radius:Cn,type:kn(),motion:_n,slots:Rn}),ga={brand:"#6BD39A",brandSoft:"rgba(107,211,154,0.12)",brandSofter:"rgba(107,211,154,0.18)",brandBorder:"rgba(107,211,154,0.22)",borderHairlineGreen:"rgba(107,211,154,0.28)",brandBorderStrong:"rgba(107,211,154,0.55)",brandInk:"#6BD39A",linkInk:"#6BD39A",surface:"#1C1F23",surfaceCream:"#23272C",surfaceSubtle:"#23272C",background:"#15171A",borderRingCream:"#3A3F45",chatGround:"#1C1F23",composerFill:"#23272C",composerBorder:"rgba(107,211,154,0.75)",shadow:"#000000",text:{primary:"#F5F3F0",secondary:"#A9E4C4",muted:"#9A938C",placeholder:"rgba(255,255,255,0.55)",onBrand:"#0E1F17",metaCool:"#C9C9C9",timestamp:"rgba(245,243,240,0.7)"},primary:"#6BD39A",onPrimary:"#0E1F17",accent:"#6BD39A",onAccent:"#0E1F17",accentEdge:"#34D888",success:"#07C168",danger:"#F87171",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",skeleton:"#23272C",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)"};ur({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:ga,space:Tn,radius:Cn,type:kn(),motion:_n,slots:Rn});var Pn=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),wn=globalThis,cr=wn[Pn]??(wn[Pn]=createContext(xn));cr.displayName??="EverfurThemeContext";function w(){return useContext(cr)}o(w,"useEverfurTheme");var In=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});var On='system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',ha="System";function Sa(e){let t=e.trim();return t.length===0||t===ha?On:`${An(t)}, ${On}`}o(Sa,"cssFontFamily");function Ea(e){let t=e.trim();return t.length===0||t==="monospace"?"ui-monospace, Menlo, Consolas, monospace":`${An(t)}, ui-monospace, Menlo, Consolas, monospace`}o(Ea,"cssMonoFamily");function An(e){return `"${e.replace(/[\\"]/g,"\\$&")}"`}o(An,"quote");function E(e,t){let r=e.type,n=r.families[t];return {fontFamily:t==="mono"||t==="monoMedium"||t==="monoBold"?Ea(n):Sa(n),fontWeight:r.namedFaces[t]?r.weight.regular:r.weight[In[t]]}}o(E,"faceCss");var pr=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(pr.map(e=>e.wireCode));var Ta=Object.freeze({ValidationException:"validationFailed",AuthorizationException:"authRejected",PaymentRequiredException:"paymentRequired",AccessDeniedException:"accessDenied",ResourceNotFoundException:"resourceNotFound",ConflictException:"conflict",ThrottlingException:"rateLimited",InternalFailureException:"internalError",NotImplementedException:"notImplemented",ServiceUnavailableException:"serviceUnavailable",MethodNotAllowedException:"validationFailed",authExpired:"authExpired",unavailable:"serviceUnavailable",session_required:"sessionRequired",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",event_cursor_invalid:"validationFailed",event_filter_invalid:"validationFailed",event_payload_invalid:"validationFailed",event_type_unknown:"validationFailed",idempotency_key_invalid:"validationFailed",idempotency_key_required:"validationFailed",idempotency_key_reused:"idempotencyConflict",payload_too_large:"validationFailed",webhook_url_rejected:"validationFailed",webhook_endpoint_update_empty:"validationFailed",webhook_endpoint_update_invalid:"validationFailed",event_type_not_available:"conflict",record_subject_not_found:"resourceNotFound",records_consent_required:"conflict",record_species_unsupported:"validationFailed",record_upload_invalid:"validationFailed",FILE_TOO_LARGE:"validationFailed",INVALID_CONTENT_TYPE:"validationFailed",attachment_unreadable:"validationFailed",provider_unsupported:"validationFailed",token_invalid:"validationFailed",device_cipher_unavailable:"serviceUnavailable",email_invalid:"validationFailed",consent_required:"validationFailed",consent_invalid:"validationFailed",consent_scope_wrong_route:"validationFailed",IDEMPOTENCY_KEY_IN_FLIGHT:"idempotencyInFlight",IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST:"idempotencyConflict",DAILY_QUOTA_EXCEEDED:"quotaExceeded",TIER_UPGRADE_REQUIRED:"paymentRequired",not_found:"conversationNotFound",timeout:"streamTimeout",internal_error:"internalError",invalid_request:"validationFailed",invalid_client:"authRejected",invalid_grant:"authRejected",unsupported_grant_type:"validationFailed",invalid_scope:"validationFailed",invalid_target:"validationFailed",invalid_redirect_uri:"validationFailed",invalid_client_metadata:"validationFailed",unsupported_response_type:"validationFailed",access_denied:"accessDenied",slow_down:"rateLimited",mcp_request_not_found:"resourceNotFound",mcp_request_gone:"resourceNotFound",mcp_connection_not_found:"resourceNotFound",mcp_request_conflict:"conflict",sandbox_only:"accessDenied",tenant_has_no_capabilities:"conflict",verify_mint_refused:"accessDenied",verify_mint_rate_limited:"rateLimited",verify_mint_unavailable:"serviceUnavailable",verify_user_ref_invalid:"validationFailed",insufficient_scope:"accessDenied",tenant_filter_invalid:"validationFailed",tenant_resource_not_found:"resourceNotFound",tenant_surface_not_enabled:"conflict",pet_health_species_unsupported:"validationFailed",pet_health_list_removals_unconfirmed:"validationFailed",petRefInUse:"conflict",share_limit_reached:"conflict",pet_not_registered:"resourceNotFound",species_unsupported:"validationFailed",partner_visit_owner_only:"accessDenied",partner_visit_link_conflict:"conflict",partner_visit_pet_already_mapped:"conflict"}),Dn=Object.freeze(pr.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ta[e.wireCode]}))),Ca=new Map(Dn.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),ka=Object.freeze(["http_envelope",...[...new Set(Dn.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function Et(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let n of [t??"http_envelope",...ka]){let i=Ca.get(n+r);if(i)return i}}o(Et,"contractErrorFor");function Ra(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}o(Ra,"contractDocUrl");function Bn(e){return null}o(Bn,"publishedDocUrl");var _a=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"invalidRequest",conversationNotFound:"notFound",petNotFound:"notFound",resourceNotFound:"notFound",conflict:"conflict",idempotencyConflict:"conflict",idempotencyInFlight:"conflict",streamTimeout:"connection",streamIncomplete:"connection",upstreamLlmTimeout:"connection",serviceUnavailable:"connection",internalError:"server",notImplemented:"server",mediaUploadFailed:"media",moderationBlocked:"policy",unknown:"unknown"});function Ln(e){return _a[e]}o(Ln,"categoryFor");function Nn(e){let t=Et(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),n=r.replace(/[^A-Z0-9]/g,"");if(n==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(n){case "DAILYQUOTAEXCEEDED":case "QUOTAEXCEEDED":return "quotaExceeded";case "RATELIMITED":case "TOOMANYREQUESTS":return "rateLimited";case "IDEMPOTENCYKEYCONFLICT":case "IDEMPOTENCYCONFLICT":return "idempotencyConflict";case "ACCESSDENIED":case "FORBIDDEN":return "accessDenied";case "NOTFOUND":case "CONVERSATIONNOTFOUND":return "conversationNotFound";case "PETNOTFOUND":return "petNotFound";case "TIMEOUT":case "STREAMTIMEOUT":return "streamTimeout";case "MEDIAUPLOADFAILED":case "UNRECOGNIZEDVIDEOFORMAT":case "FILETOOSMALL":return "mediaUploadFailed";case "MODERATIONBLOCKED":return "moderationBlocked";case "UPSTREAMLLMTIMEOUT":return "upstreamLlmTimeout";case "INTERNALERROR":case "INTERNALSERVERERROR":return "internalError";case "STREAMINCOMPLETE":case "CHATSTREAMINCOMPLETE":return "streamIncomplete";case "INVALIDANALYSISTYPE":case "INVALIDUPLOADPURPOSE":return "unknown";default:return "unknown"}}o(Nn,"fromWire");var xa=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function fr(e){return xa.has(e)}o(fr,"isAutoRetryable");var Pa=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function Vn(e){return fr(e)||Pa.has(e)}o(Vn,"isRetryableCode");var wa=500,yr=8e3,zn=4;function Hn(e,t=Math.random){let r=Math.max(0,e),n=Math.min(wa*2**r,yr);return Math.floor(t()*n)}o(Hn,"backoffDelayMs");var Ia=Object.freeze({authExpired:"Please sign in again to continue.",authRejected:"Please sign in again to continue.",sessionRequired:"This app needs to be updated to keep using Everfur.",accessDenied:"This feature isn't available on your account right now.",paymentRequired:"This is part of a paid plan.",quotaExceeded:"You have used today's messages. This resets tomorrow.",rateLimited:"You are sending messages quickly. Try again in a few seconds.",validationFailed:"Something in that request was not right. Check the details and try again.",sdkUpdateRequired:"This app needs to be updated to keep using Everfur.",conflict:"That is already running. Wait for it to finish, then try again.",idempotencyConflict:"That message was already delivered.",idempotencyInFlight:"That is still processing. Give it a moment.",conversationNotFound:"This conversation is no longer available.",petNotFound:"We could not find that pet. Please pick a pet and try again.",resourceNotFound:"We could not find that.",streamTimeout:"The response timed out. Tap retry to try again.",mediaUploadFailed:"We could not upload that photo. Please attach it again.",moderationBlocked:"This request cannot be answered here.",upstreamLlmTimeout:"The response timed out. Tap retry to try again.",internalError:"We hit a snag on our end. Please try again.",notImplemented:"That is not available yet.",serviceUnavailable:"That service is briefly unavailable. Try again shortly.",streamIncomplete:"The connection dropped mid-answer. Tap retry to continue.",unknown:"Something went wrong. Please try again."});function mr(e){return Ia[e]}o(mr,"userFacingError");function Mn(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}o(Mn,"defineHidden");var Oa=/^[a-z][a-z0-9_]{0,63}$/;function $(e,t){let r=Et(t?.wireCode,t?.wireEnvelope),n={code:e,category:Ln(e),retryable:t?.retryable??Vn(e),displayMessage:mr(e)};if(t?.httpStatus!==void 0&&(n.httpStatus=t.httpStatus),t?.requestId&&(n.requestId=t.requestId),typeof t?.reasonCode=="string"&&Oa.test(t.reasonCode)&&(n.reasonCode=t.reasonCode),r);return t?.wireMessage&&Mn(n,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&Mn(n,"raw",t.raw),Object.freeze(n)}o($,"makeEverfurError");var Aa=Object.freeze({chat:Object.freeze(["chat.message.create"]),records:Object.freeze(["records.upload.create","records.record.read"]),recordsClinic:Object.freeze(["records.clinic.create"]),video:Object.freeze(["video.gait.execute"]),photo:Object.freeze(["photo.checkup.execute"]),animations:Object.freeze(["animations.state.read"]),televet:Object.freeze(["televet.visit.create"])});function Fa(e){return Aa[e]}o(Fa,"requires");function jn(e,t,r){let n=Fa(e),i=new Map;for(let a of t)i.set(a.resource,a);if(r?.isPending===true&&n.some(a=>!i.has(a)))return gr({name:e,enabled:false,isPending:true,limits:{}});let l=Da(n,i);return n.filter(a=>i.get(a)?.granted!==true).length===0?gr({name:e,enabled:true,isPending:false,limits:l}):gr({name:e,enabled:false,isPending:false,limits:l,disabled:Ba(n,i)})}o(jn,"decideCapability");function Da(e,t){let r={};for(let n of e){let i=t.get(n)?.limits;if(i)for(let[l,s]of Object.entries(i)){let a=r[l];r[l]=a===void 0?s:Math.min(a,s);}}return r}o(Da,"mergeLimits");function Ba(e,t){for(let r of e){let n=t.get(r)?.disabled;if(n)return Object.freeze({reason:n.reason,level:n.level,recoverable:n.recoverable})}return Object.freeze({reason:mr("accessDenied"),level:"user_entitlement",recoverable:false})}o(Ba,"disabledFor");function gr(e){let t={name:e.name,enabled:e.enabled,isPending:e.isPending,limits:Object.freeze({...e.limits})};return e.disabled!==void 0&&(t.disabled=e.disabled),Object.freeze(t)}o(gr,"freezeDecision");function O(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}o(O,"ok");function C(e){return Object.freeze({ok:false,error:e})}o(C,"err");var Tt=class Tt extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,Tt.prototype);}};o(Tt,"EverfurConfigError");var Ye=Tt;var Un=Symbol.for("@everfur/sdk#EverfurContext@v1"),Wn=globalThis,qn=Wn[Un]??(Wn[Un]=createContext(null));qn.displayName??="EverfurContext";function pe(){let e=useContext(qn);if(e===null)throw new Ye("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}o(pe,"useEverfurContext");function Re(e){let{runtime:t}=pe(),r=t.entitlements,n=useSyncExternalStore(r.subscribe,r.getSnapshot,r.getSnapshot);return useMemo(()=>jn(e,n.decisions,{isPending:n.isPending}),[e,n])}o(Re,"useCapability");var Ha=48;function Ma(e){return e.isPending?"pending":e.enabled?"enabled":"disabled"}o(Ma,"selectView");function Yn(e){let{capability:t,children:r,renderDisabled:n,renderPending:i,style:l,className:s}=e,a=Re(t),d=useMemo(()=>Ma(a),[a]);switch(d){case "enabled":return r;case "pending":return i?jsx(ar,{render:i,fallback:jsx(Kn,{capability:t,style:l,className:s})}):jsx(Kn,{capability:t,style:l,className:s});case "disabled":return n?jsx(ar,{render:()=>n(a),fallback:jsx($n,{decision:a,style:l,className:s}),resetKey:a}):jsx($n,{decision:a,style:l,className:s});default:return vt(d)}}o(Yn,"CapabilityGate");function Kn({capability:e,style:t,className:r}){let n=w(),i=useMemo(()=>Gn(n),[n]);return jsx("div",{role:"status","aria-busy":"true","aria-label":`Loading ${e}`,className:r,style:{...i.offstate,...t},children:jsx("div",{style:i.skeletonBar})})}o(Kn,"PendingSkeleton");function $n({decision:e,style:t,className:r}){let n=w(),i=useMemo(()=>Gn(n),[n]),l=e.disabled?.reason??"";return jsx("div",{className:r,style:{...i.offstate,...t},children:l.length>0?jsx("p",{style:i.offstateText,children:l}):null})}o($n,"OffState");function Gn(e){let{color:t,space:r,radius:n,type:i}=e;return {offstate:{boxSizing:"border-box",minHeight:Ha,display:"flex",flexDirection:"column",justifyContent:"center",padding:`${r.md}px ${r.lg}px`,backgroundColor:t.surfaceCream,borderRadius:n.md,border:`1px solid ${t.brandBorder}`},offstateText:{margin:0,...E(e,"regular"),fontSize:i.size.body,lineHeight:`${Math.round(i.size.body*i.lineHeight.normal)}px`,color:t.text.muted},skeletonBar:{height:r.md,borderRadius:n.xs,backgroundColor:t.brandSofter}}}o(Gn,"makeStyles");function ja(e,t){if(e===void 0)return {};let r={};return e.backgroundColor!==void 0&&(r.backgroundColor=e.backgroundColor),e.borderColor!==void 0&&(r.borderColor=e.borderColor,r.borderWidth=t??1),e.borderRadius!==void 0&&(r.borderRadius=e.borderRadius),r}o(ja,"slotBox");function Ct(e){return e?.textColor===void 0?{}:{color:e.textColor}}o(Ct,"slotText");function kt(e,t){let r=ja(e,t),n={};return r.backgroundColor!==void 0&&(n.backgroundColor=r.backgroundColor),r.borderColor!==void 0&&(n.border=`${r.borderWidth??1}px solid ${r.borderColor}`),r.borderRadius!==void 0&&(n.borderRadius=r.borderRadius),n}o(kt,"slotBoxCss");var Xn=Object.freeze({visitButton:"Talk to a vet"});var Qn=null;function Jn(){return Qn!==null}o(Jn,"hasEverfurTelevetFlow");function Zn(e){return false;}o(Zn,"presentEverfurTelevetFlow");function Ua(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}o(Ua,"authHeaders");function Ge(e,t){return {...e,headers:{...Wa(e.headers),...Ua(t)}}}o(Ge,"withAuthHeaders");function Wa(e){if(!e)return {};let t={};for(let[r,n]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=n);}return t}o(Wa,"stripAuthHeaders");async function eo(e,t){if(t.mode==="anonymous")return t.transport.request(Ge(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return C(br())}let n=await t.transport.request(Ge(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(n.ok||n.error.httpStatus!==401)return n;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return C(br())}let l=await t.transport.request(Ge(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !l.ok&&l.error.httpStatus===401?C(br(l.error.httpStatus)):l}o(eo,"authedSend");function br(e){return $("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}o(br,"authRejectedError");function to(e){return $("internalError",{retryable:true,wireMessage:qa(e)})}o(to,"networkError");function qa(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}o(qa,"describeCause");var Ka=3e4,$a=yr*2,Ya="idempotency-key",Ga=new Set(["POST","PUT","PATCH","DELETE"]),Xa=Object.freeze({onEvent(){}}),Qa=Object.freeze({setTimeout:o((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:o(e=>clearTimeout(e),"clearTimeout"),now:o(()=>Date.now(),"now")});function Ja(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}o(Ja,"seededIdempotencyKey");function _e(e){let t=e.observer??Xa,r=e.timers??Qa,n=e.rng??Math.random,i=e.sleep??((m,y)=>cl(m,r,y)),l=e.maxAttempts??zn,s=e.unaryTimeoutMs??Ka,a=e.newIdempotencyKey??el(),d=o(m=>{try{t.onEvent(m);}catch{}},"emit");async function c(m,y,b){let S=b?.maxAttempts,h=Math.max(1,S??l),I=b?.idempotent??Ga.has(y.method),P=b?.idempotencyKey===void 0?null:Ja(b.idempotencyKey),R=I?P??a():null,D=Za(y,R),B=0;for(;;){let k=o(_=>Object.freeze({call:m,method:y.method,path:y.path,attempt:B,...R?{idempotencyKey:R}:{},..._}),"stamp");d(k({phase:"attempt"}));let A=dl(s,r),U=ul(A.signal,y.signal),x;try{x=await eo({...D,signal:U.signal},e.auth);}catch(_){x=C(to(_));}finally{U.dispose(),A.cancel();}if(x.ok)return d(k({phase:"settled",ok:true,reason:"ok"})),x;let F=x.error,z=rl(F,B,{maxAttempts:h,rng:n,now:r.now(),aborted:y.signal?.aborted===true,...S!==void 0?{perCallMaxAttempts:S}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),K={ok:false,code:F.code,reason:z.reason,...F.httpStatus!==void 0?{httpStatus:F.httpStatus}:{},...F.requestId!==void 0?{requestId:F.requestId}:{}};if(!z.retry)return d(k({phase:"settled",...K})),C(F);if(d(k({phase:"retry",...K,delayMs:z.delayMs})),await i(z.delayMs,y.signal),y.signal?.aborted===true)return d(k({phase:"settled",...K,reason:"aborted"})),C(F);B+=1;}}o(c,"send");async function u(m){return Ge(m,await sl(e.auth))}o(u,"authorize");async function*p(m,y,b){d(Object.freeze({call:m,phase:"stream.open",method:y.method,path:y.path,attempt:0}));try{yield*e.auth.transport.stream(y,b);}catch{yield vn({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return o(p,"stream"),Object.freeze({send:c,authorize:u,stream:p})}o(_e,"createRequestFunnel");function Za(e,t){let r={};for(let[n,i]of Object.entries(e.headers??{}))n.toLowerCase()!==Ya&&(r[n]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}o(Za,"assembleHeaders");function el(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}o(el,"defaultIdempotencyKeyFactory");var tl=10;function rl(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let n=nl(e);if(n==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(n!=="burst"&&!fr(e.code))return {retry:false,reason:"terminal-code"};let i=n==="burst"?"burst-throttle":"retryable-code";if(o(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=o(()=>{if(r.policy===void 0)return null;let c;try{c=r.policy.maxAttempts(e.code);}catch{return null}return typeof c!="number"||!Number.isFinite(c)?null:Math.max(1,Math.min(tl,Math.floor(c)))},"policyCeiling"),a=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=a)return {retry:false,reason:"attempts-exhausted"};let d=ol(e,r.now);return d!==null?d>$a?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:d}:{retry:true,reason:i,delayMs:Hn(t,r.rng)}}o(rl,"decideRetry");function nl(e){let t=e.code==="unknown"?Nn(ll(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}o(nl,"throttleKind");function ol(e,t){let r=il(e.raw);if(r===null)return null;let n=r-t;return n>0?n:0}o(ol,"retryOverrideMs");function il(e){for(let t of no(e)){let r=t.resets_at,n=al(r);if(n!==null)return n}return null}o(il,"findResetsAt");function no(e){if(!ro(e))return [];let t=[e];for(let r of ["error","detail"]){let n=e[r];ro(n)&&t.push(n);}return t}o(no,"candidateScopes");function al(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}o(al,"parseInstantMs");function ll(e){for(let t of no(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}o(ll,"rawWireCode");function ro(e){return typeof e=="object"&&e!==null}o(ro,"isRecord");async function sl(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}o(sl,"resolveDeviceAuth");function dl(e,t){let r=new AbortController,n=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:o(()=>t.clearTimeout(n),"cancel")}}o(dl,"boundedSignal");function ul(e,t){let r=o(()=>{},"noop");if(!t)return {signal:e,dispose:r};let n=new AbortController;if(e.aborted||t.aborted)return n.abort(),{signal:n.signal,dispose:r};let i=o(()=>n.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:n.signal,dispose:o(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}o(ul,"mergeSignals");function cl(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(n=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",l),n();},e),l=o(()=>{t.clearTimeout(i),n();},"onAbort");r?.addEventListener("abort",l,{once:true});})}o(cl,"delayAbortable");var hr=Object.freeze(["visit","join","summary","messages"]);function Sr(e){return typeof e=="string"&&hr.includes(e)}o(Sr,"isVetVisitIntent");var pl="/widget/v1/televet/handoffs",fl="/widget/v1/televet/availability",yl="/widget/v1/televet/chat-entry",ml=/^[a-z0-9][a-z0-9_-]{0,39}$/,gl=/^[A-Za-z0-9_-]{22}$/;var oo=32,io=128,ao=64;function Tr(e){let t=e.httpStatus;switch(e.code){case "sessionRequired":return "sessionRequired";case "authExpired":case "authRejected":return "authRejected";case "sdkUpdateRequired":return "sdkUpdateRequired";case "validationFailed":return "invalidRequest";case "rateLimited":case "quotaExceeded":return "rateLimited";}return t===void 0?e.code==="internalError"?"network":"unknown":t===429?"rateLimited":t===404?"unavailable":t===403?"accessDenied":t===401?"authRejected":t===400||t===422?"invalidRequest":t>=500?"serverError":"unknown"}o(Tr,"vetVisitErrorReasonOf");function lo(e){return C($("validationFailed",{retryable:false,wireMessage:e}))}o(lo,"invalid");function Er(e){return C($("internalError",{retryable:false,httpStatus:502,wireMessage:e}))}o(Er,"unusable");function vl(e,t){let r={};e!==void 0&&(r.pet_ref=e);let n=t?.returnTo;if(n!=null){if(typeof n!="string"||!ml.test(n))return {ok:false,message:"returnTo must be a registered return destination key"};r.return_to=n;}let i=t?.entry;if(i!=null){if(i!=="chat"||e===void 0)return {ok:false,message:"entry 'chat' needs the pet the chat is about"};r.entry=i;}let l=t?.visitRef,s=t?.intent,a=l!=null;if(a){let d=typeof l=="string"?l.trim():"";if(d.length<1||[...d].length>ao)return {ok:false,message:`visitRef must be 1..${ao} characters`};r.visit_ref=d;}if(s!=null){if(!a)return {ok:false,message:"intent needs the visitRef it opens"};if(!Sr(s))return {ok:false,message:`intent must be one of ${hr.join(", ")}`};r.intent=s;}return {ok:true,body:r}}o(vl,"handoffBody");function bl(e){if(typeof e!="object"||e===null)return null;let{visit_ref:t,intent:r}=e;return typeof t!="string"||t.length===0||!Sr(r)?null:Object.freeze({visitRef:t,intent:r})}o(bl,"parseVisitEcho");function uo(e){let t=e.funnel??_e({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=e.telemetry,n=o(i=>(so(r,"televet.visit.handoff_failed",{reason:Tr(i)}),C(i)),"failed");return {async createHandoff(i,l){let s;if(i!=null){let h=typeof i=="string"?[...i].length:0;if(h<1||h>io)return n($("validationFailed",{retryable:false,wireMessage:`pet_ref must be 1..${io} characters`}));s=i;}let a=vl(s,l);if(!a.ok){let h=lo(a.message);return h.ok?h:n(h.error)}let d=a.body,c=await t.send("televet.visit.handoff",{method:"POST",path:pl,body:d},{idempotent:false,maxAttempts:1});if(!c.ok)return n(c.error);let u=hl(c.value),p=d.return_to!==void 0,m=p?c.value?.flow_id:void 0;if(p&&(typeof m!="string"||!gl.test(m))){let h=Er("the handoff response carried no usable return flow id");return h.ok?h:n(h.error)}let y=d.visit_ref!==void 0,b=y?bl(c.value?.visit):null;if(y&&b===null){let h=Er("the handoff response did not confirm the visit it opens");return h.ok?h:n(h.error)}let S=u===null?null:Object.freeze({...u,...p?{flowId:m}:{},...b!==null?{visit:b}:{}});return S===null?n($("internalError",{retryable:false,httpStatus:502,wireMessage:"the handoff response carried no usable visit url"})):(so(r,"televet.visit.handoff_created",{pet_scoped:d.pet_ref!==void 0}),O(S))},async checkAvailability(i){if(typeof i!="string"||i.length>oo)return lo(`state must be at most ${oo} characters`);let l=await t.send("televet.visit.availability",{method:"POST",path:fl,body:{state:i}},{idempotent:false,maxAttempts:1});if(!l.ok)return C(l.error);let s=l.value?.available;return typeof s!="boolean"?Er("the availability response carried no usable answer"):O(Object.freeze({available:s}))},async chatEntryOpen(){try{let i=await t.send("televet.visit.chat_entry",{method:"GET",path:yl},{maxAttempts:1});return i.ok&&i.value?.open===!0}catch{return false}}}}o(uo,"createVetVisitController");function hl(e){if(typeof e!="object"||e===null)return null;let{url:t,expires_at:r}=e;return typeof t!="string"||typeof r!="string"||r.length===0||!Cl(t)?null:Object.freeze({url:t,expiresAt:r})}o(hl,"parseHandoff");var Sl=new Set(["localhost","127.0.0.1","[::1]"]),El=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/,Tl=/[\s\u0000-\u001f\u007f]/;function Cl(e){if(Tl.test(e))return false;let t=El.exec(e);if(t===null)return false;let r=(t[1]??"").toLowerCase(),n=t[2]??"";if(n.length===0||n.includes("@"))return false;let i=n.replace(/:\d+$/,"").toLowerCase(),l=r==="https",s=r==="http"&&Sl.has(i);if(!l&&!s)return false;let a=e.indexOf("#");if(a<0)return false;let d=e.slice(a);return d.startsWith("#h=")&&d.length>3}o(Cl,"isOpenableVisitUrl");function so(e,t,r){if(e)try{e.track(t,r);}catch{}}o(so,"safeTrack");var po=Object.freeze({status:"idle",error:null,errorReason:null});function Rl(e,t,r){let{usState:n,chat:i,scope:l}=r,s=t&&(n!==null||i),a=`${n??""}|${i?"chat":""}`,[d,c]=useState(null);if(useEffect(()=>{if(!s)return;let p=true,m=e.current;return c(null),o(async()=>{try{if(i&&!(m.chatEntryOpen&&await m.chatEntryOpen()))return !1;if(n===null)return !0;if(!m.checkAvailability)return !1;let b=await m.checkAvailability(n);return b.ok&&b.value.available}catch{return false}},"ask")().then(b=>{p&&c({key:a,open:b});}),()=>{p=false;}},[s,a,n,i,l,e]),!s)return null;let u=d!==null&&d.key===a;return {open:u&&d.open,pending:!u}}o(Rl,"usePreflight");var _l=Object.freeze({status:"opening",error:null,errorReason:null});function yo(e,t={}){let{runtime:r,userRef:n,scopeEpoch:i}=pe(),l=Re("televet"),s=l.enabled&&n!==null,a=t.usState??null,d=t.entry==="chat",c=t.petRef??null,u=useMemo(()=>{if(t.controller)return t.controller;let{services:x}=r.registry;return uo({auth:x.authFor(n),telemetry:x.telemetry,...x.errorPolicy?{errorPolicy:x.errorPolicy}:{}})},[r,n,i,t.controller]),p=useRef(u);p.current=u;let m=useMemo(()=>({runtime:r,userRef:n,scopeEpoch:i}),[r,n,i]),y=Rl(p,s,{usState:a,chat:d,scope:m}),b=s&&(y===null||y.open)&&(!d||c!==null),S=t.returnTo??null,[h,I]=useState(po),P=useRef(null),R=useRef({runtime:r,userRef:n,scopeEpoch:i});R.current={runtime:r,userRef:n,scopeEpoch:i};let D=useRef(u);D.current=u;let B=useRef(b);B.current=b;let k=useCallback((x,F)=>{if(P.current)return P.current;let z=o((N,Te)=>(I({status:N==="cancelled"?"idle":"error",error:Te,errorReason:N==="cancelled"?null:N}),Object.freeze({opened:false,reason:N,error:Te})),"fail");if(!B.current)return Promise.resolve(z("unavailable",null));let K=e.prepare();if(!K.ok)return Promise.resolve(z(K.reason,null));let _=R.current,ne=D.current;I(_l);let Ee=(async()=>{let N,Te={...S!==null?{returnTo:S}:{},...d?{entry:"chat"}:{},...F!==null?{visitRef:F.visitRef}:{},...F!==null&&F.intent!==null&&F.intent!==void 0?{intent:F.intent}:{}},ft=Object.keys(Te).length===0?void 0:Te,yt=x===void 0?c:x;try{N=await(ft===void 0?ne.createHandoff(yt):ne.createHandoff(yt,ft));}catch{return e.abandon(K.value),z("unknown",null)}let Ne=R.current;if(Ne.runtime!==_.runtime||Ne.userRef!==_.userRef||Ne.scopeEpoch!==_.scopeEpoch)return e.abandon(K.value),z("cancelled",null);if(!N.ok)return e.abandon(K.value),z(Tr(N.error),N.error);let Ce=await e.finish(K.value,N.value);return Ce!==null?z(Ce,null):(I(po),Object.freeze(N.value.flowId===void 0?{opened:true}:{opened:true,flowId:N.value.flowId}))})().finally(()=>{P.current===Ee&&(P.current=null);});return P.current=Ee,Ee},[e,c,S,d]),A=useCallback(x=>k(x,null),[k]),U=useCallback((x,F)=>k(void 0,{visitRef:x,intent:F??null}),[k]);return {available:b,isPending:l.isPending||(y?.pending??false),status:h.status,error:h.error,errorReason:h.errorReason,open:A,openVisit:U}}o(yo,"useVetVisitWith");function mo(e){try{e.closed||e.close();}catch{}}o(mo,"closeQuietly");var xl=Object.freeze({prepare(){let e=null;try{e=typeof window>"u"?null:window.open("about:blank","_blank");}catch{e=null;}if(e===null)return {ok:false,reason:"popupBlocked"};try{e.opener=null;}catch{}return {ok:true,value:{tab:e}}},async finish({tab:e},t){if(e.closed)return "cancelled";try{return e.location.replace(t.url),null}catch{return mo(e),"popupBlocked"}},abandon({tab:e}){mo(e);}});function go(e){return yo(xl,e)}o(go,"useVetVisit");var vo=44,Il=.6;function Rt(e){let{petRef:t,children:r,onOpened:n,onError:i,style:l,className:s,controller:a,returnTo:d,usState:c,entry:u,visitRef:p,intent:m,onStartInApp:y,prefer:b}=e,S=go({...d!==void 0?{returnTo:d}:{},...c!==void 0?{usState:c}:{},...u!==void 0?{entry:u}:{},...t!==void 0?{petRef:t}:{},...a!==void 0?{controller:a}:{}}),h=w(),I=useMemo(()=>Ol(h),[h]),P=useRef(false);if(!S.available)return null;let R=S.status==="opening",D=p!=null,B=b==="redirect"||D,k=!B&&y!==void 0;return jsx("button",{type:"button",onClick:o(()=>{if(!(R||P.current)){if(k){$e(y);return}(P.current=true,(p==null?S.open():S.openVisit(p,m??null)).then(x=>{x.opened?$e(n,x.flowId??null):x.reason!=="cancelled"&&$e(i,x.reason,x.error);}).finally(()=>{P.current=false;}));}},"onClick"),"aria-busy":R,"aria-disabled":R,className:s,style:{...I,...R?{opacity:Il,cursor:"progress"}:null,...l},children:r??Xn.visitButton})}o(Rt,"VetVisitButton");function Ol(e){let{color:t,space:r,radius:n,type:i,slots:l}=e;return {boxSizing:"border-box",minHeight:vo,minWidth:vo,display:"inline-flex",alignItems:"center",justifyContent:"center",margin:0,border:0,cursor:"pointer",padding:`${r.sm}px ${r.xl}px`,borderRadius:n.pill,backgroundColor:t.primary,color:t.onPrimary,...E(e,"medium"),fontSize:i.size.body,...kt(l.vetVisitButton),...Ct(l.vetVisitButton)}}o(Ol,"buttonStyle");function _t(e){let t=e.raw;if(typeof t!="object"||t===null)return null;let r=t,n=r.detail??r.error;return typeof n=="object"&&n!==null?n:r}o(_t,"details");function Fl(e){let t=_t(e)?.categories;return Array.isArray(t)?Object.freeze(t.filter(r=>typeof r=="string")):Object.freeze([])}o(Fl,"categoriesOf");function bo(e){let t=_t(e)?.retry_after_seconds;return typeof t=="number"&&Number.isFinite(t)&&t>0?t:null}o(bo,"retryAfterOf");function ho(e){let t=e.wireMessage;if(typeof t=="string"&&t.trim().length>0)return t.trim();let r=_t(e)?.message;return typeof r=="string"&&r.trim().length>0?r.trim():null}o(ho,"messageOf");function Dl(e){let t=e.reasonCode;if(typeof t=="string"&&t.length>0)return t;let r=_t(e),n=r?.code??r?.error_code;return typeof n=="string"&&n.length>0?n:null}o(Dl,"codeOf");function xe(e){let t=e.httpStatus;if(t===402)return Object.freeze({kind:"not_entitled"});if(t===429||e.code==="rateLimited"||e.code==="quotaExceeded")return Object.freeze({kind:"rate_limited",retryAfterSeconds:bo(e),message:ho(e)});if(t===404)return Object.freeze({kind:"unavailable"});switch(Dl(e)){case "televet_rate_limited":return Object.freeze({kind:"rate_limited",retryAfterSeconds:bo(e),message:ho(e)});case "televet_emergency_ack_required":return Object.freeze({kind:"emergency",categories:Fl(e)});case "televet_not_entitled":return Object.freeze({kind:"not_entitled"});case "televet_slot_conflict":return Object.freeze({kind:"slot_taken"});case "televet_hold_invalid":return Object.freeze({kind:"slot_taken"});case "televet_clinician_cannot_prescribe":case "televet_clinician_unavailable":case "televet_clinician_not_bookable":return Object.freeze({kind:"clinician_unavailable"});case "televet_membership_conflict":return Object.freeze({kind:"not_entitled"});case "televet_registry_unavailable":return Object.freeze({kind:"failed"});}return Object.freeze({kind:"failed"})}o(xe,"televetBookingRefusal");function xt(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let n=e.charCodeAt(t+1);if(!(n>=56320&&n<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}o(xt,"hasLoneSurrogate");function Pt(e){return [...e].length}o(Pt,"serverLength");var So=Object.freeze({dog:"dog",canine:"dog",k9:"dog",puppy:"dog",cat:"cat",feline:"cat",kitten:"cat"});function Eo(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase();return Object.prototype.hasOwnProperty.call(So,t)?So[t]:null}o(Eo,"canonicalPetSpecies");var To=50,Bl=128,kr=120,Co=120,Ll=2e3,ko=120,Nl=80,xo=new Set(["male","female","unknown"]),Po=new Set(["day","month","year"]),wo=new Set(["low","medium","high","athletic"]),Io=new Set(["indoor","outdoor","both"]),Oo=new Set(["mild","moderate","severe"]),Vl=/^(\d{4})-(\d{2})-(\d{2})$/,Ao=[["sex","sex"],["spayedNeutered","spayed_neutered"],["birthDate","birth_date"],["birthDatePrecision","birth_date_precision"],["activityLevel","activity_level"],["indoorOutdoor","indoor_outdoor"],["foodBrand","food_brand"],["foodType","food_type"],["microchipId","microchip_id"]],Fo=[["allergies","allergies"],["medications","medications"],["supplements","supplements"],["conditions","conditions"]];Object.freeze([...Ao,...Fo].map(([e])=>e));function zl(e){let t=Vl.exec(e);if(t===null)return false;let[r,n,i]=[Number(t[1]),Number(t[2]),Number(t[3])],l=new Date(Date.UTC(r,n-1,i));return l.getUTCFullYear()===r&&l.getUTCMonth()===n-1&&l.getUTCDate()===i}o(zl,"isRealDate");var Je=o(e=>(t,r)=>typeof r=="string"&&e.has(r)?null:`${t} must be one of ${[...e].join(", ")}`,"oneOf"),Hl=o((e,t)=>typeof t=="boolean"?null:`${e} must be true or false`,"boolean"),It=o((e,t)=>typeof t=="string"&&zl(t)?null:`${e} must be a real date written YYYY-MM-DD`,"date"),ae=o((e,t={})=>(r,n)=>{if(typeof n!="string")return `${r} must be a string`;if(xt(n))return `${r} contains an unpaired surrogate and cannot be encoded`;let i=t.trimmed?n.trim():n;if(t.required&&i.length===0)return `${r} is required and must not be blank`;let l=Pt(i);return l<=e?null:`${r} is ${l} characters; the server accepts at most ${e}`},"text"),Ml={sex:Je(xo),spayedNeutered:Hl,birthDate:It,birthDatePrecision:Je(Po),activityLevel:Je(wo),indoorOutdoor:Je(Io),foodBrand:ae(ko),foodType:ae(ko),microchipId:ae(Nl)},Rr=["ref","ref",false,ae(Bl,{required:true,trimmed:true})],_r=["notes","notes",false,ae(Ll,{trimmed:true})],Ro=[Rr,["name","name",true,ae(kr,{required:true,trimmed:true})],["dose","dose",false,ae(Co,{trimmed:true})],["frequency","frequency",false,ae(Co,{trimmed:true})],["startDate","start_date",false,It],["endDate","end_date",false,It],_r],jl={allergies:[Rr,["allergen","allergen",true,ae(kr,{required:true,trimmed:true})],["severity","severity",false,Je(Oo)],_r],medications:Ro,supplements:Ro,conditions:[Rr,["conditionName","condition_name",true,ae(kr,{required:true,trimmed:true})],["diagnosedDate","diagnosed_date",false,It],_r]};function Ul(e,t,r){let n=`${e}[${t}]`;if(typeof r!="object"||r===null||Array.isArray(r))return {error:`${n} must be an object`};let i=r,l={};for(let[d,c,u,p]of jl[e]){let m=i[d];if(m==null){if(u)return {error:`${n}.${d} is required`};m===null&&(l[c]=null);continue}let y=p(`${n}.${d}`,m);if(y!==null)return {error:y};l[c]=m;}let s=l.start_date,a=l.end_date;return typeof s=="string"&&typeof a=="string"&&a<s?{error:`${n}.endDate must not be before startDate`}:{item:l}}o(Ul,"itemToWire");function Wl(e,t){if(!Array.isArray(t))return {error:`${e} must be an array (send [] to clear it)`};if(t.length>To)return {error:`${e} has ${t.length} items; the server accepts at most ${To}`};let r=[],n=new Set;for(let i=0;i<t.length;i+=1){let l=Ul(e,i,t[i]);if("error"in l)return l;let s=l.item.ref;if(typeof s=="string"){let a=s.trim();if(n.has(a))return {error:`${e}: ref ${JSON.stringify(a)} is used twice; a ref names one item`};n.add(a);}r.push(l.item);}return {items:r}}o(Wl,"listToWire");function Do(e,t){let r=e,n={};for(let[s,a]of Ao){let d=r[s];if(d!==void 0){if(d!==null){let c=Ml[s](s,d);if(c!==null)return {error:c}}n[a]=d;}}let i=r.birthDate!==void 0,l=r.birthDatePrecision!==void 0;if(i!==l||i&&r.birthDate===null!=(r.birthDatePrecision===null))return {error:"birthDate and birthDatePrecision must be sent together, both set or both null"};for(let[s,a]of Fo){let d=r[s];if(d===void 0)continue;let c=Wl(s,d);if("error"in c)return c;n[a]=c.items;}return Object.keys(n).length>0&&t!==void 0&&Eo(t)===null?{error:"health fields need a pet Everfur reads as a dog or a cat (dog, canine, k9, puppy, cat, feline, kitten)"}:{body:n}}o(Do,"petHealthToWire");var H=o(e=>typeof e=="string"?e:null,"str"),Qe=o((e,t)=>typeof t=="string"&&e.has(t)?t:null,"pick"),ql=o(e=>typeof e=="boolean"?e:null,"bool");function wt(e,t){return Array.isArray(e)?Object.freeze(e.flatMap(r=>{if(typeof r!="object"||r===null||Array.isArray(r))return [];let n=t(r);return n===null?[]:[n]})):Object.freeze([])}o(wt,"itemsFromWire");function _o(e){let t=H(e.name);return t===null||t.length===0?null:Object.freeze({ref:H(e.ref),name:t,dose:H(e.dose),frequency:H(e.frequency),startDate:H(e.start_date),endDate:H(e.end_date),notes:H(e.notes)})}o(_o,"medicationFromWire");function Bo(e){let t=e.profile_version;return Object.freeze({profileVersion:typeof t=="number"&&Number.isInteger(t)&&t>=0?t:0,sex:Qe(xo,e.sex),spayedNeutered:ql(e.spayed_neutered),birthDate:H(e.birth_date),birthDatePrecision:Qe(Po,e.birth_date_precision),activityLevel:Qe(wo,e.activity_level),indoorOutdoor:Qe(Io,e.indoor_outdoor),foodBrand:H(e.food_brand),foodType:H(e.food_type),microchipId:H(e.microchip_id),allergies:wt(e.allergies,r=>{let n=H(r.allergen);return n===null||n.length===0?null:Object.freeze({ref:H(r.ref),allergen:n,severity:Qe(Oo,r.severity),notes:H(r.notes)})}),medications:wt(e.medications,_o),supplements:wt(e.supplements,_o),conditions:wt(e.conditions,r=>{let n=H(r.condition_name);return n===null||n.length===0?null:Object.freeze({ref:H(r.ref),conditionName:n,diagnosedDate:H(r.diagnosed_date),notes:H(r.notes)})})})}o(Bo,"petHealthFromWire");var Vo=100,zo=50,Ho=100,Mo=50,jo=500,Kl=128,$l=6e4;function se(e){return $("validationFailed",{retryable:false,wireMessage:e})}o(se,"invalid");function Pe(e,t,r){if(typeof t!="string")return se(`${e} must be a string`);let n=Pt(t);return n<=r?null:se(`${e} is ${n} characters; the server accepts at most ${r}`)}o(Pe,"checkString");function Ot(e,t,r){return typeof t=="number"&&Number.isFinite(t)&&t>=0&&t<=r?null:se(`${e} must be a finite number between 0 and ${r}`)}o(Ot,"outOfRange");function Lo(e,t){if(typeof e!="string")return se("pet_ref must be a string");if(e.trim().length===0)return se("pet_ref must not be blank");if(xt(e))return se("pet_ref contains an unpaired surrogate and cannot be encoded");if(t!=null&&typeof t!="object")return se("profile must be an object");let r=[Pe("pet_ref",e,Kl)];return t?.name!==void 0&&r.push(Pe("name",t.name,Vo)),t?.species!==void 0&&r.push(Pe("species",t.species,zo)),t?.breed!==void 0&&r.push(Pe("breed",t.breed,Ho)),t?.ageYears!==void 0&&r.push(Ot("age_years",t.ageYears,Mo)),t?.weightKg!==void 0&&r.push(Ot("weight_kg",t.weightKg,jo)),r.find(n=>n!==null)??null}o(Lo,"validate");function Uo(e,t){let r=Do(e,t);return "error"in r?{error:se(r.error)}:r}o(Uo,"healthToWire");function Yl(e){if(typeof e!="object"||e===null)return {error:se("patch must be an object")};let t=e,r=[["name","name",l=>Pe("name",l,Vo)],["species","species",l=>Pe("species",l,zo)],["breed","breed",l=>Pe("breed",l,Ho)],["ageYears","age_years",l=>Ot("age_years",l,Mo)],["weightKg","weight_kg",l=>Ot("weight_kg",l,jo)]],n={};for(let[l,s,a]of r){let d=t[l];if(d!==void 0){if(d!==null){let c=a(d);if(c!==null)return {error:c}}n[s]=d;}}let i=Uo(t,t.species);return "error"in i?i:(Object.assign(n,i.body),Object.keys(n).length===0?{error:se("patch must change at least one field")}:{body:n})}o(Yl,"patchToWire");function Gl(e){if(e==null)return {body:{}};let t=Uo(e,e.species);return "error"in t?t:{body:{...e.name!==void 0?{name:e.name}:{},...e.species!==void 0?{species:e.species}:{},...e.breed!==void 0?{breed:e.breed}:{},...e.ageYears!==void 0?{age_years:e.ageYears}:{},...e.weightKg!==void 0?{weight_kg:e.weightKg}:{},...t.body}}}o(Gl,"toWire");var le=o(e=>typeof e=="string"?e:null,"str"),At=o(e=>typeof e=="number"&&Number.isFinite(e)?e:null,"num");function No(e,t){let r=typeof e=="object"&&e!==null?e:{};return Object.freeze({petRef:le(r.pet_ref)??t,name:le(r.name),species:le(r.species),breed:le(r.breed),ageYears:At(r.age_years),weightKg:At(r.weight_kg)})}o(No,"fromWire");function Wo(e){if(typeof e!="object"||e===null)return null;let t=e,r=le(t.pet_ref);return r===null||r.length===0?null:Object.freeze({petId:le(t.pet_id),petRef:r,name:le(t.name),species:le(t.species),breed:le(t.breed),ageYears:At(t.age_years),weightKg:At(t.weight_kg),updatedAt:le(t.updated_at)})}o(Wo,"widgetPetFromWire");function Xl(e){let t=Wo(e);return t===null?null:Object.freeze({...t,...Bo(e)})}o(Xl,"widgetPetProfileFromWire");function Ql(e){let t=Array.isArray(e)?e:typeof e=="object"&&e!==null&&Array.isArray(e.pets)?e.pets:[];return Object.freeze(t.flatMap(r=>{let n=Wo(r);return n===null?[]:[n]}))}o(Ql,"petListFromWire");function qo(e){return Jl(_e({auth:e}),_e({auth:e,unaryTimeoutMs:$l}))}o(qo,"createPetsRepository");function Jl(e,t=e){let r=o((i,l)=>l?{...i,signal:l}:i,"withSignal"),n=o(i=>Lo(i,void 0)??`/widget/v1/pets/${encodeURIComponent(i)}`,"petPath");return {async list(i){let l=await e.send("pets.list",r({method:"GET",path:"/widget/v1/pets"},i?.signal));return l.ok?O(Ql(l.value)):C(l.error)},async registerPet(i,l,s){let a=Lo(i,l);if(a!==null)return C(a);let d=Gl(l);if("error"in d)return C(d.error);let u={method:"POST",path:`/widget/v1/pets/${encodeURIComponent(i)}`,body:d.body},p=await e.send("pets.registerPet",s?.signal?{...u,signal:s.signal}:u);return p.ok?O(No(p.value,i)):C(p.error)},async updatePet(i,l,s){let a=n(i);if(typeof a!="string")return C(a);let d=Yl(l);if("error"in d)return C(d.error);let c=await e.send("pets.updatePet",r({method:"PATCH",path:a,body:d.body},s?.signal));return c.ok?O(No(c.value,i)):C(c.error)},async getPetProfile(i,l){let s=n(i);if(typeof s!="string")return C(s);let a=await e.send("pets.getPetProfile",r({method:"GET",path:`${s}/profile`},l?.signal));if(!a.ok)return C(a.error);let d=Xl(a.value);return d===null?C($("internalError",{retryable:false,httpStatus:502,wireMessage:"the pet profile response carried no pet_ref"})):O(d)},async deletePet(i,l){let s=n(i);if(typeof s!="string")return C(s);let a=await e.send("pets.deletePet",r({method:"DELETE",path:s},l?.signal));return a.ok?O(void 0):C(a.error)},async eraseUserData(i){let l=await t.send("pets.eraseUserData",r({method:"DELETE",path:"/widget/v1/me"},i?.signal),{maxAttempts:1});return l.ok?O(void 0):C(l.error)}}}o(Jl,"createPetsRepositoryOver");function Ko(){let{runtime:e,userRef:t,activePet:r,scopeEpoch:n}=pe(),i=useMemo(()=>qo(e.registry.services.authFor(t)),[e,t,n]),[l,s]=useState({repository:i,pets:[],loading:true,error:null}),a=l.repository===i?l:{pets:[],loading:true,error:null},d=useRef(0),c=useCallback(async()=>{let p=++d.current;s(y=>({...y,repository:i,loading:true,error:null,pets:y.repository===i?y.pets:[]}));let m=await i.list();p===d.current&&s(m.ok?{repository:i,pets:m.value,loading:false,error:null}:y=>({repository:i,pets:y.repository===i?y.pets:[],loading:false,error:m.error}));},[i]);useEffect(()=>(c(),()=>{d.current+=1;}),[c]);let u=useMemo(()=>r===null?null:a.pets.find(p=>p.petRef===r)??null,[r,a.pets]);return useMemo(()=>({pets:a.pets,activePet:u,loading:a.loading,error:a.error,refresh:c}),[a.pets,a.loading,a.error,u,c])}o(Ko,"useEverfurPets");var Go=["scheduled","in_progress","awaiting_summary","completed","cancelled_owner","cancelled_ops","no_show_owner","no_show_vet"],ns=new Set(["completed","cancelled_owner","cancelled_ops","no_show_owner","no_show_vet"]),Xo=["wellness","prescription"],Ft=64,me=2e3,Dt=10;function de(e){return typeof e=="string"&&/^[A-Za-z]{2}$/.test(e.trim())}o(de,"isWellFormedStateCode");function ye(e){return typeof e=="object"&&e!==null?e:null}o(ye,"row");function Y(e){return typeof e=="string"&&e.length>0?e:null}o(Y,"str");function we(e){return typeof e=="string"&&e.trim().length>0?e.trim():null}o(we,"trimmedOrNull");function Ze(e,t){return typeof e=="boolean"?e:t}o(Ze,"bool");function $o(e){return typeof e=="number"&&Number.isFinite(e)?e:null}o($o,"num");function Yo(e,t){return typeof t=="string"&&e.includes(t)?t:"unknown"}o(Yo,"closed");function et(e,t){if(!Array.isArray(e))return Object.freeze([]);let r=[];for(let n of e){let i=t(n);i!==null&&r.push(i);}return Object.freeze(r)}o(et,"parseList");function Qo(e,t){let r=ye(e);return r===null?null:Object.freeze({state:Y(r.state)??t,wellnessAvailable:Ze(r.wellness_available,false),prescriptionsAvailable:Ze(r.prescriptions_available,false),cancellationPolicyText:we(r.cancellation_policy_text)})}o(Qo,"parseStatePolicy");function Jo(e){let t=ye(e);if(t===null)return null;let r=we(t.summary),n=we(t.version);return r===null||n===null?null:Object.freeze({summary:r,version:n})}o(Jo,"parseCancellationPolicy");function Zo(e){let t=ye(e);if(t===null)return null;let r=Y(t.clinician_id),n=Y(t.display_name);return r===null||n===null?null:Object.freeze({clinicianId:r,displayName:n,credentials:we(t.credentials_text),rating:$o(t.rating),ratingCount:$o(t.rating_count),bio:we(t.bio),photoRef:Y(t.photo_ref),licensedStates:et(t.licensed_states,i=>{let l=ye(i),s=l===null?null:Y(l.state);return s===null?null:Object.freeze({state:s,canPrescribe:Ze(l?.can_prescribe,false)})})})}o(Zo,"parseClinician");function Pr(e){let t=ye(e);if(t===null)return null;let r=Y(t.slot_id),n=Y(t.starts_at);return r===null||n===null?null:Object.freeze({slotId:r,startsAt:n,endsAt:Y(t.ends_at)??n})}o(Pr,"parseSlot");function ei(e){let t=ye(e);if(t===null)return null;let r=Y(t.slot_id),n=Y(t.hold_expires_at);return r===null||n===null?null:Object.freeze({slotId:r,expiresAt:n})}o(ei,"parseSlotHold");function wr(e){let t=ye(e);if(t===null)return null;let r=Y(t.consult_id),n=Y(t.scheduled_at);return r===null||n===null?null:Object.freeze({consultId:r,petId:Y(t.pet_id)??"",clinicianId:Y(t.clinician_id)??"",clinicianName:we(t.display_name),reasonText:we(t.reason_text),mediaRefs:et(t.media_refs,i=>Y(i)),status:Yo(Go,t.status),kind:Yo(Xo,t.kind),scheduledAt:n,emergencyFlagged:Ze(t.emergency_flagged,false)})}o(wr,"parseConsult");function ti(e){let t=ye(e);return Object.freeze({active:Ze(t?.active,false)})}o(ti,"parseBookingEntitlement");var Ie=Object.freeze(["pet","reason","clinician","time","review","booked"]),ri=Object.freeze({petId:null,state:null,clinicianId:null,slot:null,holdExpiresAt:null,shareHealthRecords:false,idempotencyKey:null});function Or(e,t={}){let r=Object.freeze({...ri,...t}),n=Ir(0,e);return Object.freeze({index:n,draft:r,furthestIndex:n})}o(Or,"initialTelevetBookingState");function Bt(e,t){return e==="pet"?t.ownedPetCount<=1:false}o(Bt,"isSkipped");function Lt(e){return Ie[e]}o(Lt,"stepAt");function Ir(e,t){for(let r=e;r<Ie.length;r+=1){let n=Lt(r);if(n&&!Bt(n,t))return r}return Ie.length-1}o(Ir,"nextVisible");function ni(e,t){for(let r=e;r>=0;r-=1){let n=Lt(r);if(n&&!Bt(n,t))return r}return null}o(ni,"previousVisible");function Ar(e,t){return ni(e.index-1,t)!==null}o(Ar,"hasPreviousStep");function Fr(e,t,r){switch(t.type){case "patch":{let n={...e.draft,...t.patch};return ("petId"in t.patch&&t.patch.petId!==e.draft.petId||"state"in t.patch&&t.patch.state!==e.draft.state||"clinicianId"in t.patch&&t.patch.clinicianId!==e.draft.clinicianId)&&e.draft.slot?Object.freeze({...e,draft:Object.freeze({...n,slot:null,holdExpiresAt:null,idempotencyKey:null})}):Object.freeze({...e,draft:Object.freeze(n)})}case "next":{let n=Ir(e.index+1,r);return Object.freeze({...e,index:n,furthestIndex:Math.max(e.furthestIndex,n)})}case "back":{if(Lt(e.index)==="booked")return e;let n=ni(e.index-1,r);return n===null?e:Object.freeze({...e,index:n})}case "goTo":{let n=Ie.indexOf(t.step);if(n<0)return e;let i=Bt(t.step,r)?Ir(n,r):n;return Object.freeze({...e,index:i,furthestIndex:Math.max(e.furthestIndex,i)})}default:return e}}o(Fr,"televetBookingReducer");function Dr(e){return Lt(e.index)??"pet"}o(Dr,"currentStep");function Nt(e,t){let r=t.trim();return !!e.petId&&!!e.clinicianId&&!!e.slot&&de(e.state)&&r.length>0&&r.length<=me}o(Nt,"canConfirm");function Br(e,t){if(!e.holdExpiresAt)return false;let r=Date.parse(e.holdExpiresAt);return Number.isNaN(r)?false:r<=t}o(Br,"isHoldExpired");function Lr(e){return `televet.book.${e}`}o(Lr,"televetBookingKey");function Nr(e,t,r){let n=r?.version?.trim()??"";return !e||!t||n.length===0?Object.freeze({}):Object.freeze({state_attested:true,cancellation_policy_version:n})}o(Nr,"attestation");function ge(e){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}o(ge,"parse");function tt(e){let t=ge(e);return t?t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"}):""}o(tt,"formatClock");function os(e){let t=ge(e);return t?t.toLocaleDateString(void 0,{month:"long",day:"numeric"}):""}o(os,"formatDate");var Me=10;function Vt(e){let t=ge(e);return t?new Intl.DateTimeFormat(void 0,{timeZoneName:"short"}).formatToParts(t).find(n=>n.type==="timeZoneName")?.value??"":""}o(Vt,"formatZone");function is(e){let t=ge(e);if(!t)return "";let r=new Date(t.getTime()+Me*6e4).toISOString(),n=Vt(e),i=`${tt(e)} - ${tt(r)}`;return n&&n!==""?`${i} ${n}`:i}o(is,"formatVisitRange");function oi(e){let t=os(e),r=[tt(e),Vt(e)].filter(Boolean).join(" ");return [t,r].filter(Boolean).join(", ")}o(oi,"formatWhen");function re(e){let t=ge(e);return t?[t.toLocaleDateString(void 0,{weekday:"short"}),oi(e)].filter(Boolean).join(", "):""}o(re,"formatWhenWithDay");function zt(e){let t=ge(e);return t?`${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()}`:"unknown"}o(zt,"localDayKey");function ii(e){let t=ge(e);return t===null?"":t.toLocaleDateString(void 0,{month:"long"})}o(ii,"formatMonthLabel");function ai(e){let t=ge(e);return t===null?"":t.toLocaleDateString(void 0,{weekday:"long",month:"long",day:"numeric"})}o(ai,"formatFullDayLabel");var be="/widget/v1/televet",as=`${be}/state-policy`,ls=`${be}/vets`,si=`${be}/slots`,ss=`${be}/slots/next`,di=`${be}/consults`,ds=`${be}/entitlement`,us=`${be}/cancellation-policy`;function ui(e){return `${si}/${encodeURIComponent(e)}/hold`}o(ui,"televetHoldCall");function ci(e){return `${di}/${encodeURIComponent(e)}/reschedule`}o(ci,"televetRescheduleCall");function ve(e){return C($("validationFailed",{retryable:false,wireMessage:e}))}o(ve,"invalid");function Ht(e){return C($("internalError",{retryable:false,httpStatus:502,wireMessage:e}))}o(Ht,"unusable");function Mt(e){return e.httpStatus===404}o(Mt,"isDark");function Vr(e,t,r){try{e?.track(t,r);}catch{}}o(Vr,"safeTrack");function pi(e){if(e.pet_id.trim().length===0)return "pet_id is required";if(e.clinician_id.trim().length===0)return "clinician_id is required";if(e.slot_id.trim().length===0)return "slot_id is required";if(!de(e.state))return "state must be a two-letter US state code";let t=e.reason_text.trim();return t.length===0?"reason_text is required":t.length>me?`reason_text must be at most ${me} characters`:cs(e)}o(pi,"validateBookingBody");function cs(e){let t=e.state_attested===true,r=e.cancellation_policy_version?.trim()??"";return t!==r.length>0?"state_attested and cancellation_policy_version must be sent together or omitted together":r.length>Ft?`cancellation_policy_version must be at most ${Ft} characters`:null}o(cs,"attestationRefusal");function zr(e){let t=e.funnel??_e({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=e.telemetry;return {async statePolicy(n,i){let l=n.trim();if(!de(l))return ve("state must be a two-letter US state code");let s=await t.send("televet.booking.state_policy",{method:"GET",path:`${as}/${encodeURIComponent(l)}`,...i?{signal:i}:{}});if(!s.ok)return Mt(s.error)?O(Object.freeze({state:l,wellnessAvailable:false,prescriptionsAvailable:false,cancellationPolicyText:null})):C(s.error);let a=Qo(s.value,l);return a===null?Ht("the state policy response was unreadable"):O(a)},async entitlement(n){let i=await t.send("televet.booking.entitlement",{method:"GET",path:ds,...n?{signal:n}:{}});return i.ok?O(ti(i.value)):Mt(i.error)?O(Object.freeze({active:false})):C(i.error)},async cancellationPolicy(n){let i=await t.send("televet.booking.cancellation_policy",{method:"GET",path:us,...n?{signal:n}:{}});return i.ok?O(Jo(i.value)):O(null)},async clinicians(n,i){let l=n.trim();if(!de(l))return ve("state must be a two-letter US state code");let s=await t.send("televet.booking.clinicians",{method:"GET",path:ls,query:{state:l},...i?{signal:i}:{}});return s.ok?O(et(li(s.value,"vets"),Zo)):Mt(s.error)?O(Object.freeze([])):C(s.error)},async slots(n,i){let l=n.trim();if(l.length===0)return ve("clinicianId is required");let s=await t.send("televet.booking.slots",{method:"GET",path:si,query:{clinician_id:l},...i?{signal:i}:{}});return s.ok?O(et(li(s.value,"slots"),Pr)):Mt(s.error)?O(Object.freeze([])):C(s.error)},async nextSlot(n){let i=await t.send("televet.booking.next_slot",{method:"GET",path:ss,...n?{signal:n}:{}});return i.ok?O(Pr(fs(i.value,"slot"))):O(null)},async holdSlot(n){let i=n.trim();if(i.length===0)return ve("slotId is required");let l=await t.send("televet.booking.hold",{method:"POST",path:ui(i)},{idempotent:false,maxAttempts:1});if(!l.ok)return Vr(r,"televet.booking.hold_failed",{status:l.error.httpStatus??null}),C(l.error);let s=ei(l.value);return s===null?Ht("the hold response carried no usable expiry"):O(s)},async book(n,i){let l=pi(n);if(l!==null)return ve(l);let s=i.trim();if(s.length===0)return ve("idempotencyKey is required");let a=await t.send("televet.booking.book",{method:"POST",path:di,body:ps(n)},{idempotent:true,idempotencyKey:s,maxAttempts:1});if(!a.ok)return Vr(r,"televet.booking.book_failed",{status:a.error.httpStatus??null}),C(a.error);let d=wr(a.value);return d===null?Ht("the booking response was unreadable"):O(d)},async reschedule(n,i){let l=n.trim(),s=i.trim();if(l.length===0)return ve("consultId is required");if(s.length===0)return ve("slotId is required");let a=await t.send("televet.booking.reschedule",{method:"POST",path:ci(l),body:{new_slot_id:s}},{idempotent:false,maxAttempts:1});if(!a.ok)return Vr(r,"televet.booking.reschedule_failed",{status:a.error.httpStatus??null}),C(a.error);let d=wr(a.value);return d===null?Ht("the reschedule response was unreadable"):O(d)}}}o(zr,"createTelevetBookingController");function ps(e){let t=e.cancellation_policy_version?.trim()??"",r=e.state_attested===true&&t.length>0;return {pet_id:e.pet_id,clinician_id:e.clinician_id,slot_id:e.slot_id,state:e.state,reason_text:e.reason_text.trim(),species:e.species,media_refs:[...e.media_refs],emergency_acknowledged:e.emergency_acknowledged,share_health_records:e.share_health_records,...r?{state_attested:true,cancellation_policy_version:t}:{}}}o(ps,"bookingWireBody");function li(e,t){if(Array.isArray(e))return e;if(typeof e=="object"&&e!==null){let r=e,n=r[t]??r.items??r.data;if(Array.isArray(n))return n}return e}o(li,"rows");function fs(e,t){if(typeof e=="object"&&e!==null&&!Array.isArray(e)){let r=e,n=r[t]??r.data;if(typeof n=="object"&&n!==null)return n}return e}o(fs,"unwrap");function rt(e){let{runtime:t,userRef:r,scopeEpoch:n}=pe();return useMemo(()=>{if(e)return e;if(r===null)return null;let{services:i}=t.registry;return zr({auth:i.authFor(r),telemetry:i.telemetry,...i.errorPolicy?{errorPolicy:i.errorPolicy}:{}})},[t,r,n,e])}o(rt,"useTelevetBookingController");function ys(){let{userRef:e}=pe(),t=Re("televet");return useMemo(()=>({available:t.enabled&&e!==null,isPending:t.isPending}),[t.enabled,t.isPending,e])}o(ys,"useTelevetBookingAvailable");function je(e,t,r){let[n,i]=useState(()=>({key:e,data:null,isPending:t&&r!==null,error:null})),[l,s]=useState(0),a=useRef(r);a.current=r,useEffect(()=>{let u=a.current;if(!t||u===null){i({key:e,data:null,isPending:false,error:null});return}let p=new AbortController,m=true;return i(y=>y.key===e?{...y,isPending:true,error:null}:{key:e,data:null,isPending:true,error:null}),(async()=>{let y;try{y=await u(p.signal);}catch{m&&i({key:e,data:null,isPending:false,error:null});return}m&&(y.ok?i({key:e,data:y.value,isPending:false,error:null}):i({key:e,data:null,isPending:false,error:y.error}));})(),()=>{m=false,p.abort();}},[e,t,l]);let d=useCallback(()=>s(u=>u+1),[]),c=n.key===e;return useMemo(()=>({enabled:t,data:c?n.data:null,isPending:t&&(!c||n.isPending),isError:c&&n.error!==null,error:c?n.error:null,refetch:d}),[t,c,n.data,n.isPending,n.error,d])}o(je,"useTelevetRead");function Mr(e,t){let r=e?.trim()??"",n=t?.statePolicy!==void 0&&de(r),i=t?.statePolicy;return je(`state-policy:${r}`,n,n&&i?l=>i.call(t,r,l):null)}o(Mr,"useTelevetStatePolicy");function jr(e){let t=e?.entitlement!==void 0,r=e?.entitlement;return je("entitlement",t,t&&r?n=>r.call(e,n):null)}o(jr,"useTelevetBookingEntitlement");function Ur(e){let t=e?.cancellationPolicy!==void 0,r=e?.cancellationPolicy;return je("cancellation-policy",t,t&&r?n=>r.call(e,n):null)}o(Ur,"useTelevetCancellationPolicy");function Wr(e,t){let r=e?.trim()??"",n=t?.clinicians!==void 0&&de(r),i=t?.clinicians;return je(`clinicians:${r}`,n,n&&i?l=>i.call(t,r,l):null)}o(Wr,"useTelevetClinicians");function nt(e,t){let r=e?.trim()??"",n=t!==null&&r.length>0;return je(`slots:${r}`,n,n&&t?i=>t.slots(r,i):null)}o(nt,"useTelevetSlots");function qr(e){let t=e?.nextSlot!==void 0,r=e?.nextSlot;return je("next-slot",t,t&&r?n=>r.call(e,n):null)}o(qr,"useTelevetNextSlot");function Kr(e){let[t,r]=useState(null),n=useRef(true),i=useRef(false),l=useRef(e);l.current=e,useEffect(()=>(n.current=true,()=>{n.current=false;}),[]);let s=useCallback((...a)=>{let d=l.current;if(d===null||i.current)return;let c=a[a.length-1],u=typeof c=="object"&&c!==null&&("onSuccess"in c||"onError"in c),p=u?c:void 0,m=u?a.slice(0,-1):a;i.current=true,r({variables:m[0]??null}),(async()=>{let y=null;try{y=await d(...m);}catch{y=null;}i.current=false,n.current&&r(null),y!==null&&(y.ok?p?.onSuccess?.(y.value):p?.onError?.(y.error));})();},[]);return useMemo(()=>({isPending:t!==null,variables:t?.variables??null,mutate:s}),[t,s])}o(Kr,"useTelevetWrite");function ot(e){return Kr(e?t=>e.holdSlot(t):null)}o(ot,"useTelevetHoldSlot");function $r(e){return Kr(e?(t,r)=>e.book(t,r):null)}o($r,"useTelevetBookConsult");function Yr(e,t){return Kr(t&&e?r=>t.reschedule(e,r):null)}o(Yr,"useTelevetRescheduleConsult");var Ue=2;function mi(e){return typeof e!="number"||!Number.isInteger(e)?Ue:e<1?1:e>6?6:e}o(mi,"headingLevel");function it(e){return e>=6?6:e+1}o(it,"nextHeadingLevel");function fe(e){return `h${String(e)}`}o(fe,"headingTag");var vs=it(Ue),Gr=createContext(vs);function Oe(){return useContext(Gr)}o(Oe,"useNestedHeadingLevel");var ee=44;function M(){let e=w();return useMemo(()=>hs(e),[e])}o(M,"useBookingStyles");function W({label:e,onPress:t,kind:r="primary",disabled:n=false,loading:i=false,fullWidth:l=true,accessibilityLabel:s,testID:a,style:d}){let c=M(),u=n||i;return jsx("button",{type:"button",onClick:t,disabled:u,"aria-busy":i||void 0,...s&&s!==e?{"aria-label":s}:{},"data-testid":a,style:{...c.button,...r==="primary"?c.buttonPrimary:c.buttonSecondary,...l?c.buttonFull:c.buttonAuto,...u?c.buttonDisabled:null,...d},children:e})}o(W,"TelevetButton");function V({title:e,message:t,actionLabel:r,onAction:n,testID:i}){let l=M(),s=fe(Oe()),a=typeof r=="string"&&r.length>0&&typeof n=="function";return jsxs("div",{style:l.stateCard,"data-testid":i,children:[jsx(s,{style:l.stateTitle,children:e}),t?jsx("p",{style:l.stateMessage,children:t}):null,a?jsx(W,{label:r,onPress:n,kind:"secondary",fullWidth:false}):null]})}o(V,"TelevetStateCard");function Ae({height:e,width:t="100%",testID:r}){let n=M();return jsx("span",{"aria-hidden":"true","data-testid":r,style:{...n.skeleton,height:e,width:t}})}o(Ae,"TelevetSkeletonBlock");function J({message:e,assertive:t=false,testID:r,style:n}){let i=M();return jsx("p",{role:t?"alert":"status","data-testid":r,style:{...i.failure,...n},children:e})}o(J,"TelevetFailureLine");function hs(e){let{color:t,space:r,radius:n,type:i,slots:l}=e,{size:s,lineHeight:a}=i,d=o(c=>`${String(c)}px`,"rem");return {screen:{display:"flex",flexDirection:"column",minHeight:0,flex:"1 1 auto",gap:d(r.md),paddingLeft:d(r.xl),paddingRight:d(r.xl),boxSizing:"border-box"},stepFill:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,gap:d(r.md)},list:{display:"flex",flexDirection:"column",gap:d(r.sm)},button:{minHeight:ee,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:d(r.sm),paddingLeft:d(r.xl),paddingRight:d(r.xl),paddingTop:d(r.sm),paddingBottom:d(r.sm),borderRadius:d(n.pill),borderStyle:"solid",borderWidth:0,cursor:"pointer",textAlign:"center",...E(e,"medium"),fontSize:d(s.body),lineHeight:String(a.snug),boxSizing:"border-box"},buttonFull:{alignSelf:"stretch",width:"100%"},buttonAuto:{alignSelf:"flex-start",minWidth:ee},buttonPrimary:{backgroundColor:t.primary,color:t.onPrimary,...kt(l.primaryButton),...Ct(l.primaryButton)},buttonSecondary:{borderWidth:1,borderColor:t.brandBorder,backgroundColor:"transparent",color:t.brand,...l.primaryButton?.borderRadius===void 0?null:{borderRadius:d(l.primaryButton.borderRadius)},...l.primaryButton?.borderColor===void 0?null:{borderColor:l.primaryButton.borderColor}},buttonDisabled:{opacity:.45,cursor:"not-allowed"},stateCard:{minHeight:140,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",gap:d(r.sm),padding:d(r.lg),borderRadius:d(n.lg),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,boxSizing:"border-box"},stateTitle:{margin:0,...E(e,"medium"),color:t.brand,fontSize:d(s.subtitle),lineHeight:String(a.snug)},stateMessage:{margin:0,...E(e,"regular"),color:t.text.metaCool,fontSize:d(s.body),lineHeight:String(a.normal)},skeleton:{display:"block",borderRadius:d(n.md),backgroundColor:t.skeleton,flexShrink:0},failure:{margin:0,...E(e,"regular"),color:t.danger,fontSize:d(s.caption),lineHeight:String(a.normal)},stepTitle:{margin:0,...E(e,"bold"),color:t.brand,fontSize:d(s.verdict),lineHeight:String(a.snug),textAlign:"center"},stepHelp:{margin:0,...E(e,"regular"),color:t.text.metaCool,fontSize:d(s.body),lineHeight:String(a.normal),textAlign:"center"},divider:{height:1,backgroundColor:t.brandBorder,flexShrink:0},scrollRoot:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0},scrollBody:{flex:"1 1 auto",minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},scrollFooter:{flexShrink:0,paddingTop:d(r.md),paddingBottom:d(r.lg)}}}o(hs,"makeBookingStyles");function gi(e){return `televet-consult-${e}`}o(gi,"televetConsultCalendarKey");function Qr({consult:e,petName:t,onDone:r,onAddToCalendar:n,canJoinInApp:i=false}){let l=w(),s=M(),a=useMemo(()=>ks(l),[l]),d=`${useId()}-booked-title`,c=fe(Oe()),[u,p]=useState("idle"),m=o(async()=>{if(!n)return;p("saving");let b=new Date(e.scheduledAt);if(Number.isNaN(b.getTime())){p("failed");return}let S=await bt(n,{key:gi(e.consultId),title:f.visit.title,startDate:b,endDate:new Date(b.getTime()+Me*6e4),alarmOffsetMinutes:-30});p(S.ok&&S.value===true?"saved":"failed");},"addToCalendar"),y=[f.booked.remindPromise,te(f.booked.summaryPromise,{pet:t??""}),...i?[f.booked.joinPromise]:[]];return ce()?jsxs("section",{style:a.screen,"aria-labelledby":d,"data-testid":"televet-booked",children:[jsx("div",{style:a.header,children:jsx(W,{label:f.doneCta,kind:"secondary",fullWidth:false,onPress:r,testID:"televet-booked-done"})}),jsx("div",{"aria-hidden":"true",style:a.avatar}),jsx(c,{id:d,style:a.title,children:f.bookedTitle}),jsx("p",{style:a.when,children:jsx("time",{dateTime:e.scheduledAt,children:re(e.scheduledAt)})}),jsx("ol",{style:a.steps,"data-testid":"televet-booked-steps",children:y.map((b,S)=>jsxs("li",{style:a.step,children:[jsx("span",{"aria-hidden":"true",style:a.stepNumber,children:String(S+1)}),jsx("span",{style:a.stepText,children:b.trim()})]},b))}),jsxs("div",{style:a.actions,children:[n?jsx(W,{label:u==="saved"?f.booked.calendarAdded:f.addToCalendarCta,kind:"primary",loading:u==="saving",disabled:u==="saving"||u==="saved",onPress:()=>{m();},testID:"televet-booked-calendar"}):null,u==="failed"?jsx("p",{role:"status",style:{...s.failure,...a.calendarNote},"data-testid":"televet-booked-calendar-failed",children:f.booked.calendarFailedBody}):null,jsx(W,{label:t?te(f.booked.backToPet,{pet:t}):f.doneCta,kind:"secondary",onPress:r,testID:"televet-booked-back"})]})]}):jsx("div",{style:a.screen,"data-testid":"televet-booked-copy-unapproved"})}o(Qr,"TelevetBookedScreen");function ks(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(d=>`${String(d)}px`,"rem");return {screen:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,gap:a(r.md),paddingLeft:a(r.xl),paddingRight:a(r.xl),boxSizing:"border-box"},header:{display:"flex",justifyContent:"flex-end",paddingBottom:a(r.lg)},avatar:{alignSelf:"center",width:120,height:120,flexShrink:0,borderRadius:"50%",backgroundColor:t.surfaceSubtle,borderStyle:"solid",borderWidth:2,borderColor:t.success,boxSizing:"border-box"},title:{margin:0,textAlign:"center",...E(e,"bold"),color:t.brand,fontSize:a(l.verdict),lineHeight:String(s.tight),letterSpacing:"-0.7px",paddingTop:a(r.lg)},when:{margin:0,textAlign:"center",...E(e,"regular"),color:t.text.metaCool,fontSize:a(l.subtitle),lineHeight:String(s.normal)},steps:{listStyle:"none",margin:0,marginTop:a(r.xl),padding:a(r.lg),borderRadius:a(n.lg),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,display:"flex",flexDirection:"column",gap:a(r.lg),boxSizing:"border-box"},step:{display:"flex",flexDirection:"row",alignItems:"flex-start",gap:a(r.md)},stepNumber:{width:26,height:26,flexShrink:0,borderRadius:"50%",backgroundColor:t.primary,display:"inline-flex",alignItems:"center",justifyContent:"center",...E(e,"medium"),color:t.onPrimary,fontSize:a(l.caption),lineHeight:"1"},stepText:{flex:"1 1 auto",minWidth:0,...E(e,"regular"),color:t.brand,fontSize:a(l.body),lineHeight:String(s.normal)},actions:{marginTop:"auto",paddingBottom:a(r.xl),display:"flex",flexDirection:"column",gap:a(r.md)},calendarNote:{textAlign:"center"}}}o(ks,"makeStyles");var at=Object.freeze({position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0});var bi='button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';function hi(e){return e.tagName==="DIALOG"}o(hi,"isDialogElement");function Si(e,t,r){let n=useRef(null),i=useRef(false),l=useRef(null),s=useRef(r);s.current=r;let a=useCallback(()=>{if(!i.current)return;i.current=false;let u=s.current===void 0?l.current:s.current.current;l.current=null,u&&u.isConnected&&u.focus();},[]);useEffect(()=>{if(!e){a();return}if(!i.current){let m=typeof document>"u"?null:document.activeElement;l.current=m instanceof HTMLElement?m:null;}i.current=true;let u=n.current;if(u===null)return;if(!hi(u)){u.contains(document.activeElement)||(u.querySelector(bi)??u).focus();return}let p=u;typeof p.showModal=="function"?p.open||p.showModal():p.setAttribute("open","");},[e,a]),useEffect(()=>a,[a]);let d=useCallback(u=>{let p=n.current;if(p===null)return;if(u.key==="Escape"&&!hi(p)){u.preventDefault(),u.stopPropagation(),t();return}if(u.key!=="Tab")return;let m=Array.from(p.querySelectorAll(bi)),y=m[0],b=m[m.length-1];if(!y||!b){u.preventDefault();return}let S=document.activeElement;u.shiftKey&&(S===y||!p.contains(S))?(u.preventDefault(),b.focus()):!u.shiftKey&&(S===b||!p.contains(S))&&(u.preventDefault(),y.focus());},[t]),c=useCallback(u=>{u.preventDefault(),t();},[t]);return {dialogRef:n,onKeyDown:d,onCancel:c}}o(Si,"useModalDialog");function Zr({step:e,furthestIndex:t,title:r,canGoBack:n,isDirty:i,onBack:l,onClose:s,onConfirmDiscard:a,headingLevel:d=Ue}){let c=w(),u=useMemo(()=>ki(c),[c]),[p,m]=useState(false),y=useRef(null),S=`${useId()}-close-hint`,h=fe(d);useEffect(()=>{if(!i||typeof window>"u")return;let k=o(A=>{A.preventDefault(),A.returnValue="";},"onBeforeUnload");return window.addEventListener("beforeunload",k),()=>window.removeEventListener("beforeunload",k)},[i]);let I=useCallback(()=>{if(!i){s();return}let k={title:f.chrome.discardTitle,body:f.chrome.discardBody,confirmLabel:f.chrome.discardConfirmCta,keepLabel:f.chrome.discardKeepCta};if(a){Promise.resolve(a(k)).then(A=>{A&&s();},()=>{});return}m(true);},[i,s,a]),P=Ie.length,D=e==="booked"?P:Math.min(P,t+1),B=D/P;return jsxs("div",{style:u.wrap,children:[jsxs("header",{style:u.bar,children:[jsx("div",{style:u.side,children:n?jsx("button",{type:"button",onClick:l,"aria-label":Ci,"data-testid":"televet-booking-back",style:u.tap,children:jsx("span",{"aria-hidden":"true",style:u.chevron})}):null}),jsx(h,{style:u.title,children:r??f.navTitle}),jsxs("div",{style:{...u.side,...u.sideRight},children:[jsx("button",{type:"button",ref:y,onClick:I,"aria-describedby":S,"data-testid":"televet-booking-close",style:{...u.tap,...u.closeTap},children:jsx("span",{style:u.close,children:f.close})}),jsx("span",{id:S,style:at,children:f.chrome.closeHint})]})]}),jsx("p",{style:at,"data-testid":"televet-booking-progress-label",children:te(f.loading.progressTemplate,{step:String(D),total:String(P)})}),jsx("div",{"aria-hidden":"true",style:u.railTrack,children:jsx("div",{style:{...u.railFill,width:`${String(Math.round(B*100))}%`},"data-testid":"televet-booking-rail"})}),p?jsx(ws,{onKeep:()=>m(false),onLeave:()=>{m(false),s();},returnFocusTo:y}):null]})}o(Zr,"TelevetBookingChrome");function ws({onKeep:e,onLeave:t,returnFocusTo:r}){let n=w(),i=useMemo(()=>ki(n),[n]),{dialogRef:l,onKeyDown:s,onCancel:a}=Si(true,e,r),d=useId(),c=`${d}-discard-title`,u=`${d}-discard-body`;return jsxs("dialog",{ref:l,onKeyDown:s,onCancel:a,"aria-labelledby":c,"aria-describedby":u,"data-testid":"televet-booking-discard",style:i.dialog,children:[jsx("h2",{id:c,style:i.dialogTitle,children:f.chrome.discardTitle}),jsx("p",{id:u,style:i.dialogBody,children:f.chrome.discardBody}),jsxs("div",{style:i.dialogActions,children:[jsx(W,{label:f.chrome.discardKeepCta,onPress:e,kind:"primary",fullWidth:false,testID:"televet-booking-discard-keep"}),jsx(W,{label:f.chrome.discardConfirmCta,onPress:t,kind:"secondary",fullWidth:false,testID:"televet-booking-discard-leave"})]})]})}o(ws,"DiscardDialog");var Ci="Back";function ki(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(c=>`${String(c)}px`,"rem"),d={background:"transparent",borderStyle:"none",padding:0,cursor:"pointer"};return {wrap:{backgroundColor:t.surface,flexShrink:0},bar:{display:"flex",flexDirection:"row",alignItems:"center",paddingLeft:a(r.lg),paddingRight:a(r.lg),minHeight:56,boxSizing:"border-box"},side:{width:64,flexShrink:0,display:"flex",alignItems:"center"},sideRight:{justifyContent:"flex-end"},tap:{...d,minHeight:ee,minWidth:ee,display:"inline-flex",alignItems:"center",justifyContent:"center"},closeTap:{justifyContent:"flex-end"},chevron:{display:"block",width:10,height:10,borderLeftStyle:"solid",borderBottomStyle:"solid",borderLeftWidth:2,borderBottomWidth:2,borderColor:t.brand,transform:"rotate(45deg)"},title:{margin:0,flex:"1 1 auto",minWidth:0,textAlign:"center",...E(e,"medium"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.normal)},close:{...E(e,"medium"),color:t.linkInk,fontSize:a(l.subtitle),lineHeight:String(s.normal)},railTrack:{height:4,backgroundColor:t.brandBorder},railFill:{height:4,backgroundColor:t.success},dialog:{margin:"auto",maxWidth:420,width:"calc(100% - 32px)",boxSizing:"border-box",padding:a(r.lg),borderRadius:a(n.lg),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,backgroundColor:t.surface,color:t.text.primary},dialogTitle:{margin:0,...E(e,"medium"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.snug)},dialogBody:{margin:0,paddingTop:a(r.sm),...E(e,"regular"),color:t.text.metaCool,fontSize:a(l.body),lineHeight:String(s.normal)},dialogActions:{display:"flex",flexDirection:"row",flexWrap:"wrap",gap:a(r.sm),paddingTop:a(r.lg)}}}o(ki,"makeStyles");function Ri(e){let t=[],r=Is(e.ageYears);r!==null&&t.push(`${String(r)} yr${r===1?"":"s"} old`);let n=e.weightKg;typeof n=="number"&&Number.isFinite(n)&&n>0&&t.push(`${String(Math.round(n))} kg`);let i=e.breed?.trim();return i&&t.push(i),t.join(" \xB7 ")}o(Ri,"formatTelevetPetMetaLine");function Is(e){if(typeof e!="number"||!Number.isFinite(e))return null;let t=Math.floor(e);return t>=0?t:null}o(Is,"wholeYears");function en({media:e,onChange:t,onPickMedia:r,listLabel:n}){let i=w(),l=useMemo(()=>Bs(i),[i]),s=Dt-e.length,[a,d]=useState(false);if(!r)return null;let c=o(async()=>{if(!(a||s<=0)){d(true);try{let u=await bt(r,s);if(!u.ok||u.value===null||u.value.length===0)return;let p=new Set(e.map(y=>y.uri)),m=u.value.filter(y=>typeof y?.uri=="string"&&y.uri.length>0&&!p.has(y.uri));if(m.length===0)return;t([...e,...m].slice(0,Dt));}finally{d(false);}}},"pick");return jsxs("ul",{role:"list","aria-label":n,style:l.row,children:[e.map((u,p)=>jsxs("li",{style:l.thumb,children:[jsx("img",{src:u.uri,alt:u.filename,style:l.thumbImage}),u.mimeType.startsWith("video/")?jsx("span",{"aria-hidden":"true",style:l.videoBadge,"data-testid":`televet-intake-media-video-${String(p)}`,children:Ds}):null,jsx("button",{type:"button",onClick:()=>t(e.filter((m,y)=>y!==p)),"aria-label":`${f.removePhotoLabel}: ${u.filename}`,"data-testid":`televet-intake-media-remove-${String(p)}`,style:l.remove,children:jsx("span",{"aria-hidden":"true",style:l.removeGlyph,children:Fs})})]},`${u.uri}-${String(p)}`)),s>0?jsx("li",{style:l.addItem,children:jsx("button",{type:"button",onClick:()=>{c();},disabled:a,"aria-busy":a||void 0,"data-testid":"televet-intake-add-media",style:{...l.dropzone,...a?l.dropzoneBusy:null},children:jsx("span",{style:l.dropzoneText,children:f.addPhotoCta})})}):null]})}o(en,"TelevetIntakeMedia");var Fs="\xD7",Ds="\u25B6",qt=92;function Bs(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(d=>`${String(d)}px`,"rem");return {row:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"row",flexWrap:"wrap",gap:a(r.md),paddingTop:a(r.sm)},thumb:{position:"relative",width:qt,height:qt,borderRadius:a(n.md),backgroundColor:t.surfaceSubtle},thumbImage:{width:"100%",height:"100%",objectFit:"cover",borderRadius:a(n.md),display:"block"},videoBadge:{position:"absolute",left:6,bottom:6,paddingLeft:6,paddingRight:6,paddingTop:2,paddingBottom:2,borderRadius:a(n.sm),backgroundColor:t.shadow,color:t.text.onBrand,fontSize:a(l.nano),lineHeight:"1"},addItem:{display:"flex"},remove:{position:"absolute",top:-8,right:-8,width:ee-16,height:ee-16,borderRadius:"50%",borderStyle:"none",backgroundColor:t.text.metaCool,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0},removeGlyph:{...E(e,"medium"),color:t.surface,fontSize:a(l.subtitle),lineHeight:"1"},dropzone:{width:qt,height:qt,borderRadius:a(n.md),borderWidth:1,borderStyle:"dashed",borderColor:t.brandBorder,backgroundColor:"transparent",display:"inline-flex",alignItems:"center",justifyContent:"center",paddingLeft:a(r.sm),paddingRight:a(r.sm),cursor:"pointer",boxSizing:"border-box"},dropzoneBusy:{opacity:.6,cursor:"progress"},dropzoneText:{...E(e,"mono"),color:t.text.metaCool,fontSize:a(l.nano),lineHeight:String(s.normal),letterSpacing:"0.3px",textAlign:"center"}}}o(Bs,"makeStyles");function Be({label:e,value:t,last:r=false,testID:n}){let i=w(),l=useMemo(()=>nn(i),[i]);return jsxs("div",{style:{...l.row,...r?l.rowLast:null},"data-testid":n,children:[jsx("dt",{style:l.rowLabel,children:e}),jsx("dd",{style:l.rowValue,children:t})]})}o(Be,"TelevetSummaryRow");function st({label:e,checked:t,onToggle:r,testID:n}){let i=w(),l=useMemo(()=>nn(i),[i]);return jsxs("label",{style:l.consent,children:[jsx("input",{type:"checkbox",checked:t,onChange:s=>r(s.currentTarget.checked),"data-testid":n,style:at}),jsx("span",{"aria-hidden":"true",style:{...l.box,...t?l.boxChecked:null},children:t?jsx("span",{style:l.tick,children:Ls}):null}),jsx("span",{style:l.consentLabel,children:e})]})}o(st,"TelevetConsentCheckbox");var Ls="\u2713";function rn({children:e,testID:t}){let r=w(),n=useMemo(()=>nn(r),[r]);return jsx("dl",{style:n.card,"data-testid":t,children:e})}o(rn,"TelevetSummaryCard");function nn(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(d=>`${String(d)}px`,"rem");return {card:{margin:0,borderRadius:a(n.lg),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,paddingLeft:a(r.lg),paddingRight:a(r.lg),boxSizing:"border-box"},row:{display:"flex",flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",gap:a(r.lg),paddingTop:a(r.lg),paddingBottom:a(r.lg),borderBottomStyle:"solid",borderBottomWidth:1,borderBottomColor:t.brandBorder},rowLast:{borderBottomWidth:0},rowLabel:{margin:0,flexShrink:0,...E(e,"regular"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.snug)},rowValue:{margin:0,marginInlineStart:0,minWidth:0,textAlign:"right",overflowWrap:"anywhere",...E(e,"medium"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.snug)},consent:{display:"flex",flexDirection:"row",alignItems:"flex-start",gap:a(r.md),minHeight:ee,padding:a(r.lg),borderRadius:a(n.md),backgroundColor:t.surfaceSubtle,cursor:"pointer",boxSizing:"border-box"},box:{width:22,height:22,flexShrink:0,borderRadius:a(n.xs),borderStyle:"solid",borderWidth:1.5,borderColor:t.brand,backgroundColor:t.surface,display:"inline-flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},boxChecked:{backgroundColor:t.primary,borderColor:t.primary},tick:{...E(e,"bold"),color:t.onPrimary,fontSize:a(l.caption),lineHeight:"1"},consentLabel:{flex:"1 1 auto",minWidth:0,overflowWrap:"anywhere",...E(e,"regular"),color:t.text.metaCool,fontSize:a(l.body),lineHeight:String(s.normal)}}}o(nn,"makeStyles");function on({slots:e,selectedDayKey:t,onSelectDay:r,groupLabel:n}){let i=w(),l=useMemo(()=>zs(i),[i]),s=useMemo(()=>$t(e),[e]),a=useRef(new Map),d=s[0],c=t??d?.key??null,u=useCallback(p=>{let m=p.key==="ArrowRight"||p.key==="ArrowDown"?1:p.key==="ArrowLeft"||p.key==="ArrowUp"?-1:0,y=p.key==="Home"?0:p.key==="End"?s.length-1:null;if(m===0&&y===null)return;let b=s.findIndex(I=>I.key===c);if(b<0)return;let S=y??Math.min(s.length-1,Math.max(0,b+m)),h=s[S];h===void 0||h.key===c||(p.preventDefault(),r(h),a.current.get(h.key)?.focus());},[s,c,r]);return d===void 0?null:jsxs("div",{children:[jsx("p",{"aria-hidden":"true",style:l.month,"data-testid":"televet-day-strip-month",children:ii(d.iso)}),jsx("div",{role:"radiogroup","aria-label":n,onKeyDown:u,style:l.strip,"data-testid":"televet-day-strip",children:s.map(p=>{let m=p.key===c;return jsxs("button",{ref:y=>{y?a.current.set(p.key,y):a.current.delete(p.key);},type:"button",role:"radio","aria-checked":m,tabIndex:m?0:-1,onClick:()=>r(p),"aria-label":ai(p.iso),"data-testid":`televet-day-${p.key}`,style:{...l.day,...m?l.daySelected:null},children:[jsx("span",{"aria-hidden":"true",style:{...l.dayWeekday,...m?l.dayTextSelected:null},children:p.weekday}),jsx("span",{"aria-hidden":"true",style:{...l.dayNumber,...m?l.dayTextSelected:null},children:p.dayNumber})]},p.key)})})]})}o(on,"TelevetDayStrip");function $t(e){let t=new Map;for(let r of e){let n=zt(r.startsAt);if(t.has(n))continue;let i=new Date(r.startsAt);Number.isNaN(i.getTime())||t.set(n,Object.freeze({key:n,iso:r.startsAt,weekday:i.toLocaleDateString(void 0,{weekday:"short"}),dayNumber:String(i.getDate())}));}return Object.freeze([...t.values()])}o($t,"televetDaysFromSlots");function zs(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(d=>`${String(d)}px`,"rem");return {month:{margin:0,textAlign:"center",...E(e,"medium"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.snug),paddingBottom:a(r.md)},strip:{display:"flex",flexDirection:"row",gap:a(r.sm),paddingLeft:a(r.xs),paddingRight:a(r.xs),overflowX:"auto",overscrollBehaviorX:"contain",scrollSnapType:"x proximity"},day:{width:52,flexShrink:0,scrollSnapAlign:"center",minHeight:ee,paddingTop:a(r.md),paddingBottom:a(r.md),borderRadius:a(n.md),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,backgroundColor:"transparent",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,cursor:"pointer",boxSizing:"border-box"},daySelected:{backgroundColor:t.primary,borderColor:t.primary},dayWeekday:{...E(e,"mono"),color:t.text.secondary,fontSize:a(l.tiny),lineHeight:String(s.tight)},dayNumber:{...E(e,"medium"),color:t.brand,fontSize:a(l.heading),lineHeight:String(s.tight)},dayTextSelected:{color:t.onPrimary}}}o(zs,"makeStyles");function dt({slots:e,busySlotId:t,onPick:r,header:n,dayGroupLabel:i,timeGroupLabel:l,rowTestIdPrefix:s="televet-slot",testID:a="televet-slot-list"}){let d=w(),c=useMemo(()=>js(d),[d]),u=useMemo(()=>$t(e),[e]),p=`${useId()}-zone`,[m,y]=useState(null),b=m??u[0]?.key??null,S=useMemo(()=>b?e.filter(R=>zt(R.startsAt)===b):[],[e,b]),h=S[0],I=t!==null,P=h?Vt(h.startsAt):null;return jsxs("div",{style:c.root,"data-testid":a,children:[n,jsx(on,{slots:e,selectedDayKey:b,onSelectDay:R=>y(R.key),groupLabel:i}),P?jsx("p",{id:p,style:c.zone,"data-testid":"televet-slot-zone",children:P}):null,jsx("div",{style:c.gridScroll,children:jsx("ul",{role:"list","aria-label":l,...P?{"aria-describedby":p}:{},"aria-busy":I||void 0,style:c.grid,children:S.map(R=>{let D=t===R.slotId;return jsx("li",{style:c.gridItem,children:jsx("button",{type:"button",onClick:()=>r(R),disabled:I,"aria-busy":D||void 0,"aria-label":re(R.startsAt),"data-testid":`${s}-${R.slotId}`,style:{...c.chip,...D?c.chipBusy:null,...I&&!D?c.chipDisabled:null},children:jsx("span",{"aria-hidden":"true",style:{...c.chipLabel,...D?c.chipLabelBusy:null},children:tt(R.startsAt)})})},R.slotId)})})})]})}o(dt,"TelevetSlotPicker");function js(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(d=>`${String(d)}px`,"rem");return {root:{display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0},gridScroll:{flex:"1 1 auto",minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},zone:{margin:0,textAlign:"center",...E(e,"mono"),color:t.text.secondary,fontSize:a(l.tiny),lineHeight:String(s.normal),letterSpacing:"0.4px",paddingTop:a(r.md),paddingBottom:a(r.md)},grid:{listStyle:"none",margin:0,padding:0,paddingBottom:a(r.xl),display:"flex",flexDirection:"row",flexWrap:"wrap",gap:a(r.md)},gridItem:{display:"flex",flexGrow:1,flexBasis:"28%",minWidth:96},chip:{width:"100%",minHeight:48,borderRadius:a(n.pill),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,backgroundColor:"transparent",display:"inline-flex",alignItems:"center",justifyContent:"center",paddingLeft:a(r.md),paddingRight:a(r.md),cursor:"pointer",boxSizing:"border-box"},chipBusy:{backgroundColor:t.primary,borderColor:t.primary},chipDisabled:{opacity:.45,cursor:"not-allowed"},chipLabel:{...E(e,"regular"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.tight)},chipLabelBusy:{color:t.onPrimary}}}o(js,"makeStyles");function he(e){let{color:t,space:r,radius:n,type:i}=e,{size:l,lineHeight:s}=i,a=o(d=>`${String(d)}px`,"rem");return {marker:{minHeight:1},stepScroll:{paddingBottom:a(r.md)},visuallyHiddenHeading:{position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},petRow:{width:"100%",display:"flex",flexDirection:"row",alignItems:"center",gap:a(r.sm),minHeight:64,paddingLeft:a(r.md),paddingRight:a(r.md),paddingTop:a(r.sm),paddingBottom:a(r.sm),borderRadius:a(n.pill),borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,backgroundColor:"transparent",textAlign:"left",cursor:"pointer",boxSizing:"border-box"},petRowSelected:{borderColor:t.primary},petDisc:{width:28,height:28,flexShrink:0,borderRadius:"50%",backgroundColor:t.surfaceSubtle,display:"inline-flex",alignItems:"center",justifyContent:"center",...E(e,"medium"),color:t.brand,fontSize:a(l.caption),lineHeight:"1"},petRowText:{display:"flex",flexDirection:"column",minWidth:0,gap:2},petRowName:{...E(e,"medium"),color:t.brand,fontSize:a(l.body),lineHeight:String(s.snug),overflowWrap:"anywhere"},petRowMeta:{...E(e,"regular"),color:t.text.metaCool,fontSize:a(l.caption),lineHeight:String(s.normal),overflowWrap:"anywhere"},vetRow:{display:"flex",flexDirection:"row",alignItems:"center",gap:a(r.md)},vetAvatar:{width:64,height:64,flexShrink:0,borderRadius:"50%",backgroundColor:t.surfaceSubtle,display:"inline-flex",alignItems:"center",justifyContent:"center",...E(e,"medium"),color:t.brand,fontSize:a(l.heading),lineHeight:"1"},vetIdentity:{display:"flex",flexDirection:"column",flex:"1 1 auto",minWidth:0,gap:2},vetName:{margin:0,...E(e,"medium"),color:t.brand,fontSize:a(l.subtitle),lineHeight:String(s.snug)},vetCredentials:{margin:0,...E(e,"regular"),color:t.text.metaCool,fontSize:a(l.caption),lineHeight:String(s.normal)},vetRating:{margin:0,...E(e,"regular"),color:t.text.secondary,fontSize:a(l.caption),lineHeight:String(s.normal)},vetBio:{margin:0,...E(e,"regular"),color:t.brand,fontSize:a(l.body),lineHeight:String(s.normal)},reasonInput:{width:"100%",minHeight:120,resize:"vertical",borderStyle:"solid",borderWidth:1,borderColor:t.brandBorder,borderRadius:a(n.md),padding:a(r.md),backgroundColor:t.surface,...E(e,"regular"),color:t.text.primary,fontSize:a(l.body),lineHeight:String(s.normal),boxSizing:"border-box"},emergencyBanner:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:a(r.md),padding:a(r.lg),borderRadius:a(n.lg),borderStyle:"solid",borderWidth:1,borderColor:t.errorRed,backgroundColor:t.badgeBgCritical,boxSizing:"border-box"},emergencyTitle:{margin:0,...E(e,"bold"),color:t.errorRed,fontSize:a(l.subtitle),lineHeight:String(s.snug)},emergencyLede:{margin:0,...E(e,"regular"),color:t.text.primary,fontSize:a(l.body),lineHeight:String(s.normal)}}}o(he,"makeLocalStyles");function Yt(e,t){return t?e.find(n=>n.petRef===t||n.petId===t)?.name??null:null}o(Yt,"nameOf");function ct({headingRef:e,style:t,id:r,children:n}){let i=fe(Oe());return jsx(i,{ref:e,tabIndex:-1,style:t,...r===void 0?{}:{id:r},children:n})}o(ct,"StepHeading");function qs({style:e,children:t}){let r=fe(it(Oe()));return jsx(r,{style:e,children:t})}o(qs,"SubHeading");function Oi({headingRef:e,pets:t,isPending:r,isError:n,onRetry:i,selectedId:l,onSelect:s,onAddPet:a}){let d=M(),c=w(),u=useMemo(()=>he(c),[c]);return r?jsx("div",{role:"progressbar","aria-label":f.loading.pets,"aria-busy":"true",style:d.list,"data-testid":"televet-pets-loading",children:[0,1].map(p=>jsx(Ae,{height:64},p))}):n?jsx("div",{"data-testid":"televet-pets-error",children:jsx(V,{title:f.chrome.loadFailedTitle,actionLabel:f.chrome.retryCta,onAction:i})}):t.length===0?jsx("div",{"data-testid":"televet-pets-empty",children:jsx(V,{title:f.chrome.noPetsTitle,actionLabel:f.addPetCta,onAction:a})}):jsxs("div",{style:d.stepFill,children:[jsx(ct,{headingRef:e,style:d.stepTitle,children:f.petSelectTitle}),jsx("div",{style:{...d.scrollBody,...u.stepScroll},children:jsxs("ul",{role:"list",style:d.list,"data-testid":"televet-pets",children:[t.map(p=>{let m=l===p.petRef;return jsx(Ii,{name:p.name??"",meta:Ri(p),selected:m,onPress:()=>s(p.petRef),testID:`televet-pet-${p.petRef}`},p.petRef)}),a?jsx(Ii,{name:f.addPetCta,meta:"",selected:false,onPress:a,testID:"televet-pet-add",glyph:$s}):null]})})]})}o(Oi,"PetStep");function Ii({name:e,meta:t,selected:r,onPress:n,testID:i,glyph:l}){let s=w(),a=useMemo(()=>he(s),[s]);return jsx("li",{children:jsxs("button",{type:"button",onClick:n,"aria-pressed":r,"data-testid":i,style:{...a.petRow,...r?a.petRowSelected:null},children:[jsx("span",{"aria-hidden":"true",style:a.petDisc,children:l??Ai(e)}),jsxs("span",{style:a.petRowText,children:[jsx("span",{style:a.petRowName,children:e}),t?jsx("span",{style:a.petRowMeta,children:t}):null]})]})})}o(Ii,"PetRow");function Ai(e){let t=e.trim();return t.length===0?Ks:t.slice(0,1).toUpperCase()}o(Ai,"initialOf");function Fi({headingRef:e,clinicians:t,isPending:r,isError:n,selectedId:i,onSelect:l,onRetry:s}){let a=M(),d=w(),c=useMemo(()=>he(d),[d]);if(r)return jsx("div",{role:"progressbar","aria-label":f.loading.clinicians,"aria-busy":"true",style:a.list,"data-testid":"televet-clinicians-loading",children:jsx(Ae,{height:96})});if(n)return jsx("div",{"data-testid":"televet-clinicians-error",children:jsx(V,{title:f.chrome.loadFailedTitle,actionLabel:f.chrome.retryCta,onAction:s})});if(t.length===0)return jsx("div",{"data-testid":"televet-clinicians-empty",children:jsx(V,{title:f.noCliniciansTitle,message:f.noCliniciansBody,actionLabel:f.noCliniciansRetryCta,onAction:s})});let u=t.find(p=>p.clinicianId===i)??t[0];return u===void 0?null:jsxs("div",{style:a.list,"data-testid":"televet-clinicians",children:[jsx(ct,{headingRef:e,style:a.stepTitle,children:f.yourVetTitle}),jsxs("div",{style:c.vetRow,children:[jsx("span",{"aria-hidden":"true",style:c.vetAvatar,children:Ai(u.displayName)}),jsxs("div",{style:c.vetIdentity,children:[jsx("p",{style:c.vetName,children:u.displayName}),u.credentials?jsx("p",{style:c.vetCredentials,children:u.credentials}):null,u.rating!==null&&u.ratingCount!==null?jsx("p",{style:c.vetRating,"data-testid":"televet-vet-rating",children:`\u2605 ${String(u.rating)} \xB7 ${String(u.ratingCount)} ${f.reviewsLabel}`}):null]})]}),u.bio?jsx("p",{style:c.vetBio,"data-testid":"televet-vet-bio",children:u.bio}):null,jsx("div",{style:a.divider}),jsx(W,{label:f.continueCta,kind:"primary",onPress:()=>l(u.clinicianId),testID:`televet-clinician-${u.clinicianId}`})]})}o(Fi,"ClinicianStep");function Di({headingRef:e,slots:t,enabled:r,isPending:n,isError:i,busySlotId:l,failure:s,nextOpening:a,onPick:d,onRetry:c,onSeeOtherVets:u}){let p=M();return r?n?jsx("div",{role:"progressbar","aria-label":f.loading.slots,"aria-busy":"true",style:p.list,"data-testid":"televet-slots-loading",children:[0,1,2].map(m=>jsx(Ae,{height:48},m))}):i?jsx(V,{title:f.slotsErrorTitle,actionLabel:f.retryCta,onAction:c,testID:"televet-slots-error"}):t.length===0?jsx("div",{"data-testid":"televet-slots-empty",children:jsx(V,{title:f.noSlotsTitle,message:a?te(f.nextOpeningTemplate,{when:re(a.startsAt)}):void 0,actionLabel:a?f.seeOtherVetsCta:void 0,onAction:a?u:void 0})}):jsxs("div",{style:p.stepFill,"data-testid":"televet-slots",children:[jsx(ct,{headingRef:e,style:p.stepHelp,children:f.summaryWhen}),s==="expired"?jsx(J,{message:f.holdExpired}):null,s==="taken"?jsx(J,{message:f.slotTaken}):null,jsx(dt,{slots:t,busySlotId:l,onPick:d,dayGroupLabel:f.summaryWhen,timeGroupLabel:f.navTitle})]}):jsx("div",{"data-testid":"televet-slots-unavailable",children:jsx(V,{title:f.bookingPausedTitle})})}o(Di,"SlotStep");function Bi({headingRef:e,value:t,onChange:r,onNext:n,media:i,onChangeMedia:l,onPickMedia:s}){let a=M(),d=w(),c=useMemo(()=>he(d),[d]),u=useId(),p=`${u}-reason-heading`,m=`${u}-reason-help`,y=t.trim(),b=y.length>me,S=y.length>0&&!b;return jsxs("div",{style:a.scrollRoot,"data-testid":"televet-booking-reason",children:[jsx("div",{style:a.scrollBody,"data-testid":"televet-booking-reason-scroll",children:jsxs("div",{style:a.list,children:[jsx(ct,{headingRef:e,id:p,style:a.stepTitle,children:f.describeHeading}),jsx("p",{id:m,style:a.stepHelp,children:f.describeHelpLong}),jsx("textarea",{value:t,onChange:h=>r(h.currentTarget.value),"aria-labelledby":p,"aria-describedby":m,"aria-invalid":b||void 0,placeholder:f.reasonPlaceholder,style:c.reasonInput,"data-testid":"televet-reason-input"}),b?jsx(J,{message:f.reasonTooLong}):null,jsx(en,{media:i,onChange:l,listLabel:f.addPhotoCta,...s?{onPickMedia:s}:{}})]})}),jsx("div",{style:a.scrollFooter,children:jsx(W,{label:f.continueCta,kind:"primary",disabled:!S,onPress:n,testID:"televet-reason-next"})})]})}o(Bi,"ReasonStep");function Li({headingRef:e,when:t,clinician:r,petName:n,reason:i,shareRecords:l,onToggleShare:s,stateCode:a,stateAttested:d,onToggleStateAttest:c,cancellationTerms:u,termsAttested:p,onToggleTermsAttest:m,canConfirm:y,busy:b,failure:S,rateLimitMessage:h,onConfirm:I,emergency:P,onAcknowledgeEmergency:R,onSeeOtherVets:D}){let B=M(),k=w(),A=useMemo(()=>he(k),[k]);return jsxs("div",{style:B.scrollRoot,"data-testid":"televet-booking-review",children:[jsx("div",{style:B.scrollBody,"data-testid":"televet-booking-review-scroll",children:jsxs("div",{style:B.list,children:[jsx(ct,{headingRef:e,style:A.visuallyHiddenHeading,children:f.confirmCta}),jsxs(rn,{testID:"televet-review-summary",children:[n?jsx(Be,{label:f.summaryPet,value:n,testID:"televet-review-row-pet"}):null,r?jsx(Be,{label:f.summaryVet,value:r,testID:"televet-review-row-vet"}):null,jsx(Be,{label:f.summaryWhen,value:t,testID:"televet-review-row-when"}),jsx(Be,{label:f.summaryLength,value:te(f.summaryLengthTemplate,{n:String(Me)}),testID:"televet-review-row-length"}),i?jsx(Be,{label:f.summaryReason,value:i,last:true,testID:"televet-review-row-reason"}):null]}),jsx(st,{label:f.shareRecordsOff,checked:l,onToggle:s,testID:"televet-review-share-records"}),u?jsx(st,{label:u,checked:p,onToggle:m,testID:"televet-review-terms-attest"}):null,a?jsx(st,{label:te(f.stateAttestTemplate,{state:a}),checked:d,onToggle:c,testID:"televet-review-state-attest"}):null,P?jsxs("div",{role:"alert",style:A.emergencyBanner,"data-testid":"televet-review-emergency",children:[jsx(qs,{style:A.emergencyTitle,children:f.emergency.bannerTitle}),jsx("p",{style:A.emergencyLede,children:f.emergency.lede}),P.length>0?jsx("p",{style:A.emergencyLede,"data-testid":"televet-review-emergency-categories",children:P.join(", ")}):null,jsx(W,{label:f.emergency.keepBookingCta,kind:"secondary",loading:b,disabled:b,onPress:R,testID:"televet-review-emergency-ack"})]}):null,S==="failed"?jsx(J,{message:f.confirmFailed}):null,S==="clinician_unavailable"?jsxs("div",{style:B.list,"data-testid":"televet-review-clinician-unavailable",children:[jsx(J,{message:f.confirmFailed}),jsx(W,{label:f.seeOtherVetsCta,kind:"secondary",onPress:D,testID:"televet-review-see-other-vets"})]}):null,S==="rate_limited"&&h?jsx(J,{message:h,testID:"televet-review-rate-limited"}):null,S==="rate_limited"&&!h?jsx(J,{message:f.confirmFailed}):null,S==="not_entitled"?jsx(J,{message:f.confirmNotEntitled,testID:"televet-review-not-entitled"}):null]})}),P?null:jsx("div",{style:B.scrollFooter,children:jsx(W,{label:f.confirmCta,kind:"primary",loading:b,disabled:!y||b||!!a&&!d||!!u&&!p,onPress:I,testID:"televet-review-confirm"})})]})}o(Li,"ReviewStep");var Ks="\u25CB",$s="+";function ln(e){let{petRef:t,usState:r,controller:n,onBooked:i,onExit:l,onAddPet:s,onPickMedia:a,onAddToCalendar:d,onConfirmDiscard:c,onRequestLocation:u,locationStatus:p="unknown",canJoinInApp:m=false,renderUnavailable:y,headingLevel:b,style:S,testID:h}=He(e,["onBooked","onExit","onAddPet","onRequestLocation"]),I=mi(b??Ue),P=it(I),R=M(),D=w(),B=useMemo(()=>he(D),[D]),k=rt(n),A=Ko(),U=A.pets,x=U.length,F=useMemo(()=>({ownedPetCount:x}),[x]),[z,K]=useReducer((j,oe)=>Fr(j,oe,F),void 0,()=>Or({ownedPetCount:0},{petId:t??null,state:r??null})),_=useCallback(j=>K(j),[]),[ne,dn]=useState(""),[Ee,N]=useState(null),[Te,ft]=useState(null),[yt,Ne]=useState(null),[Ce,un]=useState(false),[mt,cn]=useState(false),[ji,Ui]=useState([]),[Xt,Wi]=useState(null),{draft:T}=z,Q=Dr(z),pn=useRef(T.state);pn.current!==T.state&&(pn.current=T.state,Ce&&un(false),mt&&cn(false));let Qt=Mr(T.state,k),Jt=Ur(k),fn=jr(k),ke=Wr(T.state,k),Ve=nt(T.clinicianId,k),qi=qr(k).data??null,gt=ot(k),Zt=$r(k),er=r??null;useEffect(()=>{er&&!T.state&&_({type:"patch",patch:{state:er}});},[er,T.state,_]),useEffect(()=>{t&&!T.petId&&_({type:"patch",patch:{petId:t}});},[t,T.petId,_]);let tr=U.length===1?U[0]?.petRef??null:null;useEffect(()=>{tr&&!T.petId&&_({type:"patch",patch:{petId:tr}});},[tr,T.petId,_]);let yn=useRef(Q);yn.current=Q;let mn=useRef(0);useEffect(()=>{x!==mn.current&&(mn.current=x,_({type:"goTo",step:yn.current}));},[x,_]);let rr=ke.data?.[0]?.clinicianId??null;useEffect(()=>{rr&&!T.clinicianId&&_({type:"patch",patch:{clinicianId:rr}});},[rr,T.clinicianId,_]);let ze=useRef(null),gn=useRef(false);useEffect(()=>{if(!gn.current){gn.current=true;return}ze.current?.focus();},[Q]);let Ki=useCallback(j=>{N(null),gt.mutate(j.slotId,{onSuccess:o(oe=>{_({type:"patch",patch:{slot:j,holdExpiresAt:oe.expiresAt,idempotencyKey:Lr(j.slotId)}}),_({type:"next"});},"onSuccess"),onError:o(oe=>N(xe(oe).kind==="unavailable"?"unavailable":"taken"),"onError")});},[gt,_]),nr=useCallback(j=>{if(!(!Nt(T,ne)||!T.idempotencyKey)){if(Br(T,Date.now())){N("expired"),_({type:"goTo",step:"time"});return}N(null),Ne(null),Zt.mutate({pet_id:T.petId,clinician_id:T.clinicianId,slot_id:T.slot.slotId,state:T.state,reason_text:ne.trim(),species:null,media_refs:[],emergency_acknowledged:j,share_health_records:T.shareHealthRecords,...Nr(Ce,mt,Jt.data)},T.idempotencyKey,{onSuccess:o(oe=>{Wi(oe),_({type:"goTo",step:"booked"}),i?.(oe);},"onSuccess"),onError:o(oe=>{let ue=xe(oe);if(ue.kind==="emergency"){Ne(ue.categories);return}if(ue.kind==="rate_limited"){ft(ue.message),N("rate_limited");return}N(ue.kind==="not_entitled"?"not_entitled":ue.kind==="slot_taken"?"taken":ue.kind==="clinician_unavailable"?"clinician_unavailable":ue.kind==="unavailable"?"unavailable":"failed"),ue.kind==="slot_taken"&&_({type:"goTo",step:"time"});},"onError")});}},[T,ne,Zt,_,i,Ce,mt,Jt.data]),$i=useCallback(()=>nr(false),[nr]),Yi=Qt.enabled&&Qt.data!==null&&!Qt.data.wellnessAvailable,Gi=fn.enabled&&fn.data?.active===false,Xi=ne.trim().length>0||!!T.slot||!!T.clinicianId,Qi=k===null||Ee==="unavailable";return ce()?jsx(Gr.Provider,{value:P,children:jsxs("div",{style:{...R.screen,...S},"data-testid":h??"televet-booking",children:[jsx(Zr,{step:Q,furthestIndex:z.furthestIndex,canGoBack:Ar(z,F)&&Q!=="booked",isDirty:Xi,onBack:()=>_({type:"back"}),onClose:()=>l?.(),headingLevel:I,...c?{onConfirmDiscard:c}:{}}),Qi?jsx("div",{style:R.stepFill,"data-testid":"televet-booking-unavailable",children:y?y():jsx(V,{title:f.bookingPausedTitle})}):Gi?jsx("div",{"data-testid":"televet-booking-not-entitled",children:jsx(V,{title:f.confirmNotEntitled})}):Yi?jsx("div",{"data-testid":"televet-booking-state-blocked",children:jsx(V,{title:f.stateBlockedTitle})}):Q==="time"?jsx(Di,{headingRef:ze,slots:Ve.data??[],enabled:Ve.enabled,isPending:Ve.enabled&&Ve.isPending,isError:Ve.isError,busySlotId:gt.isPending?gt.variables:null,failure:Ee,nextOpening:qi,onPick:Ki,onRetry:()=>Ve.refetch(),onSeeOtherVets:()=>_({type:"goTo",step:"clinician"})}):Q==="review"?jsx(Li,{headingRef:ze,when:T.slot?re(T.slot.startsAt):"",petName:Yt(U,T.petId),reason:ne.trim(),clinician:ke.data?.find(j=>j.clinicianId===T.clinicianId)?.displayName??null,shareRecords:T.shareHealthRecords,stateCode:T.state,stateAttested:Ce,onToggleStateAttest:un,cancellationTerms:Jt.data?.summary??null,termsAttested:mt,onToggleTermsAttest:cn,onToggleShare:j=>_({type:"patch",patch:{shareHealthRecords:j}}),canConfirm:Nt(T,ne),busy:Zt.isPending,failure:Ee,rateLimitMessage:Te,onConfirm:$i,emergency:yt,onAcknowledgeEmergency:()=>nr(true),onSeeOtherVets:()=>_({type:"goTo",step:"clinician"})}):Q==="booked"?jsx("div",{style:R.stepFill,"data-testid":"televet-booking-booked",children:Xt?jsx(Qr,{consult:Xt,petName:Yt(U,Xt.petId)??Yt(U,T.petId),onDone:()=>l?.(),canJoinInApp:m,...d?{onAddToCalendar:d}:{}}):null}):Q==="clinician"&&!T.state?jsx("div",{"data-testid":"televet-booking-location-unknown",children:jsx(V,{title:p==="blocked"?f.locationBlockedTitle:p==="unavailable"?f.locationUnavailableTitle:f.locationUnknownTitle,message:p==="blocked"?f.locationBlockedBody:p==="unavailable"?f.locationUnavailableBody:f.locationUnknownBody,actionLabel:u?p==="blocked"?f.locationBlockedCta:f.locationUnknownCta:void 0,onAction:u})}):Q==="clinician"?jsx(Fi,{headingRef:ze,clinicians:ke.data??[],isPending:ke.enabled&&ke.isPending,isError:ke.isError,selectedId:T.clinicianId,onRetry:()=>ke.refetch(),onSelect:j=>{_({type:"patch",patch:{clinicianId:j}}),_({type:"next"});}}):Q==="reason"?jsx(Bi,{headingRef:ze,value:ne,onChange:dn,media:ji,onChangeMedia:Ui,...a?{onPickMedia:a}:{},onNext:()=>_({type:"next"})}):Q==="pet"?jsx(Oi,{headingRef:ze,pets:U,isPending:A.loading,isError:A.error!==null,onRetry:()=>{A.refresh();},onAddPet:s,selectedId:T.petId,onSelect:j=>{_({type:"patch",patch:{petId:j}}),_({type:"next"});}}):jsx("div",{style:B.marker,"data-testid":`televet-booking-step-${Q}`})]})}):jsx("div",{style:{...R.screen,...S},"data-testid":h??"televet-booking",children:jsx("div",{style:R.stepFill,"data-testid":"televet-booking-copy-unapproved",children:y?y():jsx(Rt,{...t!==void 0?{petRef:t}:{},...r!==void 0?{usState:r}:{}})})})}o(ln,"EverfurTelevetBooking");function sn(e){let{consult:t,onRescheduled:r,onCancel:n,controller:i,style:l,testID:s}=He(e,["onRescheduled","onCancel"]),a=M(),d=rt(i),c=nt(t?.clinicianId??null,d),u=ot(d),p=Yr(t?.consultId??null,d),[m,y]=useState(null),b=useCallback(h=>{y(null),u.mutate(h.slotId,{onSuccess:o(()=>{p.mutate(h.slotId,{onSuccess:o(I=>r?.(I),"onSuccess"),onError:o(I=>y(xe(I).kind==="unavailable"?"unavailable":"failed"),"onError")});},"onSuccess"),onError:o(I=>y(xe(I).kind==="unavailable"?"unavailable":"taken"),"onError")});},[u,p,r]),S=u.isPending||p.isPending;return ce()?t?jsxs("section",{style:{...a.stepFill,...l},"aria-label":f.rescheduleNavTitle,"data-testid":s??"televet-reschedule",children:[jsx("p",{style:a.stepHelp,children:te(f.rescheduleFromTemplate,{when:re(t.scheduledAt)})}),m==="taken"?jsx(J,{message:f.slotTaken}):null,m==="failed"?jsx(J,{message:f.rescheduleFailed}):null,m==="unavailable"?jsx(J,{message:f.bookingPausedTitle,testID:"televet-reschedule-unavailable"}):null,c.enabled?c.isPending?jsx("div",{role:"progressbar","aria-label":f.loading.slots,"aria-busy":"true",style:a.list,"data-testid":"televet-reschedule-slots-loading",children:[0,1,2].map(h=>jsx(Ae,{height:48},h))}):c.isError?jsx(V,{title:f.slotsErrorTitle,actionLabel:f.retryCta,onAction:()=>c.refetch(),testID:"televet-reschedule-slots-error"}):(c.data??[]).length===0?jsx("div",{"data-testid":"televet-reschedule-empty",children:jsx(V,{title:f.noSlotsTitle})}):jsx(dt,{slots:c.data??[],busySlotId:S?u.variables:null,onPick:b,dayGroupLabel:f.summaryWhen,timeGroupLabel:f.rescheduleNavTitle,rowTestIdPrefix:"televet-reschedule-slot",testID:"televet-reschedule-slots"}):jsx("div",{"data-testid":"televet-reschedule-paused",children:jsx(V,{title:f.bookingPausedTitle})}),jsx(W,{label:f.keepExistingCta,kind:"secondary",disabled:S,onPress:()=>n?.(),testID:"televet-reschedule-keep"})]}):jsx("div",{role:"progressbar","aria-label":f.loading.consult,"aria-busy":"true",style:{...a.list,...l},"data-testid":"televet-reschedule-loading",children:[0,1].map(h=>jsx(Ae,{height:48},h))}):jsx("div",{style:{...a.stepFill,...l},"data-testid":"televet-reschedule-copy-unapproved"})}o(sn,"EverfurTelevetReschedule");var Hi=Object.freeze({name:"booking"});function td(e,t){switch(t.type){case "push":return Object.freeze({stack:Object.freeze([...e.stack,t.screen])});case "pop":return e.stack.length<=1?e:Object.freeze({stack:Object.freeze(e.stack.slice(0,-1))});default:return e}}o(td,"navReducer");function Mi(e){let{style:t,renderPending:r,className:n,...i}=He(e,["onExit","onBooked","onAddPet","onRequestLocation"]);return jsx(Yn,{capability:"televet",style:t,...n!==void 0?{className:n}:{},...r?{renderPending:r}:{},children:jsx(rd,{...i,...t!==void 0?{style:t}:{}})})}o(Mi,"EverfurTelevetFlow");function rd({petRef:e,usState:t,controller:r,onBooked:n,onExit:i,onAddPet:l,onPickMedia:s,onAddToCalendar:a,onConfirmDiscard:d,onRequestLocation:c,locationStatus:u,historyMode:p="memory",canJoinInApp:m=false,renderUnavailable:y,initialScreen:b,headingLevel:S,style:h}){let I=M(),[P,R]=useReducer(td,b??Hi,F=>Object.freeze({stack:Object.freeze([F])})),D=P.stack[P.stack.length-1]??Hi,B=P.stack.length,k=useRef(0),A=useRef(B);A.current=B,useEffect(()=>{if(p!=="browser"||typeof window>"u")return;let F=o(z=>{let K=z.state?.efTelevet;typeof K=="number"&&K<A.current&&(k.current=Math.max(0,k.current-1),R({type:"pop"}));},"onPopState");return window.addEventListener("popstate",F),()=>window.removeEventListener("popstate",F)},[p]);let U=useCallback(()=>{if(p==="browser"&&typeof window<"u"&&k.current>0){k.current-=1,window.history.go(-1);return}R({type:"pop"});},[p]),x=useCallback(()=>y?y():jsxs("div",{style:I.list,"data-testid":"televet-hosted-fallback",children:[ce()?jsx(V,{title:f.bookingPausedTitle}):null,jsx(Rt,{...e!==void 0?{petRef:e}:{},...t!==void 0?{usState:t}:{}})]}),[y,I.list,e,t]);switch(D.name){case "booking":return jsx(ln,{...e!==void 0?{petRef:e}:{},...t!==void 0?{usState:t}:{},...r?{controller:r}:{},...n?{onBooked:n}:{},...i?{onExit:i}:{},...l?{onAddPet:l}:{},...s?{onPickMedia:s}:{},...a?{onAddToCalendar:a}:{},...d?{onConfirmDiscard:d}:{},...c?{onRequestLocation:c}:{},...u?{locationStatus:u}:{},canJoinInApp:m,renderUnavailable:x,...S!==void 0?{headingLevel:S}:{},...h?{style:h}:{}});case "reschedule":return jsx(sn,{consult:D.consult,...r?{controller:r}:{},onRescheduled:()=>U(),onCancel:()=>U(),...h?{style:h}:{}});default:return vt(D)}}o(rd,"TelevetFlowBody");var nd=Mi;export{Ci as BACK_LABEL,Ft as CANCELLATION_POLICY_VERSION_MAX,Xo as CONSULT_KINDS,Me as CONSULT_MINUTES,Go as CONSULT_STATUSES,nd as EverfurTelevet,ln as EverfurTelevetBooking,Mi as EverfurTelevetFlow,sn as EverfurTelevetReschedule,Dt as MEDIA_REFS_MAX,me as REASON_TEXT_MAX,be as TELEVET_BOOKING_BASE,f as TELEVET_BOOKING_COPY,Ie as TELEVET_BOOKING_STEPS,ns as TERMINAL_CONSULT_STATUSES,Qr as TelevetBookedScreen,Zr as TelevetBookingChrome,st as TelevetConsentCheckbox,on as TelevetDayStrip,en as TelevetIntakeMedia,dt as TelevetSlotPicker,rn as TelevetSummaryCard,Be as TelevetSummaryRow,Nr as attestation,Nt as canConfirm,zr as createTelevetBookingController,Dr as currentStep,ri as emptyTelevetDraft,is as formatVisitRange,oi as formatWhen,re as formatWhenWithDay,Ar as hasPreviousStep,Or as initialTelevetBookingState,Br as isHoldExpired,Bt as isSkipped,ce as isTelevetBookingCopyReady,de as isWellFormedStateCode,Lr as televetBookingKey,Fr as televetBookingReducer,xe as televetBookingRefusal,gi as televetConsultCalendarKey,$t as televetDaysFromSlots,ui as televetHoldCall,ci as televetRescheduleCall,$r as useTelevetBookConsult,ys as useTelevetBookingAvailable,rt as useTelevetBookingController,jr as useTelevetBookingEntitlement,Ur as useTelevetCancellationPolicy,Wr as useTelevetClinicians,ot as useTelevetHoldSlot,qr as useTelevetNextSlot,Yr as useTelevetRescheduleConsult,nt as useTelevetSlots,Mr as useTelevetStatePolicy,pi as validateBookingBody};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime');var Ve=Object.defineProperty;var n=(e,r)=>Ve(e,"name",{value:r,configurable:true});var ae=Object.freeze({track(){},trackExpectedFailure(){}});function le(e){try{return new URL(e.trim()).protocol==="https:"}catch{return false}}n(le,"isSafeRoomUrl");function I(e,r){return le(e)&&r.trim().length>0}n(I,"isUsableRoomCredential");function ie(e){let r=globalThis.console;try{r?.error?.("[everfur] A host callback threw; the SDK ignored it.",e);}catch{}}n(ie,"reportHostFailure");function Ne(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&typeof e.then=="function"}n(Ne,"isThenable");function A(e,...r){if(typeof e=="function")try{let o=e(...r);return Ne(o)&&Promise.resolve(o).then(void 0,ie),o}catch(o){ie(o);return}}n(A,"callHost");var se=new WeakMap;function Ie(e){if(typeof e!="function")return;let r=se.get(e);if(r!==void 0)return r;let o=n((...t)=>{A(e,...t);},"guarded");return se.set(e,o),o}n(Ie,"guardHost");function de(e,r){let o=null;for(let t of r){let a=e[t];typeof a=="function"&&(o??={...e},o[t]=Ie(a));}return o??e}n(de,"guardHostProps");var O=10,c=Object.freeze({muteCta:"Mute",unmuteCta:"Unmute",cameraOffCta:"Camera off",cameraOnCta:"Camera on",leaveCta:"Leave",lobbyTitleNoName:"Your vet is joining",lobbySubtitle:"Usually under a minute",lobbyPrepLabel:"WHILE YOU WAIT",lobbyPrepNoPet:"Have your pet nearby and somewhere well lit.",lobbyTitle:n(e=>{let r=e?.trim()??"";return r.length>0?`${r} is joining`:c.lobbyTitleNoName},"lobbyTitle"),lobbyPrep:n(e=>{let r=e?.trim()??"";return r.length>0?`Have ${r} nearby and somewhere well lit.`:c.lobbyPrepNoPet},"lobbyPrep"),lobbyDuration:n(e=>`${e} MINUTE VISIT`,"lobbyDuration"),joinFailedReason:"That did not open. Try again."});function j(e){if(e!==null&&typeof e=="object"&&!Object.isFrozen(e)){Object.freeze(e);for(let r of Object.keys(e))j(e[r]);}return e}n(j,"deepFreeze");var Oe=Object.freeze({content:0,heading:2,control:1.8,compact:1.5,badge:1.3}),ce={xs:4,sm:8,md:12,lg:16,xl:24,xxl:32},fe={tile:5,xs:6,sm:10,md:14,lg:20,xl:28,pill:500},ue={nano:8,small:9,micro:10,tiny:11,caption:12,bodyTight:13,body:14,subtitle:16,heading:18,verdict:24},ze={tight:1.15,snug:1.3,normal:1.4,relaxed:1.55},He={regular:"400",medium:"500",bold:"700"},je={eyebrow:1,monoWide:.9,headerBrand:-0.42,tight:-0.35},We=0,B="System",D="monospace",Ge=["content","heading","control","compact","badge"];function $e(e){let r={};for(let o of Ge)r[o]=e;return r}n($e,"authoredTierSizes");function ye(){return {family:B,mono:D,fontUrl:null,families:{regular:B,medium:B,bold:B,mono:D,monoMedium:D,monoBold:D},namedFaces:{regular:false,medium:false,bold:false,mono:false,monoMedium:false,monoBold:false},fontUrls:{},size:ue,tierSizes:$e(ue),lineHeight:ze,weight:He,letterSpacing:je,scale:1,maxScale:We,scaleCaps:Oe}}n(ye,"baseType");var me={},z=Object.freeze({standard:Object.freeze([.2,0,0,1]),emphasized:Object.freeze([.2,.8,.2,1]),exit:Object.freeze([.4,0,1,1])});function H(e){return `cubic-bezier(${e.join(", ")})`}n(H,"cssCubicBezier");var pe={duration:{instant:80,fast:140,normal:220,slow:320},spring:{gentle:{damping:18,stiffness:200}},easing:{standard:H(z.standard),emphasized:H(z.emphasized),exit:H(z.exit)},reducedMotion:false},Ye={brand:"#10462E",brandSoft:"rgba(16,70,46,0.10)",brandSofter:"rgba(16,70,46,0.15)",brandBorder:"rgba(16,70,46,0.18)",borderHairlineGreen:"rgba(16,70,46,0.25)",brandBorderStrong:"rgba(16,70,46,0.55)",brandInk:"#10462E",linkInk:"#10462E",surface:"#FFFFFF",surfaceCream:"#FDFBF8",surfaceSubtle:"#EFE9E3",background:"#FFFFFF",borderRingCream:"#D8D2C8",chatGround:"#FFFFFF",composerFill:"#FDFBF8",composerBorder:"rgba(16,70,46,0.75)",shadow:"#0B3421",text:{primary:"#111111",secondary:"#0E462E",muted:"#6E6660",placeholder:"rgba(61,61,61,0.75)",onBrand:"#FFFFFF",metaCool:"#3D3D3D",timestamp:"rgba(61,61,61,0.75)"},primary:"#10462E",onPrimary:"#FFFFFF",accent:"#10462E",onAccent:"#FFFFFF",accentEdge:"#07C168",success:"#07C168",danger:"#B91C1C",errorRed:"#FF1B00",warningStrong:"#A45610",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.12)",badgeBgCaution:"rgba(217,130,29,0.14)",badgeBgCritical:"rgba(185,28,28,0.12)",badgeBgNeutral:"rgba(110,102,96,0.12)",bubbleUser:"#10462E",bubbleAssistant:"#FFFFFF",skeleton:"#EFE9E3",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.10)",checkupCardConcernBg:"rgba(239,167,0,0.10)"},ge=j({brightness:"light",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:Ye,space:ce,radius:fe,type:ye(),motion:pe,slots:me}),Ke={brand:"#6BD39A",brandSoft:"rgba(107,211,154,0.12)",brandSofter:"rgba(107,211,154,0.18)",brandBorder:"rgba(107,211,154,0.22)",borderHairlineGreen:"rgba(107,211,154,0.28)",brandBorderStrong:"rgba(107,211,154,0.55)",brandInk:"#6BD39A",linkInk:"#6BD39A",surface:"#1C1F23",surfaceCream:"#23272C",surfaceSubtle:"#23272C",background:"#15171A",borderRingCream:"#3A3F45",chatGround:"#1C1F23",composerFill:"#23272C",composerBorder:"rgba(107,211,154,0.75)",shadow:"#000000",text:{primary:"#F5F3F0",secondary:"#A9E4C4",muted:"#9A938C",placeholder:"rgba(255,255,255,0.55)",onBrand:"#0E1F17",metaCool:"#C9C9C9",timestamp:"rgba(245,243,240,0.7)"},primary:"#6BD39A",onPrimary:"#0E1F17",accent:"#6BD39A",onAccent:"#0E1F17",accentEdge:"#34D888",success:"#07C168",danger:"#F87171",errorRed:"#FF6B5B",warningStrong:"#F0A35E",cautionAccent:"#D9821D",riskConcern:"#EFA700",sentiment:{up:"#07C168",neutral:"#FBC558",down:"#FF1B00"},badgeBgPositive:"rgba(7,193,104,0.18)",badgeBgCaution:"rgba(217,130,29,0.20)",badgeBgCritical:"rgba(185,28,28,0.22)",badgeBgNeutral:"rgba(255,255,255,0.10)",bubbleUser:"#6BD39A",bubbleAssistant:"#1C1F23",skeleton:"#23272C",scanButtonPink:"#FFC3BC",checkupCardLowRiskBg:"rgba(7,193,104,0.16)",checkupCardConcernBg:"rgba(239,167,0,0.16)"};j({brightness:"dark",highContrast:false,meta:{displayName:"Everfur",logoUrl:null,placeholder:null,hidePoweredBy:false},color:Ke,space:ce,radius:fe,type:ye(),motion:pe,slots:me});var be=Symbol.for("@everfur/sdk#EverfurThemeContext@v1"),ve=globalThis,W=ve[be]??(ve[be]=react.createContext(ge));W.displayName??="EverfurThemeContext";function F(){return react.useContext(W)}n(F,"useEverfurTheme");var Ee=Object.freeze({regular:"regular",medium:"medium",bold:"bold",mono:"regular",monoMedium:"medium",monoBold:"bold"});var Te='system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',Ze="System";function Je(e){let r=e.trim();return r.length===0||r===Ze?Te:`${Ce(r)}, ${Te}`}n(Je,"cssFontFamily");function Qe(e){let r=e.trim();return r.length===0||r==="monospace"?"ui-monospace, Menlo, Consolas, monospace":`${Ce(r)}, ui-monospace, Menlo, Consolas, monospace`}n(Qe,"cssMonoFamily");function Ce(e){return `"${e.replace(/[\\"]/g,"\\$&")}"`}n(Ce,"quote");function g(e,r){let o=e.type,t=o.families[r];return {fontFamily:r==="mono"||r==="monoMedium"||r==="monoBold"?Qe(t):Je(t),fontWeight:o.namedFaces[r]?o.weight.regular:o.weight[Ee[r]]}}n(g,"faceCss");var $="[everfur] The in-page vet call needs @daily-co/daily-js, which this app has not registered. Install it and call registerEverfurDaily(() => import('@daily-co/daily-js')) once in your app entry, before any Everfur call surface mounts. Until then, fall back to VetVisitButton, which opens the visit in a new tab.",Y="@daily-co/daily-js",er=`optional peer '${Y}' has no registered loader`,rr=`optional peer '${Y}' is present but failed its shape check`;function K(e){return typeof e=="object"&&e!==null}n(K,"isRecordLike");function nr(e){let r=e;for(let o=0;o<3;o+=1){if(he(r))return r;if(!K(r)||!("default"in r))return null;r=r.default;}return null}n(nr,"normalizeDailyModule");function he(e){return !K(e)&&typeof e!="function"?false:typeof e.createFrame=="function"}n(he,"isEverfurDailyModule");var ke=null,_=null;function G(e){return Object.freeze({available:false,module:null,reason:e})}n(G,"unavailable");function or(e){ke=e,_=null;}n(or,"registerEverfurDaily");function X(){if(_!==null)return _;let e=ke;if(e===null)return Promise.resolve(G(er));let r=(async()=>{let o;try{o=await e();}catch(a){return G(`optional peer '${Y}' is not installed: ${tr(a)}`)}let t=nr(o);return t===null?G(rr):Object.freeze({available:true,module:t})})();return _=r,r}n(X,"loadEverfurDaily");function tr(e){return e instanceof Error?e.message:typeof e=="string"?e:"unknown load error"}n(tr,"describe");function Fe(e){if(!K(e)||!("errorMsg"in e))return null;let r=e.errorMsg;return typeof r=="string"&&r.length>0?r:null}n(Fe,"dailyErrorMessage");function xe(e){return e?Object.keys(e).filter(r=>r!=="local").length:0}n(xe,"remoteParticipantCount");var sr=44,Re=3,dr=420,ur=.35,cr=1,fr=.6;function yr({theme:e}){let r=e.motion.reducedMotion,[o,t]=react.useState(0);return react.useEffect(()=>{if(r)return;let a=setInterval(()=>t(l=>(l+1)%Re),dr);return ()=>clearInterval(a)},[r]),jsxRuntime.jsx("div",{"aria-hidden":"true","data-testid":"everfur-vet-call-lobby-dots",style:{display:"flex",gap:e.space.xs,justifyContent:"center"},children:Array.from({length:Re},(a,l)=>jsxRuntime.jsx("span",{style:{width:6,height:6,borderRadius:e.radius.pill,backgroundColor:e.color.text.onBrand,opacity:r?fr:l===o?cr:ur,transition:r?"none":`opacity ${e.motion.duration.fast}ms ${e.motion.easing.standard}`}},l))})}n(yr,"WaitingDots");function q(e){let{clinicianName:r,petName:o,consultMinutes:t=10,onLeave:a,style:l,className:s}=e,b=F(),i=react.useMemo(()=>mr(b),[b]),S=c.lobbyTitle(r),w=c.lobbyPrep(o);return jsxRuntime.jsxs("section",{className:s,"data-testid":"everfur-vet-call-lobby",style:{...i.root,...l},children:[jsxRuntime.jsx("div",{style:i.topRow,children:jsxRuntime.jsx("button",{type:"button",onClick:a,"data-testid":"everfur-vet-call-lobby-leave",style:i.leave,children:c.leaveCta})}),jsxRuntime.jsxs("div",{style:i.center,children:[jsxRuntime.jsxs("div",{"aria-hidden":"true","data-testid":"everfur-vet-call-lobby-avatar",style:i.avatar,children:[jsxRuntime.jsx("span",{style:i.avatarHead}),jsxRuntime.jsx("span",{style:i.avatarBody})]}),jsxRuntime.jsxs("div",{"aria-live":"polite",style:i.titleBlock,children:[jsxRuntime.jsx("p",{"data-testid":"everfur-vet-call-lobby-title",style:i.title,children:S}),jsxRuntime.jsx("p",{style:i.subtitle,children:c.lobbySubtitle})]}),jsxRuntime.jsx(yr,{theme:b})]}),jsxRuntime.jsxs("div",{"data-testid":"everfur-vet-call-lobby-prep",style:i.prepCard,children:[jsxRuntime.jsx("p",{style:i.prepLabel,children:c.lobbyPrepLabel}),jsxRuntime.jsx("p",{style:i.prepBody,children:w})]}),jsxRuntime.jsx("p",{"data-testid":"everfur-vet-call-lobby-duration",style:i.duration,children:c.lobbyDuration(t)})]})}n(q,"EverfurVetCallLobby");function mr(e){let{color:r,space:o,radius:t,type:a}=e,l=r.text.onBrand,s=132;return {root:{boxSizing:"border-box",display:"flex",flexDirection:"column",gap:o.lg,padding:o.lg,borderRadius:t.lg,backgroundColor:r.brand,color:l},topRow:{display:"flex",alignItems:"center"},leave:{minHeight:sr,padding:`0 ${o.md}px`,margin:0,border:0,background:"transparent",color:l,cursor:"pointer",...g(e,"medium"),fontSize:a.size.body},center:{display:"flex",flexDirection:"column",alignItems:"center",gap:o.md},avatar:{position:"relative",width:s,height:s,borderRadius:t.pill,overflow:"hidden",backgroundColor:r.brandSoft,display:"flex",alignItems:"center",justifyContent:"center"},avatarHead:{position:"absolute",top:s*.24,width:s*.28,height:s*.28,borderRadius:t.pill,backgroundColor:l,opacity:.55},avatarBody:{position:"absolute",top:s*.58,width:s*.52,height:s*.34,borderTopLeftRadius:s*.26,borderTopRightRadius:s*.26,backgroundColor:l,opacity:.55},titleBlock:{textAlign:"center"},title:{margin:0,...g(e,"bold"),fontSize:a.size.heading,color:l},subtitle:{margin:`${e.space.xs}px 0 0`,fontSize:a.size.bodyTight,color:l,opacity:.75},prepCard:{display:"flex",flexDirection:"column",gap:o.xs,padding:o.md,borderRadius:t.md,backgroundColor:r.brandSoft},prepLabel:{margin:0,...g(e,"medium"),fontSize:a.size.micro,letterSpacing:a.letterSpacing.eyebrow,color:l,opacity:.75},prepBody:{margin:0,fontSize:a.size.bodyTight,color:l},duration:{margin:0,textAlign:"center",...g(e,"medium"),fontSize:a.size.micro,letterSpacing:a.letterSpacing.eyebrow,color:l,opacity:.75}}}n(mr,"makeLobbyStyles");var br=44,vr="16 / 9",Er="16px",Tr=["participant-joined","participant-updated","participant-left"];function Cr(e){let{roomUrl:r,token:o,onLeave:t,clinicianName:a,petName:l,displayName:s,daily:b,telemetry:i,onUnavailable:S,renderUnavailable:w,style:Be,className:De}=de(e,["onLeave","onUnavailable"]),J=F(),v=react.useMemo(()=>kr(J),[J]),[P,E]=react.useState("joining"),[_e,Q]=react.useState(0),[U,Me]=react.useState(null),ee=react.useRef(null),T=react.useRef(null),re=react.useRef(false),C=react.useRef({onLeave:t,onUnavailable:S,daily:b,telemetry:i});C.current={onLeave:t,onUnavailable:S,daily:b,telemetry:i};let h=react.useCallback(()=>{re.current||(re.current=true,A(C.current.onLeave));},[]);react.useEffect(()=>{let d=false,y=null,oe=[],V=n((m,p)=>{d||(Me({reason:m,detail:p}),A(C.current.onUnavailable,m,p));},"refuse");if(!I(r,o)){V("roomUnusable","the call needs an https room URL and a non-empty join token");return}return n(async()=>{let m=ee.current;if(!m)return;let p=C.current.daily,k;if(p!==void 0)k=p;else {let u=await X();if(d)return;if(!u.available){hr($),V("dailyMissing",u.reason);return}k=u.module;}if(d)return;let N=C.current.telemetry??ae;try{y=k.createFrame(m,{showLeaveButton:!0,showFullscreenButton:!1,iframeStyle:{width:"100%",height:"100%",border:"0",borderRadius:Er}});}catch(u){V("dailyMissing",`createFrame failed: ${Pe(u)}`);return}T.current=y;let L=n((u,te)=>{oe.push({event:u,handler:te}),y?.on(u,te);},"attach"),Ue=n(()=>{d||y===null||Q(we(y));},"syncParticipants");for(let u of Tr)L(u,Ue);L("joined-meeting",()=>{d||y===null||(E("joined"),Q(we(y)));}),L("left-meeting",()=>{d||(E("left"),h());}),L("error",u=>{d||(E("error"),N.trackExpectedFailure("televet.call.join_failed",{provider:"daily",detail:Fe(u)??"unknown"}));});try{if(await y.join({url:r,token:o,userName:s}),d)return;N.track("televet.call.joined",{provider:"daily"});}catch(u){if(d)return;E("error"),N.trackExpectedFailure("televet.call.join_failed",{provider:"daily",detail:Pe(u)});}},"start")(),()=>{d=true;for(let{event:p,handler:k}of oe)try{y?.off(p,k);}catch{}let m=T.current;T.current=null,m?.destroy().catch(()=>{});}},[r,o,s,h]);let ne=react.useCallback(()=>{let d=T.current;if(T.current=null,E("left"),!d){h();return}(async()=>{try{await d.leave();}catch{}try{await d.destroy();}catch{}h();})();},[h]);return U!==null?w?jsxRuntime.jsx(jsxRuntime.Fragment,{children:w(U.reason,U.detail)}):null:jsxRuntime.jsxs("div",{className:De,"data-testid":"everfur-vet-call",style:{...v.root,...Be},children:[P==="left"?null:jsxRuntime.jsx("div",{ref:ee,"data-testid":"everfur-vet-call-frame",style:{...v.frame,...P==="error"?v.frameHidden:null}}),P==="joined"&&_e===0?jsxRuntime.jsx(q,{clinicianName:a,petName:l,onLeave:ne}):null,P==="error"?jsxRuntime.jsxs("div",{role:"alert","data-testid":"everfur-vet-call-failed",style:v.failed,children:[jsxRuntime.jsx("p",{style:v.failedText,children:c.joinFailedReason}),jsxRuntime.jsx("button",{type:"button",onClick:ne,"data-testid":"everfur-vet-call-failed-leave",style:v.failedLeave,children:c.leaveCta})]}):null]})}n(Cr,"EverfurVetCall");function we(e){try{return xe(e.participants())}catch{return 0}}n(we,"countRemotes");function Pe(e){return e instanceof Error?e.message:typeof e=="string"?e:"unknown error"}n(Pe,"describe");var Le=false;function hr(e){if(Le)return;Le=true;let r=globalThis.console;try{r?.warn?.(e);}catch{}}n(hr,"warnOnce");function kr(e){let{color:r,space:o,radius:t,type:a}=e;return {root:{boxSizing:"border-box",display:"flex",flexDirection:"column",gap:o.md,width:"100%"},frame:{position:"relative",width:"100%",aspectRatio:vr,overflow:"hidden",borderRadius:t.lg,backgroundColor:r.brandInk},frameHidden:{display:"none"},failed:{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:o.md,padding:o.lg,borderRadius:t.md,border:`1px solid ${r.brandBorder}`,backgroundColor:r.surfaceCream,color:r.text.primary},failedText:{margin:0,fontSize:a.size.bodyTight,color:r.text.primary},failedLeave:{minHeight:br,padding:`0 ${o.lg}px`,borderRadius:t.pill,border:`1.5px solid ${r.brand}`,backgroundColor:"transparent",color:r.brand,cursor:"pointer",...g(e,"medium"),fontSize:a.size.body}}}n(kr,"makeCallStyles");exports.EVERFUR_DAILY_SETUP=$;exports.EverfurVetCall=Cr;exports.EverfurVetCallLobby=q;exports.VET_CALL_CONSULT_MINUTES=O;exports.VET_CALL_COPY=c;exports.isEverfurDailyModule=he;exports.isSafeRoomUrl=le;exports.isUsableRoomCredential=I;exports.loadEverfurDaily=X;exports.registerEverfurDaily=or;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
2
|
+
import { T as TelemetryPort } from '../../../TelemetryPort-BDNr00hu.cjs';
|
|
3
|
+
export { V as VET_CALL_CONSULT_MINUTES, a as VET_CALL_COPY, b as VetCallPhase, i as isSafeRoomUrl, c as isUsableRoomCredential } from '../../../callCopy-DoQKG3-L.cjs';
|
|
4
|
+
|
|
5
|
+
/** The Daily events the call surface subscribes to. */
|
|
6
|
+
type VetCallEvent = 'joined-meeting' | 'participant-joined' | 'participant-updated' | 'participant-left' | 'left-meeting' | 'error';
|
|
7
|
+
type VetCallHandler = (payload?: unknown) => void;
|
|
8
|
+
/** One participant in the room, narrowed to what the call surface reads. */
|
|
9
|
+
interface VetCallParticipant {
|
|
10
|
+
readonly local?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The Daily Prebuilt frame, narrowed to the six members the call surface calls. Narrow on purpose: the SDK
|
|
14
|
+
* never asks for host powers. `is_owner` is the CLINICIAN's and the server decides it when it mints the
|
|
15
|
+
* token; it starts recording and grants admit/eject, and nothing here requests either.
|
|
16
|
+
*/
|
|
17
|
+
interface VetCallFrame {
|
|
18
|
+
join(options: {
|
|
19
|
+
readonly url: string;
|
|
20
|
+
readonly token: string;
|
|
21
|
+
readonly userName?: string | undefined;
|
|
22
|
+
}): Promise<unknown>;
|
|
23
|
+
leave(): Promise<unknown>;
|
|
24
|
+
destroy(): Promise<unknown>;
|
|
25
|
+
participants(): Record<string, VetCallParticipant>;
|
|
26
|
+
on(event: VetCallEvent, handler: VetCallHandler): unknown;
|
|
27
|
+
off(event: VetCallEvent, handler: VetCallHandler): unknown;
|
|
28
|
+
}
|
|
29
|
+
/** The shape of `@daily-co/daily-js` this package uses, and nothing else. */
|
|
30
|
+
interface EverfurDailyModule {
|
|
31
|
+
createFrame(container: HTMLElement, options?: Record<string, unknown>): VetCallFrame;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The thunk a partner registers. Typically `() => import('@daily-co/daily-js')`. A synchronous return is
|
|
35
|
+
* accepted too, for a partner that already holds the module.
|
|
36
|
+
*/
|
|
37
|
+
type EverfurDailyLoader = () => unknown;
|
|
38
|
+
/** The settled outcome of a guarded load. Mirrors `OptionalModule` from the core ports, and never throws. */
|
|
39
|
+
type EverfurDailyLoad = {
|
|
40
|
+
readonly available: true;
|
|
41
|
+
readonly module: EverfurDailyModule;
|
|
42
|
+
} | {
|
|
43
|
+
readonly available: false;
|
|
44
|
+
readonly module: null;
|
|
45
|
+
readonly reason: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* DEVELOPER-FACING, never rendered to a member. It is handed to `onUnavailable` and written to
|
|
49
|
+
* `console.warn` once, so a partner who mounts the call surface without the peer reads what to do instead of
|
|
50
|
+
* watching a blank box. End-user copy is never authored in this repository.
|
|
51
|
+
*/
|
|
52
|
+
declare const EVERFUR_DAILY_SETUP: string;
|
|
53
|
+
/** A present-but-wrong-shape module (a version whose surface drifted) is treated as unavailable, not trusted. */
|
|
54
|
+
declare function isEverfurDailyModule(candidate: unknown): candidate is EverfurDailyModule;
|
|
55
|
+
/**
|
|
56
|
+
* Register the Daily module for the in-page vet call. Call it ONCE, in your app entry, before any Everfur
|
|
57
|
+
* call surface mounts:
|
|
58
|
+
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* import { registerEverfurDaily } from '@everfur/sdk/web/televet/call';
|
|
61
|
+
* registerEverfurDaily(() => import('@daily-co/daily-js'));
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* Passing `null` unregisters it, which is what a test does between cases. Registering clears the memo, so a
|
|
65
|
+
* later registration always wins over an earlier failed load.
|
|
66
|
+
*/
|
|
67
|
+
declare function registerEverfurDaily(next: EverfurDailyLoader | null): void;
|
|
68
|
+
/**
|
|
69
|
+
* The guarded load: a missing loader, a throwing or rejecting loader and a wrong-shape module all settle to
|
|
70
|
+
* `{ available: false }`. NEVER throws, never rejects, and never returns a partially usable module.
|
|
71
|
+
*
|
|
72
|
+
* Memoized on the PROMISE, not on its result, so two call surfaces mounting in the same tick share one
|
|
73
|
+
* network fetch of the chunk rather than racing two.
|
|
74
|
+
*/
|
|
75
|
+
declare function loadEverfurDaily(): Promise<EverfurDailyLoad>;
|
|
76
|
+
|
|
77
|
+
/** Why the call surface refused to render. Both values are DEVELOPER-facing, never shown to a member. */
|
|
78
|
+
type VetCallUnavailableReason = 'dailyMissing' | 'roomUnusable';
|
|
79
|
+
interface EverfurVetCallProps {
|
|
80
|
+
/** The `room_url` the server minted for this consult. Must be https; anything else is refused. */
|
|
81
|
+
readonly roomUrl: string;
|
|
82
|
+
/** The short-lived, per-participant join token. NEVER rendered, NEVER logged, NEVER a telemetry prop. */
|
|
83
|
+
readonly token: string;
|
|
84
|
+
/** Called once the member has left, so the host can navigate away. Fires exactly once per mounted call. */
|
|
85
|
+
readonly onLeave: () => void;
|
|
86
|
+
/** Shown in the lobby while the clinician has not joined. Null in production today; never invented. */
|
|
87
|
+
readonly clinicianName?: string | null | undefined;
|
|
88
|
+
/** The pet's display name for the lobby's prep line; absent, the pet-free form is used. */
|
|
89
|
+
readonly petName?: string | null | undefined;
|
|
90
|
+
/** Rendered as the participant name inside the call. Absent, Daily uses its own default. */
|
|
91
|
+
readonly displayName?: string | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Host/test seam: the Daily module, instead of the one `registerEverfurDaily` registered. A partner with
|
|
94
|
+
* its own module resolution passes it here and calls no register function at all.
|
|
95
|
+
*/
|
|
96
|
+
readonly daily?: EverfurDailyModule | undefined;
|
|
97
|
+
/** Your analytics sink for the two call events. Defaults to a no-op; never receives a credential. */
|
|
98
|
+
readonly telemetry?: TelemetryPort | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Called instead of rendering when the call cannot run, with a developer-facing explanation.
|
|
101
|
+
* `dailyMissing` means `@daily-co/daily-js` is not registered or is not Daily; `roomUnusable` means the
|
|
102
|
+
* credential failed its floor (not an https room, or an empty token).
|
|
103
|
+
*/
|
|
104
|
+
readonly onUnavailable?: ((reason: VetCallUnavailableReason, detail: string) => void) | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* What to draw when the call cannot run. THE SDK DRAWS NOTHING BY DEFAULT, and that is deliberate: there is
|
|
107
|
+
* no owner-approved member-facing sentence for "this page was built without the video module", and this
|
|
108
|
+
* package does not author user-facing copy. The consumer app's own answer to a missing module is to fall
|
|
109
|
+
* back to the browser, so the intended wiring here is the same:
|
|
110
|
+
*
|
|
111
|
+
* ```tsx
|
|
112
|
+
* <EverfurVetCall ... renderUnavailable={() => <VetVisitButton visitRef={visitRef} intent="join" />} />
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
readonly renderUnavailable?: ((reason: VetCallUnavailableReason, detail: string) => ReactNode) | undefined;
|
|
116
|
+
readonly style?: CSSProperties | undefined;
|
|
117
|
+
/** A class the host may hang its own layout rules on; the SDK sets no classes of its own. */
|
|
118
|
+
readonly className?: string | undefined;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* The member's vet call, in the partner's page.
|
|
122
|
+
*
|
|
123
|
+
* Mount it with a room and a token and it joins; unmount it and the camera and the microphone are released.
|
|
124
|
+
*/
|
|
125
|
+
declare function EverfurVetCall(props: EverfurVetCallProps): ReactNode;
|
|
126
|
+
|
|
127
|
+
interface EverfurVetCallLobbyProps {
|
|
128
|
+
/** The clinician's display name, when the host has one. Null renders the generalised sentence. */
|
|
129
|
+
readonly clinicianName?: string | null | undefined;
|
|
130
|
+
/** The pet's display name, when the host has one. Null renders the generalised prep line. */
|
|
131
|
+
readonly petName?: string | null | undefined;
|
|
132
|
+
/** The consult length the duration line states. Defaults to Everfur's own consult length. */
|
|
133
|
+
readonly consultMinutes?: number | undefined;
|
|
134
|
+
/** The way out of the wait. */
|
|
135
|
+
readonly onLeave: () => void;
|
|
136
|
+
readonly style?: CSSProperties | undefined;
|
|
137
|
+
readonly className?: string | undefined;
|
|
138
|
+
}
|
|
139
|
+
/** The wait, with a way out. */
|
|
140
|
+
declare function EverfurVetCallLobby(props: EverfurVetCallLobbyProps): ReactNode;
|
|
141
|
+
|
|
142
|
+
export { EVERFUR_DAILY_SETUP, type EverfurDailyLoad, type EverfurDailyLoader, type EverfurDailyModule, EverfurVetCall, EverfurVetCallLobby, type EverfurVetCallLobbyProps, type EverfurVetCallProps, TelemetryPort, type VetCallEvent, type VetCallFrame, type VetCallHandler, type VetCallParticipant, type VetCallUnavailableReason, isEverfurDailyModule, loadEverfurDaily, registerEverfurDaily };
|