Conversation
Reviewer's GuideBumps the embedded driver.js library to the latest 10.0.2 minified build, updates the Blazor configuration/step components to support new driver.js options (animation duration, scroll allowance, per-step missing-element skipping), and aligns CSS to the upstream driver.js styles including scroll locking and animation duration variables. File-Level Changes
Assessment against linked issues
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've found 4 security issues, and 1 other issue
Security issues:
- User controlled data in methods like
innerHTML,outerHTMLordocument.writeis an anti-pattern that can lead to XSS vulnerabilities (link) - User controlled data in a
r.nextButton.innerHTMLis an anti-pattern that can lead to XSS vulnerabilities (link) - User controlled data in a
r.previousButton.innerHTMLis an anti-pattern that can lead to XSS vulnerabilities (link) - User controlled data in a
r.progress.innerHTMLis an anti-pattern that can lead to XSS vulnerabilities (link)
Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments
### Comment 1
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.css" line_range="2" />
<code_context>
+.driver-popover-arrow-side-bottom{border-top-color:#0000;border-left-color:#0000;border-right-color:#0000;bottom:100%}.driver-popover-arrow-side-center,.driver-popover-arrow-none{display:none}
</code_context>
<issue_to_address>
**suggestion:** Remove the Vite build marker comment from the distributed CSS.
Please ensure the `/*$vite$:1*/` build marker is removed during bundling so it doesn’t ship in the distributed CSS, and only relevant styles are included.
</issue_to_address>
### Comment 2
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.js.mjs" line_range="1" />
<code_context>
function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-close-btn")?l?l(t,n,e.getHookOpts()):e.emit("closeClick"):void 0},e=>!r?.description.contains(e)&&!r?.title.contains(e)&&!!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")),e.setState("popover",r);let b=n.popover?.onPopoverRender||e.getConfig("onPopoverRender");b&&b(r,e.getHookOpts()),v(e,t,n),function(e,t,o,i){t.wrapper.querySelectorAll("img").forEach(t=>{if(t.complete)return;let n=()=>v(e,o,i);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",n,{once:!0})})}(e,r,t,n),i(e,x);let k=o([x,...t.classList.contains("driver-dummy-element")?[]:[t]]);k.length>0&&k[0].focus()}function H(t={}){let o=function(e={}){let t=function(){let e={};function t(t={}){e={animate:!0,duration:400,allowClose:!0,allowScroll:!0,overlayClickBehavior:"close",overlayOpacity:.7,smoothScroll:!1,disableActiveInteraction:!1,skipMissingElement:!1,showProgress:!1,stagePadding:10,stageRadius:5,popoverOffset:10,showButtons:["next","previous","close"],disableButtons:[],overlayColor:"#000",...t}}return t(),{getConfig:t=>t?e[t]:e,configure:t}}();t.configure(e);let o,i=function(){let e={};return{getState:t=>t?e[t]:e,setState:(t,o)=>{e[t]=o},resetState:function(){e={}}}}(),n=function(){let e={};return{listen:function(t,o){e[t]=o},emit:function(t){e[t]?.()},reset:function(){e={}}}}();return{getConfig:t.getConfig,setConfig:t.configure,getState:i.getState,setState:i.setState,resetState:i.resetState,listen:n.listen,emit:n.emit,resetEmitter:n.reset,getDriver:()=>o,setDriver:e=>{o=e},getHookOpts:e=>{let n=e||i.getState();return{config:t.getConfig(),state:n,driver:o,index:n.activeIndex}}}}(t);function i(){o.getConfig("allowClose")&&v()}function n(){let e=o.getConfig("overlayClickBehavior");if(o.getConfig("allowClose")&&"close"===e)v();else{if("function"==typeof e){let t=o.getState("__activeStep");return void e(o.getState("__activeElement"),t,o.getHookOpts())}if("nextStep"===e){let e=o.getState("activeStep"),t=o.getState("activeElement"),i=o.getConfig("steps")||[],n=o.getState("activeIndex")===i.length-1,s=e?.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return void s(t,e,o.getHookOpts());let l=e?.popover?.onNextClick||o.getConfig("onNextClick");if(l)return void l(t,e,o.getHookOpts());r()}}}function r(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e+1;t[i]?g(i):v()}function s(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e-1;t[i]?g(i):v()}function l(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t||!(o.getConfig("steps")||[])[e-1])return;let n=t.popover?.onPrevClick||o.getConfig("onPrevClick");if(n)return n(i,t,o.getHookOpts());s()}function a(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t)return;let n=e===(o.getConfig("steps")||[]).length-1,s=t.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return s(i,t,o.getHookOpts());let l=t.popover?.onNextClick||o.getConfig("onNextClick");if(l)return l(i,t,o.getHookOpts());r()}function d(){o.getState("isInitialized")||(o.setState("isInitialized",!0),document.body.classList.add("driver-active",o.getConfig("animate")?"driver-fade":"driver-simple"),o.getConfig("allowScroll")||document.body.classList.add("driver-no-scroll"),document.body.style.setProperty("--driver-animation-duration",`${o.getConfig("duration")||400}ms`),function(e){let t=t=>function(e,t){(e.getConfig("allowKeyboardControl")??1)&&("Escape"===t.key?e.emit("escapePress"):"ArrowRight"===t.key?e.emit("arrowRightPress"):"ArrowLeft"===t.key&&e.emit("arrowLeftPress"))}(e,t),o=t=>x(e,t),i=()=>S(e),n=()=>S(e);e.setState("__events",{onKeyup:t,onKeydown:o,onResize:i,onScroll:n}),window.addEventListener("keyup",t,!1),window.addEventListener("keydown",o,!1),window.addEventListener("resize",i),window.addEventListener("scroll",n)}(o),o.listen("overlayClick",n),o.listen("escapePress",i),o.listen("closeClick",i),o.listen("arrowLeftPress",l),o.listen("arrowRightPress",a))}function p(t){return!(!(t.skipMissingElement??o.getConfig("skipMissingElement"))||!t.element)&&!e(t.element)}function g(e=0){let t=o.getConfig("steps");if(!t)return console.error("No steps to drive through"),void v();if(!t[e])return void v();let i=t[e];if(p(i)){let i=o.getState("activeIndex"),n="number"==typeof i&&e<i?-1:1;return void(t[e+n]?g(e+n):1===n&&v())}o.setState("__activeOnDestroyed",document.activeElement),o.setState("activeIndex",e);let n=t[e+1],r=t[e-1],s=i.popover?.doneBtnText||o.getConfig("doneBtnText")||"Done",l=o.getConfig("allowClose"),a=void 0===i.popover?.showProgress?o.getConfig("showProgress"):i.popover?.showProgress,d=(i.popover?.progressText||o.getConfig("progressText")||"{{current}} of {{total}}").replace("{{current}}",`${e+1}`).replace("{{total}}",`${t.length}`),c=i.popover?.showButtons||o.getConfig("showButtons"),u=["next","previous",...l?["close"]:[]].filter(e=>!c?.length||c.includes(e)),f=i.popover?.onNextClick||o.getConfig("onNextClick"),m=i.popover?.onPrevClick||o.getConfig("onPrevClick"),h=i.popover?.onCloseClick||o.getConfig("onCloseClick");w(o,{...i,popover:{showButtons:u,nextBtnText:n?void 0:s,disableButtons:[...r?[]:["previous"]],showProgress:a,onNextClick:f||(()=>{n?g(e+1):v()}),onPrevClick:m||(()=>{g(e-1)}),onCloseClick:h||(()=>{v()}),...i?.popover||{},progressText:d}})}function v(e=!0){let t=o.getState("__activeElement"),i=o.getState("__activeStep"),n=o.getState("__activeOnDestroyed"),r=o.getConfig("onDestroyStarted");if(e&&r)return void r(t&&"driver-dummy-element"!==t?.id?t:void 0,i,o.getHookOpts());let s=i?.onDeselected||o.getConfig("onDeselected"),l=o.getConfig("onDestroyed");document.body.classList.remove("driver-active","driver-fade","driver-simple","driver-no-scroll"),document.body.style.removeProperty("--driver-animation-duration"),function(e){let t=e.getState("__events");t&&(window.removeEventListener("keyup",t.onKeyup),window.removeEventListener("keydown",t.onKeydown),window.removeEventListener("resize",t.onResize),window.removeEventListener("scroll",t.onScroll))}(o),function(e){let t=e.getState("popover");t&&(E(t.wrapper),t.wrapper.parentElement?.removeChild(t.wrapper))}(o),document.getElementById("driver-dummy-element")?.remove(),document.querySelectorAll(".driver-active-element").forEach(e=>{let t=e.parentElement;t&&t!==document.body&&t.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll"),e.classList.remove("driver-active-element","driver-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}),function(e){let t=e.getState("__overlaySvg");t&&(E(t),t.remove())}(o),o.resetEmitter();let a=o.getState();if(o.resetState(),t&&i){let e="driver-dummy-element"===t.id;s&&s(e?void 0:t,i,o.getHookOpts(a)),l&&l(e?void 0:t,i,o.getHookOpts(a))}n&&n.focus()}let c={isActive:()=>o.getState("isInitialized")||!1,refresh:()=>S(o),drive:(e=0)=>{d(),g(e)},setConfig:o.setConfig,setSteps:e=>{o.resetState(),o.setConfig({...o.getConfig(),steps:e})},getConfig:o.getConfig,getState:o.getState,getActiveIndex:()=>o.getState("activeIndex"),isFirstStep:()=>0===o.getState("activeIndex"),isLastStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:()=>o.getState("activeStep"),getActiveElement:()=>o.getState("activeElement"),getPreviousElement:()=>o.getState("previousElement"),getPreviousStep:()=>o.getState("previousStep"),getNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0===t?void 0:e[t+1]},moveNext:r,movePrevious:s,moveTo:function(e){(o.getConfig("steps")||[])[e]?g(e):v()},hasNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t+1]},hasPreviousStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t-1]},highlight:e=>{d(),w(o,{...e,popover:e.popover?{showButtons:[],showProgress:!1,progressText:"",...e.popover}:void 0})},destroy:()=>{v(!1)}};return o.setDriver(c),c}export{H as driver};
</code_context>
<issue_to_address>
**security (javascript.browser.security.insecure-document-method):** User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities
*Source: opengrep*
</issue_to_address>
### Comment 3
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.js.mjs" line_range="1" />
<code_context>
function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-close-btn")?l?l(t,n,e.getHookOpts()):e.emit("closeClick"):void 0},e=>!r?.description.contains(e)&&!r?.title.contains(e)&&!!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")),e.setState("popover",r);let b=n.popover?.onPopoverRender||e.getConfig("onPopoverRender");b&&b(r,e.getHookOpts()),v(e,t,n),function(e,t,o,i){t.wrapper.querySelectorAll("img").forEach(t=>{if(t.complete)return;let n=()=>v(e,o,i);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",n,{once:!0})})}(e,r,t,n),i(e,x);let k=o([x,...t.classList.contains("driver-dummy-element")?[]:[t]]);k.length>0&&k[0].focus()}function H(t={}){let o=function(e={}){let t=function(){let e={};function t(t={}){e={animate:!0,duration:400,allowClose:!0,allowScroll:!0,overlayClickBehavior:"close",overlayOpacity:.7,smoothScroll:!1,disableActiveInteraction:!1,skipMissingElement:!1,showProgress:!1,stagePadding:10,stageRadius:5,popoverOffset:10,showButtons:["next","previous","close"],disableButtons:[],overlayColor:"#000",...t}}return t(),{getConfig:t=>t?e[t]:e,configure:t}}();t.configure(e);let o,i=function(){let e={};return{getState:t=>t?e[t]:e,setState:(t,o)=>{e[t]=o},resetState:function(){e={}}}}(),n=function(){let e={};return{listen:function(t,o){e[t]=o},emit:function(t){e[t]?.()},reset:function(){e={}}}}();return{getConfig:t.getConfig,setConfig:t.configure,getState:i.getState,setState:i.setState,resetState:i.resetState,listen:n.listen,emit:n.emit,resetEmitter:n.reset,getDriver:()=>o,setDriver:e=>{o=e},getHookOpts:e=>{let n=e||i.getState();return{config:t.getConfig(),state:n,driver:o,index:n.activeIndex}}}}(t);function i(){o.getConfig("allowClose")&&v()}function n(){let e=o.getConfig("overlayClickBehavior");if(o.getConfig("allowClose")&&"close"===e)v();else{if("function"==typeof e){let t=o.getState("__activeStep");return void e(o.getState("__activeElement"),t,o.getHookOpts())}if("nextStep"===e){let e=o.getState("activeStep"),t=o.getState("activeElement"),i=o.getConfig("steps")||[],n=o.getState("activeIndex")===i.length-1,s=e?.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return void s(t,e,o.getHookOpts());let l=e?.popover?.onNextClick||o.getConfig("onNextClick");if(l)return void l(t,e,o.getHookOpts());r()}}}function r(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e+1;t[i]?g(i):v()}function s(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e-1;t[i]?g(i):v()}function l(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t||!(o.getConfig("steps")||[])[e-1])return;let n=t.popover?.onPrevClick||o.getConfig("onPrevClick");if(n)return n(i,t,o.getHookOpts());s()}function a(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t)return;let n=e===(o.getConfig("steps")||[]).length-1,s=t.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return s(i,t,o.getHookOpts());let l=t.popover?.onNextClick||o.getConfig("onNextClick");if(l)return l(i,t,o.getHookOpts());r()}function d(){o.getState("isInitialized")||(o.setState("isInitialized",!0),document.body.classList.add("driver-active",o.getConfig("animate")?"driver-fade":"driver-simple"),o.getConfig("allowScroll")||document.body.classList.add("driver-no-scroll"),document.body.style.setProperty("--driver-animation-duration",`${o.getConfig("duration")||400}ms`),function(e){let t=t=>function(e,t){(e.getConfig("allowKeyboardControl")??1)&&("Escape"===t.key?e.emit("escapePress"):"ArrowRight"===t.key?e.emit("arrowRightPress"):"ArrowLeft"===t.key&&e.emit("arrowLeftPress"))}(e,t),o=t=>x(e,t),i=()=>S(e),n=()=>S(e);e.setState("__events",{onKeyup:t,onKeydown:o,onResize:i,onScroll:n}),window.addEventListener("keyup",t,!1),window.addEventListener("keydown",o,!1),window.addEventListener("resize",i),window.addEventListener("scroll",n)}(o),o.listen("overlayClick",n),o.listen("escapePress",i),o.listen("closeClick",i),o.listen("arrowLeftPress",l),o.listen("arrowRightPress",a))}function p(t){return!(!(t.skipMissingElement??o.getConfig("skipMissingElement"))||!t.element)&&!e(t.element)}function g(e=0){let t=o.getConfig("steps");if(!t)return console.error("No steps to drive through"),void v();if(!t[e])return void v();let i=t[e];if(p(i)){let i=o.getState("activeIndex"),n="number"==typeof i&&e<i?-1:1;return void(t[e+n]?g(e+n):1===n&&v())}o.setState("__activeOnDestroyed",document.activeElement),o.setState("activeIndex",e);let n=t[e+1],r=t[e-1],s=i.popover?.doneBtnText||o.getConfig("doneBtnText")||"Done",l=o.getConfig("allowClose"),a=void 0===i.popover?.showProgress?o.getConfig("showProgress"):i.popover?.showProgress,d=(i.popover?.progressText||o.getConfig("progressText")||"{{current}} of {{total}}").replace("{{current}}",`${e+1}`).replace("{{total}}",`${t.length}`),c=i.popover?.showButtons||o.getConfig("showButtons"),u=["next","previous",...l?["close"]:[]].filter(e=>!c?.length||c.includes(e)),f=i.popover?.onNextClick||o.getConfig("onNextClick"),m=i.popover?.onPrevClick||o.getConfig("onPrevClick"),h=i.popover?.onCloseClick||o.getConfig("onCloseClick");w(o,{...i,popover:{showButtons:u,nextBtnText:n?void 0:s,disableButtons:[...r?[]:["previous"]],showProgress:a,onNextClick:f||(()=>{n?g(e+1):v()}),onPrevClick:m||(()=>{g(e-1)}),onCloseClick:h||(()=>{v()}),...i?.popover||{},progressText:d}})}function v(e=!0){let t=o.getState("__activeElement"),i=o.getState("__activeStep"),n=o.getState("__activeOnDestroyed"),r=o.getConfig("onDestroyStarted");if(e&&r)return void r(t&&"driver-dummy-element"!==t?.id?t:void 0,i,o.getHookOpts());let s=i?.onDeselected||o.getConfig("onDeselected"),l=o.getConfig("onDestroyed");document.body.classList.remove("driver-active","driver-fade","driver-simple","driver-no-scroll"),document.body.style.removeProperty("--driver-animation-duration"),function(e){let t=e.getState("__events");t&&(window.removeEventListener("keyup",t.onKeyup),window.removeEventListener("keydown",t.onKeydown),window.removeEventListener("resize",t.onResize),window.removeEventListener("scroll",t.onScroll))}(o),function(e){let t=e.getState("popover");t&&(E(t.wrapper),t.wrapper.parentElement?.removeChild(t.wrapper))}(o),document.getElementById("driver-dummy-element")?.remove(),document.querySelectorAll(".driver-active-element").forEach(e=>{let t=e.parentElement;t&&t!==document.body&&t.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll"),e.classList.remove("driver-active-element","driver-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}),function(e){let t=e.getState("__overlaySvg");t&&(E(t),t.remove())}(o),o.resetEmitter();let a=o.getState();if(o.resetState(),t&&i){let e="driver-dummy-element"===t.id;s&&s(e?void 0:t,i,o.getHookOpts(a)),l&&l(e?void 0:t,i,o.getHookOpts(a))}n&&n.focus()}let c={isActive:()=>o.getState("isInitialized")||!1,refresh:()=>S(o),drive:(e=0)=>{d(),g(e)},setConfig:o.setConfig,setSteps:e=>{o.resetState(),o.setConfig({...o.getConfig(),steps:e})},getConfig:o.getConfig,getState:o.getState,getActiveIndex:()=>o.getState("activeIndex"),isFirstStep:()=>0===o.getState("activeIndex"),isLastStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:()=>o.getState("activeStep"),getActiveElement:()=>o.getState("activeElement"),getPreviousElement:()=>o.getState("previousElement"),getPreviousStep:()=>o.getState("previousStep"),getNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0===t?void 0:e[t+1]},moveNext:r,movePrevious:s,moveTo:function(e){(o.getConfig("steps")||[])[e]?g(e):v()},hasNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t+1]},hasPreviousStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t-1]},highlight:e=>{d(),w(o,{...e,popover:e.popover?{showButtons:[],showProgress:!1,progressText:"",...e.popover}:void 0})},destroy:()=>{v(!1)}};return o.setDriver(c),c}export{H as driver};
</code_context>
<issue_to_address>
**security (javascript.browser.security.insecure-innerhtml):** User controlled data in a `r.nextButton.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities
*Source: opengrep*
</issue_to_address>
### Comment 4
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.js.mjs" line_range="1" />
<code_context>
function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-cl| @@ -1 +1,2 @@ | |||
| .driver-active .driver-overlay,.driver-active *{pointer-events:none}.driver-active .driver-active-element,.driver-active .driver-active-element *,.driver-popover,.driver-popover *{pointer-events:auto}@keyframes animate-fade-in{0%{opacity:0}to{opacity:1}}.driver-fade .driver-overlay{animation:animate-fade-in .2s ease-in-out}.driver-fade .driver-popover{animation:animate-fade-in .2s}.driver-popover{all:unset;box-sizing:border-box;color:#2d2d2d;margin:0;padding:15px;border-radius:5px;min-width:250px;max-width:300px;box-shadow:0 1px 10px #0006;z-index:1000000000;position:fixed;top:0;right:0;background-color:#fff}.driver-popover *{font-family:Helvetica Neue,Inter,ui-sans-serif,"Apple Color Emoji",Helvetica,Arial,sans-serif}.driver-popover-title{font:19px/normal sans-serif;font-weight:700;display:block;position:relative;line-height:1.5;zoom:1;margin:0}.driver-popover-close-btn{all:unset;position:absolute;top:0;right:0;width:32px;height:28px;cursor:pointer;font-size:18px;font-weight:500;color:#d2d2d2;z-index:1;text-align:center;transition:color;transition-duration:.2s}.driver-popover-close-btn:hover,.driver-popover-close-btn:focus{color:#2d2d2d}.driver-popover-title[style*=block]+.driver-popover-description{margin-top:5px}.driver-popover-description{margin-bottom:0;font:14px/normal sans-serif;line-height:1.5;font-weight:400;zoom:1}.driver-popover-footer{margin-top:15px;text-align:right;zoom:1;display:flex;align-items:center;justify-content:space-between}.driver-popover-progress-text{font-size:13px;font-weight:400;color:#727272;zoom:1}.driver-popover-footer button{all:unset;display:inline-block;box-sizing:border-box;padding:3px 7px;text-decoration:none;text-shadow:1px 1px 0 #fff;background-color:#fff;color:#2d2d2d;font:12px/normal sans-serif;cursor:pointer;outline:0;zoom:1;line-height:1.3;border:1px solid #ccc;border-radius:3px}.driver-popover-footer .driver-popover-btn-disabled{opacity:.5;pointer-events:none}:not(body):has(>.driver-active-element){overflow:hidden!important}.driver-no-interaction,.driver-no-interaction *{pointer-events:none!important}.driver-popover-footer button:hover,.driver-popover-footer button:focus{background-color:#f7f7f7}.driver-popover-navigation-btns{display:flex;flex-grow:1;justify-content:flex-end}.driver-popover-navigation-btns button+button{margin-left:4px}.driver-popover-arrow{content:"";position:absolute;border:5px solid #fff}.driver-popover-arrow-side-over{display:none}.driver-popover-arrow-side-left{left:100%;border-right-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-right{right:100%;border-left-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-top{top:100%;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.driver-popover-arrow-side-bottom{bottom:100%;border-left-color:transparent;border-top-color:transparent;border-right-color:transparent}.driver-popover-arrow-side-center{display:none}.driver-popover-arrow-side-left.driver-popover-arrow-align-start,.driver-popover-arrow-side-right.driver-popover-arrow-align-start{top:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-start,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-start{left:15px}.driver-popover-arrow-align-end.driver-popover-arrow-side-left,.driver-popover-arrow-align-end.driver-popover-arrow-side-right{bottom:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-end,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-end{right:15px}.driver-popover-arrow-side-left.driver-popover-arrow-align-center,.driver-popover-arrow-side-right.driver-popover-arrow-align-center{top:50%;margin-top:-5px}.driver-popover-arrow-side-top.driver-popover-arrow-align-center,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-center{left:50%;margin-left:-5px}.driver-popover-arrow-none{display:none} | |||
| .driver-active .driver-overlay{pointer-events:none}.driver-active.driver-no-scroll{overflow:hidden}.driver-active *{pointer-events:none}.driver-active .driver-active-element,.driver-active .driver-active-element *,.driver-popover,.driver-popover *{pointer-events:auto}@keyframes animate-fade-in{0%{opacity:0}to{opacity:1}}.driver-fade .driver-overlay{animation:animate-fade-in var(--driver-animation-duration,.4s) ease-in-out}.driver-fade .driver-popover{animation:animate-fade-in var(--driver-animation-duration,.4s)}.driver-popover{all:unset;font-family:var(--driver-popover-font-family,"Helvetica Neue", Inter, ui-sans-serif, "Apple Color Emoji", Helvetica, Arial, sans-serif);box-sizing:border-box;color:#2d2d2d;z-index:1000000000;background-color:#fff;border-radius:5px;min-width:250px;max-width:300px;margin:0;padding:15px;position:fixed;top:0;right:0;box-shadow:0 1px 10px #0006}.driver-popover-title{zoom:1;margin:0;font-size:19px;font-weight:700;line-height:1.5;display:block;position:relative}.driver-popover-close-btn{all:unset;cursor:pointer;color:#d2d2d2;z-index:1;text-align:center;width:32px;height:28px;font-size:18px;font-weight:500;transition:color .2s;position:absolute;top:0;right:0}.driver-popover-close-btn:hover,.driver-popover-close-btn:focus{color:#2d2d2d}.driver-popover-title[style*=block]+.driver-popover-description{margin-top:5px}.driver-popover-description{zoom:1;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.5}.driver-popover-footer{text-align:right;zoom:1;justify-content:space-between;align-items:center;margin-top:15px;display:flex}.driver-popover-progress-text{color:#727272;zoom:1;font-size:13px;font-weight:400}.driver-popover-footer-btn{all:unset;box-sizing:border-box;color:#2d2d2d;cursor:pointer;zoom:1;background-color:#fff;border:1px solid #ccc;border-radius:3px;outline:0;padding:3px 7px;font-size:12px;line-height:1.3;text-decoration:none;display:inline-block}.driver-popover-footer .driver-popover-btn-disabled{opacity:.5;pointer-events:none}.driver-active-element-parent-no-scroll{overflow:hidden!important}.driver-no-interaction,.driver-no-interaction *{pointer-events:none!important}.driver-popover-footer-btn:hover,.driver-popover-footer-btn:focus{background-color:#f7f7f7}.driver-popover-navigation-btns{flex-grow:1;justify-content:flex-end;display:flex}.driver-popover-navigation-btns button+button{margin-left:4px}.driver-popover-arrow{content:"";border:5px solid #fff;position:absolute}.driver-popover-arrow-side-over{display:none}.driver-popover-arrow-side-left{border-top-color:#0000;border-bottom-color:#0000;border-right-color:#0000;left:100%}.driver-popover-arrow-side-right{border-top-color:#0000;border-bottom-color:#0000;border-left-color:#0000;right:100%}.driver-popover-arrow-side-top{border-bottom-color:#0000;border-left-color:#0000;border-right-color:#0000;top:100%}.driver-popover-arrow-side-bottom{border-top-color:#0000;border-left-color:#0000;border-right-color:#0000;bottom:100%}.driver-popover-arrow-side-center,.driver-popover-arrow-none{display:none} | |||
| /*$vite$:1*/ No newline at end of file | |||
There was a problem hiding this comment.
suggestion: Remove the Vite build marker comment from the distributed CSS.
Please ensure the /*$vite$:1*/ build marker is removed during bundling so it doesn’t ship in the distributed CSS, and only relevant styles are included.
| export { | ||
| Ae as driver | ||
| }; | ||
| function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-close-btn")?l?l(t,n,e.getHookOpts()):e.emit("closeClick"):void 0},e=>!r?.description.contains(e)&&!r?.title.contains(e)&&!!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")),e.setState("popover",r);let b=n.popover?.onPopoverRender||e.getConfig("onPopoverRender");b&&b(r,e.getHookOpts()),v(e,t,n),function(e,t,o,i){t.wrapper.querySelectorAll("img").forEach(t=>{if(t.complete)return;let n=()=>v(e,o,i);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",n,{once:!0})})}(e,r,t,n),i(e,x);let k=o([x,...t.classList.contains("driver-dummy-element")?[]:[t]]);k.length>0&&k[0].focus()}function H(t={}){let o=function(e={}){let t=function(){let e={};function t(t={}){e={animate:!0,duration:400,allowClose:!0,allowScroll:!0,overlayClickBehavior:"close",overlayOpacity:.7,smoothScroll:!1,disableActiveInteraction:!1,skipMissingElement:!1,showProgress:!1,stagePadding:10,stageRadius:5,popoverOffset:10,showButtons:["next","previous","close"],disableButtons:[],overlayColor:"#000",...t}}return t(),{getConfig:t=>t?e[t]:e,configure:t}}();t.configure(e);let o,i=function(){let e={};return{getState:t=>t?e[t]:e,setState:(t,o)=>{e[t]=o},resetState:function(){e={}}}}(),n=function(){let e={};return{listen:function(t,o){e[t]=o},emit:function(t){e[t]?.()},reset:function(){e={}}}}();return{getConfig:t.getConfig,setConfig:t.configure,getState:i.getState,setState:i.setState,resetState:i.resetState,listen:n.listen,emit:n.emit,resetEmitter:n.reset,getDriver:()=>o,setDriver:e=>{o=e},getHookOpts:e=>{let n=e||i.getState();return{config:t.getConfig(),state:n,driver:o,index:n.activeIndex}}}}(t);function i(){o.getConfig("allowClose")&&v()}function n(){let e=o.getConfig("overlayClickBehavior");if(o.getConfig("allowClose")&&"close"===e)v();else{if("function"==typeof e){let t=o.getState("__activeStep");return void e(o.getState("__activeElement"),t,o.getHookOpts())}if("nextStep"===e){let e=o.getState("activeStep"),t=o.getState("activeElement"),i=o.getConfig("steps")||[],n=o.getState("activeIndex")===i.length-1,s=e?.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return void s(t,e,o.getHookOpts());let l=e?.popover?.onNextClick||o.getConfig("onNextClick");if(l)return void l(t,e,o.getHookOpts());r()}}}function r(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e+1;t[i]?g(i):v()}function s(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e-1;t[i]?g(i):v()}function l(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t||!(o.getConfig("steps")||[])[e-1])return;let n=t.popover?.onPrevClick||o.getConfig("onPrevClick");if(n)return n(i,t,o.getHookOpts());s()}function a(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t)return;let n=e===(o.getConfig("steps")||[]).length-1,s=t.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return s(i,t,o.getHookOpts());let l=t.popover?.onNextClick||o.getConfig("onNextClick");if(l)return l(i,t,o.getHookOpts());r()}function d(){o.getState("isInitialized")||(o.setState("isInitialized",!0),document.body.classList.add("driver-active",o.getConfig("animate")?"driver-fade":"driver-simple"),o.getConfig("allowScroll")||document.body.classList.add("driver-no-scroll"),document.body.style.setProperty("--driver-animation-duration",`${o.getConfig("duration")||400}ms`),function(e){let t=t=>function(e,t){(e.getConfig("allowKeyboardControl")??1)&&("Escape"===t.key?e.emit("escapePress"):"ArrowRight"===t.key?e.emit("arrowRightPress"):"ArrowLeft"===t.key&&e.emit("arrowLeftPress"))}(e,t),o=t=>x(e,t),i=()=>S(e),n=()=>S(e);e.setState("__events",{onKeyup:t,onKeydown:o,onResize:i,onScroll:n}),window.addEventListener("keyup",t,!1),window.addEventListener("keydown",o,!1),window.addEventListener("resize",i),window.addEventListener("scroll",n)}(o),o.listen("overlayClick",n),o.listen("escapePress",i),o.listen("closeClick",i),o.listen("arrowLeftPress",l),o.listen("arrowRightPress",a))}function p(t){return!(!(t.skipMissingElement??o.getConfig("skipMissingElement"))||!t.element)&&!e(t.element)}function g(e=0){let t=o.getConfig("steps");if(!t)return console.error("No steps to drive through"),void v();if(!t[e])return void v();let i=t[e];if(p(i)){let i=o.getState("activeIndex"),n="number"==typeof i&&e<i?-1:1;return void(t[e+n]?g(e+n):1===n&&v())}o.setState("__activeOnDestroyed",document.activeElement),o.setState("activeIndex",e);let n=t[e+1],r=t[e-1],s=i.popover?.doneBtnText||o.getConfig("doneBtnText")||"Done",l=o.getConfig("allowClose"),a=void 0===i.popover?.showProgress?o.getConfig("showProgress"):i.popover?.showProgress,d=(i.popover?.progressText||o.getConfig("progressText")||"{{current}} of {{total}}").replace("{{current}}",`${e+1}`).replace("{{total}}",`${t.length}`),c=i.popover?.showButtons||o.getConfig("showButtons"),u=["next","previous",...l?["close"]:[]].filter(e=>!c?.length||c.includes(e)),f=i.popover?.onNextClick||o.getConfig("onNextClick"),m=i.popover?.onPrevClick||o.getConfig("onPrevClick"),h=i.popover?.onCloseClick||o.getConfig("onCloseClick");w(o,{...i,popover:{showButtons:u,nextBtnText:n?void 0:s,disableButtons:[...r?[]:["previous"]],showProgress:a,onNextClick:f||(()=>{n?g(e+1):v()}),onPrevClick:m||(()=>{g(e-1)}),onCloseClick:h||(()=>{v()}),...i?.popover||{},progressText:d}})}function v(e=!0){let t=o.getState("__activeElement"),i=o.getState("__activeStep"),n=o.getState("__activeOnDestroyed"),r=o.getConfig("onDestroyStarted");if(e&&r)return void r(t&&"driver-dummy-element"!==t?.id?t:void 0,i,o.getHookOpts());let s=i?.onDeselected||o.getConfig("onDeselected"),l=o.getConfig("onDestroyed");document.body.classList.remove("driver-active","driver-fade","driver-simple","driver-no-scroll"),document.body.style.removeProperty("--driver-animation-duration"),function(e){let t=e.getState("__events");t&&(window.removeEventListener("keyup",t.onKeyup),window.removeEventListener("keydown",t.onKeydown),window.removeEventListener("resize",t.onResize),window.removeEventListener("scroll",t.onScroll))}(o),function(e){let t=e.getState("popover");t&&(E(t.wrapper),t.wrapper.parentElement?.removeChild(t.wrapper))}(o),document.getElementById("driver-dummy-element")?.remove(),document.querySelectorAll(".driver-active-element").forEach(e=>{let t=e.parentElement;t&&t!==document.body&&t.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll"),e.classList.remove("driver-active-element","driver-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}),function(e){let t=e.getState("__overlaySvg");t&&(E(t),t.remove())}(o),o.resetEmitter();let a=o.getState();if(o.resetState(),t&&i){let e="driver-dummy-element"===t.id;s&&s(e?void 0:t,i,o.getHookOpts(a)),l&&l(e?void 0:t,i,o.getHookOpts(a))}n&&n.focus()}let c={isActive:()=>o.getState("isInitialized")||!1,refresh:()=>S(o),drive:(e=0)=>{d(),g(e)},setConfig:o.setConfig,setSteps:e=>{o.resetState(),o.setConfig({...o.getConfig(),steps:e})},getConfig:o.getConfig,getState:o.getState,getActiveIndex:()=>o.getState("activeIndex"),isFirstStep:()=>0===o.getState("activeIndex"),isLastStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:()=>o.getState("activeStep"),getActiveElement:()=>o.getState("activeElement"),getPreviousElement:()=>o.getState("previousElement"),getPreviousStep:()=>o.getState("previousStep"),getNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0===t?void 0:e[t+1]},moveNext:r,movePrevious:s,moveTo:function(e){(o.getConfig("steps")||[])[e]?g(e):v()},hasNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t+1]},hasPreviousStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t-1]},highlight:e=>{d(),w(o,{...e,popover:e.popover?{showButtons:[],showProgress:!1,progressText:"",...e.popover}:void 0})},destroy:()=>{v(!1)}};return o.setDriver(c),c}export{H as driver}; No newline at end of file |
There was a problem hiding this comment.
security (javascript.browser.security.insecure-document-method): User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities
Source: opengrep
| export { | ||
| Ae as driver | ||
| }; | ||
| function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-close-btn")?l?l(t,n,e.getHookOpts()):e.emit("closeClick"):void 0},e=>!r?.description.contains(e)&&!r?.title.contains(e)&&!!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")),e.setState("popover",r);let b=n.popover?.onPopoverRender||e.getConfig("onPopoverRender");b&&b(r,e.getHookOpts()),v(e,t,n),function(e,t,o,i){t.wrapper.querySelectorAll("img").forEach(t=>{if(t.complete)return;let n=()=>v(e,o,i);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",n,{once:!0})})}(e,r,t,n),i(e,x);let k=o([x,...t.classList.contains("driver-dummy-element")?[]:[t]]);k.length>0&&k[0].focus()}function H(t={}){let o=function(e={}){let t=function(){let e={};function t(t={}){e={animate:!0,duration:400,allowClose:!0,allowScroll:!0,overlayClickBehavior:"close",overlayOpacity:.7,smoothScroll:!1,disableActiveInteraction:!1,skipMissingElement:!1,showProgress:!1,stagePadding:10,stageRadius:5,popoverOffset:10,showButtons:["next","previous","close"],disableButtons:[],overlayColor:"#000",...t}}return t(),{getConfig:t=>t?e[t]:e,configure:t}}();t.configure(e);let o,i=function(){let e={};return{getState:t=>t?e[t]:e,setState:(t,o)=>{e[t]=o},resetState:function(){e={}}}}(),n=function(){let e={};return{listen:function(t,o){e[t]=o},emit:function(t){e[t]?.()},reset:function(){e={}}}}();return{getConfig:t.getConfig,setConfig:t.configure,getState:i.getState,setState:i.setState,resetState:i.resetState,listen:n.listen,emit:n.emit,resetEmitter:n.reset,getDriver:()=>o,setDriver:e=>{o=e},getHookOpts:e=>{let n=e||i.getState();return{config:t.getConfig(),state:n,driver:o,index:n.activeIndex}}}}(t);function i(){o.getConfig("allowClose")&&v()}function n(){let e=o.getConfig("overlayClickBehavior");if(o.getConfig("allowClose")&&"close"===e)v();else{if("function"==typeof e){let t=o.getState("__activeStep");return void e(o.getState("__activeElement"),t,o.getHookOpts())}if("nextStep"===e){let e=o.getState("activeStep"),t=o.getState("activeElement"),i=o.getConfig("steps")||[],n=o.getState("activeIndex")===i.length-1,s=e?.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return void s(t,e,o.getHookOpts());let l=e?.popover?.onNextClick||o.getConfig("onNextClick");if(l)return void l(t,e,o.getHookOpts());r()}}}function r(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e+1;t[i]?g(i):v()}function s(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e-1;t[i]?g(i):v()}function l(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t||!(o.getConfig("steps")||[])[e-1])return;let n=t.popover?.onPrevClick||o.getConfig("onPrevClick");if(n)return n(i,t,o.getHookOpts());s()}function a(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t)return;let n=e===(o.getConfig("steps")||[]).length-1,s=t.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return s(i,t,o.getHookOpts());let l=t.popover?.onNextClick||o.getConfig("onNextClick");if(l)return l(i,t,o.getHookOpts());r()}function d(){o.getState("isInitialized")||(o.setState("isInitialized",!0),document.body.classList.add("driver-active",o.getConfig("animate")?"driver-fade":"driver-simple"),o.getConfig("allowScroll")||document.body.classList.add("driver-no-scroll"),document.body.style.setProperty("--driver-animation-duration",`${o.getConfig("duration")||400}ms`),function(e){let t=t=>function(e,t){(e.getConfig("allowKeyboardControl")??1)&&("Escape"===t.key?e.emit("escapePress"):"ArrowRight"===t.key?e.emit("arrowRightPress"):"ArrowLeft"===t.key&&e.emit("arrowLeftPress"))}(e,t),o=t=>x(e,t),i=()=>S(e),n=()=>S(e);e.setState("__events",{onKeyup:t,onKeydown:o,onResize:i,onScroll:n}),window.addEventListener("keyup",t,!1),window.addEventListener("keydown",o,!1),window.addEventListener("resize",i),window.addEventListener("scroll",n)}(o),o.listen("overlayClick",n),o.listen("escapePress",i),o.listen("closeClick",i),o.listen("arrowLeftPress",l),o.listen("arrowRightPress",a))}function p(t){return!(!(t.skipMissingElement??o.getConfig("skipMissingElement"))||!t.element)&&!e(t.element)}function g(e=0){let t=o.getConfig("steps");if(!t)return console.error("No steps to drive through"),void v();if(!t[e])return void v();let i=t[e];if(p(i)){let i=o.getState("activeIndex"),n="number"==typeof i&&e<i?-1:1;return void(t[e+n]?g(e+n):1===n&&v())}o.setState("__activeOnDestroyed",document.activeElement),o.setState("activeIndex",e);let n=t[e+1],r=t[e-1],s=i.popover?.doneBtnText||o.getConfig("doneBtnText")||"Done",l=o.getConfig("allowClose"),a=void 0===i.popover?.showProgress?o.getConfig("showProgress"):i.popover?.showProgress,d=(i.popover?.progressText||o.getConfig("progressText")||"{{current}} of {{total}}").replace("{{current}}",`${e+1}`).replace("{{total}}",`${t.length}`),c=i.popover?.showButtons||o.getConfig("showButtons"),u=["next","previous",...l?["close"]:[]].filter(e=>!c?.length||c.includes(e)),f=i.popover?.onNextClick||o.getConfig("onNextClick"),m=i.popover?.onPrevClick||o.getConfig("onPrevClick"),h=i.popover?.onCloseClick||o.getConfig("onCloseClick");w(o,{...i,popover:{showButtons:u,nextBtnText:n?void 0:s,disableButtons:[...r?[]:["previous"]],showProgress:a,onNextClick:f||(()=>{n?g(e+1):v()}),onPrevClick:m||(()=>{g(e-1)}),onCloseClick:h||(()=>{v()}),...i?.popover||{},progressText:d}})}function v(e=!0){let t=o.getState("__activeElement"),i=o.getState("__activeStep"),n=o.getState("__activeOnDestroyed"),r=o.getConfig("onDestroyStarted");if(e&&r)return void r(t&&"driver-dummy-element"!==t?.id?t:void 0,i,o.getHookOpts());let s=i?.onDeselected||o.getConfig("onDeselected"),l=o.getConfig("onDestroyed");document.body.classList.remove("driver-active","driver-fade","driver-simple","driver-no-scroll"),document.body.style.removeProperty("--driver-animation-duration"),function(e){let t=e.getState("__events");t&&(window.removeEventListener("keyup",t.onKeyup),window.removeEventListener("keydown",t.onKeydown),window.removeEventListener("resize",t.onResize),window.removeEventListener("scroll",t.onScroll))}(o),function(e){let t=e.getState("popover");t&&(E(t.wrapper),t.wrapper.parentElement?.removeChild(t.wrapper))}(o),document.getElementById("driver-dummy-element")?.remove(),document.querySelectorAll(".driver-active-element").forEach(e=>{let t=e.parentElement;t&&t!==document.body&&t.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll"),e.classList.remove("driver-active-element","driver-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}),function(e){let t=e.getState("__overlaySvg");t&&(E(t),t.remove())}(o),o.resetEmitter();let a=o.getState();if(o.resetState(),t&&i){let e="driver-dummy-element"===t.id;s&&s(e?void 0:t,i,o.getHookOpts(a)),l&&l(e?void 0:t,i,o.getHookOpts(a))}n&&n.focus()}let c={isActive:()=>o.getState("isInitialized")||!1,refresh:()=>S(o),drive:(e=0)=>{d(),g(e)},setConfig:o.setConfig,setSteps:e=>{o.resetState(),o.setConfig({...o.getConfig(),steps:e})},getConfig:o.getConfig,getState:o.getState,getActiveIndex:()=>o.getState("activeIndex"),isFirstStep:()=>0===o.getState("activeIndex"),isLastStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:()=>o.getState("activeStep"),getActiveElement:()=>o.getState("activeElement"),getPreviousElement:()=>o.getState("previousElement"),getPreviousStep:()=>o.getState("previousStep"),getNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0===t?void 0:e[t+1]},moveNext:r,movePrevious:s,moveTo:function(e){(o.getConfig("steps")||[])[e]?g(e):v()},hasNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t+1]},hasPreviousStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t-1]},highlight:e=>{d(),w(o,{...e,popover:e.popover?{showButtons:[],showProgress:!1,progressText:"",...e.popover}:void 0})},destroy:()=>{v(!1)}};return o.setDriver(c),c}export{H as driver}; No newline at end of file |
There was a problem hiding this comment.
security (javascript.browser.security.insecure-innerhtml): User controlled data in a r.nextButton.innerHTML is an anti-pattern that can lead to XSS vulnerabilities
Source: opengrep
| export { | ||
| Ae as driver | ||
| }; | ||
| function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-close-btn")?l?l(t,n,e.getHookOpts()):e.emit("closeClick"):void 0},e=>!r?.description.contains(e)&&!r?.title.contains(e)&&!!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")),e.setState("popover",r);let b=n.popover?.onPopoverRender||e.getConfig("onPopoverRender");b&&b(r,e.getHookOpts()),v(e,t,n),function(e,t,o,i){t.wrapper.querySelectorAll("img").forEach(t=>{if(t.complete)return;let n=()=>v(e,o,i);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",n,{once:!0})})}(e,r,t,n),i(e,x);let k=o([x,...t.classList.contains("driver-dummy-element")?[]:[t]]);k.length>0&&k[0].focus()}function H(t={}){let o=function(e={}){let t=function(){let e={};function t(t={}){e={animate:!0,duration:400,allowClose:!0,allowScroll:!0,overlayClickBehavior:"close",overlayOpacity:.7,smoothScroll:!1,disableActiveInteraction:!1,skipMissingElement:!1,showProgress:!1,stagePadding:10,stageRadius:5,popoverOffset:10,showButtons:["next","previous","close"],disableButtons:[],overlayColor:"#000",...t}}return t(),{getConfig:t=>t?e[t]:e,configure:t}}();t.configure(e);let o,i=function(){let e={};return{getState:t=>t?e[t]:e,setState:(t,o)=>{e[t]=o},resetState:function(){e={}}}}(),n=function(){let e={};return{listen:function(t,o){e[t]=o},emit:function(t){e[t]?.()},reset:function(){e={}}}}();return{getConfig:t.getConfig,setConfig:t.configure,getState:i.getState,setState:i.setState,resetState:i.resetState,listen:n.listen,emit:n.emit,resetEmitter:n.reset,getDriver:()=>o,setDriver:e=>{o=e},getHookOpts:e=>{let n=e||i.getState();return{config:t.getConfig(),state:n,driver:o,index:n.activeIndex}}}}(t);function i(){o.getConfig("allowClose")&&v()}function n(){let e=o.getConfig("overlayClickBehavior");if(o.getConfig("allowClose")&&"close"===e)v();else{if("function"==typeof e){let t=o.getState("__activeStep");return void e(o.getState("__activeElement"),t,o.getHookOpts())}if("nextStep"===e){let e=o.getState("activeStep"),t=o.getState("activeElement"),i=o.getConfig("steps")||[],n=o.getState("activeIndex")===i.length-1,s=e?.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return void s(t,e,o.getHookOpts());let l=e?.popover?.onNextClick||o.getConfig("onNextClick");if(l)return void l(t,e,o.getHookOpts());r()}}}function r(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e+1;t[i]?g(i):v()}function s(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e-1;t[i]?g(i):v()}function l(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t||!(o.getConfig("steps")||[])[e-1])return;let n=t.popover?.onPrevClick||o.getConfig("onPrevClick");if(n)return n(i,t,o.getHookOpts());s()}function a(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t)return;let n=e===(o.getConfig("steps")||[]).length-1,s=t.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return s(i,t,o.getHookOpts());let l=t.popover?.onNextClick||o.getConfig("onNextClick");if(l)return l(i,t,o.getHookOpts());r()}function d(){o.getState("isInitialized")||(o.setState("isInitialized",!0),document.body.classList.add("driver-active",o.getConfig("animate")?"driver-fade":"driver-simple"),o.getConfig("allowScroll")||document.body.classList.add("driver-no-scroll"),document.body.style.setProperty("--driver-animation-duration",`${o.getConfig("duration")||400}ms`),function(e){let t=t=>function(e,t){(e.getConfig("allowKeyboardControl")??1)&&("Escape"===t.key?e.emit("escapePress"):"ArrowRight"===t.key?e.emit("arrowRightPress"):"ArrowLeft"===t.key&&e.emit("arrowLeftPress"))}(e,t),o=t=>x(e,t),i=()=>S(e),n=()=>S(e);e.setState("__events",{onKeyup:t,onKeydown:o,onResize:i,onScroll:n}),window.addEventListener("keyup",t,!1),window.addEventListener("keydown",o,!1),window.addEventListener("resize",i),window.addEventListener("scroll",n)}(o),o.listen("overlayClick",n),o.listen("escapePress",i),o.listen("closeClick",i),o.listen("arrowLeftPress",l),o.listen("arrowRightPress",a))}function p(t){return!(!(t.skipMissingElement??o.getConfig("skipMissingElement"))||!t.element)&&!e(t.element)}function g(e=0){let t=o.getConfig("steps");if(!t)return console.error("No steps to drive through"),void v();if(!t[e])return void v();let i=t[e];if(p(i)){let i=o.getState("activeIndex"),n="number"==typeof i&&e<i?-1:1;return void(t[e+n]?g(e+n):1===n&&v())}o.setState("__activeOnDestroyed",document.activeElement),o.setState("activeIndex",e);let n=t[e+1],r=t[e-1],s=i.popover?.doneBtnText||o.getConfig("doneBtnText")||"Done",l=o.getConfig("allowClose"),a=void 0===i.popover?.showProgress?o.getConfig("showProgress"):i.popover?.showProgress,d=(i.popover?.progressText||o.getConfig("progressText")||"{{current}} of {{total}}").replace("{{current}}",`${e+1}`).replace("{{total}}",`${t.length}`),c=i.popover?.showButtons||o.getConfig("showButtons"),u=["next","previous",...l?["close"]:[]].filter(e=>!c?.length||c.includes(e)),f=i.popover?.onNextClick||o.getConfig("onNextClick"),m=i.popover?.onPrevClick||o.getConfig("onPrevClick"),h=i.popover?.onCloseClick||o.getConfig("onCloseClick");w(o,{...i,popover:{showButtons:u,nextBtnText:n?void 0:s,disableButtons:[...r?[]:["previous"]],showProgress:a,onNextClick:f||(()=>{n?g(e+1):v()}),onPrevClick:m||(()=>{g(e-1)}),onCloseClick:h||(()=>{v()}),...i?.popover||{},progressText:d}})}function v(e=!0){let t=o.getState("__activeElement"),i=o.getState("__activeStep"),n=o.getState("__activeOnDestroyed"),r=o.getConfig("onDestroyStarted");if(e&&r)return void r(t&&"driver-dummy-element"!==t?.id?t:void 0,i,o.getHookOpts());let s=i?.onDeselected||o.getConfig("onDeselected"),l=o.getConfig("onDestroyed");document.body.classList.remove("driver-active","driver-fade","driver-simple","driver-no-scroll"),document.body.style.removeProperty("--driver-animation-duration"),function(e){let t=e.getState("__events");t&&(window.removeEventListener("keyup",t.onKeyup),window.removeEventListener("keydown",t.onKeydown),window.removeEventListener("resize",t.onResize),window.removeEventListener("scroll",t.onScroll))}(o),function(e){let t=e.getState("popover");t&&(E(t.wrapper),t.wrapper.parentElement?.removeChild(t.wrapper))}(o),document.getElementById("driver-dummy-element")?.remove(),document.querySelectorAll(".driver-active-element").forEach(e=>{let t=e.parentElement;t&&t!==document.body&&t.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll"),e.classList.remove("driver-active-element","driver-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}),function(e){let t=e.getState("__overlaySvg");t&&(E(t),t.remove())}(o),o.resetEmitter();let a=o.getState();if(o.resetState(),t&&i){let e="driver-dummy-element"===t.id;s&&s(e?void 0:t,i,o.getHookOpts(a)),l&&l(e?void 0:t,i,o.getHookOpts(a))}n&&n.focus()}let c={isActive:()=>o.getState("isInitialized")||!1,refresh:()=>S(o),drive:(e=0)=>{d(),g(e)},setConfig:o.setConfig,setSteps:e=>{o.resetState(),o.setConfig({...o.getConfig(),steps:e})},getConfig:o.getConfig,getState:o.getState,getActiveIndex:()=>o.getState("activeIndex"),isFirstStep:()=>0===o.getState("activeIndex"),isLastStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:()=>o.getState("activeStep"),getActiveElement:()=>o.getState("activeElement"),getPreviousElement:()=>o.getState("previousElement"),getPreviousStep:()=>o.getState("previousStep"),getNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0===t?void 0:e[t+1]},moveNext:r,movePrevious:s,moveTo:function(e){(o.getConfig("steps")||[])[e]?g(e):v()},hasNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t+1]},hasPreviousStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t-1]},highlight:e=>{d(),w(o,{...e,popover:e.popover?{showButtons:[],showProgress:!1,progressText:"",...e.popover}:void 0})},destroy:()=>{v(!1)}};return o.setDriver(c),c}export{H as driver}; No newline at end of file |
There was a problem hiding this comment.
security (javascript.browser.security.insecure-innerhtml): User controlled data in a r.previousButton.innerHTML is an anti-pattern that can lead to XSS vulnerabilities
Source: opengrep
| export { | ||
| Ae as driver | ||
| }; | ||
| function e(e){return"function"==typeof e?e():"string"==typeof e?document.querySelector(e):e}function t(e,t,o,i){return(e/=i/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t}function o(e){let t='a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';return e.flatMap(e=>{let o=e.matches(t),i=Array.from(e.querySelectorAll(t));return[...o?[e]:[],...i]}).filter(e=>"none"!==getComputedStyle(e).pointerEvents&&function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}(e))}function i(e,t){if(!t||function(e){let t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&t.right<=(window.innerWidth||document.documentElement.clientWidth)}(t))return;let o=e.getConfig("smoothScroll"),i=t.offsetHeight>window.innerHeight;t.scrollIntoView({behavior:!o||n(t)?"auto":"smooth",inline:"center",block:i?"start":"center"})}function n(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function r(e,o,i,n,r){let s=e.getState("__activeStagePosition"),l=s||n.getBoundingClientRect(),d=r.getBoundingClientRect();s={x:t(o,l.x,d.x-l.x,i),y:t(o,l.y,d.y-l.y,i),width:t(o,l.width,d.width-l.width,i),height:t(o,l.height,d.height-l.height,i)},a(e,s),e.setState("__activeStagePosition",s)}function s(e,t){if(!t)return;let o=t.getBoundingClientRect(),i={x:o.x,y:o.y,width:o.width,height:o.height};e.setState("__activeStagePosition",i),a(e,i)}function l(e,t){let o=function(e,t){let o=window.innerWidth,i=window.innerHeight,n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.classList.add("driver-overlay","driver-overlay-animated"),n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.setAttribute("xmlSpace","preserve"),n.setAttribute("xmlnsXlink","http://www.w3.org/1999/xlink"),n.setAttribute("version","1.1"),n.setAttribute("preserveAspectRatio","xMinYMin slice"),n.style.fillRule="evenodd",n.style.clipRule="evenodd",n.style.strokeLinejoin="round",n.style.strokeMiterlimit="2",n.style.zIndex="10000",n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="100%",n.style.height="100%";let r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d",d(e,t)),r.style.fill=e.getConfig("overlayColor")||"rgb(0,0,0)",r.style.opacity=`${e.getConfig("overlayOpacity")}`,r.style.pointerEvents="auto",r.style.cursor="auto",n.appendChild(r),n}(e,t);document.body.appendChild(o),_(o,t=>{"path"===t.target.tagName&&e.emit("overlayClick")}),e.setState("__overlaySvg",o)}function a(e,t){let o=e.getState("__overlaySvg");if(!o)return void l(e,t);let i=o.firstElementChild;if("path"!==i?.tagName)throw Error("no path element found in stage svg");i.setAttribute("d",d(e,t))}function d(e,t){let o=window.innerWidth,i=window.innerHeight,n=e.getConfig("stagePadding")||0,r=e.getConfig("stageRadius")||0,s=t.width+2*n,l=t.height+2*n,a=Math.min(r,s/2,l/2),d=Math.floor(Math.max(a,0)),p=s-2*d,g=l-2*d;return`M${o},0L0,0L0,${i}L${o},${i}L${o},0Z\n M${t.x-n+d},${t.y-n} h${p} a${d},${d} 0 0 1 ${d},${d} v${g} a${d},${d} 0 0 1 -${d},${d} h-${p} a${d},${d} 0 0 1 -${d},-${d} v-${g} a${d},${d} 0 0 1 ${d},-${d} z`}function p(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.top-n,window.innerHeight-i.realHeight-r.width),r.width):"end"===e?Math.max(Math.min(o.top-i?.realHeight+o.height+n,window.innerHeight-i?.realHeight-r.width),r.width):"center"===e?Math.max(Math.min(o.top+o.height/2-i?.realHeight/2,window.innerHeight-i?.realHeight-r.width),r.width):0}function g(e,t){let{elementDimensions:o,popoverDimensions:i,popoverPadding:n,popoverArrowDimensions:r}=t;return"start"===e?Math.max(Math.min(o.left-n,window.innerWidth-i.realWidth-r.width),r.width):"end"===e?Math.max(Math.min(o.left-i?.realWidth+o.width+n,window.innerWidth-i?.realWidth-r.width),r.width):"center"===e?Math.max(Math.min(o.left+o.width/2-i?.realWidth/2,window.innerWidth-i?.realWidth-r.width),r.width):0}function v(e,t,o){let i=e.getState("popover");if(!i)return;let{align:n="start",side:r="bottom"}=o?.popover||{},s=n,l="driver-dummy-element"===t.id?"over":r,a=e.getConfig("stagePadding")||0,d=function(e){let t=e.getState("popover");if(!t?.wrapper)return;let o=t.wrapper.getBoundingClientRect(),i=e.getConfig("stagePadding")||0,n=e.getConfig("popoverOffset")||0;return{width:o.width+i+n,height:o.height+i+n,realWidth:o.width,realHeight:o.height}}(e),v=i.arrow.getBoundingClientRect(),c=t.getBoundingClientRect(),u=c.top-d.height,f=u>=0,m=window.innerHeight-(c.bottom+d.height),w=m>=0,y=c.left-d.width,C=y>=0,S=window.innerWidth-(c.right+d.width),x=S>=0,b=!(f||w||C||x),k=l;if("top"===l&&f?x=C=w=!1:"bottom"===l&&w?x=C=f=!1:"left"===l&&C?x=f=w=!1:"right"===l&&x&&(C=f=w=!1),"over"===l){let e=window.innerWidth/2-d.realWidth/2,t=window.innerHeight/2-d.realHeight/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto"}else if(b){let e=window.innerWidth/2-d?.realWidth/2;i.wrapper.style.left=`${e}px`,i.wrapper.style.right="auto",i.wrapper.style.bottom="10px",i.wrapper.style.top="auto"}else if(C){let e=Math.min(y,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="left"}else if(x){let e=Math.min(S,window.innerWidth-d?.realWidth-v.width),t=p(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.right=`${e}px`,i.wrapper.style.top=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.left="auto",k="right"}else if(f){let e=Math.min(u,window.innerHeight-d.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.top=`${e}px`,i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom="auto",i.wrapper.style.right="auto",k="top"}else if(w){let e=Math.min(m,window.innerHeight-d?.realHeight-v.width),t=g(s,{elementDimensions:c,popoverDimensions:d,popoverPadding:a,popoverArrowDimensions:v});i.wrapper.style.left=`${t}px`,i.wrapper.style.bottom=`${e}px`,i.wrapper.style.top="auto",i.wrapper.style.right="auto",k="bottom"}h(e,b?"over":k,s,t),[...i.wrapper.classList].filter(e=>e.startsWith("driver-popover-side-")||e.startsWith("driver-popover-align-")).forEach(e=>i.wrapper.classList.remove(e)),i.wrapper.classList.add(`driver-popover-side-${k}`),i.wrapper.classList.add(`driver-popover-align-${s}`)}var c=10,u=15;function f(e,t,o,i,n){let r=i-o;return e<=o&&t>=i?"start"===n?20:"end"===n?r-u-c/2:r/2:(Math.min(Math.max(e,o),i)+Math.min(Math.max(t,o),i))/2-o}function m(e,t){let o=u,i=t-u-c;if(i<o)return Math.max(0,(t-c)/2);let n=e-c/2;return Math.min(Math.max(n,o),i)}function h(e,t,o,i){let n=e.getState("popover");if(!n)return;let r=n.arrow;if(r.className="driver-popover-arrow",r.style.top="",r.style.right="",r.style.bottom="",r.style.left="","over"===t)return void r.classList.add("driver-popover-arrow-none");let s=i.getBoundingClientRect(),l=n.wrapper.getBoundingClientRect(),a=function(e,t,o){return"left"===e||"right"===e?t.bottom>o.top&&t.top<o.bottom?e:t.bottom<=o.top?"bottom":"top":t.right>o.left&&t.left<o.right?e:t.right<=o.left?"right":"left"}(t,s,l);if(r.classList.add(`driver-popover-arrow-side-${a}`),"left"===a||"right"===a){let e=f(s.top,s.bottom,l.top,l.bottom,o);r.style.top=`${m(e,l.height)}px`}else{let e=f(s.left,s.right,l.left,l.right,o);r.style.left=`${m(e,l.width)}px`}}function w(t,o){let i=e(o.element);i||(i=function(){let e=document.getElementById("driver-dummy-element");if(e)return e;let t=document.createElement("div");return t.id="driver-dummy-element",t.style.width="0",t.style.height="0",t.style.pointerEvents="none",t.style.opacity="0",t.style.position="fixed",t.style.top="50%",t.style.left="50%",document.body.appendChild(t),t}()),C(t,i,o)}function y(e){let t=e.getState("__activeElement"),o=e.getState("__activeStep");t&&(s(e,t),function(e){let t=e.getState("__activeStagePosition"),o=e.getState("__overlaySvg");if(!t)return;if(!o)return void console.warn("No stage svg found.");let i=window.innerWidth,n=window.innerHeight;o.setAttribute("viewBox",`0 0 ${i} ${n}`)}(e),v(e,t,o))}function C(e,t,o){let n=e.getConfig("duration")||400,l=Date.now(),a=e.getState("__activeStep"),d=e.getState("__activeElement")||t,p=!d||d===t,g="driver-dummy-element"===t.id,v="driver-dummy-element"===d.id,c=e.getConfig("animate"),u=o.onHighlightStarted||e.getConfig("onHighlightStarted"),f=o?.onHighlighted||e.getConfig("onHighlighted"),m=a?.onDeselected||e.getConfig("onDeselected"),h=e.getHookOpts();!p&&m&&m(v?void 0:d,a,h),u&&u(g?void 0:t,o,h);let w=!p&&c,y=!1;(function(e){let t=e.getState("popover");t&&(t.wrapper.style.display="none")})(e),e.setState("previousStep",a),e.setState("previousElement",d),e.setState("activeStep",o),e.setState("activeElement",t);let C=()=>{if(e.getState("__transitionCallback")!==C)return;let i=Date.now()-l,p=n-i<=n/2;o.popover&&p&&!y&&w&&(L(e,t,o),y=!0),e.getConfig("animate")&&i<n?r(e,i,n,d,t):(s(e,t),f&&f(g?void 0:t,o,e.getHookOpts()),e.setState("__transitionCallback",void 0),e.setState("__previousStep",a),e.setState("__previousElement",d),e.setState("__activeStep",o),e.setState("__activeElement",t)),window.requestAnimationFrame(C)};e.setState("__transitionCallback",C),window.requestAnimationFrame(C),i(e,t),!w&&o.popover&&L(e,t,o),document.querySelectorAll(".driver-active-element-parent").forEach(e=>{e.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll")}),d.classList.remove("driver-active-element","driver-no-interaction"),d.removeAttribute("aria-haspopup"),d.removeAttribute("aria-expanded"),d.removeAttribute("aria-controls"),(o.disableActiveInteraction??e.getConfig("disableActiveInteraction"))&&t.classList.add("driver-no-interaction");let S=t.parentElement;S&&S!==document.body&&(S.classList.add("driver-active-element-parent"),function(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>"auto"===e||"scroll"===e)}(S)&&S.classList.add("driver-active-element-parent-no-scroll")),t.classList.add("driver-active-element"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded","true"),t.setAttribute("aria-controls","driver-popover-content")}function S(e){let t=e.getState("__resizeTimeout");t&&window.cancelAnimationFrame(t),e.setState("__resizeTimeout",window.requestAnimationFrame(()=>y(e)))}function x(e,t){if(!e.getState("isInitialized")||"Tab"!==t.key&&9!==t.keyCode)return;let i=e.getState("__activeElement"),n=e.getState("popover")?.wrapper,r=o([...n?[n]:[],...i?[i]:[]]),s=r[0],l=r[r.length-1];t.preventDefault(),t.shiftKey?(r[r.indexOf(document.activeElement)-1]||l)?.focus():(r[r.indexOf(document.activeElement)+1]||s)?.focus()}var b=["pointerdown","mousedown","pointerup","mouseup","click"],k=new WeakMap;function _(e,t,o){E(e);let i=i=>{let n=i.target;e.contains(n)&&((!o||o(n))&&(i.preventDefault(),i.stopPropagation(),i.stopImmediatePropagation()),"click"===i.type&&t?.(i))};for(let e of b)document.addEventListener(e,i,!0);k.set(e,i)}function E(e){let t=k.get(e);if(t){for(let e of b)document.removeEventListener(e,t,!0);k.delete(e)}}function L(e,t,n){let r=e.getState("popover");r&&(E(r.wrapper),r.wrapper.remove()),r=function(){let e=document.createElement("div");e.classList.add("driver-popover");let t=document.createElement("div");t.classList.add("driver-popover-arrow");let o=document.createElement("header");o.id="driver-popover-title",o.classList.add("driver-popover-title"),o.style.display="none",o.innerText="Popover Title";let i=document.createElement("div");i.id="driver-popover-description",i.classList.add("driver-popover-description"),i.style.display="none",i.innerText="Popover description is here";let n=document.createElement("button");n.type="button",n.classList.add("driver-popover-close-btn"),n.setAttribute("aria-label","Close"),n.innerHTML="×";let r=document.createElement("footer");r.classList.add("driver-popover-footer");let s=document.createElement("span");s.classList.add("driver-popover-progress-text"),s.innerText="";let l=document.createElement("span");l.classList.add("driver-popover-navigation-btns");let a=document.createElement("button");a.type="button",a.classList.add("driver-popover-prev-btn","driver-popover-footer-btn"),a.innerHTML="Previous";let d=document.createElement("button");return d.type="button",d.classList.add("driver-popover-next-btn","driver-popover-footer-btn"),d.innerHTML="Next",l.appendChild(a),l.appendChild(d),r.appendChild(s),r.appendChild(l),e.appendChild(n),e.appendChild(t),e.appendChild(o),e.appendChild(i),e.appendChild(r),{wrapper:e,arrow:t,title:o,description:i,footer:r,previousButton:a,nextButton:d,closeButton:n,footerButtons:l,progress:s}}(),document.body.appendChild(r.wrapper);let{title:s,description:l,showButtons:a,disableButtons:d,showProgress:p,nextBtnText:g=e.getConfig("nextBtnText")||"Next",prevBtnText:c=e.getConfig("prevBtnText")||"Previous",progressText:u=e.getConfig("progressText")||"{current} of {total}"}=n.popover||{};r.nextButton.innerHTML=g,r.previousButton.innerHTML=c,r.progress.innerHTML=u;let f=e.getConfig("steps")||[],m=e.getState("activeIndex"),h=void 0!==m&&m===f.length-1;h&&r.nextButton.classList.add("driver-popover-done-btn"),s?(r.title.innerHTML=s,r.title.style.display="block"):r.title.style.display="none",l?(r.description.innerHTML=l,r.description.style.display="block"):r.description.style.display="none";let w=a||e.getConfig("showButtons"),y=p||e.getConfig("showProgress")||!1,C=w?.includes("next")||w?.includes("previous")||y;r.closeButton.style.display=w.includes("close")?"block":"none",C?(r.footer.style.display="flex",r.progress.style.display=y?"block":"none",r.nextButton.style.display=w.includes("next")?"block":"none",r.previousButton.style.display=w.includes("previous")?"block":"none"):r.footer.style.display="none";let S=d||e.getConfig("disableButtons")||[];S?.includes("next")&&(r.nextButton.disabled=!0,r.nextButton.classList.add("driver-popover-btn-disabled")),S?.includes("previous")&&(r.previousButton.disabled=!0,r.previousButton.classList.add("driver-popover-btn-disabled")),S?.includes("close")&&(r.closeButton.disabled=!0,r.closeButton.classList.add("driver-popover-btn-disabled"));let x=r.wrapper;x.style.display="block",x.style.left="",x.style.top="",x.style.bottom="",x.style.right="",x.id="driver-popover-content",x.setAttribute("role","dialog"),x.setAttribute("aria-labelledby","driver-popover-title"),x.setAttribute("aria-describedby","driver-popover-description"),r.arrow.className="driver-popover-arrow",x.className=`driver-popover ${n.popover?.popoverClass||e.getConfig("popoverClass")||""}`.trim(),_(r.wrapper,o=>{let i=o.target,r=n.popover?.onNextClick||e.getConfig("onNextClick"),s=n.popover?.onPrevClick||e.getConfig("onPrevClick"),l=n.popover?.onCloseClick||e.getConfig("onCloseClick"),a=n.popover?.onDoneClick||e.getConfig("onDoneClick");return i.closest(".driver-popover-next-btn")?h&&a?a(t,n,e.getHookOpts()):r?r(t,n,e.getHookOpts()):e.emit("nextClick"):i.closest(".driver-popover-prev-btn")?s?s(t,n,e.getHookOpts()):e.emit("prevClick"):i.closest(".driver-popover-close-btn")?l?l(t,n,e.getHookOpts()):e.emit("closeClick"):void 0},e=>!r?.description.contains(e)&&!r?.title.contains(e)&&!!e.closest(".driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn")),e.setState("popover",r);let b=n.popover?.onPopoverRender||e.getConfig("onPopoverRender");b&&b(r,e.getHookOpts()),v(e,t,n),function(e,t,o,i){t.wrapper.querySelectorAll("img").forEach(t=>{if(t.complete)return;let n=()=>v(e,o,i);t.addEventListener("load",n,{once:!0}),t.addEventListener("error",n,{once:!0})})}(e,r,t,n),i(e,x);let k=o([x,...t.classList.contains("driver-dummy-element")?[]:[t]]);k.length>0&&k[0].focus()}function H(t={}){let o=function(e={}){let t=function(){let e={};function t(t={}){e={animate:!0,duration:400,allowClose:!0,allowScroll:!0,overlayClickBehavior:"close",overlayOpacity:.7,smoothScroll:!1,disableActiveInteraction:!1,skipMissingElement:!1,showProgress:!1,stagePadding:10,stageRadius:5,popoverOffset:10,showButtons:["next","previous","close"],disableButtons:[],overlayColor:"#000",...t}}return t(),{getConfig:t=>t?e[t]:e,configure:t}}();t.configure(e);let o,i=function(){let e={};return{getState:t=>t?e[t]:e,setState:(t,o)=>{e[t]=o},resetState:function(){e={}}}}(),n=function(){let e={};return{listen:function(t,o){e[t]=o},emit:function(t){e[t]?.()},reset:function(){e={}}}}();return{getConfig:t.getConfig,setConfig:t.configure,getState:i.getState,setState:i.setState,resetState:i.resetState,listen:n.listen,emit:n.emit,resetEmitter:n.reset,getDriver:()=>o,setDriver:e=>{o=e},getHookOpts:e=>{let n=e||i.getState();return{config:t.getConfig(),state:n,driver:o,index:n.activeIndex}}}}(t);function i(){o.getConfig("allowClose")&&v()}function n(){let e=o.getConfig("overlayClickBehavior");if(o.getConfig("allowClose")&&"close"===e)v();else{if("function"==typeof e){let t=o.getState("__activeStep");return void e(o.getState("__activeElement"),t,o.getHookOpts())}if("nextStep"===e){let e=o.getState("activeStep"),t=o.getState("activeElement"),i=o.getConfig("steps")||[],n=o.getState("activeIndex")===i.length-1,s=e?.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return void s(t,e,o.getHookOpts());let l=e?.popover?.onNextClick||o.getConfig("onNextClick");if(l)return void l(t,e,o.getHookOpts());r()}}}function r(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e+1;t[i]?g(i):v()}function s(){let e=o.getState("activeIndex"),t=o.getConfig("steps")||[];if(void 0===e)return;let i=e-1;t[i]?g(i):v()}function l(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t||!(o.getConfig("steps")||[])[e-1])return;let n=t.popover?.onPrevClick||o.getConfig("onPrevClick");if(n)return n(i,t,o.getHookOpts());s()}function a(){if(o.getState("__transitionCallback"))return;let e=o.getState("activeIndex"),t=o.getState("__activeStep"),i=o.getState("__activeElement");if(void 0===e||void 0===t)return;let n=e===(o.getConfig("steps")||[]).length-1,s=t.popover?.onDoneClick||o.getConfig("onDoneClick");if(n&&s)return s(i,t,o.getHookOpts());let l=t.popover?.onNextClick||o.getConfig("onNextClick");if(l)return l(i,t,o.getHookOpts());r()}function d(){o.getState("isInitialized")||(o.setState("isInitialized",!0),document.body.classList.add("driver-active",o.getConfig("animate")?"driver-fade":"driver-simple"),o.getConfig("allowScroll")||document.body.classList.add("driver-no-scroll"),document.body.style.setProperty("--driver-animation-duration",`${o.getConfig("duration")||400}ms`),function(e){let t=t=>function(e,t){(e.getConfig("allowKeyboardControl")??1)&&("Escape"===t.key?e.emit("escapePress"):"ArrowRight"===t.key?e.emit("arrowRightPress"):"ArrowLeft"===t.key&&e.emit("arrowLeftPress"))}(e,t),o=t=>x(e,t),i=()=>S(e),n=()=>S(e);e.setState("__events",{onKeyup:t,onKeydown:o,onResize:i,onScroll:n}),window.addEventListener("keyup",t,!1),window.addEventListener("keydown",o,!1),window.addEventListener("resize",i),window.addEventListener("scroll",n)}(o),o.listen("overlayClick",n),o.listen("escapePress",i),o.listen("closeClick",i),o.listen("arrowLeftPress",l),o.listen("arrowRightPress",a))}function p(t){return!(!(t.skipMissingElement??o.getConfig("skipMissingElement"))||!t.element)&&!e(t.element)}function g(e=0){let t=o.getConfig("steps");if(!t)return console.error("No steps to drive through"),void v();if(!t[e])return void v();let i=t[e];if(p(i)){let i=o.getState("activeIndex"),n="number"==typeof i&&e<i?-1:1;return void(t[e+n]?g(e+n):1===n&&v())}o.setState("__activeOnDestroyed",document.activeElement),o.setState("activeIndex",e);let n=t[e+1],r=t[e-1],s=i.popover?.doneBtnText||o.getConfig("doneBtnText")||"Done",l=o.getConfig("allowClose"),a=void 0===i.popover?.showProgress?o.getConfig("showProgress"):i.popover?.showProgress,d=(i.popover?.progressText||o.getConfig("progressText")||"{{current}} of {{total}}").replace("{{current}}",`${e+1}`).replace("{{total}}",`${t.length}`),c=i.popover?.showButtons||o.getConfig("showButtons"),u=["next","previous",...l?["close"]:[]].filter(e=>!c?.length||c.includes(e)),f=i.popover?.onNextClick||o.getConfig("onNextClick"),m=i.popover?.onPrevClick||o.getConfig("onPrevClick"),h=i.popover?.onCloseClick||o.getConfig("onCloseClick");w(o,{...i,popover:{showButtons:u,nextBtnText:n?void 0:s,disableButtons:[...r?[]:["previous"]],showProgress:a,onNextClick:f||(()=>{n?g(e+1):v()}),onPrevClick:m||(()=>{g(e-1)}),onCloseClick:h||(()=>{v()}),...i?.popover||{},progressText:d}})}function v(e=!0){let t=o.getState("__activeElement"),i=o.getState("__activeStep"),n=o.getState("__activeOnDestroyed"),r=o.getConfig("onDestroyStarted");if(e&&r)return void r(t&&"driver-dummy-element"!==t?.id?t:void 0,i,o.getHookOpts());let s=i?.onDeselected||o.getConfig("onDeselected"),l=o.getConfig("onDestroyed");document.body.classList.remove("driver-active","driver-fade","driver-simple","driver-no-scroll"),document.body.style.removeProperty("--driver-animation-duration"),function(e){let t=e.getState("__events");t&&(window.removeEventListener("keyup",t.onKeyup),window.removeEventListener("keydown",t.onKeydown),window.removeEventListener("resize",t.onResize),window.removeEventListener("scroll",t.onScroll))}(o),function(e){let t=e.getState("popover");t&&(E(t.wrapper),t.wrapper.parentElement?.removeChild(t.wrapper))}(o),document.getElementById("driver-dummy-element")?.remove(),document.querySelectorAll(".driver-active-element").forEach(e=>{let t=e.parentElement;t&&t!==document.body&&t.classList.remove("driver-active-element-parent","driver-active-element-parent-no-scroll"),e.classList.remove("driver-active-element","driver-no-interaction"),e.removeAttribute("aria-haspopup"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-controls")}),function(e){let t=e.getState("__overlaySvg");t&&(E(t),t.remove())}(o),o.resetEmitter();let a=o.getState();if(o.resetState(),t&&i){let e="driver-dummy-element"===t.id;s&&s(e?void 0:t,i,o.getHookOpts(a)),l&&l(e?void 0:t,i,o.getHookOpts(a))}n&&n.focus()}let c={isActive:()=>o.getState("isInitialized")||!1,refresh:()=>S(o),drive:(e=0)=>{d(),g(e)},setConfig:o.setConfig,setSteps:e=>{o.resetState(),o.setConfig({...o.getConfig(),steps:e})},getConfig:o.getConfig,getState:o.getState,getActiveIndex:()=>o.getState("activeIndex"),isFirstStep:()=>0===o.getState("activeIndex"),isLastStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&t===e.length-1},getActiveStep:()=>o.getState("activeStep"),getActiveElement:()=>o.getState("activeElement"),getPreviousElement:()=>o.getState("previousElement"),getPreviousStep:()=>o.getState("previousStep"),getNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0===t?void 0:e[t+1]},moveNext:r,movePrevious:s,moveTo:function(e){(o.getConfig("steps")||[])[e]?g(e):v()},hasNextStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t+1]},hasPreviousStep:()=>{let e=o.getConfig("steps")||[],t=o.getState("activeIndex");return void 0!==t&&!!e[t-1]},highlight:e=>{d(),w(o,{...e,popover:e.popover?{showButtons:[],showProgress:!1,progressText:"",...e.popover}:void 0})},destroy:()=>{v(!1)}};return o.setDriver(c),c}export{H as driver}; No newline at end of file |
There was a problem hiding this comment.
security (javascript.browser.security.insecure-innerhtml): User controlled data in a r.progress.innerHTML is an anti-pattern that can lead to XSS vulnerabilities
Source: opengrep
Link issues
fixes #1069
Summary By Copilot
Regression?
Risk
Verification
Packaging changes reviewed?
☑️ Self Check before Merge
Summary by Sourcery
Update embedded Driver.js library and configuration to align with the newer 10.0.2 capabilities and styling.
New Features:
Enhancements: