feat(DriverJs): bump version 10.0.3 - #1076
Conversation
Reviewer's guide (collapsed on small PRs)Reviewer's GuideUpdates the bundled Driver.js assets to a newer upstream version (10.0.3), replacing the previous minified driver.js implementation with the latest code and aligning the accompanying CSS, without changing the project structure. 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
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.js.mjs" line_range="1" />
<code_context>
const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z
</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 2
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.js.mjs" line_range="1" />
<code_context>
const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z
</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 3
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.js.mjs" line_range="1" />
<code_context>
const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z
</code_context>
<issue_to_address>
**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*
</issue_to_address>
### Comment 4
<location path="src/components/BootstrapBlazor.DriverJs/wwwroot/driver.js.mjs" line_range="1" />
<code_context>
const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z
</code_context>
<issue_to_address>
**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*
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| @@ -1 +1,2 @@ | |||
| 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 | |||
| const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z | |||
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
| @@ -1 +1,2 @@ | |||
| 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 | |||
| const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z | |||
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
| @@ -1 +1,2 @@ | |||
| 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 | |||
| const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z | |||
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
| @@ -1 +1,2 @@ | |||
| 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 | |||
| const e=[`pointerdown`,`mousedown`,`pointerup`,`mouseup`,`click`],t=new WeakMap;function n(n,i,a){r(n);let o=e=>{let t=e.target;n.contains(t)&&((!a||a(t))&&(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()),e.type===`click`&&i?.(e))};for(let t of e)document.addEventListener(t,o,!0);t.set(n,o)}function r(n){let r=t.get(n);if(r){for(let t of e)document.removeEventListener(t,r,!0);t.delete(n)}}function i(e,t){let n=e.wrapper.getBoundingClientRect();return{width:n.width+t,height:n.height+t,realWidth:n.width,realHeight:n.height}}function a(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.top-i,window.innerHeight-r.realHeight-a.width),a.width):e===`end`?Math.max(Math.min(n.top-r?.realHeight+n.height+i,window.innerHeight-r?.realHeight-a.width),a.width):e===`center`?Math.max(Math.min(n.top+n.height/2-r?.realHeight/2,window.innerHeight-r?.realHeight-a.width),a.width):0}function o(e,t){let{elementDimensions:n,popoverDimensions:r,popoverPadding:i,popoverArrowDimensions:a}=t;return e===`start`?Math.max(Math.min(n.left-i,window.innerWidth-r.realWidth-a.width),a.width):e===`end`?Math.max(Math.min(n.left-r?.realWidth+n.width+i,window.innerWidth-r?.realWidth-a.width),a.width):e===`center`?Math.max(Math.min(n.left+n.width/2-r?.realWidth/2,window.innerWidth-r?.realWidth-a.width),a.width):0}function s(e,t,n){let{align:r,side:s}=n,c=n.centered?`over`:s,l=n.padding,u=i(e,n.offset),f=e.arrow.getBoundingClientRect(),p=t.getBoundingClientRect(),m=p.top-u.height,h=m>=0,g=window.innerHeight-(p.bottom+u.height),_=g>=0,v=p.left-u.width,y=v>=0,b=window.innerWidth-(p.right+u.width),x=b>=0,S=!h&&!_&&!y&&!x,C=c;if(c===`top`&&h?x=y=_=!1:c===`bottom`&&_?x=y=h=!1:c===`left`&&y?x=h=_=!1:c===`right`&&x&&(y=h=_=!1),c===`over`){let t=window.innerWidth/2-u.realWidth/2,n=window.innerHeight/2-u.realHeight/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`}else if(S){let t=window.innerWidth/2-u?.realWidth/2;e.wrapper.style.left=`${t}px`,e.wrapper.style.right=`auto`,e.wrapper.style.bottom=`10px`,e.wrapper.style.top=`auto`}else if(y){let t=Math.min(v,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`left`}else if(x){let t=Math.min(b,window.innerWidth-u?.realWidth-f.width),n=a(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.right=`${t}px`,e.wrapper.style.top=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.left=`auto`,C=`right`}else if(h){let t=Math.min(m,window.innerHeight-u.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.top=`${t}px`,e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`auto`,e.wrapper.style.right=`auto`,C=`top`}else if(_){let t=Math.min(g,window.innerHeight-u?.realHeight-f.width),n=o(r,{elementDimensions:p,popoverDimensions:u,popoverPadding:l,popoverArrowDimensions:f});e.wrapper.style.left=`${n}px`,e.wrapper.style.bottom=`${t}px`,e.wrapper.style.top=`auto`,e.wrapper.style.right=`auto`,C=`bottom`}d(e,S?`over`:C,r,t),[...e.wrapper.classList].filter(e=>e.startsWith(`driver-popover-side-`)||e.startsWith(`driver-popover-align-`)).forEach(t=>e.wrapper.classList.remove(t)),e.wrapper.classList.add(`driver-popover-side-${C}`),e.wrapper.classList.add(`driver-popover-align-${r}`)}function c(e,t,n,r,i,a=10){let o=r-n;return e<=n&&t>=r?i===`start`?15+a/2:i===`end`?o-15-a/2:o/2:(Math.min(Math.max(e,n),r)+Math.min(Math.max(t,n),r))/2-n}function l(e,t,n=10){let r=t-15-n;if(r<15)return Math.max(0,(t-n)/2);let i=e-n/2;return Math.min(Math.max(i,15),r)}function u(e,t,n){return e===`left`||e===`right`?t.bottom>n.top&&t.top<n.bottom?e:t.bottom<=n.top?`bottom`:`top`:t.right>n.left&&t.left<n.right?e:t.right<=n.left?`right`:`left`}function d(e,t,n,r){let i=e.arrow;if(i.className=`driver-popover-arrow`,i.style.top=``,i.style.right=``,i.style.bottom=``,i.style.left=``,t===`over`){i.classList.add(`driver-popover-arrow-none`);return}let a=r.getBoundingClientRect(),o=e.wrapper.getBoundingClientRect(),s=u(t,a,o);i.classList.add(`driver-popover-arrow-side-${s}`);let d=i.getBoundingClientRect().width||10;if(s===`left`||s===`right`){let e=c(a.top,a.bottom,o.top,o.bottom,n,d);i.style.top=`${l(e,o.height,d)}px`}else{let e=c(a.left,a.right,o.left,o.right,n,d);i.style.left=`${l(e,o.width,d)}px`}}function f(e){return typeof e==`function`?e():typeof e==`string`?document.querySelector(e):e}function p(e){let t=window.getComputedStyle(e);return[t.overflow,t.overflowX,t.overflowY].some(e=>e===`auto`||e===`scroll`)}function m(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function h(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 n=e.matches(t),r=Array.from(e.querySelectorAll(t));return[...n?[e]:[],...r]}).filter(e=>getComputedStyle(e).pointerEvents!==`none`&&y(e))}function g(e,t){if(!e||v(e))return;let n=e.offsetHeight>window.innerHeight;e.scrollIntoView({behavior:!t||_(e)?`auto`:`smooth`,inline:`center`,block:n?`start`:`center`})}function _(e){if(!e||!e.parentElement)return;let t=e.parentElement;return t.scrollHeight>t.clientHeight}function v(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)}function y(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function b(e){e&&(e.wrapper.style.display=`none`)}function x(e,t){let r=C();document.body.appendChild(r.wrapper);let{title:i,description:a,showButtons:o,disableButtons:c,showProgress:l,nextBtnText:u,prevBtnText:d,progressText:f}=t;r.nextButton.innerHTML=u,r.previousButton.innerHTML=d,r.progress.innerHTML=f,t.doneButton&&r.nextButton.classList.add(`driver-popover-done-btn`),i?(r.title.innerHTML=i,r.title.style.display=`block`):r.title.style.display=`none`,a?(r.description.innerHTML=a,r.description.style.display=`block`):r.description.style.display=`none`;let p=o.includes(`next`)||o.includes(`previous`)||l;r.closeButton.style.display=o.includes(`close`)?`block`:`none`,p?(r.footer.style.display=`flex`,r.progress.style.display=l?`block`:`none`,r.nextButton.style.display=o.includes(`next`)?`block`:`none`,r.previousButton.style.display=o.includes(`previous`)?`block`:`none`):r.footer.style.display=`none`,c.includes(`next`)&&(r.nextButton.disabled=!0,r.nextButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`previous`)&&(r.previousButton.disabled=!0,r.previousButton.classList.add(`driver-popover-btn-disabled`)),c.includes(`close`)&&(r.closeButton.disabled=!0,r.closeButton.classList.add(`driver-popover-btn-disabled`));let m=r.wrapper;m.style.display=`block`,m.style.left=``,m.style.top=``,m.style.bottom=``,m.style.right=``,m.id=`driver-popover-content`,m.setAttribute(`role`,`dialog`),m.setAttribute(`aria-labelledby`,`driver-popover-title`),m.setAttribute(`aria-describedby`,`driver-popover-description`);let _=r.arrow;_.className=`driver-popover-arrow`,m.className=`driver-popover ${t.popoverClass||``}`.trim(),n(r.wrapper,e=>{let n=e.target;if(n.closest(`.driver-popover-next-btn`))return t.onNextClick?.();if(n.closest(`.driver-popover-prev-btn`))return t.onPrevClick?.();if(n.closest(`.driver-popover-close-btn`))return t.onCloseClick?.()},e=>r.description.contains(e)||r.title.contains(e)?!1:!!e.closest(`.driver-popover-prev-btn, .driver-popover-next-btn, .driver-popover-close-btn`)),t.onRender?.(r),s(r,e,t.position),S(r,e,t.position),g(m,t.smoothScroll);let v=h([m,e]);return v.length>0&&v[0].focus(),r}function S(e,t,n){e.wrapper.querySelectorAll(`img`).forEach(r=>{if(r.complete)return;let i=()=>s(e,t,n);r.addEventListener(`load`,i,{once:!0}),r.addEventListener(`error`,i,{once:!0})})}function C(){let e=document.createElement(`div`);e.classList.add(`driver-popover`);let t=document.createElement(`div`);t.classList.add(`driver-popover-arrow`);let n=document.createElement(`header`);n.id=`driver-popover-title`,n.classList.add(`driver-popover-title`),n.style.display=`none`,n.innerText=`Popover Title`;let r=document.createElement(`div`);r.id=`driver-popover-description`,r.classList.add(`driver-popover-description`),r.style.display=`none`,r.innerText=`Popover description is here`;let i=document.createElement(`button`);i.type=`button`,i.classList.add(`driver-popover-close-btn`),i.setAttribute(`aria-label`,`Close`),i.innerHTML=`×`;let a=document.createElement(`footer`);a.classList.add(`driver-popover-footer`);let o=document.createElement(`span`);o.classList.add(`driver-popover-progress-text`),o.innerText=``;let s=document.createElement(`span`);s.classList.add(`driver-popover-navigation-btns`);let c=document.createElement(`button`);c.type=`button`,c.classList.add(`driver-popover-prev-btn`,`driver-popover-footer-btn`),c.innerHTML=`Previous`;let l=document.createElement(`button`);return l.type=`button`,l.classList.add(`driver-popover-next-btn`,`driver-popover-footer-btn`),l.innerHTML=`Next`,s.appendChild(c),s.appendChild(l),a.appendChild(o),a.appendChild(s),e.appendChild(i),e.appendChild(t),e.appendChild(n),e.appendChild(r),e.appendChild(a),{wrapper:e,arrow:t,title:n,description:r,footer:a,previousButton:c,nextButton:l,closeButton:i,footerButtons:s,progress:o}}function w(e){e&&(r(e.wrapper),e.wrapper.parentElement?.removeChild(e.wrapper))}function T(e,t){let n=window.innerWidth,r=window.innerHeight,i=t.padding,a=t.radius,o=e.width+i*2,s=e.height+i*2,c=Math.min(a,o/2,s/2),l=Math.floor(Math.max(c,0)),u=e.x-i+l,d=e.y-i,f=o-l*2,p=s-l*2;return`M${n},0L0,0L0,${r}L${n},${r}L${n},0Z | |||
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 #1075
Summary By Copilot
Regression?
Risk
Verification
Packaging changes reviewed?
☑️ Self Check before Merge
Summary by Sourcery
Update the embedded Driver.js assets to a newer upstream version for the DriverJs component.
New Features:
Enhancements: