vdb-ai-chat 1.0.38 → 1.0.39
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/chat-widget.js +17 -10
- package/lib/commonjs/api.js +5 -2
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/components/ChatWidget.js +35 -23
- package/lib/commonjs/components/ChatWidget.js.map +1 -1
- package/lib/commonjs/index.web.js +5 -3
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/module/api.js +5 -2
- package/lib/module/api.js.map +1 -1
- package/lib/module/components/ChatWidget.js +35 -23
- package/lib/module/components/ChatWidget.js.map +1 -1
- package/lib/module/index.web.js +5 -3
- package/lib/module/index.web.js.map +1 -1
- package/lib/typescript/api.d.ts +1 -1
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/components/ChatWidget.d.ts.map +1 -1
- package/lib/typescript/index.web.d.ts +1 -1
- package/lib/typescript/index.web.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +1 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +4 -0
- package/src/components/ChatWidget.tsx +43 -26
- package/src/index.web.tsx +3 -1
- package/src/types.ts +1 -0
package/dist/chat-widget.js
CHANGED
|
@@ -235,20 +235,21 @@
|
|
|
235
235
|
flex-direction: row;
|
|
236
236
|
align-items: center;
|
|
237
237
|
gap: 2px;
|
|
238
|
-
`,Ao=vn.View``,Ro=i.A.create({listContent:{gap:8},left:{flexDirection:"row",alignItems:"flex-start",minWidth:0},serialContainer:{alignItems:"flex-start",justifyContent:"center",marginRight:4},tokens:{flexDirection:"row",flexWrap:"wrap",gap:2,flex:1,minWidth:0},lineBreak:{width:"100%",height:0},rowCenter:{flexDirection:"row",alignItems:"center"}}),To=(0,t.memo)(ao),Po=e=>{let{data:n,onViewAll:r,onItemPress:i,variant:o="list",totalResults:a,item:s,showMoreResults:l,showLessResults:u,trackAnalyticsEvent:c,currentPage:d=1,isLoadingMore:h=!1}=e;return n&&n.length?"list"===o?t.createElement(To,{data:n,onViewAll:r,onItemPress:i,totalResults:a,item:s,showMoreResults:l,showLessResults:u,trackAnalyticsEvent:c,currentPage:d,isLoadingMore:h}):t.createElement(to,{data:n,onViewAll:r,onItemPress:i,totalResults:a,item:s}):null},Oo=e=>{let{messageId:i,payload:o,onFetched:a,priceMode:s,apiUrl:l}=e;const{ref:u,inView:c}=function(){const e=(0,t.useRef)(null),[n,i]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{if("web"!==r.A.OS)return void i(!0);const t=e.current;if(!t||"undefined"==typeof IntersectionObserver)return void i(!0);const n=new IntersectionObserver(e=>{const t=e[0];i(t.isIntersecting)},{root:null,rootMargin:"0px",threshold:.1});return n.observe(t),()=>{n.disconnect()}},[]),{ref:e,inView:n}}(),d=(0,t.useRef)(!1);return(0,t.useEffect)(()=>{d.current||o&&"object"==typeof o&&c&&(d.current=!0,(async()=>{try{const e=await Ki(l,o);a(i,e)}catch(e){console.error("Lazy fetch products failed",e)}})())},[c,i,a,o,s]),t.createElement(n.A,{ref:u,style:{height:1}})},Io=e=>{let t="web";if(e)switch(e){case"Linux":t="android";break;case"iPhone":t="ios";break;default:t="web"}else t=String(r.A.OS);return(e=>{switch(e){case ai.WEB:return 0;case ai.IOS:return 1;case ai.ANDROID:default:return 2}})(t).toString()},No=async()=>{const e=await oi(),t="web"===r.A.OS?{system_type_enum:Io(null),platform_action_enum:"0"}:{};return{user_company_id:e?.company_id?.toString(),user_company_name:e?.company,user_email:e?.email,user_id:e?.id?.toString(),user_name:e?.first_name?`${e?.first_name} ${e?.last_name}`:void 0,user_price_mode:e?.price_mode?.toString(),price_mode:e?.price_mode?.toString(),has_plan_details:!!e?.plan_details,userAgent:"web"===r.A.OS?navigator.userAgent:"",...t}};var Lo=a(7918),Do=a.n(Lo),Mo=a(5685);var Fo=a(5556),Vo=a.n(Fo);const jo=Vo().oneOfType([Vo().string,Vo().number]),zo={all:Vo().bool,grid:Vo().bool,aural:Vo().bool,braille:Vo().bool,handheld:Vo().bool,print:Vo().bool,projection:Vo().bool,screen:Vo().bool,tty:Vo().bool,tv:Vo().bool,embossed:Vo().bool},Bo={orientation:Vo().oneOf(["portrait","landscape"]),scan:Vo().oneOf(["progressive","interlace"]),aspectRatio:Vo().string,deviceAspectRatio:Vo().string,height:jo,deviceHeight:jo,width:jo,deviceWidth:jo,color:Vo().bool,colorIndex:Vo().bool,monochrome:Vo().bool,resolution:jo,type:Object.keys(zo)},{type:Ho,...$o}=Bo,Wo={minAspectRatio:Vo().string,maxAspectRatio:Vo().string,minDeviceAspectRatio:Vo().string,maxDeviceAspectRatio:Vo().string,minHeight:jo,maxHeight:jo,minDeviceHeight:jo,maxDeviceHeight:jo,minWidth:jo,maxWidth:jo,minDeviceWidth:jo,maxDeviceWidth:jo,minColor:Vo().number,maxColor:Vo().number,minColorIndex:Vo().number,maxColorIndex:Vo().number,minMonochrome:Vo().number,maxMonochrome:Vo().number,minResolution:jo,maxResolution:jo,...$o};var Uo={all:{...zo,...Wo},types:zo,matchers:Bo,features:Wo};const Ko=(0,t.createContext)(void 0),qo=e=>{if(e)return Object.keys(e).reduce((t,n)=>(t[(0,Mo.default)(n)]=e[n],t),{})},Yo=()=>{const e=(0,t.useRef)(!1);return(0,t.useEffect)(()=>{e.current=!0},[]),e.current},Go=e=>{const n=()=>(e=>e.query||(e=>{const t=[];return Object.keys(Uo.all).forEach(n=>{const r=e[n];null!=r&&t.push(((e,t)=>{const n=(0,Mo.default)(e);return"number"==typeof t&&(t=`${t}px`),!0===t?n:!1===t?`not ${n}`:`(${n}: ${t})`})(n,r))}),t.join(" and ")})(e))(e),[r,i]=(0,t.useState)(n);return(0,t.useEffect)(()=>{const e=n();r!==e&&i(e)},[e]),r},Xo=(e,n,r)=>{const i=(e=>{const n=(0,t.useContext)(Ko),r=()=>qo(e)||qo(n),[i,o]=(0,t.useState)(r);return(0,t.useEffect)(()=>{const e=r();(function(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t),i=n.length;if(r.length!==i)return!1;for(let r=0;r<i;r++){const i=n[r];if(e[i]!==t[i]||!Object.prototype.hasOwnProperty.call(t,i))return!1}return!0})(i,e)||o(e)},[e,n]),i})(n),o=Go(e);if(!o)throw new Error("Invalid or missing MediaQuery!");const a=((e,n)=>{const r=()=>Do()(e,n||{},!!n),[i,o]=(0,t.useState)(r),a=Yo();return(0,t.useEffect)(()=>{if(a){const e=r();return o(e),()=>{e&&e.dispose()}}},[e,n]),i})(o,i),s=(e=>{const[n,r]=(0,t.useState)(e.matches);return(0,t.useEffect)(()=>{const t=e=>{r(e.matches)};return e.addListener(t),r(e.matches),()=>{e.removeListener(t)}},[e]),n})(a),l=Yo();return(0,t.useEffect)(()=>{l&&r&&r(s)},[s]),(0,t.useEffect)(()=>()=>{a&&a.dispose()},[]),s},Jo={transparent:"transparent","main-01":"#292735","main-02":"#37363F","main-03":"#E3E3E9","main-04":"#3378F6","main-05":"#ffffff","main-06":"#292735","diam-01":"#804195","diam-02":"#713782","diam-03":"#EEE1F3","diam-04":"#9138AE","diam-05":"#ffffff","diam-06":"#9138AE","core-01":"#ffffff","core-02":"#EDEDF2","core-03":"#D5D5DC","core-04":"#ACACB3","core-05":"#020001","core-06":"#4F4E57","extra-01":"#A1A0AB","extra-02":"#292735","extra-03":"#E4E4EC","extra-04":"#DADAE0","extra-05":"#ffffff","extra-06":"#4F4E57","gem-01":"#3B72CC","gem-02":"#3C62A0","gem-03":"#DCE6F6","gem-04":"#3E76D2","gem-05":"#ffffff","gem-06":"#3E76D2","jewelry-01":"#58B8A5","jewelry-02":"#4CA191","jewelry-03":"#D6F1ED","jewelry-04":"#27AC92","jewelry-05":"#ffffff","jewelry-06":"#27AC92","lab-01":"#E97F5B","lab-02":"#DA704B","lab-03":"#F9E2D9","lab-04":"#E87B56","lab-05":"#ffffff","lab-06":"#E87B56","over-01":"#000000b3","over-02":"rgba(55,54,64,0.3)","over-03":"rgba(255,255,255,0.7)","over-04":"#ffffff","cont-00":"#ffffff","success-02":"#DBFFE4","success-01":"#00B140","error-02":"#FFE2E0","error-01":"#D0021B","warn-02":"#FFF8DB","warn-01":"#FFA500","primary-bg-static":"#292735","primary-bg-hover":"#37363F","primary-bg-disabled":"#D5D5DC","primary-cont":"#ffffff","primary-cont-disabled":"#ACACB3","secondary-bor-disabled":"#D5D5DC","secondary-cont-disabled":"#ACACB3","secondary-bg-hover":"#E3E3E9","secondary-bor-hover":"#37363F","secondary-bor-static":"#292735","secondary-cont":"#292735","tertiary-bg-static":"#E3E3E9","tertiary-bg-disabled":"#D5D5DC","tertiary-cont":"#292735","tertiary-cont-disabled":"#ACACB3","link-static":"#3378F6","link-hover":"#292735","option-bg-static":"#E4E4EC","option-bg-hover":"#DADAE0","option-bg-active":"#A1A0AB","option-cont":"#4F4E57","option-cont-active":"#ffffff","knob-bg-hover":"#E4E4EC","knob-bg-active":"#292735","knob-cont":"#ffffff","knob-bor":"#292735","toggle-bg-static":"#DADAE0","toggle-bg-on":"#292735","toggle-cont":"#ffffff","option-bg-disabled":"#D5D5DC","option-cont-disabled":"#ACACB3","knob-bg-disabled-off":"#EDEDF2","knob-bg-disabled-on":"#D5D5DC","knob-cont-disabled-on":"#ffffff","toggle-bg-disabled":"#D5D5DC","toggle-cont-disabled":"#EDEDF2","header-cont":"#ffffff","header-btn-cont":"#ffffff","header-bg-static":"#37363F","header-btn-bg-hover":"#37363F","header-btn-bg-active":"#E3E3E9","header-btn-bg-static":"#292735","header-btn-bor-hover":"#292735","header-btn-cont-active":"#292735","knob-bg-static":"#ffffff",Shadows:{Huge:{x:"2",y:"16",blur:"32",type:"dropShadow",color:"#37364066",spread:"-8"},Gentle:{x:"1",y:"2",blur:"4",type:"dropShadow",color:"#37364014",spread:"-2"},Normal:{x:"2",y:"8",blur:"24",type:"dropShadow",color:"#37364042",spread:"-6"},"Bottom-scroll":{x:"0",y:"-8",blur:"24",type:"dropShadow",color:"#37364029",spread:"-8"}}};let Qo=null;if("web"!==r.A.OS)try{Qo=a(Object(function(){var e=new Error("Cannot find module 'expo-device'");throw e.code="MODULE_NOT_FOUND",e}()))}catch{}const Zo=e=>{let{children:n}=e;const[i,o]=(0,t.useState)(Jo);if((0,t.useEffect)(()=>{(async()=>{try{const e=JSON.parse(await Pr("persist:root")||"{}"),t=e.theme?JSON.parse(e.theme):null;t&&o(t)}catch{}})()},[]),"web"===r.A.OS&&window.matchMedia("print").matches)return null;const a=Xo({maxWidth:767}),s=Xo({minWidth:767,maxWidth:1279}),l=Xo({minWidth:1279}),{width:u}=ei,c=a||u<=767,d=s||u>767&&u<=1279||"iPadOS"===Qo?.osName||ci(),h=(l||u>1279)&&!("iPadOS"===Qo?.osName||ci()),f=h&&!d&&!c,p={isMobile:c,isTablet:d,isDesktop:h,isLargeScreen:f},m=(0,t.useMemo)(()=>({...i,...p}),[i,c,d,h,f]);return t.createElement(Ut,{theme:m},n)};function ea(){return ea=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ea.apply(null,arguments)}const ta=(0,t.forwardRef)((i,o)=>{let{apiUrl:a,userToken:s,priceMode:l,modalHeight:u,theme:c,initialMessages:d=[],placeholder:h,onClose:f,onClearChat:p,onViewAllPress:m,onItemPress:g,isBetaMode:v,activeProductType:y,trackAnalyticsEvent:b,fromFilterScreen:_,translations:w,locale:S="en"}=i;const{t:x}=Br(),[C,E]=(0,t.useState)(d),[k,A]=(0,t.useState)(""),[R,T]=(0,t.useState)(!1),[P,O]=(0,t.useState)(null),[I,N]=(0,t.useState)(null),[L,D]=(0,t.useState)(""),[M,F]=(0,t.useState)({}),[V,j]=(0,t.useState)(new Set),[z,B]=(0,t.useState)(l||null),[H,$]=(0,t.useState)(s||""),[W,U]=(0,t.useState)(!1),[K,q]=(0,t.useState)(!0),[Y,G]=(0,t.useState)(void 0),[X,J]=(0,t.useState)(1),[Q,Z]=(0,t.useState)({}),[ee,te]=(0,t.useState)(new Set),ne=(0,t.useRef)(null),re=(0,t.useRef)(null),ie=(0,t.useRef)(0),oe=(0,t.useRef)(0),ae=(0,t.useRef)(!1),se=(0,t.useRef)(!1),le=(0,t.useRef)(!1),ue=(0,t.useMemo)(()=>({...Di,...c||{}}),[c]),{_identify:ce}=(()=>{const e=(0,t.useContext)(ht);return{trackEvent:async(t,n)=>{const r=await No(),i=e||window.analytics;i&&await i.track(t,{...r,...n})},_identify:async(t,n)=>{const r=e||window.analytics;r&&await r.identify(t,n)},_track:async(t,n)=>{const i=await No();if(o=i?.userAgent,o&&/^Mozilla\/5\.0 \([^;]+; CPU [^)]+ like Mac OS X\) AppleWebKit\/600\.1\.4 \(KHTML, like Gecko\) Version\/\d\.0 Mobile\/10B329 Safari\/8536\.25$/.test(o))return void console.warn("Skipping tracking for Segment user agent:",i.userAgent);var o;if(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return!e&&"web"===r.A.OS||[/bot/i,/crawl/i,/spider/i,/HeadlessChrome/i,/PhantomJS/i,/slurp/i,/curl/i,/wget/i,/httpclient/i].some(t=>t.test(e))}(i?.userAgent))return void console.warn("Skipping tracking for bot user agent:",i.userAgent);const a=e||window.analytics;if(!a)return;const s=await oi();s?.id?await a.identify(`${s.id}`,{name:`${s.first_name} ${s.last_name}`,email:s.email,country:s.country}):(console.error("Track Event tracked without user:",t,JSON.stringify(n)),console.error("Can't identify as user is not logged in",JSON.stringify(s))),await a.track(t,{...i,...n})}}})(),de=Boolean(v),he=Wt(),fe=he.isTablet;(0,t.useEffect)(()=>{zr({locale:S,translations:w})},[]),(0,t.useEffect)(()=>{(async(e,t)=>{if(!Dr.isInitialized)return;const n=await Vr(),r=jr(n,t),i=Fr(r);Dr.addResourceBundle(e,"translation",i,!0,!0),Dr.language!==e&&Dr.changeLanguage(e)})(S,w)},[S,w]),(0,t.useEffect)(()=>{(async()=>{try{if(!s){const e=await Nr("persist:userInfo",{}),t=JSON.parse(e?.user||"{}"),n=t?.token||"";n&&$(n)}}catch(e){console.error("Failed to load auth data from storage",e)}})()},[s]);const pe=async()=>{y&&await Lr("external_context",y)};(0,t.useEffect)(()=>{0===C.length&&pe()},[C]),(0,t.useEffect)(()=>{pe()},[y]);const me=(0,t.useCallback)(e=>{let t=e?.search_payload;const n=JSON.stringify(t),i=e?.search_payload;if(!i)return;const o="string"==typeof i.lab_grown?"true"===i.lab_grown:"boolean"==typeof i.lab_grown&&i.lab_grown,s=`${a}webapp/${o?"lab-grown-diamonds":"natural-diamonds"}/search?priceMode=${z}&productType=${o?mi.LAB_GROWN_DIAMOND:mi.DIAMOND}&fromNewFilterScreen=false&filterSplitStep=1§ionName=${"pair"===t.pair?"Pairs":"Single Stones"}&breadCrumbLabel=Stone%20Search&enterSecondFlow=false&saved_search=${n}`;m?m(s,i):"web"===r.A.OS&&window.open(s,"_parent")},[a,z,m]),ge=(0,t.useCallback)(e=>{const t=`${a}webapp/${e.type===mi.LAB_GROWN_DIAMOND?"lab-grown-diamonds":"natural-diamonds"}/item-detail/${e.id}?productType=${e.type}&priceMode=${z}&breadCrumbLabel=Stone%20Details`;g?g(t,e):"web"===r.A.OS&&window.open(t,"_parent")},[a,z,g]),ve=(0,t.useMemo)(()=>Boolean(H),[H]),ye=(0,t.useMemo)(()=>({conversationId:H}),[H]),be=(0,t.useCallback)(async(e,t,n)=>{try{let r="0";E(e=>{const t=e.find(e=>e.id===n);return r=t?.reaction||"0",e});const i=r===e?ni.UNSET:e,o=await(async(e,t,n,r)=>{const i=`${ji(e,n,r)}`,o={reaction:t};return await fetch(i,{method:"POST",headers:await Bi(),body:JSON.stringify(o)})})(a,i,t,n);o.ok?E(e=>e.map(e=>e.id===n?{...e,reaction:i}:e)):console.error("Feedback API failed",o.status)}catch(e){console.error("Feedback API error",e)}},[]);(0,t.useEffect)(()=>{let e=!1;return d.length||(async()=>{if(ve)try{const t=await Ui(a,0,z);if(!e){const e=(await Wi(t,z)).reverse();if(void 0!==t?.has_more&&q(t.has_more),void 0!==t?.next_cursor&&G(t.next_cursor),le.current=!1,ae.current=!1,0===e.length){const e={id:"",role:"assistant",text:x("chat.welcome.message.text",'Describe the diamond you\'re looking for — for example, "2ct F VS2 under $10,000" or "1–2ct D–F VS pear" — and I\'ll take it from there.'),createdAt:Date.now(),isLoading:!1,suggestions:[],search_payload:{},reaction:"0"};E([e]),q(!1)}else E(e)}}catch(e){console.error("Failed to fetch initial messages",e)}})(),()=>{e=!0}},[a,ye,d.length,ve,z]);const _e=(0,t.useCallback)(async e=>{const t=e.trim();if(!t||R)return;const n=await Nr("external_context"),r={id:`user-${Date.now()}`,role:"user",text:t,createdAt:Date.now(),external_context:n||null},i=`bot-loading-${Date.now()}`,o={id:i,role:"assistant",text:x("chat.thinking.text","Thinking"),createdAt:Date.now(),reaction:"0",isLoading:!0,search_payload:{}};E(e=>[...e,r,o]),O(i),T(!0);try{if(!ve)return void E(e=>e.map(e=>e.id===i?{...e,text:x("chat.authError.text","Chat is unavailable (missing user authentication)."),isLoading:!1}:e));const e=await async function(e,t,n,r,i){const o=await Hi(),a=o?.[i]?.conversation_id??null;if(void 0===i)return null;const s=await Nr("external_context");s&&await Ir("external_context");const l={query:t,external_context:s||null};a&&(l.conversation_id=Number.isNaN(Number(a))?a:Number(a));const u=await fetch(Fi(e),{method:"POST",headers:await Bi(),body:JSON.stringify(l)});if(!u.ok)throw new Error(`POST ${Fi(e)} failed with ${u.status}`);const c=await u.json();if(c&&null!=c.conversation_id&&i){const e={...o};e[i]={conversation_id:c.conversation_id},await $i(e)}return c}(a,t,0,0,z),n=(await Wi(e,z)).find(e=>"assistant"===e.role);if(n?.text){if(n?.search_payload&&"object"==typeof n.search_payload&&Object.keys(n.search_payload).length>0){const e=await Ki(a,n.search_payload);b?.(li.AI_CHAT_WIDGET,{action:ui.SEARCH_INITIATED,search_payload:n.search_payload});const t=e&&e.response&&e.response.body&&Array.isArray(e.response.body.diamonds)&&e.response.body.diamonds.length>0;t?_&&t&&me({search_payload:n.search_payload}):b?.(li.AI_CHAT_WIDGET,{action:ui.NO_RESULTS_FOUND,search_payload:n.search_payload}),F(t=>({...t,[n.id]:e}))}O(null),E(e=>e.map(e=>e.id===i?{...e,id:n.id,text:"",isLoading:!1,suggestions:n.suggestions,search_payload:n.search_payload??{}}:e)),setTimeout(()=>{N(n.id),D(n.text),ne.current?.scrollToEnd({animated:!0})},50)}else E(e=>e.map(e=>e.id===i?{...e,isLoading:!1}:e))}catch(e){E(e=>e.map(e=>e.id===i?{...e,text:x("chat.error.text","Sorry, something went wrong. Please try again."),isLoading:!1}:e)),console.error(e)}finally{T(!1),O(null),re.current?.focus()}},[a,R,C,ye,ve,z,me,_]),we=(0,t.useCallback)(async()=>{const e=k.trim();e&&(A(""),_e(e))},[k,_e]),Se=(0,t.useCallback)(e=>{_e(e)},[_e]),xe=(0,t.useCallback)(async e=>{const t=e.id;try{j(e=>new Set(e).add(t));const n=e?.search_payload;if(!n||0===Object.keys(n).length)return;const r=await Ki(a,n);F(e=>({...e,[t]:r}))}catch(e){console.error("Reload results failed",e)}finally{j(e=>{const n=new Set(e);return n.delete(t),n})}},[]),Ce=(0,t.useCallback)(async(e,t)=>{if(ee.has(e))return;const n=(Q[e]||1)+1;if(!(n>6))try{te(t=>new Set(t).add(e));const r=await async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=await fetch(Vi(e),{method:"POST",headers:await Bi(),body:JSON.stringify({vdb:{...t,page_size:5,page_number:n}})});if(!r.ok)throw new Error(`POST failed with ${r.status}`);return await r.json()}(a,t,n);r?.response?.body?.diamonds&&(F(t=>{const n=t[e];if(!n)return t;const i=n.response?.body?.diamonds||[],o=r.response.body.diamonds;return{...t,[e]:{...n,response:{...n.response,body:{...n.response.body,diamonds:[...i,...o]}}}}}),Z(t=>({...t,[e]:n})))}catch(e){console.error("Failed to load more results:",e)}finally{te(t=>{const n=new Set(t);return n.delete(e),n})}},[a,ee,Q]),Ee=(0,t.useCallback)(async(e,t)=>{try{const n=await Ki(a,t);n?.response?.body?.diamonds&&(F(t=>({...t,[e]:n})),Z(t=>({...t,[e]:1})))}catch(e){console.error("Failed to show less results:",e)}},[a]),ke=(0,t.useCallback)(async()=>{if(W||!K||!ve)return;se.current=!0;const e=oe.current;U(!0);try{const t=await async function(e,t,n,r){const i=await Hi(),o=i?.[t??""]?.conversation_id??null;if(!o)return{messages:[],has_more:!1};const a={conversation_id:Number.isNaN(Number(o))?o:Number(o),fetch_history:!0};void 0!==n&&(a.cursor=n),void 0!==r&&(a.page=r);const s=await fetch(Fi(e),{method:"POST",headers:await Bi(),body:JSON.stringify(a)});if(!s.ok)throw new Error(`POST ${Fi(e)} failed with ${s.status}`);const l=await s.json();return{messages:l.messages||[],conversation_id:l.conversation_id,has_more:l.has_more??!1,next_cursor:l.next_cursor,total_count:l.total_count}}(a,z,Y,X+1),n=(await Wi(t,z)).reverse();n.length>0?(E(e=>{const t=new Set(e.map(e=>e.id)),r=n.filter(e=>!t.has(e.id));return console.log("[...newMessages, ...prev]",[...r,...e]),[...r,...e]}),J(e=>e+1),requestAnimationFrame(()=>{const t=oe.current-e;t>0&&ne.current&&ne.current.scrollTo({y:ie.current+t,animated:!1}),se.current=!1})):se.current=!1,q(t.has_more??n.length>0),G(t.next_cursor)}catch(e){console.error("Failed to load older messages",e),se.current=!1}finally{U(!1)}},[W,K,ve,a,z,Y,X]);(0,t.useEffect)(()=>{const e=()=>{setTimeout(()=>{try{ne.current?.scrollToEnd({animated:!0})}catch(e){}},100)},t="ios"===r.A.OS?"keyboardWillShow":"keyboardDidShow",n="ios"===r.A.OS?"keyboardWillHide":"keyboardDidHide",i=pt.A.addListener(t,e),o=pt.A.addListener(n,e);return()=>{i.remove(),o.remove()}},[]),(0,t.useEffect)(()=>(e.A.addListener("clearChat",Re),e.A.addListener("changePriceMode",e=>Ae(e.priceMode)),Ae(),(async()=>{const e=await oi(),t=e?.id,n=JSON.stringify(e?.email)??void 0;t&&ce(`${t}`,{email:n}).then()})(),()=>{e.A.removeAllListeners("clearChat"),e.A.removeAllListeners("changePriceMode")}),[]);const Ae=async e=>{if(!e&&l&&(e=l),!e){let t=await Nr("persist:userInfo",{user:void 0});t=t&&t.user?JSON.parse(t.user):{},e=t?.price_mode}B(void 0===e?null:String(e))},Re=(0,t.useCallback)(async()=>{try{const e=await Nr("vdbchat_conversations",null);if(e&&z&&e.conversations?.[z]){const t={...e.conversations};delete t[z],await Lr("vdbchat_conversations",{token:e.token,conversations:t})}E([]),F({}),j(new Set),T(!1),O(null),N(null),D(""),q(!0),G(void 0),J(1),le.current=!1,ae.current=!1,se.current=!1;const t=await Ui(a,0,z),n=(await Wi(t,z)).reverse();if(0===n.length){const e={id:"",role:"assistant",text:x("chat.welcome.message.text",'Describe the diamond you\'re looking for — for example, "2ct F VS2 under $10,000" or "1–2ct D–F VS pear" — and I\'ll take it from there.'),createdAt:Date.now(),isLoading:!1,suggestions:[],reaction:"0",search_payload:{}};E([e])}else E(n);p?.()}catch(e){console.error("Failed to clear chat",e)}},[a,z]);(0,t.useEffect)(()=>{if(!P||I)return;let e=0;const t=x("chat.thinking.text","Thinking"),n=setInterval(()=>{e=(e+1)%3;const n=".".repeat(e+1);E(e=>e.map(e=>e.id===P&&e.isLoading?{...e,text:`${t}${n}`}:e))},500);return()=>{clearInterval(n)}},[P,I,x]),(0,t.useImperativeHandle)(o,()=>({clearChat:Re}),[Re]);const Te=(0,t.useRef)(0);return(0,t.useEffect)(()=>{if(!I||!L)return void(Te.current=0);Te.current=0;const e=L.length,t=I,n=L,r=setInterval(()=>{Te.current+=1;const i=Te.current,o=n.slice(0,i);E(e=>e.map(e=>e.id===t?{...e,text:o}:e)),i>=e&&(clearInterval(r),N(null),D(""),E(e=>e.map(e=>e.id===t?{...e,isLoading:!1}:e)))},25);return()=>{clearInterval(r)}},[I,L]),t.createElement(ra,{theme:he},t.createElement(mt.A,{style:{flex:1},behavior:"ios"===r.A.OS?"padding":"height",keyboardVerticalOffset:100},t.createElement(gt.A,{ref:ne,keyboardShouldPersistTaps:"handled",onScroll:e=>{const{contentOffset:t,contentSize:n,layoutMeasurement:r}=e.nativeEvent;ie.current=t.y;const i=n.height-(r.height+t.y);ae.current=i>100,t.y<50&&K&&!W&&!se.current&&ke()},scrollEventThrottle:16,style:u?{height:u,backgroundColor:he["core-01"]||"#FFFFFF"}:{backgroundColor:he["core-01"]||"#FFFFFF"},contentContainerStyle:{backgroundColor:he["core-01"]||ue?.listContentBackgroundColor||"#FFFFFF",...ca.listContent,justifyContent:0===C.length?"center":"flex-end",minHeight:u||void 0,...fe?{maxWidth:608,alignSelf:"center",width:"100%"}:{}},onContentSizeChange:(e,t)=>{oe.current=t,se.current||W||(le.current?ae.current||ne.current?.scrollToEnd({animated:!1}):(ne.current?.scrollToEnd({animated:!1}),le.current=!0))}},W&&t.createElement(la,null,t.createElement(vt.A,{size:"small",color:he["core-06"]||"#4F4E57"}),t.createElement(ua,{theme:he},x("chat.loadingOlder.text","Loading older messages..."))),C?.[0]?.createdAt&&t.createElement(ia,{theme:he},t.createElement(oa,{theme:he},x("chat.chatStartedAt.text","Chat Started at {{time}}",{time:ti(C[0].createdAt,x)}))),(()=>{const e=[...C];return e.map((r,i)=>{const o=i===e.length-1,s=Boolean(M[r.id]?.response?.body?.diamonds&&M[r.id]?.response?.body?.diamonds.length>0);return t.createElement(n.A,{key:r.id+i,style:{gap:12}},t.createElement(xi,{message:r,userTheme:ue,priceMode:z,handleFeedbackAction:be,onReloadResults:xe,reloading:V.has(r.id),hasResults:s,totalResults:M[r.id]?.response?.header?M[r.id].response.header?.total_diamonds_found??0:null,shownResults:M[r.id]?.response?.body?.diamonds.length||0,onSuggestionSelect:Se,isLatest:o,isTyping:I===r.id}),"assistant"===r.role&&r.search_payload&&Object.keys(r.search_payload).length>0&&!M[r.id]&&t.createElement(Oo,{apiUrl:a,priceMode:z,messageId:r.id,payload:r.search_payload,onFetched:(e,t)=>{F(n=>({...n,[e]:t}))}}),"assistant"===r.role&&s&&!_&&t.createElement(Po,{data:M[r.id]?.response?.body?.diamonds||[],totalResults:M[r.id]?.response?.header?.total_diamonds_found||0,onViewAll:me,onItemPress:ge,item:r,showMoreResults:()=>Ce(r.id,r.search_payload),showLessResults:()=>Ee(r.id,r.search_payload),trackAnalyticsEvent:b,currentPage:Q[r.id]||1,isLoadingMore:ee.has(r.id)}),t.createElement(Li,{message:r,priceMode:z||"",handleFeedbackAction:be,onReloadResults:xe,reloading:V.has(r.id),hasResults:s}))})})()),t.createElement(sa,null),t.createElement(aa,{theme:he},t.createElement(Wr,{value:k,onChangeText:A,onSend:we,disabled:R,placeholder:h,theme:ue,inputRef:re}),t.createElement(Gi,{active:de}))))});ta.displayName="ChatWidgetInner";const na=(0,t.forwardRef)((e,n)=>t.createElement(Zo,null,t.createElement(ta,ea({},e,{ref:n}))));na.displayName="ChatWidget";const ra=vn.View`
|
|
238
|
+
`,Ao=vn.View``,Ro=i.A.create({listContent:{gap:8},left:{flexDirection:"row",alignItems:"flex-start",minWidth:0},serialContainer:{alignItems:"flex-start",justifyContent:"center",marginRight:4},tokens:{flexDirection:"row",flexWrap:"wrap",gap:2,flex:1,minWidth:0},lineBreak:{width:"100%",height:0},rowCenter:{flexDirection:"row",alignItems:"center"}}),To=(0,t.memo)(ao),Po=e=>{let{data:n,onViewAll:r,onItemPress:i,variant:o="list",totalResults:a,item:s,showMoreResults:l,showLessResults:u,trackAnalyticsEvent:c,currentPage:d=1,isLoadingMore:h=!1}=e;return n&&n.length?"list"===o?t.createElement(To,{data:n,onViewAll:r,onItemPress:i,totalResults:a,item:s,showMoreResults:l,showLessResults:u,trackAnalyticsEvent:c,currentPage:d,isLoadingMore:h}):t.createElement(to,{data:n,onViewAll:r,onItemPress:i,totalResults:a,item:s}):null},Oo=e=>{let{messageId:i,payload:o,onFetched:a,priceMode:s,apiUrl:l}=e;const{ref:u,inView:c}=function(){const e=(0,t.useRef)(null),[n,i]=(0,t.useState)(!1);return(0,t.useEffect)(()=>{if("web"!==r.A.OS)return void i(!0);const t=e.current;if(!t||"undefined"==typeof IntersectionObserver)return void i(!0);const n=new IntersectionObserver(e=>{const t=e[0];i(t.isIntersecting)},{root:null,rootMargin:"0px",threshold:.1});return n.observe(t),()=>{n.disconnect()}},[]),{ref:e,inView:n}}(),d=(0,t.useRef)(!1);return(0,t.useEffect)(()=>{d.current||o&&"object"==typeof o&&c&&(d.current=!0,(async()=>{try{const e=await Ki(l,o);a(i,e)}catch(e){console.error("Lazy fetch products failed",e)}})())},[c,i,a,o,s]),t.createElement(n.A,{ref:u,style:{height:1}})},Io=e=>{let t="web";if(e)switch(e){case"Linux":t="android";break;case"iPhone":t="ios";break;default:t="web"}else t=String(r.A.OS);return(e=>{switch(e){case ai.WEB:return 0;case ai.IOS:return 1;case ai.ANDROID:default:return 2}})(t).toString()},No=async()=>{const e=await oi(),t="web"===r.A.OS?{system_type_enum:Io(null),platform_action_enum:"0"}:{};return{user_company_id:e?.company_id?.toString(),user_company_name:e?.company,user_email:e?.email,user_id:e?.id?.toString(),user_name:e?.first_name?`${e?.first_name} ${e?.last_name}`:void 0,user_price_mode:e?.price_mode?.toString(),price_mode:e?.price_mode?.toString(),has_plan_details:!!e?.plan_details,userAgent:"web"===r.A.OS?navigator.userAgent:"",...t}};var Lo=a(7918),Do=a.n(Lo),Mo=a(5685);var Fo=a(5556),Vo=a.n(Fo);const jo=Vo().oneOfType([Vo().string,Vo().number]),zo={all:Vo().bool,grid:Vo().bool,aural:Vo().bool,braille:Vo().bool,handheld:Vo().bool,print:Vo().bool,projection:Vo().bool,screen:Vo().bool,tty:Vo().bool,tv:Vo().bool,embossed:Vo().bool},Bo={orientation:Vo().oneOf(["portrait","landscape"]),scan:Vo().oneOf(["progressive","interlace"]),aspectRatio:Vo().string,deviceAspectRatio:Vo().string,height:jo,deviceHeight:jo,width:jo,deviceWidth:jo,color:Vo().bool,colorIndex:Vo().bool,monochrome:Vo().bool,resolution:jo,type:Object.keys(zo)},{type:Ho,...$o}=Bo,Wo={minAspectRatio:Vo().string,maxAspectRatio:Vo().string,minDeviceAspectRatio:Vo().string,maxDeviceAspectRatio:Vo().string,minHeight:jo,maxHeight:jo,minDeviceHeight:jo,maxDeviceHeight:jo,minWidth:jo,maxWidth:jo,minDeviceWidth:jo,maxDeviceWidth:jo,minColor:Vo().number,maxColor:Vo().number,minColorIndex:Vo().number,maxColorIndex:Vo().number,minMonochrome:Vo().number,maxMonochrome:Vo().number,minResolution:jo,maxResolution:jo,...$o};var Uo={all:{...zo,...Wo},types:zo,matchers:Bo,features:Wo};const Ko=(0,t.createContext)(void 0),qo=e=>{if(e)return Object.keys(e).reduce((t,n)=>(t[(0,Mo.default)(n)]=e[n],t),{})},Yo=()=>{const e=(0,t.useRef)(!1);return(0,t.useEffect)(()=>{e.current=!0},[]),e.current},Go=e=>{const n=()=>(e=>e.query||(e=>{const t=[];return Object.keys(Uo.all).forEach(n=>{const r=e[n];null!=r&&t.push(((e,t)=>{const n=(0,Mo.default)(e);return"number"==typeof t&&(t=`${t}px`),!0===t?n:!1===t?`not ${n}`:`(${n}: ${t})`})(n,r))}),t.join(" and ")})(e))(e),[r,i]=(0,t.useState)(n);return(0,t.useEffect)(()=>{const e=n();r!==e&&i(e)},[e]),r},Xo=(e,n,r)=>{const i=(e=>{const n=(0,t.useContext)(Ko),r=()=>qo(e)||qo(n),[i,o]=(0,t.useState)(r);return(0,t.useEffect)(()=>{const e=r();(function(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=Object.keys(e),r=Object.keys(t),i=n.length;if(r.length!==i)return!1;for(let r=0;r<i;r++){const i=n[r];if(e[i]!==t[i]||!Object.prototype.hasOwnProperty.call(t,i))return!1}return!0})(i,e)||o(e)},[e,n]),i})(n),o=Go(e);if(!o)throw new Error("Invalid or missing MediaQuery!");const a=((e,n)=>{const r=()=>Do()(e,n||{},!!n),[i,o]=(0,t.useState)(r),a=Yo();return(0,t.useEffect)(()=>{if(a){const e=r();return o(e),()=>{e&&e.dispose()}}},[e,n]),i})(o,i),s=(e=>{const[n,r]=(0,t.useState)(e.matches);return(0,t.useEffect)(()=>{const t=e=>{r(e.matches)};return e.addListener(t),r(e.matches),()=>{e.removeListener(t)}},[e]),n})(a),l=Yo();return(0,t.useEffect)(()=>{l&&r&&r(s)},[s]),(0,t.useEffect)(()=>()=>{a&&a.dispose()},[]),s},Jo={transparent:"transparent","main-01":"#292735","main-02":"#37363F","main-03":"#E3E3E9","main-04":"#3378F6","main-05":"#ffffff","main-06":"#292735","diam-01":"#804195","diam-02":"#713782","diam-03":"#EEE1F3","diam-04":"#9138AE","diam-05":"#ffffff","diam-06":"#9138AE","core-01":"#ffffff","core-02":"#EDEDF2","core-03":"#D5D5DC","core-04":"#ACACB3","core-05":"#020001","core-06":"#4F4E57","extra-01":"#A1A0AB","extra-02":"#292735","extra-03":"#E4E4EC","extra-04":"#DADAE0","extra-05":"#ffffff","extra-06":"#4F4E57","gem-01":"#3B72CC","gem-02":"#3C62A0","gem-03":"#DCE6F6","gem-04":"#3E76D2","gem-05":"#ffffff","gem-06":"#3E76D2","jewelry-01":"#58B8A5","jewelry-02":"#4CA191","jewelry-03":"#D6F1ED","jewelry-04":"#27AC92","jewelry-05":"#ffffff","jewelry-06":"#27AC92","lab-01":"#E97F5B","lab-02":"#DA704B","lab-03":"#F9E2D9","lab-04":"#E87B56","lab-05":"#ffffff","lab-06":"#E87B56","over-01":"#000000b3","over-02":"rgba(55,54,64,0.3)","over-03":"rgba(255,255,255,0.7)","over-04":"#ffffff","cont-00":"#ffffff","success-02":"#DBFFE4","success-01":"#00B140","error-02":"#FFE2E0","error-01":"#D0021B","warn-02":"#FFF8DB","warn-01":"#FFA500","primary-bg-static":"#292735","primary-bg-hover":"#37363F","primary-bg-disabled":"#D5D5DC","primary-cont":"#ffffff","primary-cont-disabled":"#ACACB3","secondary-bor-disabled":"#D5D5DC","secondary-cont-disabled":"#ACACB3","secondary-bg-hover":"#E3E3E9","secondary-bor-hover":"#37363F","secondary-bor-static":"#292735","secondary-cont":"#292735","tertiary-bg-static":"#E3E3E9","tertiary-bg-disabled":"#D5D5DC","tertiary-cont":"#292735","tertiary-cont-disabled":"#ACACB3","link-static":"#3378F6","link-hover":"#292735","option-bg-static":"#E4E4EC","option-bg-hover":"#DADAE0","option-bg-active":"#A1A0AB","option-cont":"#4F4E57","option-cont-active":"#ffffff","knob-bg-hover":"#E4E4EC","knob-bg-active":"#292735","knob-cont":"#ffffff","knob-bor":"#292735","toggle-bg-static":"#DADAE0","toggle-bg-on":"#292735","toggle-cont":"#ffffff","option-bg-disabled":"#D5D5DC","option-cont-disabled":"#ACACB3","knob-bg-disabled-off":"#EDEDF2","knob-bg-disabled-on":"#D5D5DC","knob-cont-disabled-on":"#ffffff","toggle-bg-disabled":"#D5D5DC","toggle-cont-disabled":"#EDEDF2","header-cont":"#ffffff","header-btn-cont":"#ffffff","header-bg-static":"#37363F","header-btn-bg-hover":"#37363F","header-btn-bg-active":"#E3E3E9","header-btn-bg-static":"#292735","header-btn-bor-hover":"#292735","header-btn-cont-active":"#292735","knob-bg-static":"#ffffff",Shadows:{Huge:{x:"2",y:"16",blur:"32",type:"dropShadow",color:"#37364066",spread:"-8"},Gentle:{x:"1",y:"2",blur:"4",type:"dropShadow",color:"#37364014",spread:"-2"},Normal:{x:"2",y:"8",blur:"24",type:"dropShadow",color:"#37364042",spread:"-6"},"Bottom-scroll":{x:"0",y:"-8",blur:"24",type:"dropShadow",color:"#37364029",spread:"-8"}}};let Qo=null;if("web"!==r.A.OS)try{Qo=a(Object(function(){var e=new Error("Cannot find module 'expo-device'");throw e.code="MODULE_NOT_FOUND",e}()))}catch{}const Zo=e=>{let{children:n}=e;const[i,o]=(0,t.useState)(Jo);if((0,t.useEffect)(()=>{(async()=>{try{const e=JSON.parse(await Pr("persist:root")||"{}"),t=e.theme?JSON.parse(e.theme):null;t&&o(t)}catch{}})()},[]),"web"===r.A.OS&&window.matchMedia("print").matches)return null;const a=Xo({maxWidth:767}),s=Xo({minWidth:767,maxWidth:1279}),l=Xo({minWidth:1279}),{width:u}=ei,c=a||u<=767,d=s||u>767&&u<=1279||"iPadOS"===Qo?.osName||ci(),h=(l||u>1279)&&!("iPadOS"===Qo?.osName||ci()),f=h&&!d&&!c,p={isMobile:c,isTablet:d,isDesktop:h,isLargeScreen:f},m=(0,t.useMemo)(()=>({...i,...p}),[i,c,d,h,f]);return t.createElement(Ut,{theme:m},n)},ea=(0,t.forwardRef)((i,o)=>{let{apiUrl:a,userToken:s,priceMode:l,modalHeight:u,theme:c,initialMessages:d=[],placeholder:h,onClose:f,onClearChat:p,onViewAllPress:m,onItemPress:g,isBetaMode:v,activeProductType:y,trackAnalyticsEvent:b,fromFilterScreen:_,translations:w,locale:S="en",classic_search_filters:x={}}=i;const{t:C}=Br(),[E,k]=(0,t.useState)(d),[A,R]=(0,t.useState)(""),[T,P]=(0,t.useState)(!1),[O,I]=(0,t.useState)(null),[N,L]=(0,t.useState)(null),[D,M]=(0,t.useState)(""),[F,V]=(0,t.useState)({}),[j,z]=(0,t.useState)(new Set),[B,H]=(0,t.useState)(l||null),[$,W]=(0,t.useState)(s||""),[U,K]=(0,t.useState)(!1),[q,Y]=(0,t.useState)(!0),[G,X]=(0,t.useState)(void 0),[J,Q]=(0,t.useState)(1),[Z,ee]=(0,t.useState)({}),[te,ne]=(0,t.useState)(new Set),re=(0,t.useRef)(null),ie=(0,t.useRef)(null),oe=(0,t.useRef)(!0),ae=(0,t.useRef)(0),se=(0,t.useRef)(0),le=(0,t.useRef)(!1),ue=(0,t.useRef)(!1),ce=(0,t.useRef)(!1),de=(0,t.useMemo)(()=>({...Di,...c||{}}),[c]),{_identify:he}=(()=>{const e=(0,t.useContext)(ht);return{trackEvent:async(t,n)=>{const r=await No(),i=e||window.analytics;i&&await i.track(t,{...r,...n})},_identify:async(t,n)=>{const r=e||window.analytics;r&&await r.identify(t,n)},_track:async(t,n)=>{const i=await No();if(o=i?.userAgent,o&&/^Mozilla\/5\.0 \([^;]+; CPU [^)]+ like Mac OS X\) AppleWebKit\/600\.1\.4 \(KHTML, like Gecko\) Version\/\d\.0 Mobile\/10B329 Safari\/8536\.25$/.test(o))return void console.warn("Skipping tracking for Segment user agent:",i.userAgent);var o;if(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return!e&&"web"===r.A.OS||[/bot/i,/crawl/i,/spider/i,/HeadlessChrome/i,/PhantomJS/i,/slurp/i,/curl/i,/wget/i,/httpclient/i].some(t=>t.test(e))}(i?.userAgent))return void console.warn("Skipping tracking for bot user agent:",i.userAgent);const a=e||window.analytics;if(!a)return;const s=await oi();s?.id?await a.identify(`${s.id}`,{name:`${s.first_name} ${s.last_name}`,email:s.email,country:s.country}):(console.error("Track Event tracked without user:",t,JSON.stringify(n)),console.error("Can't identify as user is not logged in",JSON.stringify(s))),await a.track(t,{...i,...n})}}})(),fe=Boolean(v),pe=Wt(),me=pe.isTablet;(0,t.useEffect)(()=>{zr({locale:S,translations:w})},[]),(0,t.useEffect)(()=>{(async(e,t)=>{if(!Dr.isInitialized)return;const n=await Vr(),r=jr(n,t),i=Fr(r);Dr.addResourceBundle(e,"translation",i,!0,!0),Dr.language!==e&&Dr.changeLanguage(e)})(S,w)},[S,w]),(0,t.useEffect)(()=>{(async()=>{try{if(!s){const e=await Nr("persist:userInfo",{}),t=JSON.parse(e?.user||"{}"),n=t?.token||"";n&&W(n)}}catch(e){console.error("Failed to load auth data from storage",e)}})()},[s]);const ge=async()=>{y&&await Lr("external_context",y)};(0,t.useEffect)(()=>{0===E.length&&ge()},[E]),(0,t.useEffect)(()=>{ge()},[y]);const ve=(0,t.useCallback)(e=>{let t=e?.search_payload;const n=JSON.stringify(t),i=e?.search_payload;if(!i)return;const o="string"==typeof i.lab_grown?"true"===i.lab_grown:"boolean"==typeof i.lab_grown&&i.lab_grown,s=`${a}webapp/${o?"lab-grown-diamonds":"natural-diamonds"}/search?priceMode=${B}&productType=${o?mi.LAB_GROWN_DIAMOND:mi.DIAMOND}&fromNewFilterScreen=false&filterSplitStep=1§ionName=${"pair"===t.pair?"Pairs":"Single Stones"}&breadCrumbLabel=Stone%20Search&enterSecondFlow=false&saved_search=${encodeURIComponent(n)}`;m?m(s,i):"web"===r.A.OS&&window.open(s,"_parent")},[a,B,m]),ye=(0,t.useCallback)(e=>{const t=`${a}webapp/${e.type===mi.LAB_GROWN_DIAMOND?"lab-grown-diamonds":"natural-diamonds"}/item-detail/${e.id}?productType=${e.type}&priceMode=${B}&breadCrumbLabel=Stone%20Details`;g?g(t,e):"web"===r.A.OS&&window.open(t,"_parent")},[a,B,g]),be=(0,t.useMemo)(()=>Boolean($),[$]),_e=(0,t.useMemo)(()=>({conversationId:$}),[$]),we=(0,t.useCallback)(async(e,t,n)=>{try{let r="0";k(e=>{const t=e.find(e=>e.id===n);return r=t?.reaction||"0",e});const i=r===e?ni.UNSET:e,o=await(async(e,t,n,r)=>{const i=`${ji(e,n,r)}`,o={reaction:t};return await fetch(i,{method:"POST",headers:await Bi(),body:JSON.stringify(o)})})(a,i,t,n);o.ok?k(e=>e.map(e=>e.id===n?{...e,reaction:i}:e)):console.error("Feedback API failed",o.status)}catch(e){console.error("Feedback API error",e)}},[]);(0,t.useEffect)(()=>{let e=!1;return d.length||(async()=>{if(be)try{const t=await Ui(a,0,B);if(!e){const e=(await Wi(t,B)).reverse();if(void 0!==t?.has_more&&Y(t.has_more),void 0!==t?.next_cursor&&X(t.next_cursor),ce.current=!1,le.current=!1,0===e.length){const e={id:"",role:"assistant",text:C("chat.welcome.message.text",'Describe the diamond you\'re looking for — for example, "2ct F VS2 under $10,000" or "1–2ct D–F VS pear" — and I\'ll take it from there.'),createdAt:Date.now(),isLoading:!1,suggestions:[],search_payload:{},reaction:"0"};k([e]),Y(!1)}else k(e)}}catch(e){console.error("Failed to fetch initial messages",e)}})(),()=>{e=!0}},[a,_e,d.length,be,B]);const Se=(0,t.useCallback)(async e=>{const t=e.trim();if(!t||T)return;const n=await Nr("external_context"),r={id:`user-${Date.now()}`,role:"user",text:t,createdAt:Date.now(),external_context:n||null},i=`bot-loading-${Date.now()}`,o={id:i,role:"assistant",text:C("chat.thinking.text","Thinking"),createdAt:Date.now(),reaction:"0",isLoading:!0,search_payload:{}};k(e=>[...e,r,o]),I(i),P(!0);try{if(!be)return void k(e=>e.map(e=>e.id===i?{...e,text:C("chat.authError.text","Chat is unavailable (missing user authentication)."),isLoading:!1}:e));const e=[...E,r],n=oe.current?x:{};oe.current=!1;const o=await async function(e,t,n,r,i){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};const a=await Hi(),s=a?.[i]?.conversation_id??null;if(void 0===i)return null;const l=await Nr("external_context");l&&await Ir("external_context");const u={query:t,external_context:l||null,...Object.keys(o).length>0&&{classic_search_filters:o}};s&&(u.conversation_id=Number.isNaN(Number(s))?s:Number(s));const c=await fetch(Fi(e),{method:"POST",headers:await Bi(),body:JSON.stringify(u)});if(!c.ok)throw new Error(`POST ${Fi(e)} failed with ${c.status}`);const d=await c.json();if(d&&null!=d.conversation_id&&i){const e={...a};e[i]={conversation_id:d.conversation_id},await $i(e)}return d}(a,t,_e,e,B,n),s=(await Wi(o,B)).find(e=>"assistant"===e.role);if(s?.text){if(s?.search_payload&&"object"==typeof s.search_payload&&Object.keys(s.search_payload).length>0){const e=await Ki(a,s.search_payload);b?.(li.AI_CHAT_WIDGET,{action:ui.SEARCH_INITIATED,search_payload:s.search_payload});const t=e&&e.response&&e.response.body&&Array.isArray(e.response.body.diamonds)&&e.response.body.diamonds.length>0;t?_&&t&&ve({search_payload:s.search_payload}):b?.(li.AI_CHAT_WIDGET,{action:ui.NO_RESULTS_FOUND,search_payload:s.search_payload}),V(t=>({...t,[s.id]:e}))}I(null),k(e=>e.map(e=>e.id===i?{...e,id:s.id,text:"",isLoading:!1,suggestions:s.suggestions,search_payload:s.search_payload??{}}:e)),setTimeout(()=>{L(s.id),M(s.text),re.current?.scrollToEnd({animated:!0})},50)}else k(e=>e.map(e=>e.id===i?{...e,isLoading:!1}:e))}catch(e){k(e=>e.map(e=>e.id===i?{...e,text:C("chat.error.text","Sorry, something went wrong. Please try again."),isLoading:!1}:e)),console.error(e)}finally{P(!1),I(null),ie.current?.focus()}},[a,T,E,_e,be,B,ve,_,x]),xe=(0,t.useCallback)(async()=>{const e=A.trim();e&&(R(""),Se(e))},[A,Se]),Ce=(0,t.useCallback)(e=>{Se(e)},[Se]),Ee=(0,t.useCallback)(async e=>{const t=e.id;try{z(e=>new Set(e).add(t));const n=e?.search_payload;if(!n||0===Object.keys(n).length)return;const r=await Ki(a,n);V(e=>({...e,[t]:r}))}catch(e){console.error("Reload results failed",e)}finally{z(e=>{const n=new Set(e);return n.delete(t),n})}},[]),ke=(0,t.useCallback)(async(e,t)=>{if(te.has(e))return;const n=(Z[e]||1)+1;if(!(n>6))try{ne(t=>new Set(t).add(e));const r=await async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r=await fetch(Vi(e),{method:"POST",headers:await Bi(),body:JSON.stringify({vdb:{...t,page_size:5,page_number:n}})});if(!r.ok)throw new Error(`POST failed with ${r.status}`);return await r.json()}(a,t,n);r?.response?.body?.diamonds&&(V(t=>{const n=t[e];if(!n)return t;const i=n.response?.body?.diamonds||[],o=r.response.body.diamonds;return{...t,[e]:{...n,response:{...n.response,body:{...n.response.body,diamonds:[...i,...o]}}}}}),ee(t=>({...t,[e]:n})))}catch(e){console.error("Failed to load more results:",e)}finally{ne(t=>{const n=new Set(t);return n.delete(e),n})}},[a,te,Z]),Ae=(0,t.useCallback)(async(e,t)=>{try{const n=await Ki(a,t);n?.response?.body?.diamonds&&(V(t=>({...t,[e]:n})),ee(t=>({...t,[e]:1})))}catch(e){console.error("Failed to show less results:",e)}},[a]),Re=(0,t.useCallback)(async()=>{if(U||!q||!be)return;ue.current=!0;const e=se.current;K(!0);try{const t=await async function(e,t,n,r){const i=await Hi(),o=i?.[t??""]?.conversation_id??null;if(!o)return{messages:[],has_more:!1};const a={conversation_id:Number.isNaN(Number(o))?o:Number(o),fetch_history:!0};void 0!==n&&(a.cursor=n),void 0!==r&&(a.page=r);const s=await fetch(Fi(e),{method:"POST",headers:await Bi(),body:JSON.stringify(a)});if(!s.ok)throw new Error(`POST ${Fi(e)} failed with ${s.status}`);const l=await s.json();return{messages:l.messages||[],conversation_id:l.conversation_id,has_more:l.has_more??!1,next_cursor:l.next_cursor,total_count:l.total_count}}(a,B,G,J+1),n=(await Wi(t,B)).reverse();n.length>0?(k(e=>{const t=new Set(e.map(e=>e.id)),r=n.filter(e=>!t.has(e.id));return console.log("[...newMessages, ...prev]",[...r,...e]),[...r,...e]}),Q(e=>e+1),requestAnimationFrame(()=>{const t=se.current-e;t>0&&re.current&&re.current.scrollTo({y:ae.current+t,animated:!1}),ue.current=!1})):ue.current=!1,Y(t.has_more??n.length>0),X(t.next_cursor)}catch(e){console.error("Failed to load older messages",e),ue.current=!1}finally{K(!1)}},[U,q,be,a,B,G,J]);(0,t.useEffect)(()=>{const e=()=>{setTimeout(()=>{try{re.current?.scrollToEnd({animated:!0})}catch(e){}},100)},t="ios"===r.A.OS?"keyboardWillShow":"keyboardDidShow",n="ios"===r.A.OS?"keyboardWillHide":"keyboardDidHide",i=pt.A.addListener(t,e),o=pt.A.addListener(n,e);return()=>{i.remove(),o.remove()}},[]),(0,t.useEffect)(()=>(e.A.addListener("clearChat",Pe),e.A.addListener("changePriceMode",e=>Te(e.priceMode)),Te(),(async()=>{const e=await oi(),t=e?.id,n=JSON.stringify(e?.email)??void 0;t&&he(`${t}`,{email:n}).then()})(),()=>{e.A.removeAllListeners("clearChat"),e.A.removeAllListeners("changePriceMode")}),[]);const Te=async e=>{if(!e&&l&&(e=l),!e){let t=await Nr("persist:userInfo",{user:void 0});t=t&&t.user?JSON.parse(t.user):{},e=t?.price_mode}H(void 0===e?null:String(e))},Pe=(0,t.useCallback)(async()=>{try{const e=await Nr("vdbchat_conversations",null);if(e&&B&&e.conversations?.[B]){const t={...e.conversations};delete t[B],await Lr("vdbchat_conversations",{token:e.token,conversations:t})}k([]),V({}),z(new Set),P(!1),I(null),L(null),M(""),Y(!0),X(void 0),Q(1),ce.current=!1,le.current=!1,ue.current=!1;const t=await Ui(a,0,B),n=(await Wi(t,B)).reverse();if(0===n.length){const e={id:"",role:"assistant",text:C("chat.welcome.message.text",'Describe the diamond you\'re looking for — for example, "2ct F VS2 under $10,000" or "1–2ct D–F VS pear" — and I\'ll take it from there.'),createdAt:Date.now(),isLoading:!1,suggestions:[],reaction:"0",search_payload:{}};k([e])}else k(n);p?.()}catch(e){console.error("Failed to clear chat",e)}},[a,B]);(0,t.useEffect)(()=>{if(!O||N)return;let e=0;const t=C("chat.thinking.text","Thinking"),n=setInterval(()=>{e=(e+1)%3;const n=".".repeat(e+1);k(e=>e.map(e=>e.id===O&&e.isLoading?{...e,text:`${t}${n}`}:e))},500);return()=>{clearInterval(n)}},[O,N,C]),(0,t.useImperativeHandle)(o,()=>({clearChat:Pe}),[Pe]);const Oe=(0,t.useRef)(0);return(0,t.useEffect)(()=>{if(!N||!D)return void(Oe.current=0);Oe.current=0;const e=D.length,t=N,n=D,r=setInterval(()=>{Oe.current+=1;const i=Oe.current,o=n.slice(0,i);k(e=>e.map(e=>e.id===t?{...e,text:o}:e)),i>=e&&(clearInterval(r),L(null),M(""),k(e=>e.map(e=>e.id===t?{...e,isLoading:!1}:e)))},25);return()=>{clearInterval(r)}},[N,D]),t.createElement(Zo,null,t.createElement(ta,{theme:pe},t.createElement(mt.A,{style:{flex:1},behavior:"ios"===r.A.OS?"padding":"height",keyboardVerticalOffset:_?150:100},E?.[0]?.createdAt&&t.createElement(na,{theme:pe},t.createElement(ua,{onPress:Pe},t.createElement(la,null,C("chatbot.clearChat.text","Clear Chat"))),t.createElement(ra,{theme:pe},C("chat.chatStartedAt.text","Chat Started at {{time}}",{time:ti(E[0].createdAt,C)}))),t.createElement(gt.A,{ref:re,keyboardShouldPersistTaps:"handled",onScroll:e=>{const{contentOffset:t,contentSize:n,layoutMeasurement:r}=e.nativeEvent;ae.current=t.y;const i=n.height-(r.height+t.y);le.current=i>100,t.y<50&&q&&!U&&!ue.current&&Re()},scrollEventThrottle:16,style:u?{height:u,backgroundColor:pe["core-01"]||"#FFFFFF"}:{backgroundColor:pe["core-01"]||"#FFFFFF"},contentContainerStyle:{backgroundColor:pe["core-01"]||de?.listContentBackgroundColor||"#FFFFFF",...ca.listContent,justifyContent:0===E.length?"center":"flex-end",minHeight:u||void 0,...me?{maxWidth:608,alignSelf:"center",width:"100%"}:{}},onContentSizeChange:(e,t)=>{se.current=t,ue.current||U||(ce.current?le.current||re.current?.scrollToEnd({animated:!1}):(re.current?.scrollToEnd({animated:!1}),ce.current=!0))}},U&&t.createElement(aa,null,t.createElement(vt.A,{size:"small",color:pe["core-06"]||"#4F4E57"}),t.createElement(sa,{theme:pe},C("chat.loadingOlder.text","Loading older messages..."))),(()=>{const e=[...E];return e.map((r,i)=>{const o=i===e.length-1,s=Boolean(F[r.id]?.response?.body?.diamonds&&F[r.id]?.response?.body?.diamonds.length>0);return t.createElement(n.A,{key:r.id+i,style:{gap:12}},t.createElement(xi,{message:r,userTheme:de,priceMode:B,handleFeedbackAction:we,onReloadResults:Ee,reloading:j.has(r.id),hasResults:s,totalResults:F[r.id]?.response?.header?F[r.id].response.header?.total_diamonds_found??0:null,shownResults:F[r.id]?.response?.body?.diamonds.length||0,onSuggestionSelect:Ce,isLatest:o,isTyping:N===r.id}),"assistant"===r.role&&r.search_payload&&Object.keys(r.search_payload).length>0&&!F[r.id]&&t.createElement(Oo,{apiUrl:a,priceMode:B,messageId:r.id,payload:r.search_payload,onFetched:(e,t)=>{V(n=>({...n,[e]:t}))}}),"assistant"===r.role&&s&&!_&&t.createElement(Po,{data:F[r.id]?.response?.body?.diamonds||[],totalResults:F[r.id]?.response?.header?.total_diamonds_found||0,onViewAll:ve,onItemPress:ye,item:r,showMoreResults:()=>ke(r.id,r.search_payload),showLessResults:()=>Ae(r.id,r.search_payload),trackAnalyticsEvent:b,currentPage:Z[r.id]||1,isLoadingMore:te.has(r.id)}),t.createElement(Li,{message:r,priceMode:B||"",handleFeedbackAction:we,onReloadResults:Ee,reloading:j.has(r.id),hasResults:s}))})})()),t.createElement(oa,null),t.createElement(ia,{theme:pe},t.createElement(Wr,{value:A,onChangeText:R,onSend:xe,disabled:T,placeholder:h,theme:de,inputRef:ie}),t.createElement(Gi,{active:fe})))))});ea.displayName="ChatWidget";const ta=vn.View`
|
|
239
239
|
background-color: ${e=>{let{theme:t}=e;return t["core-01"]||"#FFFFFF"}};
|
|
240
240
|
flex: 1;
|
|
241
241
|
width: 100%;
|
|
242
|
-
`,
|
|
243
|
-
padding:
|
|
242
|
+
`,na=vn.View`
|
|
243
|
+
padding: 8px;
|
|
244
|
+
flex-direction: row;
|
|
245
|
+
justify-content: space-between;
|
|
244
246
|
align-items: center;
|
|
245
|
-
justify-content: center;
|
|
246
247
|
background-color: ${e=>{let{theme:t}=e;return t["core-01"]||"#FFFFFF"}};
|
|
247
|
-
`,
|
|
248
|
+
`,ra=vn.Text`
|
|
248
249
|
font-size: 13px;
|
|
249
250
|
font-weight: 400;
|
|
250
251
|
color: ${e=>{let{theme:t}=e;return t["core-06"]||"#4F4E57"}};
|
|
251
|
-
`,
|
|
252
|
+
`,ia=vn.View`
|
|
252
253
|
padding-vertical: 12px;
|
|
253
254
|
padding-horizontal: 16px;
|
|
254
255
|
flex-direction: column;
|
|
@@ -261,16 +262,22 @@
|
|
|
261
262
|
align-self: center;
|
|
262
263
|
width: 100%;
|
|
263
264
|
`}};
|
|
264
|
-
`,
|
|
265
|
+
`,oa=vn.View`
|
|
265
266
|
border-top-color: ${e=>{let{theme:t}=e;return t["core-03"]||"#E0E0E0"}};
|
|
266
267
|
border-top-width: 1;
|
|
267
|
-
`,
|
|
268
|
+
`,aa=vn.View`
|
|
268
269
|
padding: 12px;
|
|
269
270
|
align-items: center;
|
|
270
271
|
justify-content: center;
|
|
271
272
|
flex-direction: row;
|
|
272
273
|
gap: 8px;
|
|
273
|
-
`,
|
|
274
|
+
`,sa=vn.Text`
|
|
274
275
|
font-size: 12px;
|
|
275
276
|
color: ${e=>{let{theme:t}=e;return t["core-06"]||"#4F4E57"}};
|
|
276
|
-
`,
|
|
277
|
+
`,la=vn.Text`
|
|
278
|
+
color: ${e=>{let{theme:t}=e;return t["link-static"]||"#3378f6"}};
|
|
279
|
+
text-align: right;
|
|
280
|
+
font-size: 13px;
|
|
281
|
+
font-weight: 500;
|
|
282
|
+
line-height: 136%;
|
|
283
|
+
`,ua=vn.TouchableOpacity``,ca=i.A.create({listContent:{paddingVertical:8,flexGrow:1,justifyContent:"flex-end"},loading:{paddingVertical:8,alignItems:"center"}}),da=i.A.create({root:{flex:1,height:"100%",width:"100%"}});window.createChatWidget=function(e){const{id:i="chat-widget",apiUrl:a,theme:s,height:l="500px",width:u="360px",button:c={label:"",icon:"",iconColor:"transparent",labelColor:"transparent",backgroundColor:"transparent",borderRadius:"9999px",padding:"0",buttonPosition:{bottom:"60px",right:"44px"}},segmentWriteKey:d,isBetaMode:h,locale:f,translations:p}=e;(f||p)&&zr({locale:f,translations:p});const m=`${i}-modal`,g=`${i}-launcher`;let v=document.getElementById(g);v||(v=document.createElement("button"),v.id=g,v.type="button",v.innerText=c.label||"",v.innerHTML=c.icon||"<svg xmlns='http://www.w3.org/2000/svg' width='56' height='56' viewBox='0 0 72 72' fill='none'> <g filter='url(#filter0_d_10_66)'> <g clip-path='url(#clip0_10_66)'> <foreignObject x='-33.12' y='-33.12' width='138.24' height='138.24'><div xmlns='http://www.w3.org/1999/xhtml' style='backdrop-filter:blur(1px);clip-path:url(#bgblur_1_10_66_clip_path);height:100%;width:100%'></div></foreignObject><g filter='url(#filter1_g_10_66)' data-figma-bg-blur-radius='2'> <rect width='72' height='72' fill='white' fill-opacity='0.05'/> </g> <g filter='url(#filter2_iii_10_66)'> <rect width='72' height='72' rx='36' fill='url(#paint0_linear_10_66)' fill-opacity='0.7'/> <rect x='0.5' y='0.5' width='71' height='71' rx='35.5' stroke='white' stroke-opacity='0.2'/> </g> <path d='M36 20C36 20 36.8828 28.2399 40.3215 31.6785C43.7601 35.1172 52 36 52 36C52 36 43.7601 36.8828 40.3215 40.3215C36.8828 43.7601 36 52 36 52C36 52 35.1172 43.7601 31.6785 40.3215C28.2399 36.8828 20 36 20 36C20 36 28.2399 35.1172 31.6785 31.6785C35.1172 28.2399 36 20 36 20Z' fill='white'/> </g> </g> <defs> <filter id='filter0_d_10_66' x='0' y='0' width='112' height='112' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'> <feFlood flood-opacity='0' result='BackgroundImageFix'/> <feColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/> <feOffset dx='20' dy='20'/> <feGaussianBlur stdDeviation='10'/> <feComposite in2='hardAlpha' operator='out'/> <feColorMatrix type='matrix' values='0 0 0 0 0.862354 0 0 0 0 0.862354 0 0 0 0 0.89855 0 0 0 0.2 0'/> <feBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_10_66'/> <feBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_10_66' result='shape'/> </filter> <filter id='filter1_g_10_66' x='-33.12' y='-33.12' width='138.24' height='138.24' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'> <feFlood flood-opacity='0' result='BackgroundImageFix'/> <feBlend mode='normal' in='SourceGraphic' in2='BackgroundImageFix' result='shape'/> <feTurbulence type='fractalNoise' baseFrequency='0.012303149327635765 0.012303149327635765' numOctaves='3' seed='8425'/> <feDisplacementMap in='shape' scale='66.239997863769531' xChannelSelector='R' yChannelSelector='G' result='displacedImage' width='100%' height='100%'/> <feMerge result='effect1_texture_10_66'> <feMergeNode in='displacedImage'/> </feMerge> </filter> <clipPath id='bgblur_1_10_66_clip_path' transform='translate(33.12 33.12)'><rect width='72' height='72'/> </clipPath><filter id='filter2_iii_10_66' x='-1' y='-2' width='74' height='76' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'> <feFlood flood-opacity='0' result='BackgroundImageFix'/> <feBlend mode='normal' in='SourceGraphic' in2='BackgroundImageFix' result='shape'/> <feColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/> <feOffset/> <feGaussianBlur stdDeviation='7'/> <feComposite in2='hardAlpha' operator='arithmetic' k2='-1' k3='1'/> <feColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0'/> <feBlend mode='normal' in2='shape' result='effect1_innerShadow_10_66'/> <feColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/> <feOffset dx='-1' dy='-3'/> <feGaussianBlur stdDeviation='1'/> <feComposite in2='hardAlpha' operator='arithmetic' k2='-1' k3='1'/> <feColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.1 0'/> <feBlend mode='normal' in2='effect1_innerShadow_10_66' result='effect2_innerShadow_10_66'/> <feColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/> <feOffset dx='1' dy='3'/> <feGaussianBlur stdDeviation='1'/> <feComposite in2='hardAlpha' operator='arithmetic' k2='-1' k3='1'/> <feColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.3 0'/> <feBlend mode='normal' in2='effect2_innerShadow_10_66' result='effect3_innerShadow_10_66'/> </filter> <linearGradient id='paint0_linear_10_66' x1='4.5' y1='16' x2='67.5' y2='52.5' gradientUnits='userSpaceOnUse'> <stop stop-color='#C000FF'/> <stop offset='1' stop-color='#2BFFCA'/> </linearGradient> <clipPath id='clip0_10_66'> <rect width='72' height='72' rx='36' fill='white'/> </clipPath> </defs> </svg>",v.style.color=c.iconColor||"#ffffff",v.style.position="fixed",v.style.zIndex="2147483000",v.style.borderRadius="100px",v.style.padding="0",v.style.width="56px",v.style.height="56px",v.style.backgroundColor=c.backgroundColor||"transparent",v.style.color=c.labelColor||"transparent",v.style.border="none",v.style.cursor="pointer",v.style.boxShadow="0 4px 12px rgba(0,0,0,0.2)",v.style.fontFamily="system-ui, -apple-system, BlinkMacSystemFont, sans-serif",v.style.fontSize="14px",v.style.bottom=c.buttonPosition?.bottom||"24px",c.buttonPosition?.top&&(v.style.top=c.buttonPosition.top),v.style.right=c.buttonPosition?.right||"20px",c.buttonPosition?.left&&(v.style.left=c.buttonPosition.left),document.body.appendChild(v));let y=document.getElementById(m);y||(y=document.createElement("div"),y.id=m,y.style.position="fixed",y.style.zIndex="2147483000",y.style.bottom=c.modalPosition?.bottom||"30px",c.modalPosition?.top&&(y.style.top=c.modalPosition.top),y.style.right=c.modalPosition?.right||"30px",c.modalPosition?.left&&(y.style.left=c.modalPosition.left),y.style.width=u,y.style.height=l,y.style.maxWidth="30%",y.style.maxHeight="80%",y.style.backgroundColor="#ffffff",y.style.borderRadius="12px",y.style.overflow="hidden",y.style.boxShadow="0 16px 40px rgba(0,0,0,0.25)",y.style.display="none",y.style.opacity="0",y.style.transform="translateY(16px) scale(0.98)",y.style.transition="transform 220ms ease-out, opacity 220ms ease-out",document.body.appendChild(y)),function(e,i,a,s,l,u,c,d,h){const f=(0,o.H)(e),p=(e,t)=>{const n={source:"vdb-ai-chat",type:e,payload:t},r=JSON.stringify(n),i=window.ReactNativeWebView;if(i?.postMessage)i.postMessage(r);else{try{window.parent?.postMessage(n,"*")}catch{}try{window.dispatchEvent(new CustomEvent("vdb-ai-event",{detail:n}))}catch{}}},m=t.createElement(n.A,{style:da.root},t.createElement(ea,{apiUrl:Fi(i),theme:a,onClose:s,onClearChat:()=>{},onViewAllPress:(e,t)=>{p("ai_view_all",{url:e,payload:t}),s?.()},onItemPress:(e,t)=>{p("ai_item_click",{url:e,item:t}),s?.()},isBetaMode:h,classic_search_filters:void 0}));if(f.render(m),"web"===r.A.OS&&u)try{const e="undefined"!=typeof navigator&&(navigator.userAgent.includes("Edg")||navigator.userAgent.includes("Edge"));dt.load({writeKey:u,trackAppLifecycleEvents:!1,flushAt:e?1:10,flushInterval:1e4,maxBatchSize:e?1:10}).then(async e=>{let[n]=e;n?.debug?.(!0),window.analytics=n,n.page?.();try{const e=await oi(),t=e?.id;t&&n.identify(t)}catch{}const r=t.createElement(ft,{client:n},m);f.render(r)}).catch(e=>{console.error("[Segment] init failed",e)})}catch(e){console.error("[Segment] init failed",e)}}(y,a,s,()=>_(!1),0,d,0,0,h);let b=!1;const _=e=>{b=e,e?(y.style.display="block",requestAnimationFrame(()=>{y.style.opacity="1",y.style.transform="translateY(0px) scale(1)";const e=document.getElementById("chat-input");e&&e.focus()})):(y.style.opacity="0",y.style.transform="translateY(16px) scale(0.98)",setTimeout(()=>{b||(y.style.display="none")},230))};v.onclick=()=>{try{const e=window.analytics;e&&(b?e.track(si.WIDGET_CLOSED,{userAgent:"undefined"!=typeof navigator?navigator.userAgent:""}).then?.():e.track(si.WIDGET_OPENED,{userAgent:"undefined"!=typeof navigator?navigator.userAgent:""}).then?.())}catch(e){}_(!b)}},window.clearChat=function(){e.A.emit("clearChat")},window.changePriceMode=function(t){e.A.emit("changePriceMode",{priceMode:t})},window.setTranslations=async e=>{try{const t=await Pr("persist:root"),n=t?JSON.parse(t):{};let r="string"==typeof n?.globalData?JSON.parse(n.globalData):n?.globalData||{};if(r.ai_chat_bot={...r.ai_chat_bot,translations:e},n.globalData=JSON.stringify(r),await Or("persist:root",JSON.stringify(n)),Dr.isInitialized){const t=Fr(e);Dr.addResourceBundle(Dr.language,"translation",t,!0,!0)}}catch{}},window.getTranslations=async()=>{const e=await Vr();return e&&Object.keys(e).length>0?e:Cr},window.changeLanguage=async e=>{const t=await Vr(),n=jr(t,void 0),r=Fr(n);Dr.addResourceBundle(e,"translation",r,!0,!0),await Dr.changeLanguage(e)},window.initI18n=zr})()})();
|
package/lib/commonjs/api.js
CHANGED
|
@@ -187,7 +187,7 @@ async function fetchOlderMessages(apiUrl, priceMode, cursor, pageNumber) {
|
|
|
187
187
|
total_count: data.total_count
|
|
188
188
|
};
|
|
189
189
|
}
|
|
190
|
-
async function sendUserMessage(apiUrl, userMessage, _params, _history, priceMode) {
|
|
190
|
+
async function sendUserMessage(apiUrl, userMessage, _params, _history, priceMode, classic_search_filters = {}) {
|
|
191
191
|
// Get conversations valid for current session
|
|
192
192
|
const conversations = await getValidConversations();
|
|
193
193
|
const storedId = conversations?.[priceMode]?.conversation_id ?? null;
|
|
@@ -200,7 +200,10 @@ async function sendUserMessage(apiUrl, userMessage, _params, _history, priceMode
|
|
|
200
200
|
}
|
|
201
201
|
const body = {
|
|
202
202
|
query: userMessage,
|
|
203
|
-
external_context: external_context || null
|
|
203
|
+
external_context: external_context || null,
|
|
204
|
+
...(Object.keys(classic_search_filters).length > 0 && {
|
|
205
|
+
classic_search_filters: classic_search_filters
|
|
206
|
+
})
|
|
204
207
|
};
|
|
205
208
|
if (storedId) {
|
|
206
209
|
body.conversation_id = Number.isNaN(Number(storedId)) ? storedId : Number(storedId);
|
package/lib/commonjs/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_routes","_interopRequireDefault","_storage","e","__esModule","default","getUserToken","userInfo","Storage","getJSON","userData","JSON","parse","user","token","buildHeaders","iid","getItem","installationId","parsed","installationIdentifier","session","Accept","Authorization","Cookie","getValidConversations","currentToken","stored","removeItem","conversations","saveConversations","data","setJSON","normaliseMessages","raw","priceMode","messages","Array","isArray","searchResultViewTypeMap","searchResultViewType","rootState","selectedGroups","map","m","index","isLabgrown","lab_grown","activeProduct","ProductCategory","LAB_GROWN_DIAMOND","DIAMOND","mGroupIds","vdbSetting","includes","filter","groupId","length","queryParamList","Object","assign","group_ids","id","String","role","created_at","Date","now","text","content","createdAt","search_payload","keys","renderSearchParams","searchPayload","reaction","suggestions","undefined","fetchInitialMessages","apiUrl","_params","storedId","conversation_id","body","Number","isNaN","res","fetch","Routes","AGENCT_CONVERSATIONS","method","headers","stringify","ok","Error","status","json","updatedConversations","fetchOlderMessages","cursor","pageNumber","has_more","fetch_history","page","next_cursor","total_count","sendUserMessage","userMessage","_history","external_context","query","clearChatHistory","url","URL","searchParams","set","toString","getProducts","params","SEARCH_DIAMONDS","vdb","page_size","page_number","getProductsPaginated","handleFeedbackActionApi","action","message_id","feedbackUrl","REACTION","payload","response","exports"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_utils","require","_routes","_interopRequireDefault","_storage","e","__esModule","default","getUserToken","userInfo","Storage","getJSON","userData","JSON","parse","user","token","buildHeaders","iid","getItem","installationId","parsed","installationIdentifier","session","Accept","Authorization","Cookie","getValidConversations","currentToken","stored","removeItem","conversations","saveConversations","data","setJSON","normaliseMessages","raw","priceMode","messages","Array","isArray","searchResultViewTypeMap","searchResultViewType","rootState","selectedGroups","map","m","index","isLabgrown","lab_grown","activeProduct","ProductCategory","LAB_GROWN_DIAMOND","DIAMOND","mGroupIds","vdbSetting","includes","filter","groupId","length","queryParamList","Object","assign","group_ids","id","String","role","created_at","Date","now","text","content","createdAt","search_payload","keys","renderSearchParams","searchPayload","reaction","suggestions","undefined","fetchInitialMessages","apiUrl","_params","storedId","conversation_id","body","Number","isNaN","res","fetch","Routes","AGENCT_CONVERSATIONS","method","headers","stringify","ok","Error","status","json","updatedConversations","fetchOlderMessages","cursor","pageNumber","has_more","fetch_history","page","next_cursor","total_count","sendUserMessage","userMessage","_history","classic_search_filters","external_context","query","clearChatHistory","url","URL","searchParams","set","toString","getProducts","params","SEARCH_DIAMONDS","vdb","page_size","page_number","getProductsPaginated","handleFeedbackActionApi","action","message_id","feedbackUrl","REACTION","payload","response","exports"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,8 +22,7 @@ var _native = _interopRequireWildcard(require("styled-components/native"));
|
|
|
22
22
|
var _i18n = require("../i18n");
|
|
23
23
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
24
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
25
|
-
|
|
26
|
-
const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
25
|
+
const ChatWidget = exports.ChatWidget = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
27
26
|
apiUrl,
|
|
28
27
|
userToken: userTokenProp,
|
|
29
28
|
priceMode: priceModeProp,
|
|
@@ -40,7 +39,8 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
40
39
|
trackAnalyticsEvent,
|
|
41
40
|
fromFilterScreen,
|
|
42
41
|
translations,
|
|
43
|
-
locale = "en"
|
|
42
|
+
locale = "en",
|
|
43
|
+
classic_search_filters = {}
|
|
44
44
|
}, ref) => {
|
|
45
45
|
const {
|
|
46
46
|
t
|
|
@@ -65,6 +65,7 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
65
65
|
const [loadingMoreResults, setLoadingMoreResults] = (0, _react.useState)(new Set());
|
|
66
66
|
const scrollRef = (0, _react.useRef)(null);
|
|
67
67
|
const inputRef = (0, _react.useRef)(null);
|
|
68
|
+
const isFirstMessageRef = (0, _react.useRef)(true);
|
|
68
69
|
// Scroll management refs - using refs instead of state to avoid re-renders
|
|
69
70
|
const scrollYRef = (0, _react.useRef)(0);
|
|
70
71
|
const contentHeightRef = (0, _react.useRef)(0);
|
|
@@ -124,7 +125,7 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
124
125
|
const payload = item?.search_payload;
|
|
125
126
|
if (!payload) return;
|
|
126
127
|
const isLabgrown = typeof payload.lab_grown === "string" ? payload.lab_grown === "true" : typeof payload.lab_grown === "boolean" ? payload.lab_grown : false;
|
|
127
|
-
const deepLinkUrl = `${apiUrl}webapp/${isLabgrown ? "lab-grown-diamonds" : "natural-diamonds"}/search?priceMode=${priceMode}&productType=${isLabgrown ? _utils.ProductCategory.LAB_GROWN_DIAMOND : _utils.ProductCategory.DIAMOND}&fromNewFilterScreen=false&filterSplitStep=1§ionName=${searchPayload.pair === "pair" ? "Pairs" : "Single Stones"}&breadCrumbLabel=Stone%20Search&enterSecondFlow=false&saved_search=${stringifiedSearchPayload}`;
|
|
128
|
+
const deepLinkUrl = `${apiUrl}webapp/${isLabgrown ? "lab-grown-diamonds" : "natural-diamonds"}/search?priceMode=${priceMode}&productType=${isLabgrown ? _utils.ProductCategory.LAB_GROWN_DIAMOND : _utils.ProductCategory.DIAMOND}&fromNewFilterScreen=false&filterSplitStep=1§ionName=${searchPayload.pair === "pair" ? "Pairs" : "Single Stones"}&breadCrumbLabel=Stone%20Search&enterSecondFlow=false&saved_search=${encodeURIComponent(stringifiedSearchPayload)}`;
|
|
128
129
|
if (onViewAllPress) {
|
|
129
130
|
onViewAllPress(deepLinkUrl, payload);
|
|
130
131
|
} else if (_reactNative.Platform.OS === "web") {
|
|
@@ -247,7 +248,9 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
247
248
|
return;
|
|
248
249
|
}
|
|
249
250
|
const historyForApi = [...messages, userMessage];
|
|
250
|
-
const
|
|
251
|
+
const filtersForFirstMessage = isFirstMessageRef.current ? classic_search_filters : {};
|
|
252
|
+
isFirstMessageRef.current = false;
|
|
253
|
+
const updatedMessages = await (0, _api.sendUserMessage)(apiUrl, trimmed, apiParams, historyForApi, priceMode, filtersForFirstMessage);
|
|
251
254
|
const normalised = await (0, _api.normaliseMessages)(updatedMessages, priceMode);
|
|
252
255
|
const latestAssistant = normalised.find(m => m.role === "assistant");
|
|
253
256
|
if (latestAssistant?.text) {
|
|
@@ -327,7 +330,7 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
327
330
|
setLoadingMessageId(null);
|
|
328
331
|
inputRef.current?.focus();
|
|
329
332
|
}
|
|
330
|
-
}, [apiUrl, loading, messages, apiParams, hasAuth, priceMode, onViewAll, fromFilterScreen]);
|
|
333
|
+
}, [apiUrl, loading, messages, apiParams, hasAuth, priceMode, onViewAll, fromFilterScreen, classic_search_filters]);
|
|
331
334
|
const identifySegmentUser = async () => {
|
|
332
335
|
const user = await (0, _utils.getUserDetails)();
|
|
333
336
|
const userId = user?.id;
|
|
@@ -611,15 +614,23 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
611
614
|
clearInterval(interval);
|
|
612
615
|
};
|
|
613
616
|
}, [typingMessageId, typingFullText]);
|
|
614
|
-
return /*#__PURE__*/_react.default.createElement(Container, {
|
|
617
|
+
return /*#__PURE__*/_react.default.createElement(_ThemeProvider.default, null, /*#__PURE__*/_react.default.createElement(Container, {
|
|
615
618
|
theme: theme
|
|
616
619
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.KeyboardAvoidingView, {
|
|
617
620
|
style: {
|
|
618
621
|
flex: 1
|
|
619
622
|
},
|
|
620
623
|
behavior: _reactNative.Platform.OS === "ios" ? "padding" : "height",
|
|
621
|
-
keyboardVerticalOffset: 100
|
|
622
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
624
|
+
keyboardVerticalOffset: fromFilterScreen ? 150 : 100
|
|
625
|
+
}, messages?.[0]?.createdAt && /*#__PURE__*/_react.default.createElement(EmptyContainer, {
|
|
626
|
+
theme: theme
|
|
627
|
+
}, /*#__PURE__*/_react.default.createElement(ClearChatContainer, {
|
|
628
|
+
onPress: handleClearChat
|
|
629
|
+
}, /*#__PURE__*/_react.default.createElement(ClearChatText, null, t("chatbot.clearChat.text", "Clear Chat"))), /*#__PURE__*/_react.default.createElement(EmptyText, {
|
|
630
|
+
theme: theme
|
|
631
|
+
}, t("chat.chatStartedAt.text", "Chat Started at {{time}}", {
|
|
632
|
+
time: (0, _utils.formatToTime)(messages[0].createdAt, t)
|
|
633
|
+
}))), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
|
|
623
634
|
ref: scrollRef,
|
|
624
635
|
keyboardShouldPersistTaps: "handled",
|
|
625
636
|
onScroll: e => {
|
|
@@ -684,13 +695,7 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
684
695
|
color: theme["core-06"] || "#4F4E57"
|
|
685
696
|
}), /*#__PURE__*/_react.default.createElement(LoadingOlderText, {
|
|
686
697
|
theme: theme
|
|
687
|
-
}, t("chat.loadingOlder.text", "Loading older messages..."))),
|
|
688
|
-
theme: theme
|
|
689
|
-
}, /*#__PURE__*/_react.default.createElement(EmptyText, {
|
|
690
|
-
theme: theme
|
|
691
|
-
}, t("chat.chatStartedAt.text", "Chat Started at {{time}}", {
|
|
692
|
-
time: (0, _utils.formatToTime)(messages[0].createdAt, t)
|
|
693
|
-
}))), (() => {
|
|
698
|
+
}, t("chat.loadingOlder.text", "Loading older messages..."))), (() => {
|
|
694
699
|
const ordered = [...messages];
|
|
695
700
|
return ordered.map((item, index) => {
|
|
696
701
|
const isLatest = index === ordered.length - 1;
|
|
@@ -774,12 +779,8 @@ const ChatWidgetInner = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
|
774
779
|
inputRef: inputRef
|
|
775
780
|
}), /*#__PURE__*/_react.default.createElement(_BetaNotice.default, {
|
|
776
781
|
active: betaActive
|
|
777
|
-
}))));
|
|
782
|
+
})))));
|
|
778
783
|
});
|
|
779
|
-
ChatWidgetInner.displayName = "ChatWidgetInner";
|
|
780
|
-
const ChatWidget = exports.ChatWidget = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => /*#__PURE__*/_react.default.createElement(_ThemeProvider.default, null, /*#__PURE__*/_react.default.createElement(ChatWidgetInner, _extends({}, props, {
|
|
781
|
-
ref: ref
|
|
782
|
-
}))));
|
|
783
784
|
ChatWidget.displayName = "ChatWidget";
|
|
784
785
|
const Container = _native.default.View`
|
|
785
786
|
background-color: ${({
|
|
@@ -789,9 +790,10 @@ const Container = _native.default.View`
|
|
|
789
790
|
width: 100%;
|
|
790
791
|
`;
|
|
791
792
|
const EmptyContainer = _native.default.View`
|
|
792
|
-
padding:
|
|
793
|
+
padding: 8px;
|
|
794
|
+
flex-direction: row;
|
|
795
|
+
justify-content: space-between;
|
|
793
796
|
align-items: center;
|
|
794
|
-
justify-content: center;
|
|
795
797
|
background-color: ${({
|
|
796
798
|
theme
|
|
797
799
|
}) => theme["core-01"] || "#FFFFFF"};
|
|
@@ -838,6 +840,16 @@ const LoadingOlderText = _native.default.Text`
|
|
|
838
840
|
theme
|
|
839
841
|
}) => theme["core-06"] || "#4F4E57"};
|
|
840
842
|
`;
|
|
843
|
+
const ClearChatText = _native.default.Text`
|
|
844
|
+
color: ${({
|
|
845
|
+
theme
|
|
846
|
+
}) => theme["link-static"] || "#3378f6"};
|
|
847
|
+
text-align: right;
|
|
848
|
+
font-size: 13px;
|
|
849
|
+
font-weight: 500;
|
|
850
|
+
line-height: 136%;
|
|
851
|
+
`;
|
|
852
|
+
const ClearChatContainer = _native.default.TouchableOpacity``;
|
|
841
853
|
const styles = _reactNative.StyleSheet.create({
|
|
842
854
|
listContent: {
|
|
843
855
|
paddingVertical: 8,
|