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
- const PopupWrapper = () => {
51
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AppointmentPage.default, {
52
- config: config
53
- }), config.showIcdAssistant && /*#__PURE__*/_react.default.createElement(_ICD10Assistant.default, null));
54
- };
55
- _reactDom.default.render(/*#__PURE__*/_react.default.createElement(PopupWrapper, null), bookingWidgetInstance);
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
- // Only increment refreshLoginTrigger when there was an existing appToken to evict;
167
- // if appToken is already absent, the SSO effect will fire naturally via !appToken.
168
- const hadAppToken = !!localStorage.getItem(STORAGE_KEY_APP_TOKEN);
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
- const showAuthError = tokenError || !appToken && (!idToken || !email);
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
- // Only increment refreshLoginTrigger when there was an existing appToken to evict;
373
- // if appToken is already absent, the SSO effect will fire naturally via !appToken.
374
- const hadAppToken = !!localStorage.getItem(STORAGE_KEY_APP_TOKEN);
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
- const showAuthError = tokenError || !appToken && (!idToken || !email);
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
- const PopupWrapper = () => {
3674
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(AppointmentPage, {
3675
- config: config
3676
- }), config.showIcdAssistant && /*#__PURE__*/React__default["default"].createElement(ICD10Assistant, null));
3677
- };
3678
- ReactDOM__default["default"].render(/*#__PURE__*/React__default["default"].createElement(PopupWrapper, null), bookingWidgetInstance);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pih-appointment-widget",
3
- "version": "0.0.40",
3
+ "version": "0.0.41",
4
4
  "main": "dist/App.js",
5
5
  "module": "dist/App.js",
6
6
  "exports": {
package/src/App.js CHANGED
@@ -22,16 +22,18 @@ const BookingSDK = {
22
22
  document.body.appendChild(bookingWidgetInstance);
23
23
  }
24
24
 
25
- const PopupWrapper = () => {
26
- return (
27
- <>
28
- <AppointmentPage config={config} />
29
- {config.showIcdAssistant && <ICD10Assistant />}
30
- </>
31
- );
32
- };
33
-
34
- ReactDOM.render(<PopupWrapper />, bookingWidgetInstance);
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
- // Only increment refreshLoginTrigger when there was an existing appToken to evict;
147
- // if appToken is already absent, the SSO effect will fire naturally via !appToken.
148
- const hadAppToken = !!localStorage.getItem(STORAGE_KEY_APP_TOKEN);
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
- const showAuthError = tokenError || (!appToken && (!idToken || !email));
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) {