pih-appointment-widget 0.0.40 → 0.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/App.js
CHANGED
|
@@ -47,12 +47,15 @@ const BookingSDK = {
|
|
|
47
47
|
bookingWidgetInstance = document.createElement("div");
|
|
48
48
|
document.body.appendChild(bookingWidgetInstance);
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
|
|
51
|
+
// Do NOT define a component inline here. A locally-defined function creates a new
|
|
52
|
+
// component type reference on every showWidget call. React compares component types
|
|
53
|
+
// by reference; a new reference causes full unmount+remount instead of a prop update,
|
|
54
|
+
// resetting all state and re-running all effects — including SSO — on every call.
|
|
55
|
+
// Render AppointmentPage directly so React updates its props instead of remounting.
|
|
56
|
+
_reactDom.default.render(/*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AppointmentPage.default, {
|
|
57
|
+
config: config
|
|
58
|
+
}), config.showIcdAssistant && /*#__PURE__*/_react.default.createElement(_ICD10Assistant.default, null)), bookingWidgetInstance);
|
|
56
59
|
},
|
|
57
60
|
closePopup: () => {
|
|
58
61
|
if (bookingWidgetInstance) {
|
|
@@ -117,7 +117,12 @@ class AppointmentErrorBoundary extends _react.Component {
|
|
|
117
117
|
// SDK Component - accepts configuration from parent app
|
|
118
118
|
const AppointmentPage = _ref => {
|
|
119
119
|
let {
|
|
120
|
-
config = {
|
|
120
|
+
config = {
|
|
121
|
+
"email": 'gk.jayavenitha@powerholding.com',
|
|
122
|
+
hospitalId: 'dMtEGhak',
|
|
123
|
+
apiBaseUrl: 'https://afiyaapiqa.powermindinc.com',
|
|
124
|
+
token: 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcwZmM5YzU0YjhiMjQyMWZmMTgyOTgxNTQyZmQ0NjRlOWJlYzM1NDUiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiSmF5YXZlbml0aGEgR0siLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbGl0ZWVtci0zY2M0NyIsImF1ZCI6ImxpdGVlbXItM2NjNDciLCJhdXRoX3RpbWUiOjE3NzY2ODM3ODIsInVzZXJfaWQiOiI5N3hFYjJoSFptU3pWWlFvcHM4Yzc4bzRxUHcxIiwic3ViIjoiOTd4RWIyaEhabVN6VlpRb3BzOGM3OG80cVB3MSIsImlhdCI6MTc3NjY4Mzc4MiwiZXhwIjoxNzc2Njg3MzgyLCJlbWFpbCI6ImdrLmpheWF2ZW5pdGhhQHBvd2VyaG9sZGluZy1pbnRsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJtaWNyb3NvZnQuY29tIjpbIjg2N2ViM2MyLWFlMDgtNDlkZC1hNDNhLWU0OTg2YjZlZDA5YSJdLCJlbWFpbCI6WyJnay5qYXlhdmVuaXRoYUBwb3dlcmhvbGRpbmctaW50bC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJtaWNyb3NvZnQuY29tIn19.pUN8E40VNtIqGe5bwBrZerVAgPiQJn916nOrz-uXPZkdIEOJeC5Bxrt_byRcow7CEQrlpEvpJrOZOUReJRTRjX-sIQ8feT3oSI3dBqiI2A_KzfnqUnMJj7KAVTbGwsqvHLGoChVgkL75YDs_Npz-3arOVsMwo2KaGCLkthM7NqxB1oe22kMyM35f90nXFRhpoBK1jP3Dhp9NiCVhu7XDO0mn7_SMsCIwtuL09L3TNMPOUU0yWVysKwSXbPYNS8qaISRDaami2zjErzHmFn1KLTyC-UKHv-C7h2QnDP22WjHNkjkwAxcxlvoqOGFw1V9kFv_rIGE7rt7OvxVPEbD15Q'
|
|
125
|
+
}
|
|
121
126
|
} = _ref;
|
|
122
127
|
const [storedApiBaseUrl, setStoredApiBaseUrl] = (0, _react.useState)(() => {
|
|
123
128
|
try {
|
|
@@ -163,13 +168,16 @@ const AppointmentPage = _ref => {
|
|
|
163
168
|
const prevToken = localStorage.getItem(STORAGE_KEY_ID_TOKEN);
|
|
164
169
|
if (prevToken !== token) {
|
|
165
170
|
// New token from parent (e.g. Flutter re-login) — clear stored credentials.
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
|
|
171
|
+
// Do NOT call setRefreshLoginTrigger here. App.js uses ReactDOM.render (React 17
|
|
172
|
+
// legacy mode) which does NOT batch setState calls inside effects. Every setState
|
|
173
|
+
// triggers its own synchronous render. Calling both setAppToken(null) AND
|
|
174
|
+
// setRefreshLoginTrigger(+1) produces two separate renders → two SSO effect
|
|
175
|
+
// re-runs → two login network calls. setAppToken(null) alone is sufficient:
|
|
176
|
+
// the SSO effect's needLogin check includes !appToken, so it fires naturally
|
|
177
|
+
// when appToken becomes null, with no second trigger needed.
|
|
169
178
|
setAppToken(null);
|
|
170
179
|
setDoctorIdFromLogin(null);
|
|
171
180
|
setUserName(null);
|
|
172
|
-
if (hadAppToken) setRefreshLoginTrigger(t => t + 1);
|
|
173
181
|
localStorage.removeItem(STORAGE_KEY_APP_TOKEN);
|
|
174
182
|
localStorage.removeItem(STORAGE_KEY_DOCTOR_ID);
|
|
175
183
|
localStorage.removeItem(STORAGE_KEY_USER_NAME);
|
|
@@ -978,8 +986,13 @@ const AppointmentPage = _ref => {
|
|
|
978
986
|
}, [showDatePicker, showAppointmentTypePicker]);
|
|
979
987
|
let fontFamily = '"Nunito", serif';
|
|
980
988
|
|
|
981
|
-
// Error as popup overlay (main page stays in background); auto-redirect to home
|
|
982
|
-
|
|
989
|
+
// Error as popup overlay (main page stays in background); auto-redirect to home.
|
|
990
|
+
// When idToken + email are present but appToken is null, SSO is either running or
|
|
991
|
+
// about to run — suppress the popup entirely during this transient state to prevent
|
|
992
|
+
// a false "Access Denied" flash on every Flutter re-login.
|
|
993
|
+
const ssoCanRun = !!(idToken && email);
|
|
994
|
+
const showAuthError = tokenError ? true // SSO explicitly failed — always show
|
|
995
|
+
: !appToken && !ssoCanRun; // No credentials at all — show
|
|
983
996
|
const authErrorMessage = tokenError || "Sign in required. Redirecting to home...";
|
|
984
997
|
let content;
|
|
985
998
|
if (tokenLoading && idToken && email) {
|
|
@@ -323,7 +323,12 @@
|
|
|
323
323
|
// SDK Component - accepts configuration from parent app
|
|
324
324
|
const AppointmentPage = _ref => {
|
|
325
325
|
let {
|
|
326
|
-
config = {
|
|
326
|
+
config = {
|
|
327
|
+
"email": 'gk.jayavenitha@powerholding.com',
|
|
328
|
+
hospitalId: 'dMtEGhak',
|
|
329
|
+
apiBaseUrl: 'https://afiyaapiqa.powermindinc.com',
|
|
330
|
+
token: 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcwZmM5YzU0YjhiMjQyMWZmMTgyOTgxNTQyZmQ0NjRlOWJlYzM1NDUiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiSmF5YXZlbml0aGEgR0siLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbGl0ZWVtci0zY2M0NyIsImF1ZCI6ImxpdGVlbXItM2NjNDciLCJhdXRoX3RpbWUiOjE3NzY2ODM3ODIsInVzZXJfaWQiOiI5N3hFYjJoSFptU3pWWlFvcHM4Yzc4bzRxUHcxIiwic3ViIjoiOTd4RWIyaEhabVN6VlpRb3BzOGM3OG80cVB3MSIsImlhdCI6MTc3NjY4Mzc4MiwiZXhwIjoxNzc2Njg3MzgyLCJlbWFpbCI6ImdrLmpheWF2ZW5pdGhhQHBvd2VyaG9sZGluZy1pbnRsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJtaWNyb3NvZnQuY29tIjpbIjg2N2ViM2MyLWFlMDgtNDlkZC1hNDNhLWU0OTg2YjZlZDA5YSJdLCJlbWFpbCI6WyJnay5qYXlhdmVuaXRoYUBwb3dlcmhvbGRpbmctaW50bC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJtaWNyb3NvZnQuY29tIn19.pUN8E40VNtIqGe5bwBrZerVAgPiQJn916nOrz-uXPZkdIEOJeC5Bxrt_byRcow7CEQrlpEvpJrOZOUReJRTRjX-sIQ8feT3oSI3dBqiI2A_KzfnqUnMJj7KAVTbGwsqvHLGoChVgkL75YDs_Npz-3arOVsMwo2KaGCLkthM7NqxB1oe22kMyM35f90nXFRhpoBK1jP3Dhp9NiCVhu7XDO0mn7_SMsCIwtuL09L3TNMPOUU0yWVysKwSXbPYNS8qaISRDaami2zjErzHmFn1KLTyC-UKHv-C7h2QnDP22WjHNkjkwAxcxlvoqOGFw1V9kFv_rIGE7rt7OvxVPEbD15Q'
|
|
331
|
+
}
|
|
327
332
|
} = _ref;
|
|
328
333
|
const [storedApiBaseUrl, setStoredApiBaseUrl] = React.useState(() => {
|
|
329
334
|
try {
|
|
@@ -369,13 +374,16 @@
|
|
|
369
374
|
const prevToken = localStorage.getItem(STORAGE_KEY_ID_TOKEN);
|
|
370
375
|
if (prevToken !== token) {
|
|
371
376
|
// New token from parent (e.g. Flutter re-login) — clear stored credentials.
|
|
372
|
-
//
|
|
373
|
-
//
|
|
374
|
-
|
|
377
|
+
// Do NOT call setRefreshLoginTrigger here. App.js uses ReactDOM.render (React 17
|
|
378
|
+
// legacy mode) which does NOT batch setState calls inside effects. Every setState
|
|
379
|
+
// triggers its own synchronous render. Calling both setAppToken(null) AND
|
|
380
|
+
// setRefreshLoginTrigger(+1) produces two separate renders → two SSO effect
|
|
381
|
+
// re-runs → two login network calls. setAppToken(null) alone is sufficient:
|
|
382
|
+
// the SSO effect's needLogin check includes !appToken, so it fires naturally
|
|
383
|
+
// when appToken becomes null, with no second trigger needed.
|
|
375
384
|
setAppToken(null);
|
|
376
385
|
setDoctorIdFromLogin(null);
|
|
377
386
|
setUserName(null);
|
|
378
|
-
if (hadAppToken) setRefreshLoginTrigger(t => t + 1);
|
|
379
387
|
localStorage.removeItem(STORAGE_KEY_APP_TOKEN);
|
|
380
388
|
localStorage.removeItem(STORAGE_KEY_DOCTOR_ID);
|
|
381
389
|
localStorage.removeItem(STORAGE_KEY_USER_NAME);
|
|
@@ -1164,8 +1172,13 @@
|
|
|
1164
1172
|
}, [showDatePicker, showAppointmentTypePicker]);
|
|
1165
1173
|
let fontFamily = '"Nunito", serif';
|
|
1166
1174
|
|
|
1167
|
-
// Error as popup overlay (main page stays in background); auto-redirect to home
|
|
1168
|
-
|
|
1175
|
+
// Error as popup overlay (main page stays in background); auto-redirect to home.
|
|
1176
|
+
// When idToken + email are present but appToken is null, SSO is either running or
|
|
1177
|
+
// about to run — suppress the popup entirely during this transient state to prevent
|
|
1178
|
+
// a false "Access Denied" flash on every Flutter re-login.
|
|
1179
|
+
const ssoCanRun = !!(idToken && email);
|
|
1180
|
+
const showAuthError = tokenError ? true // SSO explicitly failed — always show
|
|
1181
|
+
: !appToken && !ssoCanRun; // No credentials at all — show
|
|
1169
1182
|
let content;
|
|
1170
1183
|
if (tokenLoading && idToken && email) {
|
|
1171
1184
|
// While checking token (SSO in progress), show a simple loading state instead of the full UI
|
|
@@ -3670,12 +3683,15 @@
|
|
|
3670
3683
|
bookingWidgetInstance = document.createElement("div");
|
|
3671
3684
|
document.body.appendChild(bookingWidgetInstance);
|
|
3672
3685
|
}
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3686
|
+
|
|
3687
|
+
// Do NOT define a component inline here. A locally-defined function creates a new
|
|
3688
|
+
// component type reference on every showWidget call. React compares component types
|
|
3689
|
+
// by reference; a new reference causes full unmount+remount instead of a prop update,
|
|
3690
|
+
// resetting all state and re-running all effects — including SSO — on every call.
|
|
3691
|
+
// Render AppointmentPage directly so React updates its props instead of remounting.
|
|
3692
|
+
ReactDOM__default["default"].render(/*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(AppointmentPage, {
|
|
3693
|
+
config: config
|
|
3694
|
+
}), config.showIcdAssistant && /*#__PURE__*/React__default["default"].createElement(ICD10Assistant, null)), bookingWidgetInstance);
|
|
3679
3695
|
},
|
|
3680
3696
|
closePopup: () => {
|
|
3681
3697
|
if (bookingWidgetInstance) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MyPackage={},e.React,e.ReactDOM)}(this,(function(e,t,n){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(t),r=o(n);const l="https://afiyaapiqa.powermindinc.com",i="/appointment/V1/consultant/all-appointments",d="/notification/V1/consultation/online/initiate",s="https://ittisalqa.powermindinc.com/call?token=",c=async function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=(e||"").toUpperCase();"INPROGRESS"===a&&(a="IN_PROGRESS"),"UPCOMING"===a&&(a="UPCOMING,RESCHEDULED");const r=o.apiBaseUrl,l=o.hospitalId,d=o.doctorId,s=o.token||"",c={hospitalId:l,doctorId:d,fromDate:t,toDate:n,statuses:a,appointmentType:"ONLINE"},p=`${r}${i}`,u=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const o=new URL(e);return o.search=new URLSearchParams(t).toString(),fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`${n}`}}).then((async e=>{const t=await e.json().catch((()=>({})));return e.ok?t:{err:t?.resultInfo?.message||"Something went wrong!",status:e.status}})).catch((e=>(console.error("Fetch error:",e),{err:e?.message||String(e)||"Network error"})))}(p,c,"PIH-Appointment-Widget",s);return u},p=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};console.log("initiateConsultation -> config",t);const n=`${t.apiBaseUrl.replace(/\/$/,"")}${d}`,o=t.appToken||"";return async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4?arguments[4]:void 0;const a=new URL(e);Object.keys(n).forEach((e=>{a.searchParams.append(e,n[e])}));const r={"Content-Type":"application/json"};o&&(r.Authorization=o);const l={method:"POST",headers:r,body:JSON.stringify(t)};return fetch(a.toString(),l).then((async e=>{const t=await e.json().catch((()=>({})));return e.ok?t:{err:t?.resultInfo?.message||"Something went wrong!",status:e.status}})).catch((e=>(console.error("Fetch error:",e),{err:e.message||"Network error"})))}(n,{patientId:String(e.patientId||""),primaryPatientId:String(e.primaryPatientId||e.patientId||""),hospitalId:t.hospitalId,doctorId:String(t.doctorId),patientName:e.patientName||e.name||"",doctorName:e.doctorName||t.doctorName,appointmentId:String(e.id||e.appointmentId||e._id||"")},"PIH-Appointment-Widget",{},o)};const u="pih_appointment_idToken",f="pih_appointment_email",m="pih_appointment_appToken",g="pih_appointment_doctorId",x="pih_appointment_userName",h="pih_appointment_apiBaseUrl",y="pih_appointment_hospitalId",b=720,E="pih-appointment-widget",w="data-pih-widget";class S extends t.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,t){"undefined"!=typeof console&&console.error&&console.error("Appointment widget error:",e,t)}render(){return this.state.hasError?a.default.createElement("div",{className:E,[w]:"teleconsult-appointments",style:{fontFamily:'"Nunito", serif',background:"#F5F5F7",boxSizing:"border-box",minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",textAlign:"center"}},a.default.createElement("div",{style:{maxWidth:"400px"}},a.default.createElement("div",{style:{fontSize:"48px",marginBottom:"16px"}},"⚠️"),a.default.createElement("h2",{style:{fontSize:"20px",fontWeight:700,color:"#1a1a1a",margin:"0 0 8px 0"}},"Something went wrong"),a.default.createElement("p",{style:{fontSize:"14px",color:"#666",margin:0,lineHeight:1.5}},"Please refresh the page or try again later."))):this.props.children}}const F=e=>{let{config:n={}}=e;const[o,r]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(h):null}catch{return null}})),[i,d]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(y):null}catch{return null}})),F=n.apiBaseUrl||o||l,v=n.hospitalId||i,[C,A]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(u):null}catch{return null}})),[k,I]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(f):null}catch{return null}})),D=n.idToken||n.token||C,z=n.email||k;t.useEffect((()=>{try{if("undefined"==typeof localStorage)return;const e=n.idToken||n.token;if(e&&String(e).trim()){if(localStorage.getItem(u)!==e){const e=!!localStorage.getItem(m);T(null),W(null),B(null),e&&K((e=>e+1)),localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x),L(null),re(null),Ne(null),j(!1)}localStorage.setItem(u,e),A(e)}n.email&&String(n.email).trim()&&(localStorage.setItem(f,n.email),I(n.email)),n.apiBaseUrl&&String(n.apiBaseUrl).trim()&&(localStorage.setItem(h,n.apiBaseUrl.trim()),r(n.apiBaseUrl.trim())),null!=n.hospitalId&&String(n.hospitalId).trim()&&(localStorage.setItem(y,String(n.hospitalId).trim()),d(String(n.hospitalId).trim()))}catch(e){}}),[n.idToken,n.token,n.email,n.apiBaseUrl,n.hospitalId]);const[M,T]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(m):null}catch{return null}})),[R,W]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(g):null}catch{return null}})),[N,B]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(x):null}catch{return null}})),[H,P]=t.useState((()=>{try{if("undefined"==typeof localStorage)return!1;const e=localStorage.getItem(m),t=localStorage.getItem(u),n=localStorage.getItem(f);return!e&&!(!t||!n)}catch{return!1}})),[Q,L]=t.useState(null),[U,j]=t.useState(!1),[Y,K]=t.useState(0);t.useEffect((()=>{M&&H&&P(!1)}),[M,H]),t.useEffect((()=>{M||(D&&z?(j(!1),L((e=>"Sign in required. Redirecting to home..."===e?null:e))):(L("Sign in required. Redirecting to home..."),j(!0)))}),[M,D,z]),t.useEffect((()=>{if(!U)return;const e=n.homeUrl||"https://afiyaproqa.powermindinc.com/";if(!e||"undefined"==typeof window)return;const t=setTimeout((()=>{window.location.href=e}),2500);return()=>clearTimeout(t)}),[U,n.homeUrl]),t.useEffect((()=>{if(!H)return;const e=setTimeout((()=>{L("Request timed out. Please try again."),P(!1)}),3e4);return()=>clearTimeout(e)}),[H]);const q=n.joinCallUrl||s;M&&String(q||"").replace(/\/?$/,"/");const J=function(e){if(!e||"string"!=typeof e)return{};try{const t=e.split(".");if(3!==t.length)return{};const n=t[1].replace(/-/g,"+").replace(/_/g,"/"),o=n.padEnd(n.length+(4-n.length%4)%4,"=");return JSON.parse(atob(o))}catch{return{}}}(D),O=N||J.name||J.sub||"User",G=()=>(new Date).toISOString().split("T")[0],X=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,[V,Z]=t.useState("upcoming"),[$,_]=t.useState([]),[ee,te]=t.useState(null),[ne,oe]=t.useState(!1),[ae,re]=t.useState(null),[le,ie]=t.useState(window.innerWidth<768),[de,se]=t.useState("today"),[ce,pe]=t.useState("today"),[ue,fe]=t.useState(!1),[me,ge]=t.useState(!1),[xe,he]=t.useState("all"),[ye,be]=t.useState("asc"),[Ee,we]=t.useState(""),[Se,Fe]=t.useState(!1),[ve,Ce]=t.useState(!1),[Ae,ke]=t.useState(!1),[Ie,De]=t.useState(null),[ze,Me]=t.useState(null),[Te,Re]=t.useState(!1),[We,Ne]=t.useState(null),[Be,He]=t.useState((()=>({x:Math.max(20,"undefined"!=typeof window?window.innerWidth-b-20:300),y:80}))),[Pe,Qe]=t.useState({width:b,height:560}),[Le,Ue]=t.useState(!1),[je,Ye]=t.useState({x:0,y:0}),[Ke,qe]=t.useState(!1),[Je,Oe]=t.useState(null),[Ge,Xe]=t.useState({x:0,y:0,width:0,height:0});t.useState(!1);const[Ve,Ze]=t.useState(1),$e=$.filter((e=>{if(!Ee.trim())return!0;const t=Ee.toLowerCase(),n=(e.patientName||"").toLowerCase(),o=String(e.patientId||"").toLowerCase();return n.includes(t)||o.includes(t)})),_e=5*(Ve-1),et=_e+5,tt=$e.slice(_e,et),nt=Math.ceil($e.length/5),ot=$e.length,[at,rt]=t.useState(G()),[lt,it]=t.useState(G()),[dt,st]=t.useState(),[ct,pt]=t.useState(),ut=e=>e?.id||e?._id||e?.appointmentId||e?.patientId||JSON.stringify(e),ft=e=>e?.image?e.image:null,mt=e=>e?e.charAt(0).toUpperCase():"?",gt=e=>{if(!e)return"#4C4DDC";const t=["#4C4DDC","#1CC3CE","#FF6B6B","#4ECDC4","#45B7D1","#FFA07A","#98D8C8","#F7DC6F"];return t[e.charCodeAt(0)%t.length]},xt=()=>{const e="asc"===ye?"desc":"asc";be(e);const t=[...$].sort(((t,n)=>{const o=new Date(t.appointmentDate||t.date||0),a=new Date(n.appointmentDate||n.date||0);return"asc"===e?o-a:a-o}));_(t),Ze(1),t.length>0&&te(t[0])},ht=t.useCallback((async()=>{if(console.log(M,"fetchAppointments -> appToken"),!M)return;try{if("undefined"!=typeof localStorage){if(localStorage.getItem(m)!==M)return}}catch(e){}console.log(R,"fetchAppointments -> doctorIdFromLogin");const e=R;oe(!0),re(null);try{const t={apiBaseUrl:F,hospitalId:v,doctorId:e,token:M},n=await c(V,at,lt,t);if(401===n.status||403===n.status){let e=!0;try{"undefined"!=typeof localStorage&&(e=localStorage.getItem(m)===M)}catch(e){}if(!e)return;try{"undefined"!=typeof localStorage&&(localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x))}catch(e){}return T(null),W(null),B(null),K((e=>e+1)),void re("Session expired. Re-authenticating...")}if(n.err)return void re(String(n.err||"Failed to fetch appointments"));const o=n.data||n.appointments||n||[];_(Array.isArray(o)?o:[]),Array.isArray(o)&&o.length>0?te(o[0]):te(null)}catch(e){console.error("Error fetching appointments:",e),re(e.message||"Failed to fetch appointments")}finally{oe(!1)}}),[V,at,lt,xe,F,v,R,M,D,z]),yt=e=>{te(e),Ne(null)},bt=async()=>{if(ee&&M){Re(!0),Ne(null);try{const e={apiBaseUrl:F,hospitalId:v,doctorId:R,doctorName:N||O,appToken:M};console.log(ee,"selectedAppointment"),console.log(e,"callConfig");const t=await p(ee,e);if(console.log(t.status,"response"),401===t.status||403===t.status){try{"undefined"!=typeof localStorage&&(localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x))}catch(e){}return T(null),W(null),B(null),K((e=>e+1)),void Ne("Session expired. Re-authenticating...")}if(t.err||!t.data?.token)return void Ne(String(t.err||"Failed to initiate call"));const o=n.joinCallUrl||s,a=t.data.token?String(o||"").replace(/\/?$/,"")+t.data.token:"";console.log("joinCallUrl",a),De(t.data.token),Me(a||""),Fe(!0),Ce(!1),ke(!1),Qe({width:b,height:560}),He({x:Math.max(20,window.innerWidth-b-20),y:80})}catch(e){Ne(e.message||"Failed to initiate call")}finally{Re(!1)}}},Et=()=>{Fe(!1),Ce(!1),ke(!1),De(null),Me(null),Ne(null),ht()},wt=()=>{Ae&&ke(!1),Ce(!ve)},St=()=>{ve&&Ce(!1),ke(!Ae)},Ft=e=>{if(0!==e.button)return;if(e.target.closest("button"))return;e.currentTarget.setPointerCapture&&e.currentTarget.setPointerCapture(e.pointerId),Ue(!0);const t=e.currentTarget.getBoundingClientRect();Ye({x:e.clientX-t.left,y:e.clientY-t.top})},vt=t.useCallback((e=>{if(!Ae)if(Le){const t=e.clientX-je.x,n=e.clientY-je.y,o=window.innerWidth-Pe.width,a=window.innerHeight-Pe.height;He({x:Math.max(0,Math.min(t,o)),y:Math.max(0,Math.min(n,a))})}else if(Ke){const t=e.clientX-Ge.x,n=e.clientY-Ge.y;let o=Ge.width,a=Ge.height,r=Ge.posX,l=Ge.posY;const i=300,d=250,s=window.innerWidth-40,c=window.innerHeight-100;if("bottom-right"===Je)o=Math.min(Math.max(Ge.width+t,i),s),a=Math.min(Math.max(Ge.height+n,d),c),r+o>window.innerWidth&&(o=window.innerWidth-r),l+a>window.innerHeight&&(a=window.innerHeight-l);else if("bottom-left"===Je){o=Math.min(Math.max(Ge.width-t,i),s),r=Math.max(0,Ge.posX+t),0===r&&(o=Ge.posX+Ge.width),a=Math.min(Math.max(Ge.height+n,d),c),l+a>window.innerHeight&&(a=window.innerHeight-l)}else if("top-right"===Je){o=Math.min(Math.max(Ge.width+t,i),s),r+o>window.innerWidth&&(o=window.innerWidth-r);a=Math.min(Math.max(Ge.height-n,d),c),l=Math.max(0,Ge.posY+n),0===l&&(a=Ge.posY+Ge.height)}else if("top-left"===Je){o=Math.min(Math.max(Ge.width-t,i),s),r=Math.max(0,Ge.posX+t),0===r&&(o=Ge.posX+Ge.width);a=Math.min(Math.max(Ge.height-n,d),c),l=Math.max(0,Ge.posY+n),0===l&&(a=Ge.posY+Ge.height)}Qe({width:o,height:a}),He({x:r,y:l})}}),[Le,Ke,je,Je,Ge,Be,Pe,Ae]),Ct=()=>{Ue(!1),qe(!1),Oe(null)},At=(e,t)=>{t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture&&t.currentTarget.setPointerCapture(t.pointerId),qe(!0),Oe(e),Xe({x:t.clientX,y:t.clientY,width:Pe.width,height:Pe.height,posX:Be.x,posY:Be.y})};t.useEffect((()=>{if(!Se||Ae)return;const e=()=>{if(!(window.innerWidth<768)){const e=ve?350:Pe.width,t=ve?60:Pe.height,n=window.innerWidth-40,o=window.innerHeight-100,a=Math.min(e,n),r=Math.min(t,o);a===Pe.width&&r===Pe.height||Qe({width:a,height:r});const l=window.innerWidth-a-20,i=window.innerHeight-r-20;He((e=>({x:Math.min(e.x,l),y:Math.min(e.y,i)})))}};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[Se,ve,Ae,Pe]),t.useEffect((()=>{if(!(D&&z&&(!M||Y>0)))return;let e=!1;return P(!0),L(null),(async(e,t,n,o)=>{const a=`${e.replace(/\/$/,"")}/um/user/V1/sso/login?hospitalId=${encodeURIComponent(t)}`,r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:n,email:o})};return console.log("[getTokenFromSso] request",{url:a,body:{idToken:n?n.slice(0,50)+"...":null,email:o}}),fetch(a,r).then((e=>(console.log("[getTokenFromSso] response status",e.status,e.statusText),e.ok?e.json().then((e=>(console.log("[getTokenFromSso] success",{hasData:!!e,dataKeys:e?Object.keys(e):[],hasAccessToken:!!e?.data?.access_token}),e))):e.json().then((t=>{const n=t?.resultInfo?.message||"SSO login failed";return console.log("[getTokenFromSso] error body",t),{err:n,status:e.status}})).catch((()=>({err:"Something went wrong!",status:e.status})))))).catch((e=>(console.error("[getTokenFromSso] catch",e),{err:e.message||"Network error"})))})(F,v,D,z).then((t=>{if(e)return;const n=function(e){return!e||e.err?null:e.data?.access_token??e.data?.token??e.token??e.accessToken??null}(t);if(400===t.status)return L(t.err||"Invalid request. Redirecting to home..."),P(!1),void j(!0);if(t.err||!n){L(String(t.err||"Failed to get token")),T(null),W(null),B(null),K(0);try{"undefined"!=typeof localStorage&&(localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x))}catch(e){}}else{const e=function(e){if(!e?.data)return null;const t=e.data.doctor_id??e.data.doctorId??null;return console.log(t,"extractDoctorIdFromLoginResponse -> id"),null!=t?String(t):null}(t);console.log(e,"extractDoctorIdFromLoginResponse -> doctorId");const o=function(e){if(!e?.data)return null;const t=e.data.name??e.data.doctor_name??e.data.userName??null;return null!=t?String(t):null}(t);T(n),W(e),B(o),L(null),j(!1),K(0);try{"undefined"!=typeof localStorage&&(localStorage.setItem(m,n),e&&localStorage.setItem(g,e),o&&localStorage.setItem(x,o))}catch(e){}}})).catch((t=>{e||(L(t?.message||"Authentication failed. Please try again."),T(null),K(0))})).finally((()=>{e||P(!1)})),()=>{e=!0}}),[F,v,D,z,Y,M]),t.useEffect((()=>{Ze(1),Ne(null)}),[V,de,at,lt,Ee,xe]),t.useEffect((()=>{!H&&M&&ht()}),[ht,M,H]),t.useEffect((()=>{const e=document.createElement("link");e.href="https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap",e.rel="stylesheet",document.head.appendChild(e);const t=document.createElement("style");t.innerHTML="\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n \n @media (max-width: 768px) {\n .appointments-grid {\n grid-template-columns: 1.5fr 1fr 0.8fr !important;\n }\n .appointments-header-grid {\n grid-template-columns: 1.5fr 1fr 0.8fr !important;\n }\n .hide-on-mobile {\n display: none !important;\n }\n }\n @media (max-width: 480px) {\n .appointments-header-grid {\n font-size: 10px !important;\n }\n .appointments-grid {\n font-size: 11px !important;\n }\n }\n ",document.head.appendChild(t);const n=()=>{ie(window.innerWidth<768)};return window.addEventListener("resize",n),()=>{document.head.removeChild(e),document.head.removeChild(t),window.removeEventListener("resize",n)}}),[]),t.useEffect((()=>{const e=e=>{!ue||e.target.closest("button")||e.target.closest('input[type="date"]')||fe(!1),me&&!e.target.closest("[data-appointment-type-picker]")&&ge(!1)};return document.addEventListener("click",e),()=>{document.removeEventListener("click",e)}}),[ue,me]);let kt='"Nunito", serif';const It=Q||!M&&(!D||!z);let Dt;return Dt=H&&D&&z?a.default.createElement("div",{className:E,[w]:"teleconsult-appointments",style:{fontFamily:kt,background:"#F5F5F7",boxSizing:"border-box",height:"100%",minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"24px"}},a.default.createElement("style",null,"@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }"),a.default.createElement("div",{style:{width:"40px",height:"40px",border:"3px solid #f3f3f3",borderTop:"3px solid #4C4DDC",borderRadius:"50%",animation:"spin 1s linear infinite",marginBottom:"16px"}}),a.default.createElement("p",{style:{fontSize:"14px",color:"#666",margin:0}},"Checking authorisation...")):a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{className:E,[w]:"teleconsult-appointments",style:{fontFamily:kt,background:"#F5F5F7",boxSizing:"border-box",height:"100%",minHeight:"100vh",width:"100%",display:"flex",flexDirection:"column",overflow:"hidden"}},a.default.createElement("div",{style:{background:"#FFFFFF",padding:le?"10px 12px":"12px 24px",display:"flex",justifyContent:"space-between",alignItems:"center",borderBottom:"1px solid #E5E5E5",flexWrap:"nowrap",gap:le?"8px":"0"}},a.default.createElement("div",{style:{position:"relative",width:le?"calc(100% - 90px)":"480px",maxWidth:le?"none":"480px"}},a.default.createElement("input",{type:"text",placeholder:"Search by patient name or ID",value:Ee,onChange:e=>we(e.target.value),style:{width:"100%",padding:le?"8px 32px 8px 10px":"8px 36px 8px 14px",border:"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"12px":"13px",fontFamily:kt,background:"#FFFFFF",outline:"none",boxSizing:"border-box"}}),Ee&&a.default.createElement("button",{onClick:()=>we(""),style:{position:"absolute",right:"8px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:"#999",fontSize:"16px"},title:"Clear search"},"✕")),!1),a.default.createElement("div",{style:{padding:le?"12px":"16px 24px",flex:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"}},a.default.createElement("div",{style:{marginBottom:le?"10px":"14px"}},a.default.createElement("h1",{style:{fontSize:le?"18px":"22px",fontWeight:700,color:"#1a1a1a",margin:"0 0 2px 0"}},"Tele Consultation"),a.default.createElement("p",{style:{fontSize:le?"11px":"12px",color:"#999",margin:0}},"Displaying All Tele Consultation Appointments")),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:le?"flex-start":"center",marginBottom:le?"10px":"14px",flexDirection:le?"column":"row",gap:le?"12px":"0"}},a.default.createElement("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap",width:le?"100%":"auto"}},a.default.createElement("button",{onClick:()=>Z("upcoming"),style:{background:"upcoming"===V?"#4C4DDC":"#FFFFFF",padding:le?"8px 10px":"9px 16px",border:"upcoming"===V?"none":"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"10px":"13px",color:"upcoming"===V?"white":"#555555",fontWeight:600,fontFamily:kt,cursor:"pointer",flex:le?"1 1 auto":"none",minWidth:le?"0":"auto",transition:"all 0.3s ease",whiteSpace:"nowrap"}},"Upcoming Appointments"),a.default.createElement("button",{onClick:()=>Z("completed"),style:{background:"completed"===V?"#4C4DDC":"#FFFFFF",padding:le?"8px 10px":"9px 16px",border:"completed"===V?"none":"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"10px":"13px",color:"completed"===V?"white":"#555555",fontWeight:600,fontFamily:kt,cursor:"pointer",flex:le?"1 1 auto":"none",minWidth:le?"0":"auto",transition:"all 0.3s ease",whiteSpace:"nowrap"}},"Completed Appointments"),a.default.createElement("button",{onClick:()=>Z("cancelled"),style:{background:"cancelled"===V?"#4C4DDC":"#FFFFFF",padding:le?"8px 10px":"9px 16px",border:"cancelled"===V?"none":"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"10px":"13px",color:"cancelled"===V?"white":"#555555",fontWeight:600,fontFamily:kt,cursor:"pointer",flex:le?"1 1 auto":"none",minWidth:le?"0":"auto",transition:"all 0.3s ease",whiteSpace:"nowrap"}},"Cancelled Appointments")),a.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",width:"auto",position:"relative",justifyContent:le?"flex-start":"flex-end",flexWrap:"wrap"}},a.default.createElement("button",{onClick:()=>{ue||(st(at),pt(lt),pe(de)),fe(!ue)},style:{padding:"8px 12px",fontFamily:kt,fontWeight:600,border:"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"11px":"13px",color:"#1a1a1a",background:"#FFFFFF",display:"flex",alignItems:"center",gap:le?"4px":"6px",cursor:"pointer",flex:"none",minWidth:le?"100px":"auto",justifyContent:"center"}},a.default.createElement("svg",{width:le?"12":"14",height:le?"12":"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},a.default.createElement("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),a.default.createElement("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),a.default.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),a.default.createElement("line",{x1:"3",y1:"10",x2:"21",y2:"10"})),a.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},(()=>{switch(de){case"today":default:return"Today";case"tomorrow":return"Tomorrow";case"currentWeek":return"Current Week";case"thisMonth":return"This Month";case"currentYear":return"Current Year";case"custom":return le?"Custom":`${at} to ${lt}`}})()),a.default.createElement("svg",{width:le?"8":"10",height:le?"8":"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},a.default.createElement("polyline",{points:"6 9 12 15 18 9"}))),ue&&a.default.createElement("div",{style:{position:"absolute",top:"100%",right:le?"auto":0,left:le?0:"auto",marginTop:"4px",background:"#FFFFFF",border:"1px solid #E5E5E5",borderRadius:"8px",boxShadow:"0 4px 16px rgba(0,0,0,0.15)",padding:"8px",zIndex:1e3,minWidth:le?"280px":"240px",width:le?"calc(100vw - 24px)":"auto",maxWidth:le?"calc(100vw - 24px)":"280px"}},a.default.createElement("div",{style:{marginBottom:"custom"===ce?"12px":"0"}},["thisMonth","today","tomorrow","currentWeek","currentYear","custom"].map((e=>a.default.createElement("button",{key:e,onClick:()=>{if(pe(e),"custom"!==e){const t=(e=>{const t=new Date;let n,o;switch(e){case"today":default:n=o=G();break;case"tomorrow":const e=new Date(t);e.setDate(e.getDate()+1),n=o=X(e);break;case"currentWeek":const a=new Date(t),r=new Date(t),l=t.getDay(),i=0===l?-6:1-l;a.setDate(t.getDate()+i),r.setDate(a.getDate()+6),n=X(a),o=X(r);break;case"thisMonth":const d=new Date(t.getFullYear(),t.getMonth(),1),s=new Date(t.getFullYear(),t.getMonth()+1,0);n=X(d),o=X(s);break;case"currentYear":n=`${t.getFullYear()}-01-01`,o=`${t.getFullYear()}-12-31`}return{from:n,to:o}})(e);se(e),rt(t.from),it(t.to),st(t.from),pt(t.to),fe(!1)}else st(""),pt("")},style:{width:"100%",padding:"10px 12px",background:ce===e?"#E8EEF4":"#FFFFFF",border:"none",borderRadius:"4px",fontSize:"13px",fontFamily:kt,cursor:"pointer",textAlign:"left",fontWeight:ce===e?600:400,color:ce===e?"#4C4DDC":"#1a1a1a",marginBottom:"4px",display:"flex",justifyContent:"space-between",alignItems:"center",transition:"all 0.2s ease"},onMouseEnter:t=>{ce!==e&&(t.target.style.background="#F5F5F5")},onMouseLeave:t=>{ce!==e&&(t.target.style.background="#FFFFFF")}},a.default.createElement("span",null,{thisMonth:"This Month",today:"Today",tomorrow:"Tomorrow",currentWeek:"Current Week",currentYear:"Current Year",custom:"Custom"}[e]),ce===e&&a.default.createElement("span",{style:{color:"#4C4DDC",fontSize:"16px"}},"✓"))))),"custom"===ce&&a.default.createElement("div",{style:{paddingTop:"8px",borderTop:"1px solid #E5E5E5"}},a.default.createElement("div",{style:{marginBottom:"8px"}},a.default.createElement("input",{type:"date",value:dt,onChange:e=>st(e.target.value),placeholder:"Start Date",style:{width:"100%",padding:"10px 8px",border:"1px solid #E5E5E5",borderRadius:"4px",fontSize:"13px",fontFamily:kt,boxSizing:"border-box",cursor:"pointer"}})),a.default.createElement("div",{style:{marginBottom:"12px"}},a.default.createElement("input",{type:"date",value:ct,onChange:e=>pt(e.target.value),placeholder:"End Date",style:{width:"100%",padding:"10px 8px",border:"1px solid #E5E5E5",borderRadius:"4px",fontSize:"13px",fontFamily:kt,boxSizing:"border-box",cursor:"pointer"}})),a.default.createElement("div",{style:{display:"flex",gap:"8px"}},a.default.createElement("button",{onClick:()=>{pe(de),st(at),pt(lt),fe(!1)},style:{flex:1,padding:"10px 12px",background:"#FFFFFF",color:"#4C4DDC",border:"1px solid #4C4DDC",borderRadius:"4px",fontSize:"13px",fontFamily:kt,fontWeight:600,cursor:"pointer"}},"Cancel"),a.default.createElement("button",{onClick:()=>{dt&&ct&&(se("custom"),rt(dt),it(ct),fe(!1))},style:{flex:1,padding:"10px 12px",background:"#4C4DDC",color:"#FFFFFF",border:"none",borderRadius:"4px",fontSize:"13px",fontFamily:kt,fontWeight:600,cursor:"pointer"}},"Submit")))))),a.default.createElement("div",{style:{display:"flex",flexDirection:le?"column":"row",gap:le?"12px":"14px",flex:1,minHeight:0,overflow:le?"auto":"hidden"}},a.default.createElement("div",{style:{flex:le?"none":"1 1 65%",width:le?"100%":"auto",display:"flex",flexDirection:"column",minHeight:le?"400px":0,maxHeight:le?"none":"100%",overflow:"hidden"}},a.default.createElement("div",{style:{background:"#FFFFFF",borderRadius:"8px",boxShadow:"0 1px 4px rgba(0,0,0,0.08)",overflow:"hidden",display:"flex",flexDirection:"column",flex:le?"none":1,minHeight:le?"auto":0,maxHeight:le?"none":"100%"}},a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:le?"12px 14px":"14px 18px",borderBottom:"1px solid #F1F1F1"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:le?"6px":"8px"}},a.default.createElement("span",{style:{fontSize:le?"14px":"15px",fontWeight:700,color:"#1a1a1a"}},"Appointments"),a.default.createElement("span",{style:{background:"#4C4DDC",color:"#fff",fontSize:le?"10px":"11px",fontWeight:600,padding:le?"2px 7px":"3px 8px",borderRadius:"12px"}},ot))),a.default.createElement("div",{className:"appointments-header-grid",style:{display:"grid",gridTemplateColumns:le?"1.5fr 1fr 0.8fr":"2.5fr 1fr 1.5fr 0.8fr 1.2fr",gap:le?"8px":"12px",padding:le?"8px 12px":"10px 18px",background:"#F5F5F5",fontSize:le?"10px":"12px",fontWeight:600,color:"#666"}},a.default.createElement("div",null,"Patients name"),!le&&a.default.createElement("div",null,"Patient ID"),a.default.createElement("div",{onClick:xt,style:{display:"flex",alignItems:"center",gap:"3px",cursor:"pointer",userSelect:"none"}},"Date",a.default.createElement("span",{style:{opacity:.7,fontSize:"10px"}},"asc"===ye?"▲":"▼")),!le&&a.default.createElement("div",null,"Slot"),!le&&a.default.createElement("div",null,"Doctor")),a.default.createElement("div",{style:{overflowY:"auto",overflowX:"hidden",flex:1,minHeight:0,maxHeight:le?"none":"430px",WebkitOverflowScrolling:"touch"}},H?a.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"40px",color:"#888"}},a.default.createElement("div",{style:{textAlign:"center"}},a.default.createElement("div",{style:{width:"40px",height:"40px",border:"3px solid #f3f3f3",borderTop:"3px solid #4C4DDC",borderRadius:"50%",animation:"spin 1s linear infinite",margin:"0 auto 10px"}}),"Getting token...")):ne?a.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"40px",color:"#888"}},a.default.createElement("div",{style:{textAlign:"center"}},a.default.createElement("div",{style:{width:"40px",height:"40px",border:"3px solid #f3f3f3",borderTop:"3px solid #4C4DDC",borderRadius:"50%",animation:"spin 1s linear infinite",margin:"0 auto 10px"}}),"Loading appointments...")):ae?a.default.createElement("div",{style:{padding:"40px",textAlign:"center",color:"#FF0000"}},a.default.createElement("div",{style:{fontSize:"16px",marginBottom:"8px"}},"⚠️ Error"),a.default.createElement("div",{style:{fontSize:"13px"}},ae),a.default.createElement("button",{onClick:ht,style:{marginTop:"16px",padding:"8px 16px",background:"#4C4DDC",color:"white",border:"none",borderRadius:"6px",cursor:"pointer",fontFamily:kt}},"Retry")):0===tt.length?a.default.createElement("div",{style:{padding:"40px",textAlign:"center",color:"#888"}},a.default.createElement("div",{style:{fontSize:"16px",marginBottom:"8px"}},"📋"),a.default.createElement("div",{style:{fontSize:"13px"}},Ee?`No appointments found for "${Ee}"`:"No appointments found"),Ee&&a.default.createElement("button",{onClick:()=>we(""),style:{marginTop:"12px",padding:"6px 12px",background:"#4C4DDC",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"12px",fontFamily:kt}},"Clear Search")):tt.map((e=>a.default.createElement("div",{key:ut(e),role:"button",tabIndex:0,onClick:()=>yt(e),onKeyDown:t=>"Enter"===t.key&&yt(e),className:"appointments-grid",style:{display:"grid",gridTemplateColumns:le?"1.5fr 1fr 0.8fr":"2.5fr 1fr 1.5fr 0.8fr 1.2fr",gap:le?"8px":"12px",padding:le?"10px 12px":"12px 18px",background:ut(ee)===ut(e)?"#E8EEF4":"#FFFFFF",borderTop:"1px solid #F1F1F1",alignItems:"center",cursor:"pointer",fontSize:le?"11px":"13px"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:le?"8px":"10px"}},ft(e)?a.default.createElement("img",{src:e.image,alt:"",style:{width:le?"32px":"36px",height:le?"32px":"36px",borderRadius:"50%",objectFit:"cover"}}):a.default.createElement("div",{style:{width:le?"32px":"36px",height:le?"32px":"36px",borderRadius:"50%",background:gt(e.patientName),display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",fontWeight:600,fontSize:le?"14px":"16px"}},mt(e.patientName)),a.default.createElement("div",null,a.default.createElement("div",{style:{fontWeight:600,color:"#1a1a1a",fontSize:le?"11px":"13px"}},e.patientName),a.default.createElement("div",{style:{fontSize:le?"9px":"11px",color:"#888"}},e.email))),!le&&a.default.createElement("div",{style:{color:"#555",fontSize:"12px"}},e.patientId),a.default.createElement("div",{style:{color:"#555",fontSize:le?"10px":"12px"}},(()=>{const t=e.appointmentDate||"",n=t.match(/\s(\d{1,2}:\d{2}(?:\s*(?:AM|PM))?)$/i);return n?a.default.createElement(a.default.Fragment,null,a.default.createElement("div",null,t.slice(0,n.index).trim()),a.default.createElement("div",{style:{fontSize:le?"9px":"11px",color:"#888"}},n[1].trim())):a.default.createElement("div",null,t)})()),!le&&a.default.createElement("div",{style:{color:"#555",fontSize:"12px"}},e.appointmentTime||"-"),!le&&a.default.createElement("div",{style:{color:"#555",fontSize:"12px"}},e.doctorName||e.doctor||"-"))))),!ne&&!ae&&tt.length>0&&a.default.createElement("div",{style:{padding:le?"12px 14px":"14px 18px",borderTop:"1px solid #F1F1F1",display:"flex",justifyContent:"space-between",alignItems:"center",background:"#FFFFFF",flexWrap:le?"wrap":"nowrap",gap:le?"10px":"0"}},a.default.createElement("div",{style:{fontSize:le?"11px":"12px",color:"#666"}},"Showing page ",Ve," of ",nt," (",ot," total)"),a.default.createElement("div",{style:{display:"flex",gap:"6px",alignItems:"center"}},a.default.createElement("button",{onClick:()=>Ze((e=>Math.max(1,e-1))),disabled:1===Ve,style:{padding:le?"6px 10px":"6px 12px",border:"1px solid #E5E5E5",borderRadius:"4px",background:1===Ve?"#F5F5F5":"#FFFFFF",color:1===Ve?"#999":"#1a1a1a",fontSize:le?"11px":"12px",fontFamily:kt,fontWeight:600,cursor:1===Ve?"not-allowed":"pointer",opacity:1===Ve?.5:1}},"Previous"),a.default.createElement("div",{style:{display:"flex",gap:"4px"}},[...Array(Math.min(5,nt))].map(((e,t)=>{let n;return n=nt<=5||Ve<=3?t+1:Ve>=nt-2?nt-4+t:Ve-2+t,a.default.createElement("button",{key:n,onClick:()=>Ze(n),style:{padding:le?"6px 10px":"6px 12px",border:Ve===n?"none":"1px solid #E5E5E5",borderRadius:"4px",background:Ve===n?"#4C4DDC":"#FFFFFF",color:Ve===n?"#FFFFFF":"#1a1a1a",fontSize:le?"11px":"12px",fontFamily:kt,fontWeight:600,cursor:"pointer",minWidth:le?"32px":"36px"}},n)}))),a.default.createElement("button",{onClick:()=>Ze((e=>Math.min(nt,e+1))),disabled:Ve===nt,style:{padding:le?"6px 10px":"6px 12px",border:"1px solid #E5E5E5",borderRadius:"4px",background:Ve===nt?"#F5F5F5":"#FFFFFF",color:Ve===nt?"#999":"#1a1a1a",fontSize:le?"11px":"12px",fontFamily:kt,fontWeight:600,cursor:Ve===nt?"not-allowed":"pointer",opacity:Ve===nt?.5:1}},"Next"))))),a.default.createElement("div",{style:{flex:le?"none":"1 1 35%",width:le?"100%":"auto",display:ee||!le?"flex":"none",flexDirection:"column",minHeight:le?"auto":0}},a.default.createElement("div",{style:{border:"1px solid #E5E5E5",borderRadius:"8px",overflow:"hidden",background:"#FFFFFF",boxShadow:"0 1px 4px rgba(0,0,0,0.08)",display:"flex",flexDirection:"column",flex:le?"none":1,minHeight:le?"auto":0}},ee?a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:le?"12px 14px":"16px 18px",background:"#E8EEF4",borderBottom:"1px solid #E5E5E5"}},a.default.createElement("div",null,a.default.createElement("div",{style:{color:"#002668",fontSize:le?"14px":"16px",fontWeight:"700"}},ee.patientName||"N/A"),a.default.createElement("div",{style:{color:"#002668",fontSize:le?"11px":"13px"}},ee.patientId||ee.mrn||"N/A")),a.default.createElement("div",null,ft(ee)?a.default.createElement("img",{style:{width:le?"36px":"44px",height:le?"36px":"44px",borderRadius:"50%",objectFit:"cover"},src:ee.image,alt:ee.patientName}):a.default.createElement("div",{style:{width:le?"36px":"44px",height:le?"36px":"44px",borderRadius:"50%",background:gt(ee.patientName),display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",fontWeight:700,fontSize:le?"16px":"20px"}},mt(ee.patientName)))),a.default.createElement("div",{style:{padding:le?"12px 14px":"14px 18px",gap:le?"10px":"12px",display:"flex",flexDirection:"column",background:"white",overflow:"auto",flex:1,position:"relative"}},a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Speciality"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.specialisation||ee?.speciality||"N/A")),a.default.createElement("div",{style:{textAlign:"right"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Appointment Type"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.type||ee?.appointmentType||"Online"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Appointment Date"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.date||ee?.appointmentDate||"N/A")),a.default.createElement("div",{style:{textAlign:"right"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Appointment Time"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.time||ee?.appointmentTime||"N/A"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Doctor"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.doctor||ee?.doctorName||"N/A"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Hospital"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.hospital||ee?.hospitalName||"N/A"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Reason for Appointment"),a.default.createElement("div",{style:{fontWeight:"600",fontSize:le?"11px":"12px",lineHeight:"1.4"}},ee?.reason||ee?.reasonForAppointment||"No reason provided"))),("upcoming"===V||"completed"===V&&(e=>{const t=e?.date||e?.appointmentDate,n=e?.time||e?.appointmentTime;if(!t||!n)return!1;try{const e=String(n).trim().match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);let o,a;if(e){o=parseInt(e[1],10),a=parseInt(e[2],10);const t=e[3].toUpperCase();"AM"===t&&12===o&&(o=0),"PM"===t&&12!==o&&(o+=12)}else{const e=String(n).trim().split(":");o=parseInt(e[0],10),a=parseInt(e[1],10)}if(isNaN(o)||isNaN(a))return!1;const r=new Date(`${t} ${String(o).padStart(2,"0")}:${String(a).padStart(2,"0")}:00`);if(isNaN(r.getTime()))return!1;const l=new Date(r.getTime()+72e5);return new Date<=l}catch{return!1}})(ee))&&a.default.createElement("div",{style:{display:"flex",flexDirection:le?"column":"row",gap:"6px",marginTop:"10px"}},a.default.createElement("button",{type:"button",onClick:Te?void 0:bt,disabled:Te,style:{flex:1,background:Te?"#99e4e8":"#1CC3CE",color:"#FFFFFF",border:"1px solid #1CC3CE",borderRadius:"6px",padding:le?"10px 8px":"8px 6px",fontFamily:kt,fontWeight:600,fontSize:le?"11px":"12px",cursor:Te?"not-allowed":"pointer"}},Te?"Connecting...":"Join Call >")),("upcoming"===V||"completed"===V)&&We&&a.default.createElement("div",{style:{fontSize:"11px",color:"#e53935",marginTop:"6px",textAlign:"center",width:"100%"}},"⚠️ ",We))):a.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",padding:"40px",color:"#888",textAlign:"center"}},a.default.createElement("div",null,a.default.createElement("div",{style:{fontSize:"16px",marginBottom:"8px"}},"📋"),a.default.createElement("div",{style:{fontSize:"13px"}},"Select an appointment to view details"))))))),Se&&a.default.createElement("div",{style:{position:"fixed",left:Ae?"0":le?"10px":`${Be.x}px`,top:Ae?"0":le?"70px":`${Be.y}px`,right:Ae?"0":le?"10px":"auto",bottom:Ae?"0":"auto",width:Ae?"100vw":le?"calc(100vw - 20px)":ve?"350px":`${Pe.width}px`,height:Ae?"100vh":ve?"auto":le?"300px":`${Pe.height}px`,background:"#FFFFFF",borderRadius:Ae?"0":"8px",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.3)",zIndex:1e5,overflow:"hidden",display:"flex",flexDirection:"column",transition:Le||Ke?"none":"all 0.3s ease"}},a.default.createElement("div",{onPointerDown:le||Ae?void 0:Ft,onPointerMove:le||Ae?void 0:vt,onPointerUp:le||Ae?void 0:Ct,onPointerCancel:le||Ae?void 0:Ct,style:{background:"linear-gradient(135deg, #4C4DDC 0%, #3A3BBD 100%)",color:"#FFFFFF",padding:le?"8px 10px":"10px 12px",display:"flex",justifyContent:"space-between",alignItems:"center",cursor:le||Ae?"default":"move",userSelect:"none"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:le?"6px":"8px",flex:1,minWidth:0}},a.default.createElement("div",{style:{width:le?"6px":"8px",height:le?"6px":"8px",borderRadius:"50%",background:"#FF4444",animation:"pulse 2s infinite",flexShrink:0}}),a.default.createElement("span",{style:{fontSize:le?"11px":"13px",fontWeight:600,fontFamily:kt,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},"Video Call - ",ee?.patientName||"Patient")),a.default.createElement("div",{style:{display:"flex",gap:le?"4px":"6px",alignItems:"center",flexShrink:0}},a.default.createElement("button",{onClick:wt,style:{background:"rgba(255, 255, 255, 0.2)",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"6px",color:"#FFFFFF",cursor:"pointer",padding:le?"5px 8px":"6px 10px",lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",minWidth:le?"28px":"32px",height:le?"28px":"32px",transition:"background 0.2s ease"},onMouseEnter:e=>e.target.style.background="rgba(255, 255, 255, 0.3)",onMouseLeave:e=>e.target.style.background="rgba(255, 255, 255, 0.2)",title:ve?"Restore":"Minimize"},ve?a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("rect",{x:"3",y:"3",width:"10",height:"10",stroke:"white",strokeWidth:"1.8",fill:"none"})):a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("line",{x1:"3",y1:"8",x2:"13",y2:"8",stroke:"white",strokeWidth:"1.8",strokeLinecap:"round"}))),a.default.createElement("button",{onClick:St,style:{background:"rgba(255, 255, 255, 0.2)",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"6px",color:"#FFFFFF",cursor:"pointer",padding:le?"5px 8px":"6px 10px",lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",minWidth:le?"28px":"32px",height:le?"28px":"32px",transition:"background 0.2s ease"},onMouseEnter:e=>e.target.style.background="rgba(255, 255, 255, 0.3)",onMouseLeave:e=>e.target.style.background="rgba(255, 255, 255, 0.2)",title:Ae?"Exit Fullscreen":"Fullscreen"},Ae?a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("path",{d:"M10 3H13V6M6 13H3V10M13 10V13H10M3 6V3H6",stroke:"white",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})):a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("path",{d:"M3 6V3H6M13 10V13H10M10 3H13V6M6 13H3V10",stroke:"white",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}))),a.default.createElement("button",{onClick:Et,style:{background:"rgba(255, 255, 255, 0.2)",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"6px",color:"#FFFFFF",cursor:"pointer",padding:le?"5px 8px":"6px 10px",lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",minWidth:le?"28px":"32px",height:le?"28px":"32px",fontWeight:"bold",fontSize:le?"18px":"22px",transition:"background 0.2s ease"},onMouseEnter:e=>e.target.style.background="rgba(255, 255, 255, 0.3)",onMouseLeave:e=>e.target.style.background="rgba(255, 255, 255, 0.2)",title:"Close"},"×"))),a.default.createElement("div",{style:{flex:1,background:"#000000",position:"relative",display:ve?"none":"flex",flexDirection:"column"}},a.default.createElement("iframe",{src:(()=>{if(!Ie)return"";return`${String(q||"")}${Ie}`})(),style:{width:"100%",height:"100%",border:"none",flex:1},allow:"camera; microphone; display-capture; autoplay",allowFullScreen:!0,title:"Video Call"})),!le&&!Ae&&!ve&&a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{onPointerDown:e=>At("top-left",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",left:0,top:0,width:"16px",height:"16px",cursor:"nwse-resize",background:"transparent",zIndex:10001}}),a.default.createElement("div",{onPointerDown:e=>At("top-right",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",right:0,top:0,width:"16px",height:"16px",cursor:"nesw-resize",background:"transparent",zIndex:10001}}),a.default.createElement("div",{onPointerDown:e=>At("bottom-left",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",left:0,bottom:0,width:"16px",height:"16px",cursor:"nesw-resize",background:"transparent",zIndex:10001}}),a.default.createElement("div",{onPointerDown:e=>At("bottom-right",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",right:0,bottom:0,width:"16px",height:"16px",cursor:"nwse-resize",background:"transparent",zIndex:10001}})),a.default.createElement("style",null,"\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n "))),It&&a.default.createElement("div",{style:{position:"fixed",inset:0,zIndex:1e5,display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",background:"rgba(0,0,0,0.4)",boxSizing:"border-box"}},a.default.createElement("div",{style:{fontFamily:kt,maxWidth:"400px",width:"100%",padding:"32px 24px",background:"#FFFFFF",borderRadius:"12px",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",textAlign:"center"}},a.default.createElement("div",{style:{fontSize:"48px",marginBottom:"16px"}},"🔒"),a.default.createElement("h2",{style:{fontSize:"20px",fontWeight:700,color:"#1a1a1a",margin:"0 0 8px 0"}},"Access Denied"),a.default.createElement("p",{style:{fontSize:"14px",color:"#666",margin:0,lineHeight:1.5}},"You do not have permission to access Afiya Pro. Please contact administrator for assistance.")))),a.default.createElement(S,null,Dt)},v=Object.freeze({ICD_ONLY:"ICD_ONLY",CLAUDE_ONLY:"CLAUDE_ONLY",AUTO:"AUTO"}),C=`${l}/insurance/api/icd/suggest`;async function A(e,t){if(!e||!e.trim())throw new Error("Query cannot be empty");const n=await fetch(C,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e.trim(),mode:t})});if(!n.ok){const e=await n.json().catch((()=>({}))),t=e?.message||e?.error?.message||`API error: ${n.status} ${n.statusText}`;throw new Error(t)}const o=await n.json(),a=o?.data??o;if(Array.isArray(a?.matches))return{matches:a.matches,note:a.note||""};if(Array.isArray(a))return{matches:a,note:""};if(Array.isArray(a?.results))return{matches:a.results.map((e=>({code:e.code,description:e.description||e.name||"",reason:e.reason||""}))),note:a.note||""};throw new Error("Unexpected response format from ICD suggest API")}const k="data:image/png;base64,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",I="💡",D="🕐",z="⚕️",M='"Nunito", sans-serif',T={primary:"#4C4DDC",primaryDark:"#3A3BBD",primaryLight:"#E8EEF4",teal:"#1CC3CE",tealLight:"#E0F8F9",success:"#16a34a",successLight:"#dcfce7",error:"#dc2626",errorLight:"#fee2e2",warn:"#d97706",warnLight:"#fef3c7",text:"#1a1a1a",muted:"#666",border:"#E5E5E5",bg:"#F5F5F7",white:"#FFFFFF"};function R(e){let{children:t,color:n=T.primary,bg:o=T.primaryLight}=e;return a.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",padding:"2px 10px",borderRadius:"999px",fontSize:"12px",fontWeight:700,color:n,background:o,letterSpacing:"0.5px"}},t)}function W(){return a.default.createElement(a.default.Fragment,null,a.default.createElement("style",null,"@keyframes icd-spin{to{transform:rotate(360deg)}}"),a.default.createElement("div",{style:{width:20,height:20,border:"2.5px solid #d1d5db",borderTop:`2.5px solid ${T.primary}`,borderRadius:"50%",animation:"icd-spin 0.8s linear infinite",flexShrink:0}}))}function N(e){let{text:t,label:n="Copy",copyKey:o,copiedKey:r,copy:l}=e;const i=r===o;return a.default.createElement("button",{onClick:()=>l(t,o),title:i?"Copied!":`Copy ${n}`,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",fontSize:11,fontWeight:600,fontFamily:M,border:`1px solid ${i?T.success:T.border}`,borderRadius:5,background:i?T.successLight:T.white,color:i?T.success:T.muted,cursor:"pointer",transition:"all 0.15s ease",whiteSpace:"nowrap"}},i?"✓ Copied":`⎘ ${n}`)}function B(e){let{match:t,index:n,copy:o,copiedKey:r}=e;const l=`card-${n}`,i=`${t.code} — ${t.description}${t.reason?`\nNote: ${t.reason}`:""}`;return a.default.createElement("div",{style:{border:`1px solid ${T.border}`,borderRadius:10,padding:"14px 16px",background:T.white,display:"flex",flexDirection:"column",gap:6,boxShadow:"0 1px 4px rgba(0,0,0,0.06)"}},a.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},a.default.createElement(R,{color:T.primary,bg:T.primaryLight},t.code),a.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:T.text,lineHeight:1.4}},t.description)),a.default.createElement(N,{text:i,label:t.code,copyKey:l,copiedKey:r,copy:o})),t.reason&&a.default.createElement("p",{style:{margin:0,fontSize:12,color:T.muted,lineHeight:1.5,paddingLeft:2}},I," ",t.reason))}function H(e){let{item:t,onClick:n}=e;return a.default.createElement("button",{onClick:()=>n(t.query),title:`Re-run: ${t.query}`,style:{padding:"4px 10px",border:`1px solid ${T.border}`,borderRadius:999,fontSize:11,fontFamily:M,color:T.muted,background:T.white,cursor:"pointer",maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",transition:"border-color 0.15s"},onMouseEnter:e=>e.currentTarget.style.borderColor=T.primary,onMouseLeave:e=>e.currentTarget.style.borderColor=T.border},D," ",t.query)}function P(e){let{mode:t,onChange:n}=e;const o=(e,o,r)=>a.default.createElement("button",{onClick:()=>n(e),style:{flex:1,padding:"6px 0",border:"none",borderRadius:6,fontSize:12,fontWeight:700,fontFamily:M,cursor:"pointer",transition:"all 0.15s",background:t===e?T.white:"transparent",color:t===e?T.primary:"rgba(255,255,255,0.7)",boxShadow:t===e?"0 1px 4px rgba(0,0,0,0.15)":"none",display:"flex",alignItems:"center",justifyContent:"center",gap:5}},a.default.createElement("span",null,r)," ",o);return a.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.15)",borderRadius:8,padding:3,gap:2,marginTop:10}},o("nlm","Quick Lookup",""),o("ai","AI Suggest",""))}function Q(e){let{panelRef:n,onClose:o,mode:r,onModeChange:l}=e;const[i,d]=t.useState(""),[s,c]=t.useState([]),[p,u]=t.useState(""),[f,m]=t.useState(""),g=t.useRef(null),x=t.useRef(null);t.useEffect((()=>{setTimeout((()=>x.current?.focus()),80)}),[]);const h=t.useCallback((async e=>{if(e.length<2)return c([]),void u("");u("Searching…");try{const t=((await A(e,v.ICD_ONLY)).matches||[]).map((e=>[e.code,e.description]));c(t),u(0===t.length?"No matching codes found.":`Showing ${t.length} result${1!==t.length?"s":""}`)}catch(e){u(e.message||"Could not fetch results. Check your connection."),c([])}}),[]);return a.default.createElement("div",{ref:n,style:{position:"fixed",bottom:28,right:28,zIndex:99999,width:"min(480px, calc(100vw - 32px))",maxHeight:"calc(100vh - 56px)",display:"flex",flexDirection:"column",background:T.white,borderRadius:16,boxShadow:"0 12px 48px rgba(0,0,0,0.18)",fontFamily:M,overflow:"hidden",animation:"icd-slide-in 0.2s ease"}},a.default.createElement("style",null,"@keyframes icd-slide-in{from{opacity:0;transform:translateY(20px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}"),a.default.createElement("div",{style:{background:`linear-gradient(135deg, ${T.primary} 0%, ${T.teal} 100%)`,padding:"14px 18px",flexShrink:0}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},a.default.createElement("img",{src:k,alt:"ICD-10",style:{width:32,height:32,objectFit:"contain"}}),a.default.createElement("div",null,a.default.createElement("div",{style:{color:T.white,fontWeight:700,fontSize:15,lineHeight:1.2}},"ICD-10 Coding Assistant"),a.default.createElement("div",{style:{color:"rgba(255,255,255,0.75)",fontSize:11}},"Quick ICD-10 lookup"))),a.default.createElement("button",{onClick:o,style:{background:"rgba(255,255,255,0.2)",border:"1px solid rgba(255,255,255,0.3)",borderRadius:8,color:T.white,cursor:"pointer",fontSize:18,fontWeight:"bold",width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center"}},"×")),a.default.createElement(P,{mode:r,onChange:l})),a.default.createElement("div",{style:{flex:1,overflowY:"auto",padding:"16px 18px",display:"flex",flexDirection:"column",gap:10}},a.default.createElement("input",{ref:x,type:"text",value:i,onChange:e=>{const t=e.target.value;d(t),clearTimeout(g.current),g.current=setTimeout((()=>h(t.trim())),300)},placeholder:"Type a diagnosis, e.g. diabetes, hypertension…",style:{width:"100%",padding:"10px 14px",fontSize:14,fontFamily:M,border:`1.5px solid ${T.border}`,borderRadius:8,outline:"none",boxSizing:"border-box",transition:"border-color 0.15s"},onFocus:e=>e.target.style.borderColor=T.primary,onBlur:e=>e.target.style.borderColor=T.border}),a.default.createElement("p",{style:{margin:0,fontSize:11,color:"#aaa",lineHeight:1.6,borderLeft:`3px solid ${T.border}`,paddingLeft:8}},a.default.createElement("strong",null,"Note:")," Use short, specific keywords for better results, or try"," ",a.default.createElement("button",{onClick:()=>l("ai"),style:{background:"none",border:"none",padding:0,color:T.primary,fontWeight:700,fontSize:11,cursor:"pointer",textDecoration:"underline",fontFamily:M}},"AI Suggest")," ","for broader symptom-based recommendations."),p&&s.length>0&&a.default.createElement("p",{style:{margin:0,fontSize:12,color:T.muted}},p),"No matching codes found."===p&&0===s.length&&a.default.createElement("div",{style:{background:T.warnLight,border:"1px solid #fcd34d",borderRadius:10,padding:"14px 16px",display:"flex",gap:10,alignItems:"flex-start"}},a.default.createElement("span",{style:{fontSize:18,flexShrink:0}},"🔍"),a.default.createElement("div",null,a.default.createElement("p",{style:{margin:"0 0 4px",fontSize:13,fontWeight:700,color:T.warn}},"No results found"),a.default.createElement("p",{style:{margin:0,fontSize:12,color:T.warn,lineHeight:1.6}},"We couldn't find a match. Try using more accurate keywords or switch to"," ",a.default.createElement("button",{onClick:()=>l("ai"),style:{background:"none",border:"none",padding:0,color:T.primary,fontWeight:700,fontSize:12,cursor:"pointer",textDecoration:"underline",fontFamily:M}},"AI Suggest")," ","for better results."))),a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},s.map((e=>{let[t,n]=e;return a.default.createElement("div",{key:t,onClick:()=>(e=>{navigator.clipboard.writeText(e).then((()=>{m(e),setTimeout((()=>m("")),2e3)}))})(t),style:{display:"flex",alignItems:"center",gap:12,padding:"10px 14px",border:`1px solid ${T.border}`,borderRadius:8,cursor:"pointer",background:T.white,transition:"background 0.1s"},onMouseEnter:e=>e.currentTarget.style.background=T.bg,onMouseLeave:e=>e.currentTarget.style.background=T.white},a.default.createElement("span",{style:{fontFamily:"monospace",fontSize:12,background:T.primaryLight,color:T.primary,padding:"3px 8px",borderRadius:6,whiteSpace:"nowrap",fontWeight:700}},t),a.default.createElement("span",{style:{fontSize:13,flex:1,color:T.text}},n),a.default.createElement("span",{style:{fontSize:11,color:f===t?T.success:T.muted,fontWeight:f===t?700:400}},f===t?"✓ copied":"copy"))})))),a.default.createElement("div",{style:{flexShrink:0,padding:"10px 18px",borderTop:`1px solid ${T.border}`,background:T.bg,fontSize:11,color:"#aaa",textAlign:"center"}},z," For reference only. Always verify codes with a certified medical coder."))}function L(e){let{onOpen:t}=e;return a.default.createElement("button",{onClick:t,title:"ICD-10 Coding Assistant",style:{position:"fixed",bottom:28,right:28,zIndex:99998,display:"flex",alignItems:"center",gap:8,padding:"10px 18px",borderRadius:999,border:"none",background:`linear-gradient(135deg, ${T.primary} 0%, ${T.teal} 100%)`,color:T.white,fontFamily:M,fontWeight:700,fontSize:13,cursor:"pointer",boxShadow:"0 4px 16px rgba(76,77,220,0.35)",transition:"transform 0.15s ease, box-shadow 0.15s ease"},onMouseEnter:e=>{e.currentTarget.style.transform="translateY(-2px)",e.currentTarget.style.boxShadow="0 8px 24px rgba(76,77,220,0.4)"},onMouseLeave:e=>{e.currentTarget.style.transform="translateY(0)",e.currentTarget.style.boxShadow="0 4px 16px rgba(76,77,220,0.35)"}},a.default.createElement("img",{src:k,alt:"ICD-10",style:{width:22,height:22,objectFit:"contain"}}),"ICD-10 Assistant")}function U(e){let{panelRef:t,textareaRef:n,query:o,loading:r,result:l,error:i,history:d,copy:s,copiedKey:c,onQueryChange:p,onKeyDown:u,onSubmit:f,onClear:m,onClose:g,onHistoryClick:x,mode:h,onModeChange:y}=e;const b=l?.matches?.map((e=>`${e.code} — ${e.description}`)).join("\n")||"";return a.default.createElement("div",{style:{position:"fixed",bottom:28,right:28,zIndex:99999,width:"min(480px, calc(100vw - 32px))",maxHeight:"calc(100vh - 56px)",display:"flex",flexDirection:"column",background:T.white,borderRadius:16,boxShadow:"0 12px 48px rgba(0,0,0,0.18)",fontFamily:M,overflow:"hidden",animation:"icd-slide-in 0.2s ease"},ref:t},a.default.createElement("style",null,"\n @keyframes icd-slide-in {\n from { opacity: 0; transform: translateY(20px) scale(0.97); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n "),a.default.createElement("div",{style:{background:`linear-gradient(135deg, ${T.primary} 0%, ${T.teal} 100%)`,padding:"14px 18px",flexShrink:0}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},a.default.createElement("img",{src:k,alt:"ICD-10",style:{width:32,height:32,objectFit:"contain"}}),a.default.createElement("div",null,a.default.createElement("div",{style:{color:T.white,fontWeight:700,fontSize:15,lineHeight:1.2}},"ICD-10 Coding Assistant"),a.default.createElement("div",{style:{color:"rgba(255,255,255,0.75)",fontSize:11}},"AI-powered · Medical coding helper"))),a.default.createElement("button",{onClick:g,style:{background:"rgba(255,255,255,0.2)",border:"1px solid rgba(255,255,255,0.3)",borderRadius:8,color:T.white,cursor:"pointer",fontSize:18,fontWeight:"bold",width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0}},"×")),a.default.createElement(P,{mode:h,onChange:y})),a.default.createElement("div",{style:{overflowY:"auto",flex:1,padding:"18px 18px 0",display:"flex",flexDirection:"column",gap:14}},a.default.createElement("p",{style:{margin:0,fontSize:13,color:T.muted,lineHeight:1.6}},"Describe a diagnosis, condition, or procedure in plain language and get relevant ICD-10 code suggestions for insurance and billing."),a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},a.default.createElement("label",{style:{fontSize:12,fontWeight:600,color:T.text},htmlFor:"icd10-query"},"Diagnosis / Condition / Procedure"),a.default.createElement("textarea",{id:"icd10-query",ref:n,value:o,onChange:p,onKeyDown:u,placeholder:"e.g. Type 2 diabetes with hypertension, chest pain on exertion, rotator cuff repair…",rows:3,style:{width:"100%",padding:"10px 12px",border:`1.5px solid ${T.border}`,borderRadius:8,fontSize:13,fontFamily:M,color:T.text,resize:"vertical",outline:"none",boxSizing:"border-box",lineHeight:1.5,transition:"border-color 0.15s"},onFocus:e=>e.target.style.borderColor=T.primary,onBlur:e=>e.target.style.borderColor=T.border}),a.default.createElement("div",{style:{fontSize:11,color:"#aaa",textAlign:"right"}},"Press ",a.default.createElement("kbd",{style:{background:"#f3f4f6",padding:"1px 5px",borderRadius:3,fontFamily:"monospace"}},"Enter")," to submit · ",a.default.createElement("kbd",{style:{background:"#f3f4f6",padding:"1px 5px",borderRadius:3,fontFamily:"monospace"}},"Shift+Enter")," for new line")),a.default.createElement("div",{style:{display:"flex",gap:8}},a.default.createElement("button",{onClick:f,disabled:!o.trim()||r,style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:"10px 16px",background:!o.trim()||r?"#d1d5db":`linear-gradient(135deg, ${T.primary} 0%, ${T.primaryDark} 100%)`,color:T.white,border:"none",borderRadius:8,fontSize:13,fontWeight:700,fontFamily:M,cursor:!o.trim()||r?"not-allowed":"pointer",transition:"background 0.15s"}},r?a.default.createElement(a.default.Fragment,null,a.default.createElement(W,null),"Searching codes…"):"Find ICD-10 Codes"),(o||l)&&a.default.createElement("button",{onClick:m,style:{padding:"10px 14px",background:T.bg,border:`1px solid ${T.border}`,borderRadius:8,fontSize:13,fontWeight:600,fontFamily:M,color:T.muted,cursor:"pointer"}},"Clear")),i&&a.default.createElement("div",{style:{background:T.errorLight,border:"1px solid #fca5a5",borderRadius:8,padding:"10px 14px",fontSize:13,color:T.error,display:"flex",gap:8}},a.default.createElement("span",null,"⚠️"),a.default.createElement("span",null,i)),l&&a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},a.default.createElement("span",{style:{fontSize:13,fontWeight:700,color:T.text}},"Suggested Codes"),a.default.createElement(R,{color:T.teal,bg:T.tealLight},l.matches.length," match",1!==l.matches.length?"es":"")),l.matches.length>0&&a.default.createElement(N,{text:b,label:"All",copyKey:"copy-all",copiedKey:c,copy:s})),0===l.matches.length&&a.default.createElement("div",{style:{padding:"20px",textAlign:"center",color:T.muted,fontSize:13,background:T.bg,borderRadius:10}},"No matching ICD-10 codes found."),l.matches.map(((e,t)=>a.default.createElement(B,{key:t,index:t,match:e,copy:s,copiedKey:c})))),d.length>0&&a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},a.default.createElement("span",{style:{fontSize:11,fontWeight:600,color:"#aaa",textTransform:"uppercase",letterSpacing:"0.5px"}},"Recent searches"),a.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},d.map(((e,t)=>a.default.createElement(H,{key:t,item:e,onClick:x})))))),a.default.createElement("div",{style:{flexShrink:0,padding:"12px 18px",borderTop:`1px solid ${T.border}`,background:T.bg,fontSize:11,color:"#aaa",lineHeight:1.5,textAlign:"center"}},z," For reference only. Always verify codes with a certified medical coder. Not a substitute for clinical judgment or official coding guidelines."))}function j(){const[e,n]=t.useState(!1),[o,r]=t.useState("nlm"),[l,i]=t.useState(""),[d,s]=t.useState(!1),[c,p]=t.useState(null),[u,f]=t.useState(null),[m,g]=t.useState([]),x=t.useRef(null),h=t.useRef(null),{copy:y,copiedKey:b}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1800;const[n,o]=t.useState(null),a=t.useCallback((function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";if(navigator.clipboard)navigator.clipboard.writeText(t).then((()=>{o(n),setTimeout((()=>o(null)),e)}));else{const a=document.createElement("textarea");a.value=t,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a),o(n),setTimeout((()=>o(null)),e)}}),[e]);return{copy:a,copiedKey:n}}();t.useEffect((()=>{e&&x.current&&setTimeout((()=>x.current?.focus()),80)}),[e]),t.useEffect((()=>{if(!e)return;const t=e=>{h.current&&!h.current.contains(e.target)&&n(!1)};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)}),[e]);const E=t.useCallback((async()=>{if(l.trim()&&!d){s(!0),f(null),p(null);try{const e=await A(l.trim(),v.CLAUDE_ONLY);p(e),g((t=>{const n=t.filter((e=>e.query.toLowerCase()!==l.trim().toLowerCase()));return[{query:l.trim(),matches:e.matches},...n].slice(0,3)}))}catch(e){f(e.message||"Something went wrong. Please try again.")}finally{s(!1)}}}),[l,d]),w=t.useCallback((e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),E())}),[E]),S=t.useCallback((()=>{i(""),p(null),f(null),x.current?.focus()}),[]),F=t.useCallback((e=>{i(e),p(null),f(null),x.current?.focus()}),[]),C=t.useCallback((e=>i(e.target.value)),[]);return a.default.createElement(a.default.Fragment,null,!e&&a.default.createElement(L,{onOpen:()=>n(!0)}),e&&"nlm"===o&&a.default.createElement(Q,{panelRef:h,onClose:()=>n(!1),mode:o,onModeChange:r}),e&&"ai"===o&&a.default.createElement(U,{panelRef:h,textareaRef:x,query:l,loading:d,result:c,error:u,history:m,copy:y,copiedKey:b,onQueryChange:C,onKeyDown:w,onSubmit:E,onClear:S,onClose:()=>n(!1),onHistoryClick:F,mode:o,onModeChange:r}))}let Y=null;const K={showWidget:(e,t)=>{Y||(Y=document.createElement("div"),document.body.appendChild(Y));const n=()=>a.default.createElement(a.default.Fragment,null,a.default.createElement(F,{config:e}),e.showIcdAssistant&&a.default.createElement(j,null));r.default.render(a.default.createElement(n,null),Y)},closePopup:()=>{Y&&(r.default.unmountComponentAtNode(Y),Y=null)}};window.BookingSDK=K,e.AppointmentPage=F,e.ICD10Assistant=j,e.PIH_APPOINTMENT_WIDGET_CLASS=E,e.default=K,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MyPackage={},e.React,e.ReactDOM)}(this,(function(e,t,n){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=o(t),r=o(n);const l="https://afiyaapiqa.powermindinc.com",i="/appointment/V1/consultant/all-appointments",d="/notification/V1/consultation/online/initiate",s="https://ittisalqa.powermindinc.com/call?token=",c=async function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=(e||"").toUpperCase();"INPROGRESS"===a&&(a="IN_PROGRESS"),"UPCOMING"===a&&(a="UPCOMING,RESCHEDULED");const r=o.apiBaseUrl,l=o.hospitalId,d=o.doctorId,s=o.token||"",c={hospitalId:l,doctorId:d,fromDate:t,toDate:n,statuses:a,appointmentType:"ONLINE"},p=`${r}${i}`,u=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const o=new URL(e);return o.search=new URLSearchParams(t).toString(),fetch(o,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`${n}`}}).then((async e=>{const t=await e.json().catch((()=>({})));return e.ok?t:{err:t?.resultInfo?.message||"Something went wrong!",status:e.status}})).catch((e=>(console.error("Fetch error:",e),{err:e?.message||String(e)||"Network error"})))}(p,c,"PIH-Appointment-Widget",s);return u},p=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};console.log("initiateConsultation -> config",t);const n=`${t.apiBaseUrl.replace(/\/$/,"")}${d}`,o=t.appToken||"";return async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4?arguments[4]:void 0;const a=new URL(e);Object.keys(n).forEach((e=>{a.searchParams.append(e,n[e])}));const r={"Content-Type":"application/json"};o&&(r.Authorization=o);const l={method:"POST",headers:r,body:JSON.stringify(t)};return fetch(a.toString(),l).then((async e=>{const t=await e.json().catch((()=>({})));return e.ok?t:{err:t?.resultInfo?.message||"Something went wrong!",status:e.status}})).catch((e=>(console.error("Fetch error:",e),{err:e.message||"Network error"})))}(n,{patientId:String(e.patientId||""),primaryPatientId:String(e.primaryPatientId||e.patientId||""),hospitalId:t.hospitalId,doctorId:String(t.doctorId),patientName:e.patientName||e.name||"",doctorName:e.doctorName||t.doctorName,appointmentId:String(e.id||e.appointmentId||e._id||"")},"PIH-Appointment-Widget",{},o)};const u="pih_appointment_idToken",f="pih_appointment_email",m="pih_appointment_appToken",g="pih_appointment_doctorId",x="pih_appointment_userName",h="pih_appointment_apiBaseUrl",y="pih_appointment_hospitalId",b=720,E="pih-appointment-widget",w="data-pih-widget";class S extends t.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,t){"undefined"!=typeof console&&console.error&&console.error("Appointment widget error:",e,t)}render(){return this.state.hasError?a.default.createElement("div",{className:E,[w]:"teleconsult-appointments",style:{fontFamily:'"Nunito", serif',background:"#F5F5F7",boxSizing:"border-box",minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",textAlign:"center"}},a.default.createElement("div",{style:{maxWidth:"400px"}},a.default.createElement("div",{style:{fontSize:"48px",marginBottom:"16px"}},"⚠️"),a.default.createElement("h2",{style:{fontSize:"20px",fontWeight:700,color:"#1a1a1a",margin:"0 0 8px 0"}},"Something went wrong"),a.default.createElement("p",{style:{fontSize:"14px",color:"#666",margin:0,lineHeight:1.5}},"Please refresh the page or try again later."))):this.props.children}}const F=e=>{let{config:n={email:"gk.jayavenitha@powerholding.com",hospitalId:"dMtEGhak",apiBaseUrl:"https://afiyaapiqa.powermindinc.com",token:"eyJhbGciOiJSUzI1NiIsImtpZCI6IjcwZmM5YzU0YjhiMjQyMWZmMTgyOTgxNTQyZmQ0NjRlOWJlYzM1NDUiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiSmF5YXZlbml0aGEgR0siLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbGl0ZWVtci0zY2M0NyIsImF1ZCI6ImxpdGVlbXItM2NjNDciLCJhdXRoX3RpbWUiOjE3NzY2ODM3ODIsInVzZXJfaWQiOiI5N3hFYjJoSFptU3pWWlFvcHM4Yzc4bzRxUHcxIiwic3ViIjoiOTd4RWIyaEhabVN6VlpRb3BzOGM3OG80cVB3MSIsImlhdCI6MTc3NjY4Mzc4MiwiZXhwIjoxNzc2Njg3MzgyLCJlbWFpbCI6ImdrLmpheWF2ZW5pdGhhQHBvd2VyaG9sZGluZy1pbnRsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJtaWNyb3NvZnQuY29tIjpbIjg2N2ViM2MyLWFlMDgtNDlkZC1hNDNhLWU0OTg2YjZlZDA5YSJdLCJlbWFpbCI6WyJnay5qYXlhdmVuaXRoYUBwb3dlcmhvbGRpbmctaW50bC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJtaWNyb3NvZnQuY29tIn19.pUN8E40VNtIqGe5bwBrZerVAgPiQJn916nOrz-uXPZkdIEOJeC5Bxrt_byRcow7CEQrlpEvpJrOZOUReJRTRjX-sIQ8feT3oSI3dBqiI2A_KzfnqUnMJj7KAVTbGwsqvHLGoChVgkL75YDs_Npz-3arOVsMwo2KaGCLkthM7NqxB1oe22kMyM35f90nXFRhpoBK1jP3Dhp9NiCVhu7XDO0mn7_SMsCIwtuL09L3TNMPOUU0yWVysKwSXbPYNS8qaISRDaami2zjErzHmFn1KLTyC-UKHv-C7h2QnDP22WjHNkjkwAxcxlvoqOGFw1V9kFv_rIGE7rt7OvxVPEbD15Q"}}=e;const[o,r]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(h):null}catch{return null}})),[i,d]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(y):null}catch{return null}})),F=n.apiBaseUrl||o||l,v=n.hospitalId||i,[C,A]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(u):null}catch{return null}})),[k,I]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(f):null}catch{return null}})),D=n.idToken||n.token||C,z=n.email||k;t.useEffect((()=>{try{if("undefined"==typeof localStorage)return;const e=n.idToken||n.token;if(e&&String(e).trim()){localStorage.getItem(u)!==e&&(R(null),T(null),B(null),localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x),L(null),re(null),Ne(null),U(!1)),localStorage.setItem(u,e),A(e)}n.email&&String(n.email).trim()&&(localStorage.setItem(f,n.email),I(n.email)),n.apiBaseUrl&&String(n.apiBaseUrl).trim()&&(localStorage.setItem(h,n.apiBaseUrl.trim()),r(n.apiBaseUrl.trim())),null!=n.hospitalId&&String(n.hospitalId).trim()&&(localStorage.setItem(y,String(n.hospitalId).trim()),d(String(n.hospitalId).trim()))}catch(e){}}),[n.idToken,n.token,n.email,n.apiBaseUrl,n.hospitalId]);const[M,R]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(m):null}catch{return null}})),[W,T]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(g):null}catch{return null}})),[N,B]=t.useState((()=>{try{return"undefined"!=typeof localStorage?localStorage.getItem(x):null}catch{return null}})),[H,Q]=t.useState((()=>{try{if("undefined"==typeof localStorage)return!1;const e=localStorage.getItem(m),t=localStorage.getItem(u),n=localStorage.getItem(f);return!e&&!(!t||!n)}catch{return!1}})),[P,L]=t.useState(null),[j,U]=t.useState(!1),[Y,J]=t.useState(0);t.useEffect((()=>{M&&H&&Q(!1)}),[M,H]),t.useEffect((()=>{M||(D&&z?(U(!1),L((e=>"Sign in required. Redirecting to home..."===e?null:e))):(L("Sign in required. Redirecting to home..."),U(!0)))}),[M,D,z]),t.useEffect((()=>{if(!j)return;const e=n.homeUrl||"https://afiyaproqa.powermindinc.com/";if(!e||"undefined"==typeof window)return;const t=setTimeout((()=>{window.location.href=e}),2500);return()=>clearTimeout(t)}),[j,n.homeUrl]),t.useEffect((()=>{if(!H)return;const e=setTimeout((()=>{L("Request timed out. Please try again."),Q(!1)}),3e4);return()=>clearTimeout(e)}),[H]);const O=n.joinCallUrl||s;M&&String(O||"").replace(/\/?$/,"/");const q=function(e){if(!e||"string"!=typeof e)return{};try{const t=e.split(".");if(3!==t.length)return{};const n=t[1].replace(/-/g,"+").replace(/_/g,"/"),o=n.padEnd(n.length+(4-n.length%4)%4,"=");return JSON.parse(atob(o))}catch{return{}}}(D),K=N||q.name||q.sub||"User",G=()=>(new Date).toISOString().split("T")[0],X=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,[V,Z]=t.useState("upcoming"),[$,_]=t.useState([]),[ee,te]=t.useState(null),[ne,oe]=t.useState(!1),[ae,re]=t.useState(null),[le,ie]=t.useState(window.innerWidth<768),[de,se]=t.useState("today"),[ce,pe]=t.useState("today"),[ue,fe]=t.useState(!1),[me,ge]=t.useState(!1),[xe,he]=t.useState("all"),[ye,be]=t.useState("asc"),[Ee,we]=t.useState(""),[Se,Fe]=t.useState(!1),[ve,Ce]=t.useState(!1),[Ae,ke]=t.useState(!1),[Ie,De]=t.useState(null),[ze,Me]=t.useState(null),[Re,We]=t.useState(!1),[Te,Ne]=t.useState(null),[Be,He]=t.useState((()=>({x:Math.max(20,"undefined"!=typeof window?window.innerWidth-b-20:300),y:80}))),[Qe,Pe]=t.useState({width:b,height:560}),[Le,je]=t.useState(!1),[Ue,Ye]=t.useState({x:0,y:0}),[Je,Oe]=t.useState(!1),[qe,Ke]=t.useState(null),[Ge,Xe]=t.useState({x:0,y:0,width:0,height:0});t.useState(!1);const[Ve,Ze]=t.useState(1),$e=$.filter((e=>{if(!Ee.trim())return!0;const t=Ee.toLowerCase(),n=(e.patientName||"").toLowerCase(),o=String(e.patientId||"").toLowerCase();return n.includes(t)||o.includes(t)})),_e=5*(Ve-1),et=_e+5,tt=$e.slice(_e,et),nt=Math.ceil($e.length/5),ot=$e.length,[at,rt]=t.useState(G()),[lt,it]=t.useState(G()),[dt,st]=t.useState(),[ct,pt]=t.useState(),ut=e=>e?.id||e?._id||e?.appointmentId||e?.patientId||JSON.stringify(e),ft=e=>e?.image?e.image:null,mt=e=>e?e.charAt(0).toUpperCase():"?",gt=e=>{if(!e)return"#4C4DDC";const t=["#4C4DDC","#1CC3CE","#FF6B6B","#4ECDC4","#45B7D1","#FFA07A","#98D8C8","#F7DC6F"];return t[e.charCodeAt(0)%t.length]},xt=()=>{const e="asc"===ye?"desc":"asc";be(e);const t=[...$].sort(((t,n)=>{const o=new Date(t.appointmentDate||t.date||0),a=new Date(n.appointmentDate||n.date||0);return"asc"===e?o-a:a-o}));_(t),Ze(1),t.length>0&&te(t[0])},ht=t.useCallback((async()=>{if(console.log(M,"fetchAppointments -> appToken"),!M)return;try{if("undefined"!=typeof localStorage){if(localStorage.getItem(m)!==M)return}}catch(e){}console.log(W,"fetchAppointments -> doctorIdFromLogin");const e=W;oe(!0),re(null);try{const t={apiBaseUrl:F,hospitalId:v,doctorId:e,token:M},n=await c(V,at,lt,t);if(401===n.status||403===n.status){let e=!0;try{"undefined"!=typeof localStorage&&(e=localStorage.getItem(m)===M)}catch(e){}if(!e)return;try{"undefined"!=typeof localStorage&&(localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x))}catch(e){}return R(null),T(null),B(null),J((e=>e+1)),void re("Session expired. Re-authenticating...")}if(n.err)return void re(String(n.err||"Failed to fetch appointments"));const o=n.data||n.appointments||n||[];_(Array.isArray(o)?o:[]),Array.isArray(o)&&o.length>0?te(o[0]):te(null)}catch(e){console.error("Error fetching appointments:",e),re(e.message||"Failed to fetch appointments")}finally{oe(!1)}}),[V,at,lt,xe,F,v,W,M,D,z]),yt=e=>{te(e),Ne(null)},bt=async()=>{if(ee&&M){We(!0),Ne(null);try{const e={apiBaseUrl:F,hospitalId:v,doctorId:W,doctorName:N||K,appToken:M};console.log(ee,"selectedAppointment"),console.log(e,"callConfig");const t=await p(ee,e);if(console.log(t.status,"response"),401===t.status||403===t.status){try{"undefined"!=typeof localStorage&&(localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x))}catch(e){}return R(null),T(null),B(null),J((e=>e+1)),void Ne("Session expired. Re-authenticating...")}if(t.err||!t.data?.token)return void Ne(String(t.err||"Failed to initiate call"));const o=n.joinCallUrl||s,a=t.data.token?String(o||"").replace(/\/?$/,"")+t.data.token:"";console.log("joinCallUrl",a),De(t.data.token),Me(a||""),Fe(!0),Ce(!1),ke(!1),Pe({width:b,height:560}),He({x:Math.max(20,window.innerWidth-b-20),y:80})}catch(e){Ne(e.message||"Failed to initiate call")}finally{We(!1)}}},Et=()=>{Fe(!1),Ce(!1),ke(!1),De(null),Me(null),Ne(null),ht()},wt=()=>{Ae&&ke(!1),Ce(!ve)},St=()=>{ve&&Ce(!1),ke(!Ae)},Ft=e=>{if(0!==e.button)return;if(e.target.closest("button"))return;e.currentTarget.setPointerCapture&&e.currentTarget.setPointerCapture(e.pointerId),je(!0);const t=e.currentTarget.getBoundingClientRect();Ye({x:e.clientX-t.left,y:e.clientY-t.top})},vt=t.useCallback((e=>{if(!Ae)if(Le){const t=e.clientX-Ue.x,n=e.clientY-Ue.y,o=window.innerWidth-Qe.width,a=window.innerHeight-Qe.height;He({x:Math.max(0,Math.min(t,o)),y:Math.max(0,Math.min(n,a))})}else if(Je){const t=e.clientX-Ge.x,n=e.clientY-Ge.y;let o=Ge.width,a=Ge.height,r=Ge.posX,l=Ge.posY;const i=300,d=250,s=window.innerWidth-40,c=window.innerHeight-100;if("bottom-right"===qe)o=Math.min(Math.max(Ge.width+t,i),s),a=Math.min(Math.max(Ge.height+n,d),c),r+o>window.innerWidth&&(o=window.innerWidth-r),l+a>window.innerHeight&&(a=window.innerHeight-l);else if("bottom-left"===qe){o=Math.min(Math.max(Ge.width-t,i),s),r=Math.max(0,Ge.posX+t),0===r&&(o=Ge.posX+Ge.width),a=Math.min(Math.max(Ge.height+n,d),c),l+a>window.innerHeight&&(a=window.innerHeight-l)}else if("top-right"===qe){o=Math.min(Math.max(Ge.width+t,i),s),r+o>window.innerWidth&&(o=window.innerWidth-r);a=Math.min(Math.max(Ge.height-n,d),c),l=Math.max(0,Ge.posY+n),0===l&&(a=Ge.posY+Ge.height)}else if("top-left"===qe){o=Math.min(Math.max(Ge.width-t,i),s),r=Math.max(0,Ge.posX+t),0===r&&(o=Ge.posX+Ge.width);a=Math.min(Math.max(Ge.height-n,d),c),l=Math.max(0,Ge.posY+n),0===l&&(a=Ge.posY+Ge.height)}Pe({width:o,height:a}),He({x:r,y:l})}}),[Le,Je,Ue,qe,Ge,Be,Qe,Ae]),Ct=()=>{je(!1),Oe(!1),Ke(null)},At=(e,t)=>{t.preventDefault(),t.stopPropagation(),t.currentTarget.setPointerCapture&&t.currentTarget.setPointerCapture(t.pointerId),Oe(!0),Ke(e),Xe({x:t.clientX,y:t.clientY,width:Qe.width,height:Qe.height,posX:Be.x,posY:Be.y})};t.useEffect((()=>{if(!Se||Ae)return;const e=()=>{if(!(window.innerWidth<768)){const e=ve?350:Qe.width,t=ve?60:Qe.height,n=window.innerWidth-40,o=window.innerHeight-100,a=Math.min(e,n),r=Math.min(t,o);a===Qe.width&&r===Qe.height||Pe({width:a,height:r});const l=window.innerWidth-a-20,i=window.innerHeight-r-20;He((e=>({x:Math.min(e.x,l),y:Math.min(e.y,i)})))}};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[Se,ve,Ae,Qe]),t.useEffect((()=>{if(!(D&&z&&(!M||Y>0)))return;let e=!1;return Q(!0),L(null),(async(e,t,n,o)=>{const a=`${e.replace(/\/$/,"")}/um/user/V1/sso/login?hospitalId=${encodeURIComponent(t)}`,r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({idToken:n,email:o})};return console.log("[getTokenFromSso] request",{url:a,body:{idToken:n?n.slice(0,50)+"...":null,email:o}}),fetch(a,r).then((e=>(console.log("[getTokenFromSso] response status",e.status,e.statusText),e.ok?e.json().then((e=>(console.log("[getTokenFromSso] success",{hasData:!!e,dataKeys:e?Object.keys(e):[],hasAccessToken:!!e?.data?.access_token}),e))):e.json().then((t=>{const n=t?.resultInfo?.message||"SSO login failed";return console.log("[getTokenFromSso] error body",t),{err:n,status:e.status}})).catch((()=>({err:"Something went wrong!",status:e.status})))))).catch((e=>(console.error("[getTokenFromSso] catch",e),{err:e.message||"Network error"})))})(F,v,D,z).then((t=>{if(e)return;const n=function(e){return!e||e.err?null:e.data?.access_token??e.data?.token??e.token??e.accessToken??null}(t);if(400===t.status)return L(t.err||"Invalid request. Redirecting to home..."),Q(!1),void U(!0);if(t.err||!n){L(String(t.err||"Failed to get token")),R(null),T(null),B(null),J(0);try{"undefined"!=typeof localStorage&&(localStorage.removeItem(m),localStorage.removeItem(g),localStorage.removeItem(x))}catch(e){}}else{const e=function(e){if(!e?.data)return null;const t=e.data.doctor_id??e.data.doctorId??null;return console.log(t,"extractDoctorIdFromLoginResponse -> id"),null!=t?String(t):null}(t);console.log(e,"extractDoctorIdFromLoginResponse -> doctorId");const o=function(e){if(!e?.data)return null;const t=e.data.name??e.data.doctor_name??e.data.userName??null;return null!=t?String(t):null}(t);R(n),T(e),B(o),L(null),U(!1),J(0);try{"undefined"!=typeof localStorage&&(localStorage.setItem(m,n),e&&localStorage.setItem(g,e),o&&localStorage.setItem(x,o))}catch(e){}}})).catch((t=>{e||(L(t?.message||"Authentication failed. Please try again."),R(null),J(0))})).finally((()=>{e||Q(!1)})),()=>{e=!0}}),[F,v,D,z,Y,M]),t.useEffect((()=>{Ze(1),Ne(null)}),[V,de,at,lt,Ee,xe]),t.useEffect((()=>{!H&&M&&ht()}),[ht,M,H]),t.useEffect((()=>{const e=document.createElement("link");e.href="https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap",e.rel="stylesheet",document.head.appendChild(e);const t=document.createElement("style");t.innerHTML="\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n \n @media (max-width: 768px) {\n .appointments-grid {\n grid-template-columns: 1.5fr 1fr 0.8fr !important;\n }\n .appointments-header-grid {\n grid-template-columns: 1.5fr 1fr 0.8fr !important;\n }\n .hide-on-mobile {\n display: none !important;\n }\n }\n @media (max-width: 480px) {\n .appointments-header-grid {\n font-size: 10px !important;\n }\n .appointments-grid {\n font-size: 11px !important;\n }\n }\n ",document.head.appendChild(t);const n=()=>{ie(window.innerWidth<768)};return window.addEventListener("resize",n),()=>{document.head.removeChild(e),document.head.removeChild(t),window.removeEventListener("resize",n)}}),[]),t.useEffect((()=>{const e=e=>{!ue||e.target.closest("button")||e.target.closest('input[type="date"]')||fe(!1),me&&!e.target.closest("[data-appointment-type-picker]")&&ge(!1)};return document.addEventListener("click",e),()=>{document.removeEventListener("click",e)}}),[ue,me]);let kt='"Nunito", serif';const It=!!P||!M&&!!(!D||!z);let Dt;return Dt=H&&D&&z?a.default.createElement("div",{className:E,[w]:"teleconsult-appointments",style:{fontFamily:kt,background:"#F5F5F7",boxSizing:"border-box",height:"100%",minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"24px"}},a.default.createElement("style",null,"@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }"),a.default.createElement("div",{style:{width:"40px",height:"40px",border:"3px solid #f3f3f3",borderTop:"3px solid #4C4DDC",borderRadius:"50%",animation:"spin 1s linear infinite",marginBottom:"16px"}}),a.default.createElement("p",{style:{fontSize:"14px",color:"#666",margin:0}},"Checking authorisation...")):a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{className:E,[w]:"teleconsult-appointments",style:{fontFamily:kt,background:"#F5F5F7",boxSizing:"border-box",height:"100%",minHeight:"100vh",width:"100%",display:"flex",flexDirection:"column",overflow:"hidden"}},a.default.createElement("div",{style:{background:"#FFFFFF",padding:le?"10px 12px":"12px 24px",display:"flex",justifyContent:"space-between",alignItems:"center",borderBottom:"1px solid #E5E5E5",flexWrap:"nowrap",gap:le?"8px":"0"}},a.default.createElement("div",{style:{position:"relative",width:le?"calc(100% - 90px)":"480px",maxWidth:le?"none":"480px"}},a.default.createElement("input",{type:"text",placeholder:"Search by patient name or ID",value:Ee,onChange:e=>we(e.target.value),style:{width:"100%",padding:le?"8px 32px 8px 10px":"8px 36px 8px 14px",border:"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"12px":"13px",fontFamily:kt,background:"#FFFFFF",outline:"none",boxSizing:"border-box"}}),Ee&&a.default.createElement("button",{onClick:()=>we(""),style:{position:"absolute",right:"8px",top:"50%",transform:"translateY(-50%)",background:"none",border:"none",cursor:"pointer",padding:"4px",display:"flex",alignItems:"center",justifyContent:"center",color:"#999",fontSize:"16px"},title:"Clear search"},"✕")),!1),a.default.createElement("div",{style:{padding:le?"12px":"16px 24px",flex:1,minHeight:0,overflow:"hidden",display:"flex",flexDirection:"column"}},a.default.createElement("div",{style:{marginBottom:le?"10px":"14px"}},a.default.createElement("h1",{style:{fontSize:le?"18px":"22px",fontWeight:700,color:"#1a1a1a",margin:"0 0 2px 0"}},"Tele Consultation"),a.default.createElement("p",{style:{fontSize:le?"11px":"12px",color:"#999",margin:0}},"Displaying All Tele Consultation Appointments")),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:le?"flex-start":"center",marginBottom:le?"10px":"14px",flexDirection:le?"column":"row",gap:le?"12px":"0"}},a.default.createElement("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap",width:le?"100%":"auto"}},a.default.createElement("button",{onClick:()=>Z("upcoming"),style:{background:"upcoming"===V?"#4C4DDC":"#FFFFFF",padding:le?"8px 10px":"9px 16px",border:"upcoming"===V?"none":"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"10px":"13px",color:"upcoming"===V?"white":"#555555",fontWeight:600,fontFamily:kt,cursor:"pointer",flex:le?"1 1 auto":"none",minWidth:le?"0":"auto",transition:"all 0.3s ease",whiteSpace:"nowrap"}},"Upcoming Appointments"),a.default.createElement("button",{onClick:()=>Z("completed"),style:{background:"completed"===V?"#4C4DDC":"#FFFFFF",padding:le?"8px 10px":"9px 16px",border:"completed"===V?"none":"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"10px":"13px",color:"completed"===V?"white":"#555555",fontWeight:600,fontFamily:kt,cursor:"pointer",flex:le?"1 1 auto":"none",minWidth:le?"0":"auto",transition:"all 0.3s ease",whiteSpace:"nowrap"}},"Completed Appointments"),a.default.createElement("button",{onClick:()=>Z("cancelled"),style:{background:"cancelled"===V?"#4C4DDC":"#FFFFFF",padding:le?"8px 10px":"9px 16px",border:"cancelled"===V?"none":"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"10px":"13px",color:"cancelled"===V?"white":"#555555",fontWeight:600,fontFamily:kt,cursor:"pointer",flex:le?"1 1 auto":"none",minWidth:le?"0":"auto",transition:"all 0.3s ease",whiteSpace:"nowrap"}},"Cancelled Appointments")),a.default.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center",width:"auto",position:"relative",justifyContent:le?"flex-start":"flex-end",flexWrap:"wrap"}},a.default.createElement("button",{onClick:()=>{ue||(st(at),pt(lt),pe(de)),fe(!ue)},style:{padding:"8px 12px",fontFamily:kt,fontWeight:600,border:"1px solid #E5E5E5",borderRadius:"6px",fontSize:le?"11px":"13px",color:"#1a1a1a",background:"#FFFFFF",display:"flex",alignItems:"center",gap:le?"4px":"6px",cursor:"pointer",flex:"none",minWidth:le?"100px":"auto",justifyContent:"center"}},a.default.createElement("svg",{width:le?"12":"14",height:le?"12":"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},a.default.createElement("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),a.default.createElement("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),a.default.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),a.default.createElement("line",{x1:"3",y1:"10",x2:"21",y2:"10"})),a.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},(()=>{switch(de){case"today":default:return"Today";case"tomorrow":return"Tomorrow";case"currentWeek":return"Current Week";case"thisMonth":return"This Month";case"currentYear":return"Current Year";case"custom":return le?"Custom":`${at} to ${lt}`}})()),a.default.createElement("svg",{width:le?"8":"10",height:le?"8":"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},a.default.createElement("polyline",{points:"6 9 12 15 18 9"}))),ue&&a.default.createElement("div",{style:{position:"absolute",top:"100%",right:le?"auto":0,left:le?0:"auto",marginTop:"4px",background:"#FFFFFF",border:"1px solid #E5E5E5",borderRadius:"8px",boxShadow:"0 4px 16px rgba(0,0,0,0.15)",padding:"8px",zIndex:1e3,minWidth:le?"280px":"240px",width:le?"calc(100vw - 24px)":"auto",maxWidth:le?"calc(100vw - 24px)":"280px"}},a.default.createElement("div",{style:{marginBottom:"custom"===ce?"12px":"0"}},["thisMonth","today","tomorrow","currentWeek","currentYear","custom"].map((e=>a.default.createElement("button",{key:e,onClick:()=>{if(pe(e),"custom"!==e){const t=(e=>{const t=new Date;let n,o;switch(e){case"today":default:n=o=G();break;case"tomorrow":const e=new Date(t);e.setDate(e.getDate()+1),n=o=X(e);break;case"currentWeek":const a=new Date(t),r=new Date(t),l=t.getDay(),i=0===l?-6:1-l;a.setDate(t.getDate()+i),r.setDate(a.getDate()+6),n=X(a),o=X(r);break;case"thisMonth":const d=new Date(t.getFullYear(),t.getMonth(),1),s=new Date(t.getFullYear(),t.getMonth()+1,0);n=X(d),o=X(s);break;case"currentYear":n=`${t.getFullYear()}-01-01`,o=`${t.getFullYear()}-12-31`}return{from:n,to:o}})(e);se(e),rt(t.from),it(t.to),st(t.from),pt(t.to),fe(!1)}else st(""),pt("")},style:{width:"100%",padding:"10px 12px",background:ce===e?"#E8EEF4":"#FFFFFF",border:"none",borderRadius:"4px",fontSize:"13px",fontFamily:kt,cursor:"pointer",textAlign:"left",fontWeight:ce===e?600:400,color:ce===e?"#4C4DDC":"#1a1a1a",marginBottom:"4px",display:"flex",justifyContent:"space-between",alignItems:"center",transition:"all 0.2s ease"},onMouseEnter:t=>{ce!==e&&(t.target.style.background="#F5F5F5")},onMouseLeave:t=>{ce!==e&&(t.target.style.background="#FFFFFF")}},a.default.createElement("span",null,{thisMonth:"This Month",today:"Today",tomorrow:"Tomorrow",currentWeek:"Current Week",currentYear:"Current Year",custom:"Custom"}[e]),ce===e&&a.default.createElement("span",{style:{color:"#4C4DDC",fontSize:"16px"}},"✓"))))),"custom"===ce&&a.default.createElement("div",{style:{paddingTop:"8px",borderTop:"1px solid #E5E5E5"}},a.default.createElement("div",{style:{marginBottom:"8px"}},a.default.createElement("input",{type:"date",value:dt,onChange:e=>st(e.target.value),placeholder:"Start Date",style:{width:"100%",padding:"10px 8px",border:"1px solid #E5E5E5",borderRadius:"4px",fontSize:"13px",fontFamily:kt,boxSizing:"border-box",cursor:"pointer"}})),a.default.createElement("div",{style:{marginBottom:"12px"}},a.default.createElement("input",{type:"date",value:ct,onChange:e=>pt(e.target.value),placeholder:"End Date",style:{width:"100%",padding:"10px 8px",border:"1px solid #E5E5E5",borderRadius:"4px",fontSize:"13px",fontFamily:kt,boxSizing:"border-box",cursor:"pointer"}})),a.default.createElement("div",{style:{display:"flex",gap:"8px"}},a.default.createElement("button",{onClick:()=>{pe(de),st(at),pt(lt),fe(!1)},style:{flex:1,padding:"10px 12px",background:"#FFFFFF",color:"#4C4DDC",border:"1px solid #4C4DDC",borderRadius:"4px",fontSize:"13px",fontFamily:kt,fontWeight:600,cursor:"pointer"}},"Cancel"),a.default.createElement("button",{onClick:()=>{dt&&ct&&(se("custom"),rt(dt),it(ct),fe(!1))},style:{flex:1,padding:"10px 12px",background:"#4C4DDC",color:"#FFFFFF",border:"none",borderRadius:"4px",fontSize:"13px",fontFamily:kt,fontWeight:600,cursor:"pointer"}},"Submit")))))),a.default.createElement("div",{style:{display:"flex",flexDirection:le?"column":"row",gap:le?"12px":"14px",flex:1,minHeight:0,overflow:le?"auto":"hidden"}},a.default.createElement("div",{style:{flex:le?"none":"1 1 65%",width:le?"100%":"auto",display:"flex",flexDirection:"column",minHeight:le?"400px":0,maxHeight:le?"none":"100%",overflow:"hidden"}},a.default.createElement("div",{style:{background:"#FFFFFF",borderRadius:"8px",boxShadow:"0 1px 4px rgba(0,0,0,0.08)",overflow:"hidden",display:"flex",flexDirection:"column",flex:le?"none":1,minHeight:le?"auto":0,maxHeight:le?"none":"100%"}},a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:le?"12px 14px":"14px 18px",borderBottom:"1px solid #F1F1F1"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:le?"6px":"8px"}},a.default.createElement("span",{style:{fontSize:le?"14px":"15px",fontWeight:700,color:"#1a1a1a"}},"Appointments"),a.default.createElement("span",{style:{background:"#4C4DDC",color:"#fff",fontSize:le?"10px":"11px",fontWeight:600,padding:le?"2px 7px":"3px 8px",borderRadius:"12px"}},ot))),a.default.createElement("div",{className:"appointments-header-grid",style:{display:"grid",gridTemplateColumns:le?"1.5fr 1fr 0.8fr":"2.5fr 1fr 1.5fr 0.8fr 1.2fr",gap:le?"8px":"12px",padding:le?"8px 12px":"10px 18px",background:"#F5F5F5",fontSize:le?"10px":"12px",fontWeight:600,color:"#666"}},a.default.createElement("div",null,"Patients name"),!le&&a.default.createElement("div",null,"Patient ID"),a.default.createElement("div",{onClick:xt,style:{display:"flex",alignItems:"center",gap:"3px",cursor:"pointer",userSelect:"none"}},"Date",a.default.createElement("span",{style:{opacity:.7,fontSize:"10px"}},"asc"===ye?"▲":"▼")),!le&&a.default.createElement("div",null,"Slot"),!le&&a.default.createElement("div",null,"Doctor")),a.default.createElement("div",{style:{overflowY:"auto",overflowX:"hidden",flex:1,minHeight:0,maxHeight:le?"none":"430px",WebkitOverflowScrolling:"touch"}},H?a.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"40px",color:"#888"}},a.default.createElement("div",{style:{textAlign:"center"}},a.default.createElement("div",{style:{width:"40px",height:"40px",border:"3px solid #f3f3f3",borderTop:"3px solid #4C4DDC",borderRadius:"50%",animation:"spin 1s linear infinite",margin:"0 auto 10px"}}),"Getting token...")):ne?a.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"40px",color:"#888"}},a.default.createElement("div",{style:{textAlign:"center"}},a.default.createElement("div",{style:{width:"40px",height:"40px",border:"3px solid #f3f3f3",borderTop:"3px solid #4C4DDC",borderRadius:"50%",animation:"spin 1s linear infinite",margin:"0 auto 10px"}}),"Loading appointments...")):ae?a.default.createElement("div",{style:{padding:"40px",textAlign:"center",color:"#FF0000"}},a.default.createElement("div",{style:{fontSize:"16px",marginBottom:"8px"}},"⚠️ Error"),a.default.createElement("div",{style:{fontSize:"13px"}},ae),a.default.createElement("button",{onClick:ht,style:{marginTop:"16px",padding:"8px 16px",background:"#4C4DDC",color:"white",border:"none",borderRadius:"6px",cursor:"pointer",fontFamily:kt}},"Retry")):0===tt.length?a.default.createElement("div",{style:{padding:"40px",textAlign:"center",color:"#888"}},a.default.createElement("div",{style:{fontSize:"16px",marginBottom:"8px"}},"📋"),a.default.createElement("div",{style:{fontSize:"13px"}},Ee?`No appointments found for "${Ee}"`:"No appointments found"),Ee&&a.default.createElement("button",{onClick:()=>we(""),style:{marginTop:"12px",padding:"6px 12px",background:"#4C4DDC",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"12px",fontFamily:kt}},"Clear Search")):tt.map((e=>a.default.createElement("div",{key:ut(e),role:"button",tabIndex:0,onClick:()=>yt(e),onKeyDown:t=>"Enter"===t.key&&yt(e),className:"appointments-grid",style:{display:"grid",gridTemplateColumns:le?"1.5fr 1fr 0.8fr":"2.5fr 1fr 1.5fr 0.8fr 1.2fr",gap:le?"8px":"12px",padding:le?"10px 12px":"12px 18px",background:ut(ee)===ut(e)?"#E8EEF4":"#FFFFFF",borderTop:"1px solid #F1F1F1",alignItems:"center",cursor:"pointer",fontSize:le?"11px":"13px"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:le?"8px":"10px"}},ft(e)?a.default.createElement("img",{src:e.image,alt:"",style:{width:le?"32px":"36px",height:le?"32px":"36px",borderRadius:"50%",objectFit:"cover"}}):a.default.createElement("div",{style:{width:le?"32px":"36px",height:le?"32px":"36px",borderRadius:"50%",background:gt(e.patientName),display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",fontWeight:600,fontSize:le?"14px":"16px"}},mt(e.patientName)),a.default.createElement("div",null,a.default.createElement("div",{style:{fontWeight:600,color:"#1a1a1a",fontSize:le?"11px":"13px"}},e.patientName),a.default.createElement("div",{style:{fontSize:le?"9px":"11px",color:"#888"}},e.email))),!le&&a.default.createElement("div",{style:{color:"#555",fontSize:"12px"}},e.patientId),a.default.createElement("div",{style:{color:"#555",fontSize:le?"10px":"12px"}},(()=>{const t=e.appointmentDate||"",n=t.match(/\s(\d{1,2}:\d{2}(?:\s*(?:AM|PM))?)$/i);return n?a.default.createElement(a.default.Fragment,null,a.default.createElement("div",null,t.slice(0,n.index).trim()),a.default.createElement("div",{style:{fontSize:le?"9px":"11px",color:"#888"}},n[1].trim())):a.default.createElement("div",null,t)})()),!le&&a.default.createElement("div",{style:{color:"#555",fontSize:"12px"}},e.appointmentTime||"-"),!le&&a.default.createElement("div",{style:{color:"#555",fontSize:"12px"}},e.doctorName||e.doctor||"-"))))),!ne&&!ae&&tt.length>0&&a.default.createElement("div",{style:{padding:le?"12px 14px":"14px 18px",borderTop:"1px solid #F1F1F1",display:"flex",justifyContent:"space-between",alignItems:"center",background:"#FFFFFF",flexWrap:le?"wrap":"nowrap",gap:le?"10px":"0"}},a.default.createElement("div",{style:{fontSize:le?"11px":"12px",color:"#666"}},"Showing page ",Ve," of ",nt," (",ot," total)"),a.default.createElement("div",{style:{display:"flex",gap:"6px",alignItems:"center"}},a.default.createElement("button",{onClick:()=>Ze((e=>Math.max(1,e-1))),disabled:1===Ve,style:{padding:le?"6px 10px":"6px 12px",border:"1px solid #E5E5E5",borderRadius:"4px",background:1===Ve?"#F5F5F5":"#FFFFFF",color:1===Ve?"#999":"#1a1a1a",fontSize:le?"11px":"12px",fontFamily:kt,fontWeight:600,cursor:1===Ve?"not-allowed":"pointer",opacity:1===Ve?.5:1}},"Previous"),a.default.createElement("div",{style:{display:"flex",gap:"4px"}},[...Array(Math.min(5,nt))].map(((e,t)=>{let n;return n=nt<=5||Ve<=3?t+1:Ve>=nt-2?nt-4+t:Ve-2+t,a.default.createElement("button",{key:n,onClick:()=>Ze(n),style:{padding:le?"6px 10px":"6px 12px",border:Ve===n?"none":"1px solid #E5E5E5",borderRadius:"4px",background:Ve===n?"#4C4DDC":"#FFFFFF",color:Ve===n?"#FFFFFF":"#1a1a1a",fontSize:le?"11px":"12px",fontFamily:kt,fontWeight:600,cursor:"pointer",minWidth:le?"32px":"36px"}},n)}))),a.default.createElement("button",{onClick:()=>Ze((e=>Math.min(nt,e+1))),disabled:Ve===nt,style:{padding:le?"6px 10px":"6px 12px",border:"1px solid #E5E5E5",borderRadius:"4px",background:Ve===nt?"#F5F5F5":"#FFFFFF",color:Ve===nt?"#999":"#1a1a1a",fontSize:le?"11px":"12px",fontFamily:kt,fontWeight:600,cursor:Ve===nt?"not-allowed":"pointer",opacity:Ve===nt?.5:1}},"Next"))))),a.default.createElement("div",{style:{flex:le?"none":"1 1 35%",width:le?"100%":"auto",display:ee||!le?"flex":"none",flexDirection:"column",minHeight:le?"auto":0}},a.default.createElement("div",{style:{border:"1px solid #E5E5E5",borderRadius:"8px",overflow:"hidden",background:"#FFFFFF",boxShadow:"0 1px 4px rgba(0,0,0,0.08)",display:"flex",flexDirection:"column",flex:le?"none":1,minHeight:le?"auto":0}},ee?a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:le?"12px 14px":"16px 18px",background:"#E8EEF4",borderBottom:"1px solid #E5E5E5"}},a.default.createElement("div",null,a.default.createElement("div",{style:{color:"#002668",fontSize:le?"14px":"16px",fontWeight:"700"}},ee.patientName||"N/A"),a.default.createElement("div",{style:{color:"#002668",fontSize:le?"11px":"13px"}},ee.patientId||ee.mrn||"N/A")),a.default.createElement("div",null,ft(ee)?a.default.createElement("img",{style:{width:le?"36px":"44px",height:le?"36px":"44px",borderRadius:"50%",objectFit:"cover"},src:ee.image,alt:ee.patientName}):a.default.createElement("div",{style:{width:le?"36px":"44px",height:le?"36px":"44px",borderRadius:"50%",background:gt(ee.patientName),display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",fontWeight:700,fontSize:le?"16px":"20px"}},mt(ee.patientName)))),a.default.createElement("div",{style:{padding:le?"12px 14px":"14px 18px",gap:le?"10px":"12px",display:"flex",flexDirection:"column",background:"white",overflow:"auto",flex:1,position:"relative"}},a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Speciality"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.specialisation||ee?.speciality||"N/A")),a.default.createElement("div",{style:{textAlign:"right"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Appointment Type"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.type||ee?.appointmentType||"Online"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Appointment Date"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.date||ee?.appointmentDate||"N/A")),a.default.createElement("div",{style:{textAlign:"right"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Appointment Time"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.time||ee?.appointmentTime||"N/A"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Doctor"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.doctor||ee?.doctorName||"N/A"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Hospital"),a.default.createElement("div",{style:{fontWeight:"700",fontSize:le?"12px":"13px"}},ee?.hospital||ee?.hospitalName||"N/A"))),a.default.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},a.default.createElement("div",{style:{textAlign:"left"}},a.default.createElement("div",{style:{fontSize:le?"10px":"11px",color:"#888",marginBottom:"3px"}},"Reason for Appointment"),a.default.createElement("div",{style:{fontWeight:"600",fontSize:le?"11px":"12px",lineHeight:"1.4"}},ee?.reason||ee?.reasonForAppointment||"No reason provided"))),("upcoming"===V||"completed"===V&&(e=>{const t=e?.date||e?.appointmentDate,n=e?.time||e?.appointmentTime;if(!t||!n)return!1;try{const e=String(n).trim().match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);let o,a;if(e){o=parseInt(e[1],10),a=parseInt(e[2],10);const t=e[3].toUpperCase();"AM"===t&&12===o&&(o=0),"PM"===t&&12!==o&&(o+=12)}else{const e=String(n).trim().split(":");o=parseInt(e[0],10),a=parseInt(e[1],10)}if(isNaN(o)||isNaN(a))return!1;const r=new Date(`${t} ${String(o).padStart(2,"0")}:${String(a).padStart(2,"0")}:00`);if(isNaN(r.getTime()))return!1;const l=new Date(r.getTime()+72e5);return new Date<=l}catch{return!1}})(ee))&&a.default.createElement("div",{style:{display:"flex",flexDirection:le?"column":"row",gap:"6px",marginTop:"10px"}},a.default.createElement("button",{type:"button",onClick:Re?void 0:bt,disabled:Re,style:{flex:1,background:Re?"#99e4e8":"#1CC3CE",color:"#FFFFFF",border:"1px solid #1CC3CE",borderRadius:"6px",padding:le?"10px 8px":"8px 6px",fontFamily:kt,fontWeight:600,fontSize:le?"11px":"12px",cursor:Re?"not-allowed":"pointer"}},Re?"Connecting...":"Join Call >")),("upcoming"===V||"completed"===V)&&Te&&a.default.createElement("div",{style:{fontSize:"11px",color:"#e53935",marginTop:"6px",textAlign:"center",width:"100%"}},"⚠️ ",Te))):a.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",padding:"40px",color:"#888",textAlign:"center"}},a.default.createElement("div",null,a.default.createElement("div",{style:{fontSize:"16px",marginBottom:"8px"}},"📋"),a.default.createElement("div",{style:{fontSize:"13px"}},"Select an appointment to view details"))))))),Se&&a.default.createElement("div",{style:{position:"fixed",left:Ae?"0":le?"10px":`${Be.x}px`,top:Ae?"0":le?"70px":`${Be.y}px`,right:Ae?"0":le?"10px":"auto",bottom:Ae?"0":"auto",width:Ae?"100vw":le?"calc(100vw - 20px)":ve?"350px":`${Qe.width}px`,height:Ae?"100vh":ve?"auto":le?"300px":`${Qe.height}px`,background:"#FFFFFF",borderRadius:Ae?"0":"8px",boxShadow:"0 8px 24px rgba(0, 0, 0, 0.3)",zIndex:1e5,overflow:"hidden",display:"flex",flexDirection:"column",transition:Le||Je?"none":"all 0.3s ease"}},a.default.createElement("div",{onPointerDown:le||Ae?void 0:Ft,onPointerMove:le||Ae?void 0:vt,onPointerUp:le||Ae?void 0:Ct,onPointerCancel:le||Ae?void 0:Ct,style:{background:"linear-gradient(135deg, #4C4DDC 0%, #3A3BBD 100%)",color:"#FFFFFF",padding:le?"8px 10px":"10px 12px",display:"flex",justifyContent:"space-between",alignItems:"center",cursor:le||Ae?"default":"move",userSelect:"none"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:le?"6px":"8px",flex:1,minWidth:0}},a.default.createElement("div",{style:{width:le?"6px":"8px",height:le?"6px":"8px",borderRadius:"50%",background:"#FF4444",animation:"pulse 2s infinite",flexShrink:0}}),a.default.createElement("span",{style:{fontSize:le?"11px":"13px",fontWeight:600,fontFamily:kt,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},"Video Call - ",ee?.patientName||"Patient")),a.default.createElement("div",{style:{display:"flex",gap:le?"4px":"6px",alignItems:"center",flexShrink:0}},a.default.createElement("button",{onClick:wt,style:{background:"rgba(255, 255, 255, 0.2)",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"6px",color:"#FFFFFF",cursor:"pointer",padding:le?"5px 8px":"6px 10px",lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",minWidth:le?"28px":"32px",height:le?"28px":"32px",transition:"background 0.2s ease"},onMouseEnter:e=>e.target.style.background="rgba(255, 255, 255, 0.3)",onMouseLeave:e=>e.target.style.background="rgba(255, 255, 255, 0.2)",title:ve?"Restore":"Minimize"},ve?a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("rect",{x:"3",y:"3",width:"10",height:"10",stroke:"white",strokeWidth:"1.8",fill:"none"})):a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("line",{x1:"3",y1:"8",x2:"13",y2:"8",stroke:"white",strokeWidth:"1.8",strokeLinecap:"round"}))),a.default.createElement("button",{onClick:St,style:{background:"rgba(255, 255, 255, 0.2)",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"6px",color:"#FFFFFF",cursor:"pointer",padding:le?"5px 8px":"6px 10px",lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",minWidth:le?"28px":"32px",height:le?"28px":"32px",transition:"background 0.2s ease"},onMouseEnter:e=>e.target.style.background="rgba(255, 255, 255, 0.3)",onMouseLeave:e=>e.target.style.background="rgba(255, 255, 255, 0.2)",title:Ae?"Exit Fullscreen":"Fullscreen"},Ae?a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("path",{d:"M10 3H13V6M6 13H3V10M13 10V13H10M3 6V3H6",stroke:"white",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})):a.default.createElement("svg",{width:le?"14":"16",height:le?"14":"16",viewBox:"0 0 16 16",fill:"none"},a.default.createElement("path",{d:"M3 6V3H6M13 10V13H10M10 3H13V6M6 13H3V10",stroke:"white",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}))),a.default.createElement("button",{onClick:Et,style:{background:"rgba(255, 255, 255, 0.2)",border:"1px solid rgba(255, 255, 255, 0.3)",borderRadius:"6px",color:"#FFFFFF",cursor:"pointer",padding:le?"5px 8px":"6px 10px",lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",minWidth:le?"28px":"32px",height:le?"28px":"32px",fontWeight:"bold",fontSize:le?"18px":"22px",transition:"background 0.2s ease"},onMouseEnter:e=>e.target.style.background="rgba(255, 255, 255, 0.3)",onMouseLeave:e=>e.target.style.background="rgba(255, 255, 255, 0.2)",title:"Close"},"×"))),a.default.createElement("div",{style:{flex:1,background:"#000000",position:"relative",display:ve?"none":"flex",flexDirection:"column"}},a.default.createElement("iframe",{src:(()=>{if(!Ie)return"";return`${String(O||"")}${Ie}`})(),style:{width:"100%",height:"100%",border:"none",flex:1},allow:"camera; microphone; display-capture; autoplay",allowFullScreen:!0,title:"Video Call"})),!le&&!Ae&&!ve&&a.default.createElement(a.default.Fragment,null,a.default.createElement("div",{onPointerDown:e=>At("top-left",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",left:0,top:0,width:"16px",height:"16px",cursor:"nwse-resize",background:"transparent",zIndex:10001}}),a.default.createElement("div",{onPointerDown:e=>At("top-right",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",right:0,top:0,width:"16px",height:"16px",cursor:"nesw-resize",background:"transparent",zIndex:10001}}),a.default.createElement("div",{onPointerDown:e=>At("bottom-left",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",left:0,bottom:0,width:"16px",height:"16px",cursor:"nesw-resize",background:"transparent",zIndex:10001}}),a.default.createElement("div",{onPointerDown:e=>At("bottom-right",e),onPointerMove:vt,onPointerUp:Ct,onPointerCancel:Ct,style:{position:"absolute",right:0,bottom:0,width:"16px",height:"16px",cursor:"nwse-resize",background:"transparent",zIndex:10001}})),a.default.createElement("style",null,"\n @keyframes pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n "))),It&&a.default.createElement("div",{style:{position:"fixed",inset:0,zIndex:1e5,display:"flex",alignItems:"center",justifyContent:"center",padding:"24px",background:"rgba(0,0,0,0.4)",boxSizing:"border-box"}},a.default.createElement("div",{style:{fontFamily:kt,maxWidth:"400px",width:"100%",padding:"32px 24px",background:"#FFFFFF",borderRadius:"12px",boxShadow:"0 8px 32px rgba(0,0,0,0.2)",textAlign:"center"}},a.default.createElement("div",{style:{fontSize:"48px",marginBottom:"16px"}},"🔒"),a.default.createElement("h2",{style:{fontSize:"20px",fontWeight:700,color:"#1a1a1a",margin:"0 0 8px 0"}},"Access Denied"),a.default.createElement("p",{style:{fontSize:"14px",color:"#666",margin:0,lineHeight:1.5}},"You do not have permission to access Afiya Pro. Please contact administrator for assistance.")))),a.default.createElement(S,null,Dt)},v=Object.freeze({ICD_ONLY:"ICD_ONLY",CLAUDE_ONLY:"CLAUDE_ONLY",AUTO:"AUTO"}),C=`${l}/insurance/api/icd/suggest`;async function A(e,t){if(!e||!e.trim())throw new Error("Query cannot be empty");const n=await fetch(C,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:e.trim(),mode:t})});if(!n.ok){const e=await n.json().catch((()=>({}))),t=e?.message||e?.error?.message||`API error: ${n.status} ${n.statusText}`;throw new Error(t)}const o=await n.json(),a=o?.data??o;if(Array.isArray(a?.matches))return{matches:a.matches,note:a.note||""};if(Array.isArray(a))return{matches:a,note:""};if(Array.isArray(a?.results))return{matches:a.results.map((e=>({code:e.code,description:e.description||e.name||"",reason:e.reason||""}))),note:a.note||""};throw new Error("Unexpected response format from ICD suggest API")}const k="data:image/png;base64,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",I="💡",D="🕐",z="⚕️",M='"Nunito", sans-serif',R={primary:"#4C4DDC",primaryDark:"#3A3BBD",primaryLight:"#E8EEF4",teal:"#1CC3CE",tealLight:"#E0F8F9",success:"#16a34a",successLight:"#dcfce7",error:"#dc2626",errorLight:"#fee2e2",warn:"#d97706",warnLight:"#fef3c7",text:"#1a1a1a",muted:"#666",border:"#E5E5E5",bg:"#F5F5F7",white:"#FFFFFF"};function W(e){let{children:t,color:n=R.primary,bg:o=R.primaryLight}=e;return a.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",padding:"2px 10px",borderRadius:"999px",fontSize:"12px",fontWeight:700,color:n,background:o,letterSpacing:"0.5px"}},t)}function T(){return a.default.createElement(a.default.Fragment,null,a.default.createElement("style",null,"@keyframes icd-spin{to{transform:rotate(360deg)}}"),a.default.createElement("div",{style:{width:20,height:20,border:"2.5px solid #d1d5db",borderTop:`2.5px solid ${R.primary}`,borderRadius:"50%",animation:"icd-spin 0.8s linear infinite",flexShrink:0}}))}function N(e){let{text:t,label:n="Copy",copyKey:o,copiedKey:r,copy:l}=e;const i=r===o;return a.default.createElement("button",{onClick:()=>l(t,o),title:i?"Copied!":`Copy ${n}`,style:{display:"inline-flex",alignItems:"center",gap:4,padding:"3px 10px",fontSize:11,fontWeight:600,fontFamily:M,border:`1px solid ${i?R.success:R.border}`,borderRadius:5,background:i?R.successLight:R.white,color:i?R.success:R.muted,cursor:"pointer",transition:"all 0.15s ease",whiteSpace:"nowrap"}},i?"✓ Copied":`⎘ ${n}`)}function B(e){let{match:t,index:n,copy:o,copiedKey:r}=e;const l=`card-${n}`,i=`${t.code} — ${t.description}${t.reason?`\nNote: ${t.reason}`:""}`;return a.default.createElement("div",{style:{border:`1px solid ${R.border}`,borderRadius:10,padding:"14px 16px",background:R.white,display:"flex",flexDirection:"column",gap:6,boxShadow:"0 1px 4px rgba(0,0,0,0.06)"}},a.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},a.default.createElement(W,{color:R.primary,bg:R.primaryLight},t.code),a.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:R.text,lineHeight:1.4}},t.description)),a.default.createElement(N,{text:i,label:t.code,copyKey:l,copiedKey:r,copy:o})),t.reason&&a.default.createElement("p",{style:{margin:0,fontSize:12,color:R.muted,lineHeight:1.5,paddingLeft:2}},I," ",t.reason))}function H(e){let{item:t,onClick:n}=e;return a.default.createElement("button",{onClick:()=>n(t.query),title:`Re-run: ${t.query}`,style:{padding:"4px 10px",border:`1px solid ${R.border}`,borderRadius:999,fontSize:11,fontFamily:M,color:R.muted,background:R.white,cursor:"pointer",maxWidth:180,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",transition:"border-color 0.15s"},onMouseEnter:e=>e.currentTarget.style.borderColor=R.primary,onMouseLeave:e=>e.currentTarget.style.borderColor=R.border},D," ",t.query)}function Q(e){let{mode:t,onChange:n}=e;const o=(e,o,r)=>a.default.createElement("button",{onClick:()=>n(e),style:{flex:1,padding:"6px 0",border:"none",borderRadius:6,fontSize:12,fontWeight:700,fontFamily:M,cursor:"pointer",transition:"all 0.15s",background:t===e?R.white:"transparent",color:t===e?R.primary:"rgba(255,255,255,0.7)",boxShadow:t===e?"0 1px 4px rgba(0,0,0,0.15)":"none",display:"flex",alignItems:"center",justifyContent:"center",gap:5}},a.default.createElement("span",null,r)," ",o);return a.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.15)",borderRadius:8,padding:3,gap:2,marginTop:10}},o("nlm","Quick Lookup",""),o("ai","AI Suggest",""))}function P(e){let{panelRef:n,onClose:o,mode:r,onModeChange:l}=e;const[i,d]=t.useState(""),[s,c]=t.useState([]),[p,u]=t.useState(""),[f,m]=t.useState(""),g=t.useRef(null),x=t.useRef(null);t.useEffect((()=>{setTimeout((()=>x.current?.focus()),80)}),[]);const h=t.useCallback((async e=>{if(e.length<2)return c([]),void u("");u("Searching…");try{const t=((await A(e,v.ICD_ONLY)).matches||[]).map((e=>[e.code,e.description]));c(t),u(0===t.length?"No matching codes found.":`Showing ${t.length} result${1!==t.length?"s":""}`)}catch(e){u(e.message||"Could not fetch results. Check your connection."),c([])}}),[]);return a.default.createElement("div",{ref:n,style:{position:"fixed",bottom:28,right:28,zIndex:99999,width:"min(480px, calc(100vw - 32px))",maxHeight:"calc(100vh - 56px)",display:"flex",flexDirection:"column",background:R.white,borderRadius:16,boxShadow:"0 12px 48px rgba(0,0,0,0.18)",fontFamily:M,overflow:"hidden",animation:"icd-slide-in 0.2s ease"}},a.default.createElement("style",null,"@keyframes icd-slide-in{from{opacity:0;transform:translateY(20px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}"),a.default.createElement("div",{style:{background:`linear-gradient(135deg, ${R.primary} 0%, ${R.teal} 100%)`,padding:"14px 18px",flexShrink:0}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},a.default.createElement("img",{src:k,alt:"ICD-10",style:{width:32,height:32,objectFit:"contain"}}),a.default.createElement("div",null,a.default.createElement("div",{style:{color:R.white,fontWeight:700,fontSize:15,lineHeight:1.2}},"ICD-10 Coding Assistant"),a.default.createElement("div",{style:{color:"rgba(255,255,255,0.75)",fontSize:11}},"Quick ICD-10 lookup"))),a.default.createElement("button",{onClick:o,style:{background:"rgba(255,255,255,0.2)",border:"1px solid rgba(255,255,255,0.3)",borderRadius:8,color:R.white,cursor:"pointer",fontSize:18,fontWeight:"bold",width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center"}},"×")),a.default.createElement(Q,{mode:r,onChange:l})),a.default.createElement("div",{style:{flex:1,overflowY:"auto",padding:"16px 18px",display:"flex",flexDirection:"column",gap:10}},a.default.createElement("input",{ref:x,type:"text",value:i,onChange:e=>{const t=e.target.value;d(t),clearTimeout(g.current),g.current=setTimeout((()=>h(t.trim())),300)},placeholder:"Type a diagnosis, e.g. diabetes, hypertension…",style:{width:"100%",padding:"10px 14px",fontSize:14,fontFamily:M,border:`1.5px solid ${R.border}`,borderRadius:8,outline:"none",boxSizing:"border-box",transition:"border-color 0.15s"},onFocus:e=>e.target.style.borderColor=R.primary,onBlur:e=>e.target.style.borderColor=R.border}),a.default.createElement("p",{style:{margin:0,fontSize:11,color:"#aaa",lineHeight:1.6,borderLeft:`3px solid ${R.border}`,paddingLeft:8}},a.default.createElement("strong",null,"Note:")," Use short, specific keywords for better results, or try"," ",a.default.createElement("button",{onClick:()=>l("ai"),style:{background:"none",border:"none",padding:0,color:R.primary,fontWeight:700,fontSize:11,cursor:"pointer",textDecoration:"underline",fontFamily:M}},"AI Suggest")," ","for broader symptom-based recommendations."),p&&s.length>0&&a.default.createElement("p",{style:{margin:0,fontSize:12,color:R.muted}},p),"No matching codes found."===p&&0===s.length&&a.default.createElement("div",{style:{background:R.warnLight,border:"1px solid #fcd34d",borderRadius:10,padding:"14px 16px",display:"flex",gap:10,alignItems:"flex-start"}},a.default.createElement("span",{style:{fontSize:18,flexShrink:0}},"🔍"),a.default.createElement("div",null,a.default.createElement("p",{style:{margin:"0 0 4px",fontSize:13,fontWeight:700,color:R.warn}},"No results found"),a.default.createElement("p",{style:{margin:0,fontSize:12,color:R.warn,lineHeight:1.6}},"We couldn't find a match. Try using more accurate keywords or switch to"," ",a.default.createElement("button",{onClick:()=>l("ai"),style:{background:"none",border:"none",padding:0,color:R.primary,fontWeight:700,fontSize:12,cursor:"pointer",textDecoration:"underline",fontFamily:M}},"AI Suggest")," ","for better results."))),a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},s.map((e=>{let[t,n]=e;return a.default.createElement("div",{key:t,onClick:()=>(e=>{navigator.clipboard.writeText(e).then((()=>{m(e),setTimeout((()=>m("")),2e3)}))})(t),style:{display:"flex",alignItems:"center",gap:12,padding:"10px 14px",border:`1px solid ${R.border}`,borderRadius:8,cursor:"pointer",background:R.white,transition:"background 0.1s"},onMouseEnter:e=>e.currentTarget.style.background=R.bg,onMouseLeave:e=>e.currentTarget.style.background=R.white},a.default.createElement("span",{style:{fontFamily:"monospace",fontSize:12,background:R.primaryLight,color:R.primary,padding:"3px 8px",borderRadius:6,whiteSpace:"nowrap",fontWeight:700}},t),a.default.createElement("span",{style:{fontSize:13,flex:1,color:R.text}},n),a.default.createElement("span",{style:{fontSize:11,color:f===t?R.success:R.muted,fontWeight:f===t?700:400}},f===t?"✓ copied":"copy"))})))),a.default.createElement("div",{style:{flexShrink:0,padding:"10px 18px",borderTop:`1px solid ${R.border}`,background:R.bg,fontSize:11,color:"#aaa",textAlign:"center"}},z," For reference only. Always verify codes with a certified medical coder."))}function L(e){let{onOpen:t}=e;return a.default.createElement("button",{onClick:t,title:"ICD-10 Coding Assistant",style:{position:"fixed",bottom:28,right:28,zIndex:99998,display:"flex",alignItems:"center",gap:8,padding:"10px 18px",borderRadius:999,border:"none",background:`linear-gradient(135deg, ${R.primary} 0%, ${R.teal} 100%)`,color:R.white,fontFamily:M,fontWeight:700,fontSize:13,cursor:"pointer",boxShadow:"0 4px 16px rgba(76,77,220,0.35)",transition:"transform 0.15s ease, box-shadow 0.15s ease"},onMouseEnter:e=>{e.currentTarget.style.transform="translateY(-2px)",e.currentTarget.style.boxShadow="0 8px 24px rgba(76,77,220,0.4)"},onMouseLeave:e=>{e.currentTarget.style.transform="translateY(0)",e.currentTarget.style.boxShadow="0 4px 16px rgba(76,77,220,0.35)"}},a.default.createElement("img",{src:k,alt:"ICD-10",style:{width:22,height:22,objectFit:"contain"}}),"ICD-10 Assistant")}function j(e){let{panelRef:t,textareaRef:n,query:o,loading:r,result:l,error:i,history:d,copy:s,copiedKey:c,onQueryChange:p,onKeyDown:u,onSubmit:f,onClear:m,onClose:g,onHistoryClick:x,mode:h,onModeChange:y}=e;const b=l?.matches?.map((e=>`${e.code} — ${e.description}`)).join("\n")||"";return a.default.createElement("div",{style:{position:"fixed",bottom:28,right:28,zIndex:99999,width:"min(480px, calc(100vw - 32px))",maxHeight:"calc(100vh - 56px)",display:"flex",flexDirection:"column",background:R.white,borderRadius:16,boxShadow:"0 12px 48px rgba(0,0,0,0.18)",fontFamily:M,overflow:"hidden",animation:"icd-slide-in 0.2s ease"},ref:t},a.default.createElement("style",null,"\n @keyframes icd-slide-in {\n from { opacity: 0; transform: translateY(20px) scale(0.97); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n }\n "),a.default.createElement("div",{style:{background:`linear-gradient(135deg, ${R.primary} 0%, ${R.teal} 100%)`,padding:"14px 18px",flexShrink:0}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},a.default.createElement("img",{src:k,alt:"ICD-10",style:{width:32,height:32,objectFit:"contain"}}),a.default.createElement("div",null,a.default.createElement("div",{style:{color:R.white,fontWeight:700,fontSize:15,lineHeight:1.2}},"ICD-10 Coding Assistant"),a.default.createElement("div",{style:{color:"rgba(255,255,255,0.75)",fontSize:11}},"AI-powered · Medical coding helper"))),a.default.createElement("button",{onClick:g,style:{background:"rgba(255,255,255,0.2)",border:"1px solid rgba(255,255,255,0.3)",borderRadius:8,color:R.white,cursor:"pointer",fontSize:18,fontWeight:"bold",width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0}},"×")),a.default.createElement(Q,{mode:h,onChange:y})),a.default.createElement("div",{style:{overflowY:"auto",flex:1,padding:"18px 18px 0",display:"flex",flexDirection:"column",gap:14}},a.default.createElement("p",{style:{margin:0,fontSize:13,color:R.muted,lineHeight:1.6}},"Describe a diagnosis, condition, or procedure in plain language and get relevant ICD-10 code suggestions for insurance and billing."),a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},a.default.createElement("label",{style:{fontSize:12,fontWeight:600,color:R.text},htmlFor:"icd10-query"},"Diagnosis / Condition / Procedure"),a.default.createElement("textarea",{id:"icd10-query",ref:n,value:o,onChange:p,onKeyDown:u,placeholder:"e.g. Type 2 diabetes with hypertension, chest pain on exertion, rotator cuff repair…",rows:3,style:{width:"100%",padding:"10px 12px",border:`1.5px solid ${R.border}`,borderRadius:8,fontSize:13,fontFamily:M,color:R.text,resize:"vertical",outline:"none",boxSizing:"border-box",lineHeight:1.5,transition:"border-color 0.15s"},onFocus:e=>e.target.style.borderColor=R.primary,onBlur:e=>e.target.style.borderColor=R.border}),a.default.createElement("div",{style:{fontSize:11,color:"#aaa",textAlign:"right"}},"Press ",a.default.createElement("kbd",{style:{background:"#f3f4f6",padding:"1px 5px",borderRadius:3,fontFamily:"monospace"}},"Enter")," to submit · ",a.default.createElement("kbd",{style:{background:"#f3f4f6",padding:"1px 5px",borderRadius:3,fontFamily:"monospace"}},"Shift+Enter")," for new line")),a.default.createElement("div",{style:{display:"flex",gap:8}},a.default.createElement("button",{onClick:f,disabled:!o.trim()||r,style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:"10px 16px",background:!o.trim()||r?"#d1d5db":`linear-gradient(135deg, ${R.primary} 0%, ${R.primaryDark} 100%)`,color:R.white,border:"none",borderRadius:8,fontSize:13,fontWeight:700,fontFamily:M,cursor:!o.trim()||r?"not-allowed":"pointer",transition:"background 0.15s"}},r?a.default.createElement(a.default.Fragment,null,a.default.createElement(T,null),"Searching codes…"):"Find ICD-10 Codes"),(o||l)&&a.default.createElement("button",{onClick:m,style:{padding:"10px 14px",background:R.bg,border:`1px solid ${R.border}`,borderRadius:8,fontSize:13,fontWeight:600,fontFamily:M,color:R.muted,cursor:"pointer"}},"Clear")),i&&a.default.createElement("div",{style:{background:R.errorLight,border:"1px solid #fca5a5",borderRadius:8,padding:"10px 14px",fontSize:13,color:R.error,display:"flex",gap:8}},a.default.createElement("span",null,"⚠️"),a.default.createElement("span",null,i)),l&&a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},a.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},a.default.createElement("span",{style:{fontSize:13,fontWeight:700,color:R.text}},"Suggested Codes"),a.default.createElement(W,{color:R.teal,bg:R.tealLight},l.matches.length," match",1!==l.matches.length?"es":"")),l.matches.length>0&&a.default.createElement(N,{text:b,label:"All",copyKey:"copy-all",copiedKey:c,copy:s})),0===l.matches.length&&a.default.createElement("div",{style:{padding:"20px",textAlign:"center",color:R.muted,fontSize:13,background:R.bg,borderRadius:10}},"No matching ICD-10 codes found."),l.matches.map(((e,t)=>a.default.createElement(B,{key:t,index:t,match:e,copy:s,copiedKey:c})))),d.length>0&&a.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},a.default.createElement("span",{style:{fontSize:11,fontWeight:600,color:"#aaa",textTransform:"uppercase",letterSpacing:"0.5px"}},"Recent searches"),a.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},d.map(((e,t)=>a.default.createElement(H,{key:t,item:e,onClick:x})))))),a.default.createElement("div",{style:{flexShrink:0,padding:"12px 18px",borderTop:`1px solid ${R.border}`,background:R.bg,fontSize:11,color:"#aaa",lineHeight:1.5,textAlign:"center"}},z," For reference only. Always verify codes with a certified medical coder. Not a substitute for clinical judgment or official coding guidelines."))}function U(){const[e,n]=t.useState(!1),[o,r]=t.useState("nlm"),[l,i]=t.useState(""),[d,s]=t.useState(!1),[c,p]=t.useState(null),[u,f]=t.useState(null),[m,g]=t.useState([]),x=t.useRef(null),h=t.useRef(null),{copy:y,copiedKey:b}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1800;const[n,o]=t.useState(null),a=t.useCallback((function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";if(navigator.clipboard)navigator.clipboard.writeText(t).then((()=>{o(n),setTimeout((()=>o(null)),e)}));else{const a=document.createElement("textarea");a.value=t,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select(),document.execCommand("copy"),document.body.removeChild(a),o(n),setTimeout((()=>o(null)),e)}}),[e]);return{copy:a,copiedKey:n}}();t.useEffect((()=>{e&&x.current&&setTimeout((()=>x.current?.focus()),80)}),[e]),t.useEffect((()=>{if(!e)return;const t=e=>{h.current&&!h.current.contains(e.target)&&n(!1)};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)}),[e]);const E=t.useCallback((async()=>{if(l.trim()&&!d){s(!0),f(null),p(null);try{const e=await A(l.trim(),v.CLAUDE_ONLY);p(e),g((t=>{const n=t.filter((e=>e.query.toLowerCase()!==l.trim().toLowerCase()));return[{query:l.trim(),matches:e.matches},...n].slice(0,3)}))}catch(e){f(e.message||"Something went wrong. Please try again.")}finally{s(!1)}}}),[l,d]),w=t.useCallback((e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),E())}),[E]),S=t.useCallback((()=>{i(""),p(null),f(null),x.current?.focus()}),[]),F=t.useCallback((e=>{i(e),p(null),f(null),x.current?.focus()}),[]),C=t.useCallback((e=>i(e.target.value)),[]);return a.default.createElement(a.default.Fragment,null,!e&&a.default.createElement(L,{onOpen:()=>n(!0)}),e&&"nlm"===o&&a.default.createElement(P,{panelRef:h,onClose:()=>n(!1),mode:o,onModeChange:r}),e&&"ai"===o&&a.default.createElement(j,{panelRef:h,textareaRef:x,query:l,loading:d,result:c,error:u,history:m,copy:y,copiedKey:b,onQueryChange:C,onKeyDown:w,onSubmit:E,onClear:S,onClose:()=>n(!1),onHistoryClick:F,mode:o,onModeChange:r}))}let Y=null;const J={showWidget:(e,t)=>{Y||(Y=document.createElement("div"),document.body.appendChild(Y)),r.default.render(a.default.createElement(a.default.Fragment,null,a.default.createElement(F,{config:e}),e.showIcdAssistant&&a.default.createElement(U,null)),Y)},closePopup:()=>{Y&&(r.default.unmountComponentAtNode(Y),Y=null)}};window.BookingSDK=J,e.AppointmentPage=F,e.ICD10Assistant=U,e.PIH_APPOINTMENT_WIDGET_CLASS=E,e.default=J,Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/package.json
CHANGED
package/src/App.js
CHANGED
|
@@ -22,16 +22,18 @@ const BookingSDK = {
|
|
|
22
22
|
document.body.appendChild(bookingWidgetInstance);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
// Do NOT define a component inline here. A locally-defined function creates a new
|
|
26
|
+
// component type reference on every showWidget call. React compares component types
|
|
27
|
+
// by reference; a new reference causes full unmount+remount instead of a prop update,
|
|
28
|
+
// resetting all state and re-running all effects — including SSO — on every call.
|
|
29
|
+
// Render AppointmentPage directly so React updates its props instead of remounting.
|
|
30
|
+
ReactDOM.render(
|
|
31
|
+
<>
|
|
32
|
+
<AppointmentPage config={config} />
|
|
33
|
+
{config.showIcdAssistant && <ICD10Assistant />}
|
|
34
|
+
</>,
|
|
35
|
+
bookingWidgetInstance
|
|
36
|
+
);
|
|
35
37
|
},
|
|
36
38
|
|
|
37
39
|
closePopup: () => {
|
|
@@ -98,7 +98,7 @@ class AppointmentErrorBoundary extends Component {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
// SDK Component - accepts configuration from parent app
|
|
101
|
-
const AppointmentPage = ({ config = {} }) => {
|
|
101
|
+
const AppointmentPage = ({ config = {"email":'gk.jayavenitha@powerholding.com',hospitalId: 'dMtEGhak',apiBaseUrl: 'https://afiyaapiqa.powermindinc.com',token:'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcwZmM5YzU0YjhiMjQyMWZmMTgyOTgxNTQyZmQ0NjRlOWJlYzM1NDUiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiSmF5YXZlbml0aGEgR0siLCJpc3MiOiJodHRwczovL3NlY3VyZXRva2VuLmdvb2dsZS5jb20vbGl0ZWVtci0zY2M0NyIsImF1ZCI6ImxpdGVlbXItM2NjNDciLCJhdXRoX3RpbWUiOjE3NzY2ODM3ODIsInVzZXJfaWQiOiI5N3hFYjJoSFptU3pWWlFvcHM4Yzc4bzRxUHcxIiwic3ViIjoiOTd4RWIyaEhabVN6VlpRb3BzOGM3OG80cVB3MSIsImlhdCI6MTc3NjY4Mzc4MiwiZXhwIjoxNzc2Njg3MzgyLCJlbWFpbCI6ImdrLmpheWF2ZW5pdGhhQHBvd2VyaG9sZGluZy1pbnRsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiZmlyZWJhc2UiOnsiaWRlbnRpdGllcyI6eyJtaWNyb3NvZnQuY29tIjpbIjg2N2ViM2MyLWFlMDgtNDlkZC1hNDNhLWU0OTg2YjZlZDA5YSJdLCJlbWFpbCI6WyJnay5qYXlhdmVuaXRoYUBwb3dlcmhvbGRpbmctaW50bC5jb20iXX0sInNpZ25faW5fcHJvdmlkZXIiOiJtaWNyb3NvZnQuY29tIn19.pUN8E40VNtIqGe5bwBrZerVAgPiQJn916nOrz-uXPZkdIEOJeC5Bxrt_byRcow7CEQrlpEvpJrOZOUReJRTRjX-sIQ8feT3oSI3dBqiI2A_KzfnqUnMJj7KAVTbGwsqvHLGoChVgkL75YDs_Npz-3arOVsMwo2KaGCLkthM7NqxB1oe22kMyM35f90nXFRhpoBK1jP3Dhp9NiCVhu7XDO0mn7_SMsCIwtuL09L3TNMPOUU0yWVysKwSXbPYNS8qaISRDaami2zjErzHmFn1KLTyC-UKHv-C7h2QnDP22WjHNkjkwAxcxlvoqOGFw1V9kFv_rIGE7rt7OvxVPEbD15Q'} }) => {
|
|
102
102
|
const [storedApiBaseUrl, setStoredApiBaseUrl] = useState(() => {
|
|
103
103
|
try {
|
|
104
104
|
return typeof localStorage !== "undefined" ? localStorage.getItem(STORAGE_KEY_API_BASE_URL) : null;
|
|
@@ -143,13 +143,16 @@ const AppointmentPage = ({ config = {} }) => {
|
|
|
143
143
|
const prevToken = localStorage.getItem(STORAGE_KEY_ID_TOKEN);
|
|
144
144
|
if (prevToken !== token) {
|
|
145
145
|
// New token from parent (e.g. Flutter re-login) — clear stored credentials.
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
|
|
146
|
+
// Do NOT call setRefreshLoginTrigger here. App.js uses ReactDOM.render (React 17
|
|
147
|
+
// legacy mode) which does NOT batch setState calls inside effects. Every setState
|
|
148
|
+
// triggers its own synchronous render. Calling both setAppToken(null) AND
|
|
149
|
+
// setRefreshLoginTrigger(+1) produces two separate renders → two SSO effect
|
|
150
|
+
// re-runs → two login network calls. setAppToken(null) alone is sufficient:
|
|
151
|
+
// the SSO effect's needLogin check includes !appToken, so it fires naturally
|
|
152
|
+
// when appToken becomes null, with no second trigger needed.
|
|
149
153
|
setAppToken(null);
|
|
150
154
|
setDoctorIdFromLogin(null);
|
|
151
155
|
setUserName(null);
|
|
152
|
-
if (hadAppToken) setRefreshLoginTrigger((t) => t + 1);
|
|
153
156
|
localStorage.removeItem(STORAGE_KEY_APP_TOKEN);
|
|
154
157
|
localStorage.removeItem(STORAGE_KEY_DOCTOR_ID);
|
|
155
158
|
localStorage.removeItem(STORAGE_KEY_USER_NAME);
|
|
@@ -954,8 +957,14 @@ const AppointmentPage = ({ config = {} }) => {
|
|
|
954
957
|
|
|
955
958
|
let fontFamily = '"Nunito", serif';
|
|
956
959
|
|
|
957
|
-
// Error as popup overlay (main page stays in background); auto-redirect to home
|
|
958
|
-
|
|
960
|
+
// Error as popup overlay (main page stays in background); auto-redirect to home.
|
|
961
|
+
// When idToken + email are present but appToken is null, SSO is either running or
|
|
962
|
+
// about to run — suppress the popup entirely during this transient state to prevent
|
|
963
|
+
// a false "Access Denied" flash on every Flutter re-login.
|
|
964
|
+
const ssoCanRun = !!(idToken && email);
|
|
965
|
+
const showAuthError = tokenError
|
|
966
|
+
? true // SSO explicitly failed — always show
|
|
967
|
+
: (!appToken && !ssoCanRun); // No credentials at all — show
|
|
959
968
|
const authErrorMessage = tokenError || "Sign in required. Redirecting to home...";
|
|
960
969
|
let content;
|
|
961
970
|
if (tokenLoading && idToken && email) {
|