@bikdotai/bik-component-library 0.0.721-beta.32 โ 0.0.721-beta.33
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/cjs/components/bik-layout/MockMenus.d.ts +0 -1
- package/dist/cjs/components/feature-announcements/FeatureAnnouncementProvider.js +1 -1
- package/dist/cjs/components/whats-new/WhatsNew.types.d.ts +1 -0
- package/dist/cjs/components/whats-new/WhatsNewProvider.js +1 -1
- package/dist/cjs/components/whats-new/useWhatsNew.d.ts +2 -1
- package/dist/cjs/components/whats-new/useWhatsNew.js +1 -1
- package/dist/esm/components/bik-layout/MockMenus.d.ts +0 -1
- package/dist/esm/components/feature-announcements/FeatureAnnouncementProvider.js +1 -1
- package/dist/esm/components/whats-new/WhatsNew.types.d.ts +1 -0
- package/dist/esm/components/whats-new/WhatsNewProvider.js +1 -1
- package/dist/esm/components/whats-new/useWhatsNew.d.ts +2 -1
- package/dist/esm/components/whats-new/useWhatsNew.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js"),t=require("../../node_modules/react/jsx-runtime.js"),o=require("react"),n=require("react-joyride");require("./constants/animations.js");var a=require("./constants/selectors.js"),r=require("./hooks/useFeatureAnnouncements.js"),s=require("./MajorUpdatePopup.js"),i=require("./MinorUpdatePopup.js"),l=require("./VideoModal.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=u(n);exports.default=u=>{let{children:c,fetchVisibleFeatures:p,getStoreFeatureProgress:f,fetchFeatureById:g,markFeatureAsViewedForStore:b,isFeatureApplicableToCurrentPage:m,module:h,router:x}=u;var y;const{majorUpdateFeatures:S,minorUpdateFeatures:C,legacyFeatures:k,isLoading:T,markFeatureAsViewed:w}=r.useFeatureAnnouncements({fetchVisibleFeatures:p,getStoreFeatureProgress:f,fetchFeatureById:g,markFeatureAsViewedForStore:b,isFeatureApplicableToCurrentPage:m,module:h,router:x});o.useEffect((()=>{k.length>0&&("manifest"===h?console.warn(`FeatureAnnouncements: Unexpected legacy features in Manifest module: ${k.length}`):console.info(`FeatureAnnouncements: ${k.length} legacy feature(s) available for WhatsNew panel (BIK)`))}),[k,h]);const[v,j]=o.useState(null),[E,F]=o.useState(null),[B,I]=o.useState(!1),[N,q]=o.useState([]),[P,M]=o.useState(!1),[R,A]=o.useState([]),[O,W]=o.useState(!1),[_,L]=o.useState(!1),[U,V]=o.useState([]),[$,z]=o.useState(!1),[H,J]=o.useState(!1),[Z,D]=o.useState(!1),[K,Q]=o.useState(""),[G,X]=o.useState(!1),[Y,ee]=o.useState(!1),[te,oe]=o.useState(!1),[ne,ae]=o.useState(0),[re,se]=o.useState(0),[ie,le]=o.useState(new Set);o.useEffect((()=>{const e="minor-spotlight-cutout-style";let t=document.getElementById(e);return t||(t=document.createElement("style"),t.id=e,document.head.appendChild(t)),t.textContent="\n\t\t\t.react-joyride__spotlight {\n\t\t\t\ttransition: box-shadow 0.3s ease-in-out !important;\n\t\t\t\twill-change: box-shadow, transform;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t\t.react-joyride__tooltip {\n\t\t\t\twill-change: transform, opacity;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t",()=>{const t=document.getElementById(e);t&&t.remove()}}),[]),o.useEffect((()=>{console.log("๐ joyrideSteps changed:",{length:N.length,runJoyride:B})}),[N,B]),o.useEffect((()=>{console.log("๐ฏ currentMinorFeature changed:",{id:(null==E?void 0:E.id)||"null"})}),[E]),o.useEffect((()=>{ae((e=>e+1)),se((e=>e+1)),ee(!1),oe(!1),le(new Set)}),[null==x?void 0:x.pathname]),o.useEffect((()=>{if(!(S.length>0)||v||T||O||G)0!==S.length||T||J(!0);else{J(!1),z(!1),I(!1),q([]),F(null),V([]);const e=()=>{document.querySelector('[data-testid="whats-new-button"]')?ue(S[0]):setTimeout(e,1e3)};e()}}),[S,v,T,O,G]),o.useEffect((()=>{var e;const t=null===(e=null==x?void 0:x.query)||void 0===e?void 0:e.featureId;if(console.log("๐งช Test mode effect triggered:",{featureIdFromQuery:t,isLoading:T,minorUpdateFeaturesCount:C.length}),!t||T||0===C.length)return;const o=C.find((e=>e.id===t));if(!o||!o.updates||!o.featureTag)return void console.warn("FeatureAnnouncements: Test mode feature missing required fields (updates/featureTag)");z(!0),L(!0);let n=0;const a=setInterval((()=>{if(n++,!o.featureTag)return;const e=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`;if(document.querySelector(e)){console.log("โจ Test mode: Element found, showing joyride");const e=[o];V(e),he(o,e),clearInterval(a)}else n>=25&&(console.warn(`FeatureAnnouncements: Timed out waiting for element with selector: ${e}`),L(!1),clearInterval(a))}),200);return()=>{clearInterval(a)}}),[C,null===(y=null==x?void 0:x.query)||void 0===y?void 0:y.featureId,T]),o.useEffect((()=>{var e;if(console.log("๐ Main minor effect check:",{minorUpdateFeaturesCount:C.length,isLoading:T,runJoyride:B,isProcessingMinorUpdate:_,currentMinorFeature:(null==E?void 0:E.id)||"null",minorFeaturesSkipped:$,showMinorUpdates:H,blockPopups:G}),C.length>0&&!T&&!B&&!_&&!E&&!$&&H&&!G){let e=null,t=null,o=null,n=!1;const a=()=>{if(n||_||E||$||!H)return;const a=C.filter((e=>{if(!e.featureTag||""===e.featureTag.trim())return!1;if(ie.has(e.id))return!1;const t=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`;return null!==document.querySelector(t)}));a.length>0&&(console.log("๐ Found available features:",a.length),V(a),he(a[0],a),e&&(e.disconnect(),e=null),t&&(window.removeEventListener("scroll",t),t=null),o&&(clearTimeout(o),o=null))};return e=new MutationObserver((e=>{let t=!1;for(const o of e){if("childList"===o.type&&o.addedNodes.length>0)for(let e=0;e<o.addedNodes.length;e++){const n=o.addedNodes[e];if(n.nodeType===Node.ELEMENT_NODE){const e=n;if(e.id||e.querySelector("[id]")){t=!0;break}}}if(t)break}B||n||_||E||$||!H||!t||(o&&clearTimeout(o),o=setTimeout((()=>{n||_||E||$||!H||a()}),200))})),t=()=>{B||n||_||E||$||!H||(o&&clearTimeout(o),requestAnimationFrame((()=>{o=setTimeout((()=>{n||_||E||$||!H||a()}),300)})))},e&&e.observe(document.body,{childList:!0,subtree:!0}),t&&window.addEventListener("scroll",t,{passive:!0}),a(),setTimeout((()=>{n||_||E||$||!H||a()}),100),setTimeout((()=>{n||_||E||$||!H||a()}),1e3),setTimeout((()=>{n||_||E||$||!H||a()}),500),()=>{n=!0,e&&e.disconnect(),t&&window.removeEventListener("scroll",t),o&&clearTimeout(o)}}if(0===C.length||T){(null===(e=null==x?void 0:x.query)||void 0===e?void 0:e.featureId)&&E?console.log("๐ซ Skipping joyride clear - test mode with active feature"):(console.log("๐๏ธ Clearing joyride - no features or loading"),I(!1),q([]),F(null),V([]),z(!1))}}),[C,T,B,_,E,$,H,w,G]);const ue=e=>{j(e);const o=S.findIndex((t=>t.id===e.id)),n=S.length,r=[{target:a.SELECTORS.WHATS_NEW_BUTTON,content:t.jsxRuntimeExports.jsx(s.default,{feature:e,currentIndex:o,totalFeatures:n,onSkip:()=>de(e),onExplore:()=>ce(e),onPrevious:()=>pe(e),onNext:()=>fe(e),setIsClosing:ee}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];A(r),M(!0)},de=o.useCallback((e=>{(e||v)&&(W(!0),S.forEach((e=>{w(e.id)})),M(!1),j(null),A([]),J(!0),setTimeout((()=>{W(!1)}),500))}),[v,S,w]),ce=o.useCallback((e=>{W(!0),w(e.id),e.productVideo&&(Q(e.productVideo),D(!0),X(!0)),M(!1),j(null),A([]);S.findIndex((t=>t.id===e.id))===S.length-1&&J(!0),setTimeout((()=>{W(!1)}),500)}),[S,w]),pe=o.useCallback((e=>{const o=e||v;if(!o)return;const n=S.findIndex((e=>e.id===o.id));if(n>0){const e=S[n-1];j(e);const o=n-1,a=S.length,r=[{target:'[data-testid="whats-new-button"]',content:t.jsxRuntimeExports.jsx(s.default,{feature:e,currentIndex:o,totalFeatures:a,onSkip:()=>de(e),onExplore:()=>ce(e),onPrevious:()=>pe(e),onNext:()=>fe(e),setIsClosing:ee}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];A(r)}}),[v,S]),fe=o.useCallback((e=>{const o=e||v;if(!o)return;const n=S.findIndex((e=>e.id===o.id));if(n<S.length-1){const e=S[n+1];j(e);const o=n+1,a=S.length,r=[{target:'[data-testid="whats-new-button"]',content:t.jsxRuntimeExports.jsx(s.default,{feature:e,currentIndex:o,totalFeatures:a,onSkip:()=>de(e),onExplore:()=>ce(e),onPrevious:()=>pe(e),onNext:()=>fe(e),setIsClosing:ee}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];A(r)}else W(!0),w(o.id),M(!1),j(null),A([]),J(!0),setTimeout((()=>{W(!1)}),500)}),[v,S,w]),ge=()=>{if(S.length>0&&!v){document.querySelector('[data-testid="whats-new-button"]')&&ue(S[0])}};o.useEffect((()=>(window.showMajorUpdatePopup=ge,()=>{delete window.showMajorUpdatePopup})),[S,v]);const be=o.useCallback((e=>{const{action:t}=e;t===n.ACTIONS.CLOSE&&(v&&(W(!0),S.forEach((e=>{w(e.id)})),J(!0),setTimeout((()=>{W(!1)}),500)),M(!1),j(null),A([]))}),[v,S,w]),me=o.useCallback((e=>{const{action:t,type:o,status:a,lifecycle:r,index:s}=e;if(console.log("๐ Minor Callback:",{action:t,type:o,status:a,lifecycle:r,index:s,hasSteps:N.length,runJoyride:B}),t===n.ACTIONS.CLOSE){if(console.log("โ CLOSE ACTION - Clearing joyride"),E){L(!0),w(E.id);U.findIndex((e=>e.id===E.id))===U.length-1&&z(!0),setTimeout((()=>{L(!1)}),500)}I(!1),F(null),q([])}}),[E,U,w]),he=(o,n)=>e.__awaiter(void 0,void 0,void 0,(function*(){if(F(o),!o.featureTag)return void console.warn("FeatureAnnouncements: Cannot show minor joyride without featureTag");const e=n||U,a=e.findIndex((e=>e.id===o.id)),r=e.length,s=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`,l=document.querySelector(s);if(l)try{const{scrollToElementSmooth:e}=yield Promise.resolve().then((function(){return require("./utils/elementHelpers.js")}));yield e(l,120)}catch(e){console.warn("Scroll to element failed:",e)}const u=[{target:s,content:t.jsxRuntimeExports.jsx(i.default,{feature:o,currentIndex:a,totalFeatures:r,onSkip:()=>xe(o),onExplore:()=>ye(o),onPrevious:()=>Se(o),onNext:()=>Ce(o),setIsClosing:oe}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:o,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];console.log("โ
Setting joyride:",{currentIndex:a,totalFeatures:r,hasFeatures:e.length,target:s}),q(u),I(!0)})),xe=o.useCallback((e=>{const t=e||E;if(t){L(!0),w(t.id),le((e=>new Set(e).add(t.id))),I(!1),F(null),q([]);const e=U.find((e=>e.id!==t.id&&!ie.has(e.id)));setTimeout((()=>{L(!1),e?he(e,U):z(!0)}),500)}}),[E,U,w,ie]),ye=o.useCallback((e=>{L(!0),w(e.id),le((t=>new Set(t).add(e.id))),e.productVideo&&(Q(e.productVideo),D(!0),X(!0)),I(!1),F(null),q([]);const t=U.find((t=>t.id!==e.id&&!ie.has(t.id)));setTimeout((()=>{L(!1),t&&!e.productVideo?he(t,U):t||z(!0)}),500)}),[U,w,ie]),Se=o.useCallback((o=>e.__awaiter(void 0,void 0,void 0,(function*(){const e=o||E;if(!e)return;const n=U.findIndex((t=>t.id===e.id));if(n>0){const e=U[n-1];if(F(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Previous feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,a=document.querySelector(o);if(a)try{const{scrollToElementSmooth:e}=yield Promise.resolve().then((function(){return require("./utils/elementHelpers.js")}));yield e(a,120)}catch(e){console.warn("Scroll to previous element failed:",e)}const r=n-1,s=U.length,l=[{target:o,content:t.jsxRuntimeExports.jsx(i.default,{feature:e,currentIndex:r,totalFeatures:s,onSkip:()=>xe(e),onExplore:()=>ye(e),onPrevious:()=>Se(e),onNext:()=>Ce(e),setIsClosing:oe}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];q(l)}}))),[E,U]),Ce=o.useCallback((o=>e.__awaiter(void 0,void 0,void 0,(function*(){const e=o||E;if(!e)return;const n=U.findIndex((t=>t.id===e.id));if(n<U.length-1){const e=U[n+1];if(F(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Next feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,a=document.querySelector(o);if(a)try{const{scrollToElementSmooth:e}=yield Promise.resolve().then((function(){return require("./utils/elementHelpers.js")}));yield e(a,120)}catch(e){console.warn("Scroll to next element failed:",e)}const r=n+1,s=U.length,l=[{target:o,content:t.jsxRuntimeExports.jsx(i.default,{feature:e,currentIndex:r,totalFeatures:s,onSkip:()=>xe(e),onExplore:()=>ye(e),onPrevious:()=>Se(e),onNext:()=>Ce(e),setIsClosing:oe}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];q(l)}else L(!0),z(!0),w(e.id),I(!1),F(null),q([]),setTimeout((()=>{L(!1)}),500)}))),[E,U,w]);return t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[c,R.length>0&&t.jsxRuntimeExports.jsx(d.default,{steps:R,run:P,continuous:!1,showProgress:!1,showSkipButton:!1,callback:be,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!0,spotlightClicks:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:Y?"transparent":"#212121"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",border:"none",boxShadow:"none"},tooltip:{borderRadius:"16px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`major-joyride-${ne}`),N.length>0&&t.jsxRuntimeExports.jsx(d.default,{steps:N,run:B,continuous:!1,showProgress:!1,showSkipButton:!1,callback:me,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!1,scrollToFirstStep:!0,scrollOffset:120,disableScrolling:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:te?"transparent":"#ffffff"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",borderRadius:"8px",boxShadow:te?"none":"0 0 0 9999px rgba(0, 0, 0, 0.4), 0 0 0 3px rgba(255, 255, 255, 0.8), 0 0 20px 8px rgba(255, 255, 255, 0.4)"},tooltip:{borderRadius:"4px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonSkip:{display:"none"},buttonClose:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`minor-joyride-${re}`),t.jsxRuntimeExports.jsx(l.VideoModal,{isOpen:Z,videoUrl:K,onClose:()=>{D(!1),Q(""),X(!1);const e=U.find((e=>!ie.has(e.id)));e?setTimeout((()=>{he(e,U)}),300):z(!0)}})]})};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js"),t=require("../../node_modules/react/jsx-runtime.js"),o=require("react"),n=require("react-joyride");require("../whats-new/WhatsNew.styles.js"),require("../../constants/Theme.js"),require("../tooltips/Tooltip.js"),require("date-fns"),require("../button/Button.js");var r=require("./VideoModal.js");require("../input/Input.js"),require("react-dom"),require("../TypographyStyle.js"),require("../side-modal/SideModal.style.js");var a=require("../whats-new/WhatsNewProvider.js");require("./constants/animations.js");var s=require("./constants/selectors.js"),i=require("./hooks/useFeatureAnnouncements.js"),l=require("./MajorUpdatePopup.js"),d=require("./MinorUpdatePopup.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(n);exports.default=u=>{let{children:p,fetchVisibleFeatures:f,getStoreFeatureProgress:g,fetchFeatureById:b,markFeatureAsViewedForStore:m,isFeatureApplicableToCurrentPage:h,module:y,router:x}=u;var S;const{majorUpdateFeatures:C,minorUpdateFeatures:T,legacyFeatures:w,isLoading:k,markFeatureAsViewed:v}=i.useFeatureAnnouncements({fetchVisibleFeatures:f,getStoreFeatureProgress:g,fetchFeatureById:b,markFeatureAsViewedForStore:m,isFeatureApplicableToCurrentPage:h,module:y,router:x}),[j,E]=o.useState(null),[F,B]=o.useState(null),[I,q]=o.useState(!1),[N,P]=o.useState([]),[M,W]=o.useState(!1),[A,O]=o.useState([]),[R,_]=o.useState(!1),[V,U]=o.useState(!1),[L,$]=o.useState([]),[z,H]=o.useState(!1),[J,Z]=o.useState(!1),[D,Q]=o.useState(!1),[G,K]=o.useState(""),[X,Y]=o.useState(!1),[ee,te]=o.useState(!1),[oe,ne]=o.useState(!1),[re,ae]=o.useState(0),[se,ie]=o.useState(0),[le,de]=o.useState(new Set),ue=o.useMemo((()=>w.map((e=>({id:e.id,title:e.title,body:e.body,content:e.content,image:e.image,buttonText:e.buttonText,redirectUrl:e.redirectUrl,productVideo:e.productVideo,docId:e.id,createdAt:e.createdAt,module:e.module,visibility:e.visibility})))),[w]),ce=o.useCallback((t=>e.__awaiter(void 0,void 0,void 0,(function*(){yield v(t)}))),[v]);o.useEffect((()=>{const e="minor-spotlight-cutout-style";let t=document.getElementById(e);return t||(t=document.createElement("style"),t.id=e,document.head.appendChild(t)),t.textContent="\n\t\t\t.react-joyride__spotlight {\n\t\t\t\ttransition: box-shadow 0.3s ease-in-out !important;\n\t\t\t\twill-change: box-shadow, transform;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t\t.react-joyride__tooltip {\n\t\t\t\twill-change: transform, opacity;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t",()=>{const t=document.getElementById(e);t&&t.remove()}}),[]),o.useEffect((()=>{console.log("๐ joyrideSteps changed:",{length:N.length,runJoyride:I})}),[N,I]),o.useEffect((()=>{console.log("๐ฏ currentMinorFeature changed:",{id:(null==F?void 0:F.id)||"null"})}),[F]),o.useEffect((()=>{ae((e=>e+1)),ie((e=>e+1)),te(!1),ne(!1),de(new Set)}),[null==x?void 0:x.pathname]),o.useEffect((()=>{if(!(C.length>0)||j||k||R||X)0!==C.length||k||Z(!0);else{Z(!1),H(!1),q(!1),P([]),B(null),$([]);const e=()=>{document.querySelector('[data-testid="whats-new-button"]')?pe(C[0]):setTimeout(e,1e3)};e()}}),[C,j,k,R,X]),o.useEffect((()=>{var e;const t=null===(e=null==x?void 0:x.query)||void 0===e?void 0:e.featureId;if(console.log("๐งช Test mode effect triggered:",{featureIdFromQuery:t,isLoading:k,minorUpdateFeaturesCount:T.length}),!t||k||0===T.length)return;const o=T.find((e=>e.id===t));if(!o||!o.updates||!o.featureTag)return void console.warn("FeatureAnnouncements: Test mode feature missing required fields (updates/featureTag)");H(!0),U(!0);let n=0;const r=setInterval((()=>{if(n++,!o.featureTag)return;const e=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`;if(document.querySelector(e)){console.log("โจ Test mode: Element found, showing joyride");const e=[o];$(e),Se(o,e),clearInterval(r)}else n>=25&&(console.warn(`FeatureAnnouncements: Timed out waiting for element with selector: ${e}`),U(!1),clearInterval(r))}),200);return()=>{clearInterval(r)}}),[T,null===(S=null==x?void 0:x.query)||void 0===S?void 0:S.featureId,k]),o.useEffect((()=>{var e;if(console.log("๐ Main minor effect check:",{minorUpdateFeaturesCount:T.length,isLoading:k,runJoyride:I,isProcessingMinorUpdate:V,currentMinorFeature:(null==F?void 0:F.id)||"null",minorFeaturesSkipped:z,showMinorUpdates:J,blockPopups:X}),T.length>0&&!k&&!I&&!V&&!F&&!z&&J&&!X){let e=null,t=null,o=null,n=!1;const r=()=>{if(n||V||F||z||!J)return;const r=T.filter((e=>{if(!e.featureTag||""===e.featureTag.trim())return!1;if(le.has(e.id))return!1;const t=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`;return null!==document.querySelector(t)}));r.length>0&&(console.log("๐ Found available features:",r.length),$(r),Se(r[0],r),e&&(e.disconnect(),e=null),t&&(window.removeEventListener("scroll",t),t=null),o&&(clearTimeout(o),o=null))};return e=new MutationObserver((e=>{let t=!1;for(const o of e){if("childList"===o.type&&o.addedNodes.length>0)for(let e=0;e<o.addedNodes.length;e++){const n=o.addedNodes[e];if(n.nodeType===Node.ELEMENT_NODE){const e=n;if(e.id||e.querySelector("[id]")){t=!0;break}}}if(t)break}I||n||V||F||z||!J||!t||(o&&clearTimeout(o),o=setTimeout((()=>{n||V||F||z||!J||r()}),200))})),t=()=>{I||n||V||F||z||!J||(o&&clearTimeout(o),requestAnimationFrame((()=>{o=setTimeout((()=>{n||V||F||z||!J||r()}),300)})))},e&&e.observe(document.body,{childList:!0,subtree:!0}),t&&window.addEventListener("scroll",t,{passive:!0}),r(),setTimeout((()=>{n||V||F||z||!J||r()}),100),setTimeout((()=>{n||V||F||z||!J||r()}),1e3),setTimeout((()=>{n||V||F||z||!J||r()}),500),()=>{n=!0,e&&e.disconnect(),t&&window.removeEventListener("scroll",t),o&&clearTimeout(o)}}if(0===T.length||k){(null===(e=null==x?void 0:x.query)||void 0===e?void 0:e.featureId)&&F?console.log("๐ซ Skipping joyride clear - test mode with active feature"):(console.log("๐๏ธ Clearing joyride - no features or loading"),q(!1),P([]),B(null),$([]),H(!1))}}),[T,k,I,V,F,z,J,v,X]);const pe=e=>{E(e);const o=C.findIndex((t=>t.id===e.id)),n=C.length,r=[{target:s.SELECTORS.WHATS_NEW_BUTTON,content:t.jsxRuntimeExports.jsx(l.default,{feature:e,currentIndex:o,totalFeatures:n,onSkip:()=>fe(e),onExplore:()=>ge(e),onPrevious:()=>be(e),onNext:()=>me(e),setIsClosing:te}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];O(r),W(!0)},fe=o.useCallback((e=>{(e||j)&&(_(!0),C.forEach((e=>{v(e.id)})),W(!1),E(null),O([]),Z(!0),setTimeout((()=>{_(!1)}),500))}),[j,C,v]),ge=o.useCallback((e=>{_(!0),v(e.id),e.productVideo&&(K(e.productVideo),Q(!0),Y(!0)),W(!1),E(null),O([]);C.findIndex((t=>t.id===e.id))===C.length-1&&Z(!0),setTimeout((()=>{_(!1)}),500)}),[C,v]),be=o.useCallback((e=>{const o=e||j;if(!o)return;const n=C.findIndex((e=>e.id===o.id));if(n>0){const e=C[n-1];E(e);const o=n-1,r=C.length,a=[{target:'[data-testid="whats-new-button"]',content:t.jsxRuntimeExports.jsx(l.default,{feature:e,currentIndex:o,totalFeatures:r,onSkip:()=>fe(e),onExplore:()=>ge(e),onPrevious:()=>be(e),onNext:()=>me(e),setIsClosing:te}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];O(a)}}),[j,C]),me=o.useCallback((e=>{const o=e||j;if(!o)return;const n=C.findIndex((e=>e.id===o.id));if(n<C.length-1){const e=C[n+1];E(e);const o=n+1,r=C.length,a=[{target:'[data-testid="whats-new-button"]',content:t.jsxRuntimeExports.jsx(l.default,{feature:e,currentIndex:o,totalFeatures:r,onSkip:()=>fe(e),onExplore:()=>ge(e),onPrevious:()=>be(e),onNext:()=>me(e),setIsClosing:te}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];O(a)}else _(!0),v(o.id),W(!1),E(null),O([]),Z(!0),setTimeout((()=>{_(!1)}),500)}),[j,C,v]),he=()=>{if(C.length>0&&!j){document.querySelector('[data-testid="whats-new-button"]')&&pe(C[0])}};o.useEffect((()=>(window.showMajorUpdatePopup=he,()=>{delete window.showMajorUpdatePopup})),[C,j]);const ye=o.useCallback((e=>{const{action:t}=e;t===n.ACTIONS.CLOSE&&(j&&(_(!0),C.forEach((e=>{v(e.id)})),Z(!0),setTimeout((()=>{_(!1)}),500)),W(!1),E(null),O([]))}),[j,C,v]),xe=o.useCallback((e=>{const{action:t,type:o,status:r,lifecycle:a,index:s}=e;if(console.log("๐ Minor Callback:",{action:t,type:o,status:r,lifecycle:a,index:s,hasSteps:N.length,runJoyride:I}),t===n.ACTIONS.CLOSE){if(console.log("โ CLOSE ACTION - Clearing joyride"),F){U(!0),v(F.id);L.findIndex((e=>e.id===F.id))===L.length-1&&H(!0),setTimeout((()=>{U(!1)}),500)}q(!1),B(null),P([])}}),[F,L,v]),Se=(o,n)=>e.__awaiter(void 0,void 0,void 0,(function*(){if(B(o),!o.featureTag)return void console.warn("FeatureAnnouncements: Cannot show minor joyride without featureTag");const e=n||L,r=e.findIndex((e=>e.id===o.id)),a=e.length,s=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`,i=document.querySelector(s);if(i)try{const{scrollToElementSmooth:e}=yield Promise.resolve().then((function(){return require("./utils/elementHelpers.js")}));yield e(i,120)}catch(e){console.warn("Scroll to element failed:",e)}const l=[{target:s,content:t.jsxRuntimeExports.jsx(d.default,{feature:o,currentIndex:r,totalFeatures:a,onSkip:()=>Ce(o),onExplore:()=>Te(o),onPrevious:()=>we(o),onNext:()=>ke(o),setIsClosing:ne}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:o,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];console.log("โ
Setting joyride:",{currentIndex:r,totalFeatures:a,hasFeatures:e.length,target:s}),P(l),q(!0)})),Ce=o.useCallback((e=>{const t=e||F;if(t){U(!0),v(t.id),de((e=>new Set(e).add(t.id))),q(!1),B(null),P([]);const e=L.find((e=>e.id!==t.id&&!le.has(e.id)));setTimeout((()=>{U(!1),e?Se(e,L):H(!0)}),500)}}),[F,L,v,le]),Te=o.useCallback((e=>{U(!0),v(e.id),de((t=>new Set(t).add(e.id))),e.productVideo&&(K(e.productVideo),Q(!0),Y(!0)),q(!1),B(null),P([]);const t=L.find((t=>t.id!==e.id&&!le.has(t.id)));setTimeout((()=>{U(!1),t&&!e.productVideo?Se(t,L):t||H(!0)}),500)}),[L,v,le]),we=o.useCallback((o=>e.__awaiter(void 0,void 0,void 0,(function*(){const e=o||F;if(!e)return;const n=L.findIndex((t=>t.id===e.id));if(n>0){const e=L[n-1];if(B(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Previous feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,r=document.querySelector(o);if(r)try{const{scrollToElementSmooth:e}=yield Promise.resolve().then((function(){return require("./utils/elementHelpers.js")}));yield e(r,120)}catch(e){console.warn("Scroll to previous element failed:",e)}const a=n-1,s=L.length,i=[{target:o,content:t.jsxRuntimeExports.jsx(d.default,{feature:e,currentIndex:a,totalFeatures:s,onSkip:()=>Ce(e),onExplore:()=>Te(e),onPrevious:()=>we(e),onNext:()=>ke(e),setIsClosing:ne}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];P(i)}}))),[F,L]),ke=o.useCallback((o=>e.__awaiter(void 0,void 0,void 0,(function*(){const e=o||F;if(!e)return;const n=L.findIndex((t=>t.id===e.id));if(n<L.length-1){const e=L[n+1];if(B(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Next feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,r=document.querySelector(o);if(r)try{const{scrollToElementSmooth:e}=yield Promise.resolve().then((function(){return require("./utils/elementHelpers.js")}));yield e(r,120)}catch(e){console.warn("Scroll to next element failed:",e)}const a=n+1,s=L.length,i=[{target:o,content:t.jsxRuntimeExports.jsx(d.default,{feature:e,currentIndex:a,totalFeatures:s,onSkip:()=>Ce(e),onExplore:()=>Te(e),onPrevious:()=>we(e),onNext:()=>ke(e),setIsClosing:ne}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];P(i)}else U(!0),H(!0),v(e.id),q(!1),B(null),P([]),setTimeout((()=>{U(!1)}),500)}))),[F,L,v]);return t.jsxRuntimeExports.jsxs(a.WhatsNewProvider,Object.assign({fetchWhatsNewContent:f,markContentAsViewed:ce,module:y,legacyFeatures:ue},{children:[p,A.length>0&&t.jsxRuntimeExports.jsx(c.default,{steps:A,run:M,continuous:!1,showProgress:!1,showSkipButton:!1,callback:ye,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!0,spotlightClicks:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:ee?"transparent":"#212121"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",border:"none",boxShadow:"none"},tooltip:{borderRadius:"16px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`major-joyride-${re}`),N.length>0&&t.jsxRuntimeExports.jsx(c.default,{steps:N,run:I,continuous:!1,showProgress:!1,showSkipButton:!1,callback:xe,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!1,scrollToFirstStep:!0,scrollOffset:120,disableScrolling:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:oe?"transparent":"#ffffff"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",borderRadius:"8px",boxShadow:oe?"none":"0 0 0 9999px rgba(0, 0, 0, 0.4), 0 0 0 3px rgba(255, 255, 255, 0.8), 0 0 20px 8px rgba(255, 255, 255, 0.4)"},tooltip:{borderRadius:"4px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonSkip:{display:"none"},buttonClose:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`minor-joyride-${se}`),t.jsxRuntimeExports.jsx(r.VideoModal,{isOpen:D,videoUrl:G,onClose:()=>{Q(!1),K(""),Y(!1);const e=L.find((e=>!le.has(e.id)));e?setTimeout((()=>{Se(e,L)}),300):H(!0)}})]}))};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/react/jsx-runtime.js"),t=require("react"),r=require("./useWhatsNew.js");const s=t.createContext(null);exports.WhatsNewProvider=t=>{let{children:n,fetchWhatsNewContent:o,markContentAsViewed:u,module:a}=t;const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../node_modules/react/jsx-runtime.js"),t=require("react"),r=require("./useWhatsNew.js");const s=t.createContext(null);exports.WhatsNewProvider=t=>{let{children:n,fetchWhatsNewContent:o,markContentAsViewed:u,module:a,legacyFeatures:i=[]}=t;const c=r.useWhatsNew({fetchWhatsNewContent:o,markContentAsViewed:u,module:a,legacyFeatures:i});return e.jsxRuntimeExports.jsx(s.Provider,Object.assign({value:c},{children:n}))},exports.useWhatsNewContext=()=>{const e=t.useContext(s);if(!e)throw new Error("useWhatsNewContext must be used within a WhatsNewProvider");return e};
|
|
@@ -4,6 +4,7 @@ interface UseWhatsNewProps {
|
|
|
4
4
|
markContentAsViewed?: (contentId: string) => Promise<void>;
|
|
5
5
|
module?: string;
|
|
6
6
|
newContentThresholdDays?: number;
|
|
7
|
+
legacyFeatures?: WhatsNewContent[];
|
|
7
8
|
}
|
|
8
|
-
export declare const useWhatsNew: ({ fetchWhatsNewContent, markContentAsViewed, module, newContentThresholdDays, }: UseWhatsNewProps) => WhatsNewHookReturn;
|
|
9
|
+
export declare const useWhatsNew: ({ fetchWhatsNewContent, markContentAsViewed, module, newContentThresholdDays, legacyFeatures, }: UseWhatsNewProps) => WhatsNewHookReturn;
|
|
9
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js"),t=require("date-fns"),r=require("react");exports.useWhatsNew=a=>{let{fetchWhatsNewContent:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../../_virtual/_tslib.js"),t=require("date-fns"),r=require("react");exports.useWhatsNew=a=>{let{fetchWhatsNewContent:o,markContentAsViewed:n,module:c,newContentThresholdDays:i=7,legacyFeatures:d=[]}=a;const[s,u]=r.useState([]),[l,f]=r.useState(!0),v=r.useRef(o),w=r.useRef(n);r.useEffect((()=>{v.current=o}),[o]),r.useEffect((()=>{w.current=n}),[n]);const A=r.useCallback((()=>e.__awaiter(void 0,void 0,void 0,(function*(){f(!0);try{const[e,t]=yield v.current();if(e)console.error("Failed to fetch what's new content:",e),u([]);else if(t){let e=t;c&&(e=t.filter((e=>Array.isArray(e.module)?e.module.includes(c):e.module===c))),e.sort(((e,t)=>{var r,a;const o=(null===(r=e.createdAt)||void 0===r?void 0:r.toDate)?e.createdAt.toDate():new Date(e.createdAt);return((null===(a=t.createdAt)||void 0===a?void 0:a.toDate)?t.createdAt.toDate():new Date(t.createdAt)).getTime()-o.getTime()}));const r=[...e,...d];r.sort(((e,t)=>{var r,a;const o=(null===(r=e.createdAt)||void 0===r?void 0:r.toDate)?e.createdAt.toDate():new Date(e.createdAt);return((null===(a=t.createdAt)||void 0===a?void 0:a.toDate)?t.createdAt.toDate():new Date(t.createdAt)).getTime()-o.getTime()})),u(r)}else u([...d])}catch(e){console.error("Failed to fetch what's new content:",e),u([...d])}finally{f(!1)}}))),[c,d]);r.useEffect((()=>{A()}),[A]);const D=r.useCallback((e=>{if(!e.createdAt)return!1;const r=e.createdAt.toDate?e.createdAt.toDate():new Date(e.createdAt);return t.differenceInBusinessDays(new Date,r)<i}),[i]),h=s.reduce(((e,t)=>D(t)?e+1:e),0);return{whatsNewContent:s,isLoading:l,newContentCount:h,markAsViewed:r.useCallback((t=>e.__awaiter(void 0,void 0,void 0,(function*(){if(w.current)try{yield w.current(t)}catch(e){console.warn("Failed to mark content as viewed:",e)}}))),[]),refreshContent:r.useCallback((()=>e.__awaiter(void 0,void 0,void 0,(function*(){yield A()}))),[A])}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as e}from"../../_virtual/_tslib.js";import{j as t}from"../../node_modules/react/jsx-runtime.js";import{useEffect as o,useState as n,useCallback as r}from"react";import a,{ACTIONS as i}from"react-joyride";import"./constants/animations.js";import{SELECTORS as s}from"./constants/selectors.js";import{useFeatureAnnouncements as l}from"./hooks/useFeatureAnnouncements.js";import d from"./MajorUpdatePopup.js";import u from"./MinorUpdatePopup.js";import{VideoModal as c}from"./VideoModal.js";const p=p=>{let{children:f,fetchVisibleFeatures:g,getStoreFeatureProgress:m,fetchFeatureById:h,markFeatureAsViewedForStore:b,isFeatureApplicableToCurrentPage:y,module:x,router:T}=p;var S;const{majorUpdateFeatures:C,minorUpdateFeatures:w,legacyFeatures:k,isLoading:v,markFeatureAsViewed:F}=l({fetchVisibleFeatures:g,getStoreFeatureProgress:m,fetchFeatureById:h,markFeatureAsViewedForStore:b,isFeatureApplicableToCurrentPage:y,module:x,router:T});o((()=>{k.length>0&&("manifest"===x?console.warn(`FeatureAnnouncements: Unexpected legacy features in Manifest module: ${k.length}`):console.info(`FeatureAnnouncements: ${k.length} legacy feature(s) available for WhatsNew panel (BIK)`))}),[k,x]);const[j,B]=n(null),[I,E]=n(null),[N,M]=n(!1),[P,W]=n([]),[A,O]=n(!1),[q,U]=n([]),[L,V]=n(!1),[$,_]=n(!1),[R,z]=n([]),[H,J]=n(!1),[Z,D]=n(!1),[K,Q]=n(!1),[G,X]=n(""),[Y,ee]=n(!1),[te,oe]=n(!1),[ne,re]=n(!1),[ae,ie]=n(0),[se,le]=n(0),[de,ue]=n(new Set);o((()=>{const e="minor-spotlight-cutout-style";let t=document.getElementById(e);return t||(t=document.createElement("style"),t.id=e,document.head.appendChild(t)),t.textContent="\n\t\t\t.react-joyride__spotlight {\n\t\t\t\ttransition: box-shadow 0.3s ease-in-out !important;\n\t\t\t\twill-change: box-shadow, transform;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t\t.react-joyride__tooltip {\n\t\t\t\twill-change: transform, opacity;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t",()=>{const t=document.getElementById(e);t&&t.remove()}}),[]),o((()=>{console.log("๐ joyrideSteps changed:",{length:P.length,runJoyride:N})}),[P,N]),o((()=>{console.log("๐ฏ currentMinorFeature changed:",{id:(null==I?void 0:I.id)||"null"})}),[I]),o((()=>{ie((e=>e+1)),le((e=>e+1)),oe(!1),re(!1),ue(new Set)}),[null==T?void 0:T.pathname]),o((()=>{if(!(C.length>0)||j||v||L||Y)0!==C.length||v||D(!0);else{D(!1),J(!1),M(!1),W([]),E(null),z([]);const e=()=>{document.querySelector('[data-testid="whats-new-button"]')?ce(C[0]):setTimeout(e,1e3)};e()}}),[C,j,v,L,Y]),o((()=>{var e;const t=null===(e=null==T?void 0:T.query)||void 0===e?void 0:e.featureId;if(console.log("๐งช Test mode effect triggered:",{featureIdFromQuery:t,isLoading:v,minorUpdateFeaturesCount:w.length}),!t||v||0===w.length)return;const o=w.find((e=>e.id===t));if(!o||!o.updates||!o.featureTag)return void console.warn("FeatureAnnouncements: Test mode feature missing required fields (updates/featureTag)");J(!0),_(!0);let n=0;const r=setInterval((()=>{if(n++,!o.featureTag)return;const e=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`;if(document.querySelector(e)){console.log("โจ Test mode: Element found, showing joyride");const e=[o];z(e),xe(o,e),clearInterval(r)}else n>=25&&(console.warn(`FeatureAnnouncements: Timed out waiting for element with selector: ${e}`),_(!1),clearInterval(r))}),200);return()=>{clearInterval(r)}}),[w,null===(S=null==T?void 0:T.query)||void 0===S?void 0:S.featureId,v]),o((()=>{var e;if(console.log("๐ Main minor effect check:",{minorUpdateFeaturesCount:w.length,isLoading:v,runJoyride:N,isProcessingMinorUpdate:$,currentMinorFeature:(null==I?void 0:I.id)||"null",minorFeaturesSkipped:H,showMinorUpdates:Z,blockPopups:Y}),w.length>0&&!v&&!N&&!$&&!I&&!H&&Z&&!Y){let e=null,t=null,o=null,n=!1;const r=()=>{if(n||$||I||H||!Z)return;const r=w.filter((e=>{if(!e.featureTag||""===e.featureTag.trim())return!1;if(de.has(e.id))return!1;const t=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`;return null!==document.querySelector(t)}));r.length>0&&(console.log("๐ Found available features:",r.length),z(r),xe(r[0],r),e&&(e.disconnect(),e=null),t&&(window.removeEventListener("scroll",t),t=null),o&&(clearTimeout(o),o=null))};return e=new MutationObserver((e=>{let t=!1;for(const o of e){if("childList"===o.type&&o.addedNodes.length>0)for(let e=0;e<o.addedNodes.length;e++){const n=o.addedNodes[e];if(n.nodeType===Node.ELEMENT_NODE){const e=n;if(e.id||e.querySelector("[id]")){t=!0;break}}}if(t)break}N||n||$||I||H||!Z||!t||(o&&clearTimeout(o),o=setTimeout((()=>{n||$||I||H||!Z||r()}),200))})),t=()=>{N||n||$||I||H||!Z||(o&&clearTimeout(o),requestAnimationFrame((()=>{o=setTimeout((()=>{n||$||I||H||!Z||r()}),300)})))},e&&e.observe(document.body,{childList:!0,subtree:!0}),t&&window.addEventListener("scroll",t,{passive:!0}),r(),setTimeout((()=>{n||$||I||H||!Z||r()}),100),setTimeout((()=>{n||$||I||H||!Z||r()}),1e3),setTimeout((()=>{n||$||I||H||!Z||r()}),500),()=>{n=!0,e&&e.disconnect(),t&&window.removeEventListener("scroll",t),o&&clearTimeout(o)}}if(0===w.length||v){(null===(e=null==T?void 0:T.query)||void 0===e?void 0:e.featureId)&&I?console.log("๐ซ Skipping joyride clear - test mode with active feature"):(console.log("๐๏ธ Clearing joyride - no features or loading"),M(!1),W([]),E(null),z([]),J(!1))}}),[w,v,N,$,I,H,Z,F,Y]);const ce=e=>{B(e);const o=C.findIndex((t=>t.id===e.id)),n=C.length,r=[{target:s.WHATS_NEW_BUTTON,content:t.jsx(d,{feature:e,currentIndex:o,totalFeatures:n,onSkip:()=>pe(e),onExplore:()=>fe(e),onPrevious:()=>ge(e),onNext:()=>me(e),setIsClosing:oe}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];U(r),O(!0)},pe=r((e=>{(e||j)&&(V(!0),C.forEach((e=>{F(e.id)})),O(!1),B(null),U([]),D(!0),setTimeout((()=>{V(!1)}),500))}),[j,C,F]),fe=r((e=>{V(!0),F(e.id),e.productVideo&&(X(e.productVideo),Q(!0),ee(!0)),O(!1),B(null),U([]);C.findIndex((t=>t.id===e.id))===C.length-1&&D(!0),setTimeout((()=>{V(!1)}),500)}),[C,F]),ge=r((e=>{const o=e||j;if(!o)return;const n=C.findIndex((e=>e.id===o.id));if(n>0){const e=C[n-1];B(e);const o=n-1,r=C.length,a=[{target:'[data-testid="whats-new-button"]',content:t.jsx(d,{feature:e,currentIndex:o,totalFeatures:r,onSkip:()=>pe(e),onExplore:()=>fe(e),onPrevious:()=>ge(e),onNext:()=>me(e),setIsClosing:oe}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];U(a)}}),[j,C]),me=r((e=>{const o=e||j;if(!o)return;const n=C.findIndex((e=>e.id===o.id));if(n<C.length-1){const e=C[n+1];B(e);const o=n+1,r=C.length,a=[{target:'[data-testid="whats-new-button"]',content:t.jsx(d,{feature:e,currentIndex:o,totalFeatures:r,onSkip:()=>pe(e),onExplore:()=>fe(e),onPrevious:()=>ge(e),onNext:()=>me(e),setIsClosing:oe}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];U(a)}else V(!0),F(o.id),O(!1),B(null),U([]),D(!0),setTimeout((()=>{V(!1)}),500)}),[j,C,F]),he=()=>{if(C.length>0&&!j){document.querySelector('[data-testid="whats-new-button"]')&&ce(C[0])}};o((()=>(window.showMajorUpdatePopup=he,()=>{delete window.showMajorUpdatePopup})),[C,j]);const be=r((e=>{const{action:t}=e;t===i.CLOSE&&(j&&(V(!0),C.forEach((e=>{F(e.id)})),D(!0),setTimeout((()=>{V(!1)}),500)),O(!1),B(null),U([]))}),[j,C,F]),ye=r((e=>{const{action:t,type:o,status:n,lifecycle:r,index:a}=e;if(console.log("๐ Minor Callback:",{action:t,type:o,status:n,lifecycle:r,index:a,hasSteps:P.length,runJoyride:N}),t===i.CLOSE){if(console.log("โ CLOSE ACTION - Clearing joyride"),I){_(!0),F(I.id);R.findIndex((e=>e.id===I.id))===R.length-1&&J(!0),setTimeout((()=>{_(!1)}),500)}M(!1),E(null),W([])}}),[I,R,F]),xe=(o,n)=>e(void 0,void 0,void 0,(function*(){if(E(o),!o.featureTag)return void console.warn("FeatureAnnouncements: Cannot show minor joyride without featureTag");const e=n||R,r=e.findIndex((e=>e.id===o.id)),a=e.length,i=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`,s=document.querySelector(i);if(s)try{const{scrollToElementSmooth:e}=yield import("./utils/elementHelpers.js");yield e(s,120)}catch(e){console.warn("Scroll to element failed:",e)}const l=[{target:i,content:t.jsx(u,{feature:o,currentIndex:r,totalFeatures:a,onSkip:()=>Te(o),onExplore:()=>Se(o),onPrevious:()=>Ce(o),onNext:()=>we(o),setIsClosing:re}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:o,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];console.log("โ
Setting joyride:",{currentIndex:r,totalFeatures:a,hasFeatures:e.length,target:i}),W(l),M(!0)})),Te=r((e=>{const t=e||I;if(t){_(!0),F(t.id),ue((e=>new Set(e).add(t.id))),M(!1),E(null),W([]);const e=R.find((e=>e.id!==t.id&&!de.has(e.id)));setTimeout((()=>{_(!1),e?xe(e,R):J(!0)}),500)}}),[I,R,F,de]),Se=r((e=>{_(!0),F(e.id),ue((t=>new Set(t).add(e.id))),e.productVideo&&(X(e.productVideo),Q(!0),ee(!0)),M(!1),E(null),W([]);const t=R.find((t=>t.id!==e.id&&!de.has(t.id)));setTimeout((()=>{_(!1),t&&!e.productVideo?xe(t,R):t||J(!0)}),500)}),[R,F,de]),Ce=r((o=>e(void 0,void 0,void 0,(function*(){const e=o||I;if(!e)return;const n=R.findIndex((t=>t.id===e.id));if(n>0){const e=R[n-1];if(E(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Previous feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,r=document.querySelector(o);if(r)try{const{scrollToElementSmooth:e}=yield import("./utils/elementHelpers.js");yield e(r,120)}catch(e){console.warn("Scroll to previous element failed:",e)}const a=n-1,i=R.length,s=[{target:o,content:t.jsx(u,{feature:e,currentIndex:a,totalFeatures:i,onSkip:()=>Te(e),onExplore:()=>Se(e),onPrevious:()=>Ce(e),onNext:()=>we(e),setIsClosing:re}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];W(s)}}))),[I,R]),we=r((o=>e(void 0,void 0,void 0,(function*(){const e=o||I;if(!e)return;const n=R.findIndex((t=>t.id===e.id));if(n<R.length-1){const e=R[n+1];if(E(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Next feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,r=document.querySelector(o);if(r)try{const{scrollToElementSmooth:e}=yield import("./utils/elementHelpers.js");yield e(r,120)}catch(e){console.warn("Scroll to next element failed:",e)}const a=n+1,i=R.length,s=[{target:o,content:t.jsx(u,{feature:e,currentIndex:a,totalFeatures:i,onSkip:()=>Te(e),onExplore:()=>Se(e),onPrevious:()=>Ce(e),onNext:()=>we(e),setIsClosing:re}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];W(s)}else _(!0),J(!0),F(e.id),M(!1),E(null),W([]),setTimeout((()=>{_(!1)}),500)}))),[I,R,F]);return t.jsxs(t.Fragment,{children:[f,q.length>0&&t.jsx(a,{steps:q,run:A,continuous:!1,showProgress:!1,showSkipButton:!1,callback:be,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!0,spotlightClicks:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:te?"transparent":"#212121"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",border:"none",boxShadow:"none"},tooltip:{borderRadius:"16px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`major-joyride-${ae}`),P.length>0&&t.jsx(a,{steps:P,run:N,continuous:!1,showProgress:!1,showSkipButton:!1,callback:ye,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!1,scrollToFirstStep:!0,scrollOffset:120,disableScrolling:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:ne?"transparent":"#ffffff"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",borderRadius:"8px",boxShadow:ne?"none":"0 0 0 9999px rgba(0, 0, 0, 0.4), 0 0 0 3px rgba(255, 255, 255, 0.8), 0 0 20px 8px rgba(255, 255, 255, 0.4)"},tooltip:{borderRadius:"4px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonSkip:{display:"none"},buttonClose:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`minor-joyride-${se}`),t.jsx(c,{isOpen:K,videoUrl:G,onClose:()=>{Q(!1),X(""),ee(!1);const e=R.find((e=>!de.has(e.id)));e?setTimeout((()=>{xe(e,R)}),300):J(!0)}})]})};export{p as default};
|
|
1
|
+
import{__awaiter as e}from"../../_virtual/_tslib.js";import{j as t}from"../../node_modules/react/jsx-runtime.js";import{useState as o,useMemo as n,useCallback as r,useEffect as i}from"react";import a,{ACTIONS as s}from"react-joyride";import"../whats-new/WhatsNew.styles.js";import"../../constants/Theme.js";import"../tooltips/Tooltip.js";import"date-fns";import"../button/Button.js";import{VideoModal as l}from"./VideoModal.js";import"../input/Input.js";import"react-dom";import"../TypographyStyle.js";import"../side-modal/SideModal.style.js";import{WhatsNewProvider as d}from"../whats-new/WhatsNewProvider.js";import"./constants/animations.js";import{SELECTORS as u}from"./constants/selectors.js";import{useFeatureAnnouncements as c}from"./hooks/useFeatureAnnouncements.js";import p from"./MajorUpdatePopup.js";import f from"./MinorUpdatePopup.js";const g=g=>{let{children:m,fetchVisibleFeatures:h,getStoreFeatureProgress:b,fetchFeatureById:y,markFeatureAsViewedForStore:x,isFeatureApplicableToCurrentPage:T,module:w,router:S}=g;var C;const{majorUpdateFeatures:k,minorUpdateFeatures:v,legacyFeatures:j,isLoading:F,markFeatureAsViewed:B}=c({fetchVisibleFeatures:h,getStoreFeatureProgress:b,fetchFeatureById:y,markFeatureAsViewedForStore:x,isFeatureApplicableToCurrentPage:T,module:w,router:S}),[I,N]=o(null),[E,M]=o(null),[P,W]=o(!1),[A,O]=o([]),[U,V]=o(!1),[q,L]=o([]),[_,R]=o(!1),[$,z]=o(!1),[H,J]=o([]),[Z,D]=o(!1),[Q,G]=o(!1),[K,X]=o(!1),[Y,ee]=o(""),[te,oe]=o(!1),[ne,re]=o(!1),[ie,ae]=o(!1),[se,le]=o(0),[de,ue]=o(0),[ce,pe]=o(new Set),fe=n((()=>j.map((e=>({id:e.id,title:e.title,body:e.body,content:e.content,image:e.image,buttonText:e.buttonText,redirectUrl:e.redirectUrl,productVideo:e.productVideo,docId:e.id,createdAt:e.createdAt,module:e.module,visibility:e.visibility})))),[j]),ge=r((t=>e(void 0,void 0,void 0,(function*(){yield B(t)}))),[B]);i((()=>{const e="minor-spotlight-cutout-style";let t=document.getElementById(e);return t||(t=document.createElement("style"),t.id=e,document.head.appendChild(t)),t.textContent="\n\t\t\t.react-joyride__spotlight {\n\t\t\t\ttransition: box-shadow 0.3s ease-in-out !important;\n\t\t\t\twill-change: box-shadow, transform;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t\t.react-joyride__tooltip {\n\t\t\t\twill-change: transform, opacity;\n\t\t\t\ttransform: translateZ(0);\n\t\t\t}\n\t\t",()=>{const t=document.getElementById(e);t&&t.remove()}}),[]),i((()=>{console.log("๐ joyrideSteps changed:",{length:A.length,runJoyride:P})}),[A,P]),i((()=>{console.log("๐ฏ currentMinorFeature changed:",{id:(null==E?void 0:E.id)||"null"})}),[E]),i((()=>{le((e=>e+1)),ue((e=>e+1)),re(!1),ae(!1),pe(new Set)}),[null==S?void 0:S.pathname]),i((()=>{if(!(k.length>0)||I||F||_||te)0!==k.length||F||G(!0);else{G(!1),D(!1),W(!1),O([]),M(null),J([]);const e=()=>{document.querySelector('[data-testid="whats-new-button"]')?me(k[0]):setTimeout(e,1e3)};e()}}),[k,I,F,_,te]),i((()=>{var e;const t=null===(e=null==S?void 0:S.query)||void 0===e?void 0:e.featureId;if(console.log("๐งช Test mode effect triggered:",{featureIdFromQuery:t,isLoading:F,minorUpdateFeaturesCount:v.length}),!t||F||0===v.length)return;const o=v.find((e=>e.id===t));if(!o||!o.updates||!o.featureTag)return void console.warn("FeatureAnnouncements: Test mode feature missing required fields (updates/featureTag)");D(!0),z(!0);let n=0;const r=setInterval((()=>{if(n++,!o.featureTag)return;const e=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`;if(document.querySelector(e)){console.log("โจ Test mode: Element found, showing joyride");const e=[o];J(e),Ce(o,e),clearInterval(r)}else n>=25&&(console.warn(`FeatureAnnouncements: Timed out waiting for element with selector: ${e}`),z(!1),clearInterval(r))}),200);return()=>{clearInterval(r)}}),[v,null===(C=null==S?void 0:S.query)||void 0===C?void 0:C.featureId,F]),i((()=>{var e;if(console.log("๐ Main minor effect check:",{minorUpdateFeaturesCount:v.length,isLoading:F,runJoyride:P,isProcessingMinorUpdate:$,currentMinorFeature:(null==E?void 0:E.id)||"null",minorFeaturesSkipped:Z,showMinorUpdates:Q,blockPopups:te}),v.length>0&&!F&&!P&&!$&&!E&&!Z&&Q&&!te){let e=null,t=null,o=null,n=!1;const r=()=>{if(n||$||E||Z||!Q)return;const r=v.filter((e=>{if(!e.featureTag||""===e.featureTag.trim())return!1;if(ce.has(e.id))return!1;const t=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`;return null!==document.querySelector(t)}));r.length>0&&(console.log("๐ Found available features:",r.length),J(r),Ce(r[0],r),e&&(e.disconnect(),e=null),t&&(window.removeEventListener("scroll",t),t=null),o&&(clearTimeout(o),o=null))};return e=new MutationObserver((e=>{let t=!1;for(const o of e){if("childList"===o.type&&o.addedNodes.length>0)for(let e=0;e<o.addedNodes.length;e++){const n=o.addedNodes[e];if(n.nodeType===Node.ELEMENT_NODE){const e=n;if(e.id||e.querySelector("[id]")){t=!0;break}}}if(t)break}P||n||$||E||Z||!Q||!t||(o&&clearTimeout(o),o=setTimeout((()=>{n||$||E||Z||!Q||r()}),200))})),t=()=>{P||n||$||E||Z||!Q||(o&&clearTimeout(o),requestAnimationFrame((()=>{o=setTimeout((()=>{n||$||E||Z||!Q||r()}),300)})))},e&&e.observe(document.body,{childList:!0,subtree:!0}),t&&window.addEventListener("scroll",t,{passive:!0}),r(),setTimeout((()=>{n||$||E||Z||!Q||r()}),100),setTimeout((()=>{n||$||E||Z||!Q||r()}),1e3),setTimeout((()=>{n||$||E||Z||!Q||r()}),500),()=>{n=!0,e&&e.disconnect(),t&&window.removeEventListener("scroll",t),o&&clearTimeout(o)}}if(0===v.length||F){(null===(e=null==S?void 0:S.query)||void 0===e?void 0:e.featureId)&&E?console.log("๐ซ Skipping joyride clear - test mode with active feature"):(console.log("๐๏ธ Clearing joyride - no features or loading"),W(!1),O([]),M(null),J([]),D(!1))}}),[v,F,P,$,E,Z,Q,B,te]);const me=e=>{N(e);const o=k.findIndex((t=>t.id===e.id)),n=k.length,r=[{target:u.WHATS_NEW_BUTTON,content:t.jsx(p,{feature:e,currentIndex:o,totalFeatures:n,onSkip:()=>he(e),onExplore:()=>be(e),onPrevious:()=>ye(e),onNext:()=>xe(e),setIsClosing:re}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];L(r),V(!0)},he=r((e=>{(e||I)&&(R(!0),k.forEach((e=>{B(e.id)})),V(!1),N(null),L([]),G(!0),setTimeout((()=>{R(!1)}),500))}),[I,k,B]),be=r((e=>{R(!0),B(e.id),e.productVideo&&(ee(e.productVideo),X(!0),oe(!0)),V(!1),N(null),L([]);k.findIndex((t=>t.id===e.id))===k.length-1&&G(!0),setTimeout((()=>{R(!1)}),500)}),[k,B]),ye=r((e=>{const o=e||I;if(!o)return;const n=k.findIndex((e=>e.id===o.id));if(n>0){const e=k[n-1];N(e);const o=n-1,r=k.length,i=[{target:'[data-testid="whats-new-button"]',content:t.jsx(p,{feature:e,currentIndex:o,totalFeatures:r,onSkip:()=>he(e),onExplore:()=>be(e),onPrevious:()=>ye(e),onNext:()=>xe(e),setIsClosing:re}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];L(i)}}),[I,k]),xe=r((e=>{const o=e||I;if(!o)return;const n=k.findIndex((e=>e.id===o.id));if(n<k.length-1){const e=k[n+1];N(e);const o=n+1,r=k.length,i=[{target:'[data-testid="whats-new-button"]',content:t.jsx(p,{feature:e,currentIndex:o,totalFeatures:r,onSkip:()=>he(e),onExplore:()=>be(e),onPrevious:()=>ye(e),onNext:()=>xe(e),setIsClosing:re}),placement:"bottom-start",placementBeacon:"top-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMajor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"16px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];L(i)}else R(!0),B(o.id),V(!1),N(null),L([]),G(!0),setTimeout((()=>{R(!1)}),500)}),[I,k,B]),Te=()=>{if(k.length>0&&!I){document.querySelector('[data-testid="whats-new-button"]')&&me(k[0])}};i((()=>(window.showMajorUpdatePopup=Te,()=>{delete window.showMajorUpdatePopup})),[k,I]);const we=r((e=>{const{action:t}=e;t===s.CLOSE&&(I&&(R(!0),k.forEach((e=>{B(e.id)})),G(!0),setTimeout((()=>{R(!1)}),500)),V(!1),N(null),L([]))}),[I,k,B]),Se=r((e=>{const{action:t,type:o,status:n,lifecycle:r,index:i}=e;if(console.log("๐ Minor Callback:",{action:t,type:o,status:n,lifecycle:r,index:i,hasSteps:A.length,runJoyride:P}),t===s.CLOSE){if(console.log("โ CLOSE ACTION - Clearing joyride"),E){z(!0),B(E.id);H.findIndex((e=>e.id===E.id))===H.length-1&&D(!0),setTimeout((()=>{z(!1)}),500)}W(!1),M(null),O([])}}),[E,H,B]),Ce=(o,n)=>e(void 0,void 0,void 0,(function*(){if(M(o),!o.featureTag)return void console.warn("FeatureAnnouncements: Cannot show minor joyride without featureTag");const e=n||H,r=e.findIndex((e=>e.id===o.id)),i=e.length,a=o.featureTag.startsWith("#")||o.featureTag.startsWith(".")||o.featureTag.startsWith("[")?o.featureTag:`#${o.featureTag}`,s=document.querySelector(a);if(s)try{const{scrollToElementSmooth:e}=yield import("./utils/elementHelpers.js");yield e(s,120)}catch(e){console.warn("Scroll to element failed:",e)}const l=[{target:a,content:t.jsx(f,{feature:o,currentIndex:r,totalFeatures:i,onSkip:()=>ke(o),onExplore:()=>ve(o),onPrevious:()=>je(o),onNext:()=>Fe(o),setIsClosing:ae}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:o,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];console.log("โ
Setting joyride:",{currentIndex:r,totalFeatures:i,hasFeatures:e.length,target:a}),O(l),W(!0)})),ke=r((e=>{const t=e||E;if(t){z(!0),B(t.id),pe((e=>new Set(e).add(t.id))),W(!1),M(null),O([]);const e=H.find((e=>e.id!==t.id&&!ce.has(e.id)));setTimeout((()=>{z(!1),e?Ce(e,H):D(!0)}),500)}}),[E,H,B,ce]),ve=r((e=>{z(!0),B(e.id),pe((t=>new Set(t).add(e.id))),e.productVideo&&(ee(e.productVideo),X(!0),oe(!0)),W(!1),M(null),O([]);const t=H.find((t=>t.id!==e.id&&!ce.has(t.id)));setTimeout((()=>{z(!1),t&&!e.productVideo?Ce(t,H):t||D(!0)}),500)}),[H,B,ce]),je=r((o=>e(void 0,void 0,void 0,(function*(){const e=o||E;if(!e)return;const n=H.findIndex((t=>t.id===e.id));if(n>0){const e=H[n-1];if(M(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Previous feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,r=document.querySelector(o);if(r)try{const{scrollToElementSmooth:e}=yield import("./utils/elementHelpers.js");yield e(r,120)}catch(e){console.warn("Scroll to previous element failed:",e)}const i=n-1,a=H.length,s=[{target:o,content:t.jsx(f,{feature:e,currentIndex:i,totalFeatures:a,onSkip:()=>ke(e),onExplore:()=>ve(e),onPrevious:()=>je(e),onNext:()=>Fe(e),setIsClosing:ae}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];O(s)}}))),[E,H]),Fe=r((o=>e(void 0,void 0,void 0,(function*(){const e=o||E;if(!e)return;const n=H.findIndex((t=>t.id===e.id));if(n<H.length-1){const e=H[n+1];if(M(e),!e.featureTag)return void console.warn("FeatureAnnouncements: Next feature missing featureTag");const o=e.featureTag.startsWith("#")||e.featureTag.startsWith(".")||e.featureTag.startsWith("[")?e.featureTag:`#${e.featureTag}`,r=document.querySelector(o);if(r)try{const{scrollToElementSmooth:e}=yield import("./utils/elementHelpers.js");yield e(r,120)}catch(e){console.warn("Scroll to next element failed:",e)}const i=n+1,a=H.length,s=[{target:o,content:t.jsx(f,{feature:e,currentIndex:i,totalFeatures:a,onSkip:()=>ke(e),onExplore:()=>ve(e),onPrevious:()=>je(e),onNext:()=>Fe(e),setIsClosing:ae}),placement:"bottom",placementBeacon:"bottom-end",disableBeacon:!0,hideCloseButton:!0,hideSkipButton:!0,hideFooter:!0,offset:0,data:{feature:e,isMinor:!0},styles:{tooltip:{padding:0,backgroundColor:"transparent",borderRadius:"4px",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}}}];O(s)}else z(!0),D(!0),B(e.id),W(!1),M(null),O([]),setTimeout((()=>{z(!1)}),500)}))),[E,H,B]);return t.jsxs(d,Object.assign({fetchWhatsNewContent:h,markContentAsViewed:ge,module:w,legacyFeatures:fe},{children:[m,q.length>0&&t.jsx(a,{steps:q,run:U,continuous:!1,showProgress:!1,showSkipButton:!1,callback:we,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!0,spotlightClicks:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:ne?"transparent":"#212121"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",border:"none",boxShadow:"none"},tooltip:{borderRadius:"16px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonClose:{display:"none"},buttonSkip:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`major-joyride-${se}`),A.length>0&&t.jsx(a,{steps:A,run:P,continuous:!1,showProgress:!1,showSkipButton:!1,callback:Se,disableOverlayClose:!0,disableCloseOnEsc:!1,disableOverlay:!1,scrollToFirstStep:!0,scrollOffset:120,disableScrolling:!1,styles:{options:{primaryColor:"#007bff",zIndex:1e4,width:"auto",arrowColor:ie?"transparent":"#ffffff"},overlay:{backgroundColor:"transparent"},spotlight:{backgroundColor:"transparent",borderRadius:"8px",boxShadow:ie?"none":"0 0 0 9999px rgba(0, 0, 0, 0.4), 0 0 0 3px rgba(255, 255, 255, 0.8), 0 0 20px 8px rgba(255, 255, 255, 0.4)"},tooltip:{borderRadius:"4px",fontSize:"14px",padding:0,backgroundColor:"transparent",border:"none",filter:"none",boxShadow:"none"},tooltipContent:{padding:0},buttonNext:{display:"none"},buttonBack:{display:"none"},buttonSkip:{display:"none"},buttonClose:{display:"none"}},locale:{back:"Back",close:"Close",last:"Close",next:"Next",skip:"Skip"}},`minor-joyride-${de}`),t.jsx(l,{isOpen:K,videoUrl:Y,onClose:()=>{X(!1),ee(""),oe(!1);const e=H.find((e=>!ce.has(e.id)));e?setTimeout((()=>{Ce(e,H)}),300):D(!0)}})]}))};export{g as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e}from"../../node_modules/react/jsx-runtime.js";import{useContext as t,createContext as r}from"react";import{useWhatsNew as
|
|
1
|
+
import{j as e}from"../../node_modules/react/jsx-runtime.js";import{useContext as t,createContext as r}from"react";import{useWhatsNew as s}from"./useWhatsNew.js";const o=r(null),n=t=>{let{children:r,fetchWhatsNewContent:n,markContentAsViewed:a,module:i,legacyFeatures:u=[]}=t;const m=s({fetchWhatsNewContent:n,markContentAsViewed:a,module:i,legacyFeatures:u});return e.jsx(o.Provider,Object.assign({value:m},{children:r}))},a=()=>{const e=t(o);if(!e)throw new Error("useWhatsNewContext must be used within a WhatsNewProvider");return e};export{n as WhatsNewProvider,a as useWhatsNewContext};
|
|
@@ -4,6 +4,7 @@ interface UseWhatsNewProps {
|
|
|
4
4
|
markContentAsViewed?: (contentId: string) => Promise<void>;
|
|
5
5
|
module?: string;
|
|
6
6
|
newContentThresholdDays?: number;
|
|
7
|
+
legacyFeatures?: WhatsNewContent[];
|
|
7
8
|
}
|
|
8
|
-
export declare const useWhatsNew: ({ fetchWhatsNewContent, markContentAsViewed, module, newContentThresholdDays, }: UseWhatsNewProps) => WhatsNewHookReturn;
|
|
9
|
+
export declare const useWhatsNew: ({ fetchWhatsNewContent, markContentAsViewed, module, newContentThresholdDays, legacyFeatures, }: UseWhatsNewProps) => WhatsNewHookReturn;
|
|
9
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__awaiter as
|
|
1
|
+
import{__awaiter as t}from"../../_virtual/_tslib.js";import{differenceInBusinessDays as e}from"date-fns";import{useState as o,useRef as r,useEffect as n,useCallback as a}from"react";const d=d=>{let{fetchWhatsNewContent:c,markContentAsViewed:i,module:l,newContentThresholdDays:s=7,legacyFeatures:u=[]}=d;const[v,A]=o([]),[w,f]=o(!0),m=r(c),D=r(i);n((()=>{m.current=c}),[c]),n((()=>{D.current=i}),[i]);const h=a((()=>t(void 0,void 0,void 0,(function*(){f(!0);try{const[t,e]=yield m.current();if(t)console.error("Failed to fetch what's new content:",t),A([]);else if(e){let t=e;l&&(t=e.filter((t=>Array.isArray(t.module)?t.module.includes(l):t.module===l))),t.sort(((t,e)=>{var o,r;const n=(null===(o=t.createdAt)||void 0===o?void 0:o.toDate)?t.createdAt.toDate():new Date(t.createdAt);return((null===(r=e.createdAt)||void 0===r?void 0:r.toDate)?e.createdAt.toDate():new Date(e.createdAt)).getTime()-n.getTime()}));const o=[...t,...u];o.sort(((t,e)=>{var o,r;const n=(null===(o=t.createdAt)||void 0===o?void 0:o.toDate)?t.createdAt.toDate():new Date(t.createdAt);return((null===(r=e.createdAt)||void 0===r?void 0:r.toDate)?e.createdAt.toDate():new Date(e.createdAt)).getTime()-n.getTime()})),A(o)}else A([...u])}catch(t){console.error("Failed to fetch what's new content:",t),A([...u])}finally{f(!1)}}))),[l,u]);n((()=>{h()}),[h]);const y=a((t=>{if(!t.createdAt)return!1;const o=t.createdAt.toDate?t.createdAt.toDate():new Date(t.createdAt);return e(new Date,o)<s}),[s]),C=v.reduce(((t,e)=>y(e)?t+1:t),0);return{whatsNewContent:v,isLoading:w,newContentCount:C,markAsViewed:a((e=>t(void 0,void 0,void 0,(function*(){if(D.current)try{yield D.current(e)}catch(t){console.warn("Failed to mark content as viewed:",t)}}))),[]),refreshContent:a((()=>t(void 0,void 0,void 0,(function*(){yield h()}))),[h])}};export{d as useWhatsNew};
|