pulse-dashboard
Version:
A Next.js Dashboard application for real-time monitoring and historical analysis of Playwright test executions, based on playwright-pulse-report. This component provides the UI for visualizing Playwright test results and can be run as a standalone CLI too
1 lines • 27.9 kB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77855,e=>{"use strict";var t,r=e.i(43476),n=e.i(74911),i=e.i(71645),s=e.i(74080);function o(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(e?.(n),!1===r||!n.defaultPrevented)return t?.(n)}}function a(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function l(...e){return t=>{let r=!1,n=e.map(e=>{let n=a(e,t);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let t=0;t<n.length;t++){let r=n[t];"function"==typeof r?r():a(e[t],null)}}}}function u(...e){return i.useCallback(l(...e),e)}function d(e,t=[]){let n=[],s=()=>{let t=n.map(e=>i.createContext(e));return function(r){let n=r?.[e]||t;return i.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return s.scopeName=e,[function(t,s){let o=i.createContext(s),a=n.length;n=[...n,s];let l=t=>{let{scope:n,children:s,...l}=t,u=n?.[e]?.[a]||o,d=i.useMemo(()=>l,Object.values(l));return(0,r.jsx)(u.Provider,{value:d,children:s})};return l.displayName=t+"Provider",[l,function(r,n){let l=n?.[e]?.[a]||o,u=i.useContext(l);if(u)return u;if(void 0!==s)return s;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:r,scopeName:n})=>{let i=r(e)[`__scope${n}`];return{...t,...i}},{});return i.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(s,...t)]}function c(e){var t;let n,s=(t=e,(n=i.forwardRef((e,t)=>{let{children:r,...n}=e;if(i.isValidElement(r)){var s;let e,o,a=(s=r,(o=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(o=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),u=function(e,t){let r={...t};for(let n in t){let i=e[n],s=t[n];/^on[A-Z]/.test(n)?i&&s?r[n]=(...e)=>{let t=s(...e);return i(...e),t}:i&&(r[n]=i):"style"===n?r[n]={...i,...s}:"className"===n&&(r[n]=[i,s].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==i.Fragment&&(u.ref=t?l(t,a):a),i.cloneElement(r,u)}return i.Children.count(r)>1?i.Children.only(null):null})).displayName=`${t}.SlotClone`,n),o=i.forwardRef((e,t)=>{let{children:n,...o}=e,a=i.Children.toArray(n),l=a.find(p);if(l){let e=l.props.children,n=a.map(t=>t!==l?t:i.Children.count(e)>1?i.Children.only(null):i.isValidElement(e)?e.props.children:null);return(0,r.jsx)(s,{...o,ref:t,children:i.isValidElement(e)?i.cloneElement(e,void 0,n):null})}return(0,r.jsx)(s,{...o,ref:t,children:n})});return o.displayName=`${e}.Slot`,o}"u">typeof window&&window.document&&window.document.createElement;var f=Symbol("radix.slottable");function p(e){return i.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===f}var m=new WeakMap;function v(e,t){var r,n;let i,s,o;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let a=(r=e,n=t,i=r.length,(o=(s=h(n))>=0?s:i+s)<0||o>=i?-1:o);return -1===a?void 0:e[a]}function h(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],m.set(this,!0)}set(e,t){return m.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,r){let n,i=this.has(t),s=this.#e.length,o=h(e),a=o>=0?o:s+o,l=a<0||a>=s?-1:a;if(l===this.size||i&&l===this.size-1||-1===l)return this.set(t,r),this;let u=this.size+ +!i;o<0&&a++;let d=[...this.#e],c=!1;for(let e=a;e<u;e++)if(a===e){let s=d[e];d[e]===t&&(s=d[e+1]),i&&this.delete(t),n=this.get(s),this.set(t,r)}else{c||d[e-1]!==t||(c=!0);let r=d[c?e:e-1],i=n;n=this.get(r),this.delete(r),this.set(r,i)}return this}with(t,r,n){let i=new e(this);return i.insert(t,r,n),i}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n,t,r)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,r){let n=this.#e.indexOf(e);return -1===n?this:this.insert(n+1,t,r)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=v(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=v(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return v(this.#e,e)}from(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.at(n)}keyFrom(e,t){let r=this.indexOf(e);if(-1===r)return;let n=r+t;return n<0&&(n=0),n>=this.size&&(n=this.size-1),this.keyAt(n)}find(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return n;r++}}findIndex(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return r;r++}return -1}filter(t,r){let n=[],i=0;for(let e of this)Reflect.apply(t,r,[e,i,this])&&n.push(e),i++;return new e(n)}map(t,r){let n=[],i=0;for(let e of this)n.push([e[0],Reflect.apply(t,r,[e,i,this])]),i++;return new e(n)}reduce(...e){let[t,r]=e,n=0,i=r??this.at(0);for(let r of this)i=0===n&&1===e.length?r:Reflect.apply(t,this,[i,r,n,this]),n++;return i}reduceRight(...e){let[t,r]=e,n=r??this.at(-1);for(let r=this.size-1;r>=0;r--){let i=this.at(r);n=r===this.size-1&&1===e.length?i:Reflect.apply(t,this,[n,i,r,this])}return n}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let r=this.keyAt(e),n=this.get(r);t.set(r,n)}return t}toSpliced(...t){let r=[...this.entries()];return r.splice(...t),new e(r)}slice(t,r){let n=new e,i=this.size-1;if(void 0===t)return n;t<0&&(t+=this.size),void 0!==r&&r>0&&(i=r-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),r=this.get(t);n.set(t,r)}return n}every(e,t){let r=0;for(let n of this){if(!Reflect.apply(e,t,[n,r,this]))return!1;r++}return!0}some(e,t){let r=0;for(let n of this){if(Reflect.apply(e,t,[n,r,this]))return!0;r++}return!1}});var y=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let n=c(`Primitive.${t}`),s=i.forwardRef((e,i)=>{let{asChild:s,...o}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(s?n:t,{...o,ref:i})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{});function w(e,t){e&&s.flushSync(()=>e.dispatchEvent(t))}function x(e){let t=i.useRef(e);return i.useEffect(()=>{t.current=e}),i.useMemo(()=>(...e)=>t.current?.(...e),[])}var g="dismissableLayer.update",E=i.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),b=i.forwardRef((e,n)=>{let{disableOutsidePointerEvents:s=!1,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:c,onDismiss:f,...p}=e,m=i.useContext(E),[v,h]=i.useState(null),w=v?.ownerDocument??globalThis?.document,[,b]=i.useState({}),R=u(n,e=>h(e)),C=Array.from(m.layers),[P]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),j=C.indexOf(P),k=v?C.indexOf(v):-1,S=m.layersWithOutsidePointerEventsDisabled.size>0,O=k>=j,L=function(e,t=globalThis?.document){let r=x(e),n=i.useRef(!1),s=i.useRef(()=>{});return i.useEffect(()=>{let e=e=>{if(e.target&&!n.current){let n=function(){N("dismissableLayer.pointerDownOutside",r,i,{discrete:!0})},i={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",s.current),s.current=n,t.addEventListener("click",s.current,{once:!0})):n()}else t.removeEventListener("click",s.current);n.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",e),t.removeEventListener("click",s.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}(e=>{let t=e.target,r=[...m.branches].some(e=>e.contains(t));O&&!r&&(l?.(e),c?.(e),e.defaultPrevented||f?.())},w),A=function(e,t=globalThis?.document){let r=x(e),n=i.useRef(!1);return i.useEffect(()=>{let e=e=>{e.target&&!n.current&&N("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}(e=>{let t=e.target;![...m.branches].some(e=>e.contains(t))&&(d?.(e),c?.(e),e.defaultPrevented||f?.())},w);return!function(e,t=globalThis?.document){let r=x(e);i.useEffect(()=>{let e=e=>{"Escape"===e.key&&r(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[r,t])}(e=>{k===m.layers.size-1&&(a?.(e),!e.defaultPrevented&&f&&(e.preventDefault(),f()))},w),i.useEffect(()=>{if(v)return s&&(0===m.layersWithOutsidePointerEventsDisabled.size&&(t=w.body.style.pointerEvents,w.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(v)),m.layers.add(v),T(),()=>{s&&1===m.layersWithOutsidePointerEventsDisabled.size&&(w.body.style.pointerEvents=t)}},[v,w,s,m]),i.useEffect(()=>()=>{v&&(m.layers.delete(v),m.layersWithOutsidePointerEventsDisabled.delete(v),T())},[v,m]),i.useEffect(()=>{let e=()=>b({});return document.addEventListener(g,e),()=>document.removeEventListener(g,e)},[]),(0,r.jsx)(y.div,{...p,ref:R,style:{pointerEvents:S?O?"auto":"none":void 0,...e.style},onFocusCapture:o(e.onFocusCapture,A.onFocusCapture),onBlurCapture:o(e.onBlurCapture,A.onBlurCapture),onPointerDownCapture:o(e.onPointerDownCapture,L.onPointerDownCapture)})});b.displayName="DismissableLayer";var R=i.forwardRef((e,t)=>{let n=i.useContext(E),s=i.useRef(null),o=u(t,s);return i.useEffect(()=>{let e=s.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,r.jsx)(y.div,{...e,ref:o})});function T(){let e=new CustomEvent(g);document.dispatchEvent(e)}function N(e,t,r,{discrete:n}){let i=r.originalEvent.target,s=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?w(i,s):i.dispatchEvent(s)}R.displayName="DismissableLayerBranch";var C=globalThis?.document?i.useLayoutEffect:()=>{},P=i.forwardRef((e,t)=>{let{container:n,...o}=e,[a,l]=i.useState(!1);C(()=>l(!0),[]);let u=n||a&&globalThis?.document?.body;return u?s.default.createPortal((0,r.jsx)(y.div,{...o,ref:t}),u):null});P.displayName="Portal";var j=e=>{var t;let r,n,{present:s,children:o}=e,a=function(e){var t,r;let[n,s]=i.useState(),o=i.useRef(null),a=i.useRef(e),l=i.useRef("none"),[u,d]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},i.useReducer((e,t)=>r[e][t]??e,t));return i.useEffect(()=>{let e=k(o.current);l.current="mounted"===u?e:"none"},[u]),C(()=>{let t=o.current,r=a.current;if(r!==e){let n=l.current,i=k(t);e?d("MOUNT"):"none"===i||t?.display==="none"?d("UNMOUNT"):r&&n!==i?d("ANIMATION_OUT"):d("UNMOUNT"),a.current=e}},[e,d]),C(()=>{if(n){let e,t=n.ownerDocument.defaultView??window,r=r=>{let i=k(o.current).includes(CSS.escape(r.animationName));if(r.target===n&&i&&(d("ANIMATION_END"),!a.current)){let r=n.style.animationFillMode;n.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=r)})}},i=e=>{e.target===n&&(l.current=k(o.current))};return n.addEventListener("animationstart",i),n.addEventListener("animationcancel",r),n.addEventListener("animationend",r),()=>{t.clearTimeout(e),n.removeEventListener("animationstart",i),n.removeEventListener("animationcancel",r),n.removeEventListener("animationend",r)}}d("ANIMATION_END")},[n,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:i.useCallback(e=>{o.current=e?getComputedStyle(e):null,s(e)},[])}}(s),l="function"==typeof o?o({present:a.isPresent}):i.Children.only(o),d=u(a.ref,(t=l,(n=(r=Object.getOwnPropertyDescriptor(t.props,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?t.ref:(n=(r=Object.getOwnPropertyDescriptor(t,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?t.props.ref:t.props.ref||t.ref));return"function"==typeof o||a.isPresent?i.cloneElement(l,{ref:d}):null};function k(e){return e?.animationName||"none"}j.displayName="Presence",e.i(83986);var S=i[" useInsertionEffect ".trim().toString()]||C;Symbol("RADIX:SYNC_STATE");var O=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),L=i.forwardRef((e,t)=>(0,r.jsx)(y.span,{...e,ref:t,style:{...O,...e.style}}));L.displayName="VisuallyHidden";var A="ToastProvider",[D,M,I]=function(e){let t=e+"CollectionProvider",[n,s]=d(t),[o,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),l=e=>{let{scope:t,children:n}=e,s=i.default.useRef(null),a=i.default.useRef(new Map).current;return(0,r.jsx)(o,{scope:t,itemMap:a,collectionRef:s,children:n})};l.displayName=t;let f=e+"CollectionSlot",p=c(f),m=i.default.forwardRef((e,t)=>{let{scope:n,children:i}=e,s=u(t,a(f,n).collectionRef);return(0,r.jsx)(p,{ref:s,children:i})});m.displayName=f;let v=e+"CollectionItemSlot",h="data-radix-collection-item",y=c(v),w=i.default.forwardRef((e,t)=>{let{scope:n,children:s,...o}=e,l=i.default.useRef(null),d=u(t,l),c=a(v,n);return i.default.useEffect(()=>(c.itemMap.set(l,{ref:l,...o}),()=>void c.itemMap.delete(l))),(0,r.jsx)(y,{...{[h]:""},ref:d,children:s})});return w.displayName=v,[{Provider:l,Slot:m,ItemSlot:w},function(t){let r=a(e+"CollectionConsumer",t);return i.default.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${h}]`));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},s]}("Toast"),[F,_]=d("Toast",[I]),[z,W]=F(A),$=e=>{let{__scopeToast:t,label:n="Notification",duration:s=5e3,swipeDirection:o="right",swipeThreshold:a=50,children:l}=e,[u,d]=i.useState(null),[c,f]=i.useState(0),p=i.useRef(!1),m=i.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${A}\`. Expected non-empty \`string\`.`),(0,r.jsx)(D.Provider,{scope:t,children:(0,r.jsx)(z,{scope:t,label:n,duration:s,swipeDirection:o,swipeThreshold:a,toastCount:c,viewport:u,onViewportChange:d,onToastAdd:i.useCallback(()=>f(e=>e+1),[]),onToastRemove:i.useCallback(()=>f(e=>e-1),[]),isFocusedToastEscapeKeyDownRef:p,isClosePausedRef:m,children:l})})};$.displayName=A;var U="ToastViewport",K=["F8"],V="toast.viewportPause",B="toast.viewportResume",X=i.forwardRef((e,t)=>{let{__scopeToast:n,hotkey:s=K,label:o="Notifications ({hotkey})",...a}=e,l=W(U,n),d=M(n),c=i.useRef(null),f=i.useRef(null),p=i.useRef(null),m=i.useRef(null),v=u(t,m,l.onViewportChange),h=s.join("+").replace(/Key/g,"").replace(/Digit/g,""),w=l.toastCount>0;i.useEffect(()=>{let e=e=>{0!==s.length&&s.every(t=>e[t]||e.code===t)&&m.current?.focus()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[s]),i.useEffect(()=>{let e=c.current,t=m.current;if(w&&e&&t){let r=()=>{if(!l.isClosePausedRef.current){let e=new CustomEvent(V);t.dispatchEvent(e),l.isClosePausedRef.current=!0}},n=()=>{if(l.isClosePausedRef.current){let e=new CustomEvent(B);t.dispatchEvent(e),l.isClosePausedRef.current=!1}},i=t=>{e.contains(t.relatedTarget)||n()},s=()=>{e.contains(document.activeElement)||n()};return e.addEventListener("focusin",r),e.addEventListener("focusout",i),e.addEventListener("pointermove",r),e.addEventListener("pointerleave",s),window.addEventListener("blur",r),window.addEventListener("focus",n),()=>{e.removeEventListener("focusin",r),e.removeEventListener("focusout",i),e.removeEventListener("pointermove",r),e.removeEventListener("pointerleave",s),window.removeEventListener("blur",r),window.removeEventListener("focus",n)}}},[w,l.isClosePausedRef]);let x=i.useCallback(({tabbingDirection:e})=>{let t=d().map(t=>{let r=t.ref.current,n=[r,...function(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}(r)];return"forwards"===e?n:n.reverse()});return("forwards"===e?t.reverse():t).flat()},[d]);return i.useEffect(()=>{let e=m.current;if(e){let t=t=>{let r=t.altKey||t.ctrlKey||t.metaKey;if("Tab"===t.key&&!r){let r=document.activeElement,n=t.shiftKey;if(t.target===e&&n)return void f.current?.focus();let i=x({tabbingDirection:n?"backwards":"forwards"}),s=i.findIndex(e=>e===r);ed(i.slice(s+1))?t.preventDefault():n?f.current?.focus():p.current?.focus()}};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}},[d,x]),(0,r.jsxs)(R,{ref:c,role:"region","aria-label":o.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:w?void 0:"none"},children:[w&&(0,r.jsx)(H,{ref:f,onFocusFromOutsideViewport:()=>{ed(x({tabbingDirection:"forwards"}))}}),(0,r.jsx)(D.Slot,{scope:n,children:(0,r.jsx)(y.ol,{tabIndex:-1,...a,ref:v})}),w&&(0,r.jsx)(H,{ref:p,onFocusFromOutsideViewport:()=>{ed(x({tabbingDirection:"backwards"}))}})]})});X.displayName=U;var q="ToastFocusProxy",H=i.forwardRef((e,t)=>{let{__scopeToast:n,onFocusFromOutsideViewport:i,...s}=e,o=W(q,n);return(0,r.jsx)(L,{tabIndex:0,...s,ref:t,style:{position:"fixed"},onFocus:e=>{let t=e.relatedTarget;o.viewport?.contains(t)||i()}})});H.displayName=q;var Y="Toast",Z=i.forwardRef((e,t)=>{let{forceMount:n,open:s,defaultOpen:a,onOpenChange:l,...u}=e,[d,c]=function({prop:e,defaultProp:t,onChange:r=()=>{},caller:n}){let[s,o,a]=function({defaultProp:e,onChange:t}){let[r,n]=i.useState(e),s=i.useRef(r),o=i.useRef(t);return S(()=>{o.current=t},[t]),i.useEffect(()=>{s.current!==r&&(o.current?.(r),s.current=r)},[r,s]),[r,n,o]}({defaultProp:t,onChange:r}),l=void 0!==e,u=l?e:s;{let t=i.useRef(void 0!==e);i.useEffect(()=>{let e=t.current;if(e!==l){let t=l?"controlled":"uncontrolled";console.warn(`${n} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=l},[l,n])}return[u,i.useCallback(t=>{if(l){let r="function"==typeof t?t(e):t;r!==e&&a.current?.(r)}else o(t)},[l,e,o,a])]}({prop:s,defaultProp:a??!0,onChange:l,caller:Y});return(0,r.jsx)(j,{present:n||d,children:(0,r.jsx)(Q,{open:d,...u,ref:t,onClose:()=>c(!1),onPause:x(e.onPause),onResume:x(e.onResume),onSwipeStart:o(e.onSwipeStart,e=>{e.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:o(e.onSwipeMove,e=>{let{x:t,y:r}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","move"),e.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${t}px`),e.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${r}px`)}),onSwipeCancel:o(e.onSwipeCancel,e=>{e.currentTarget.setAttribute("data-swipe","cancel"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:o(e.onSwipeEnd,e=>{let{x:t,y:r}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","end"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${t}px`),e.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${r}px`),c(!1)})})})});Z.displayName=Y;var[G,J]=F(Y,{onClose(){}}),Q=i.forwardRef((e,t)=>{let{__scopeToast:n,type:a="foreground",duration:l,open:d,onClose:c,onEscapeKeyDown:f,onPause:p,onResume:m,onSwipeStart:v,onSwipeMove:h,onSwipeCancel:w,onSwipeEnd:g,...E}=e,R=W(Y,n),[T,N]=i.useState(null),C=u(t,e=>N(e)),P=i.useRef(null),j=i.useRef(null),k=l||R.duration,S=i.useRef(0),O=i.useRef(k),L=i.useRef(0),{onToastAdd:A,onToastRemove:M}=R,I=x(()=>{T?.contains(document.activeElement)&&R.viewport?.focus(),c()}),F=i.useCallback(e=>{e&&e!==1/0&&(window.clearTimeout(L.current),S.current=new Date().getTime(),L.current=window.setTimeout(I,e))},[I]);i.useEffect(()=>{let e=R.viewport;if(e){let t=()=>{F(O.current),m?.()},r=()=>{let e=new Date().getTime()-S.current;O.current=O.current-e,window.clearTimeout(L.current),p?.()};return e.addEventListener(V,r),e.addEventListener(B,t),()=>{e.removeEventListener(V,r),e.removeEventListener(B,t)}}},[R.viewport,k,p,m,F]),i.useEffect(()=>{d&&!R.isClosePausedRef.current&&F(k)},[d,k,R.isClosePausedRef,F]),i.useEffect(()=>(A(),()=>M()),[A,M]);let _=i.useMemo(()=>T?function e(t){let r=[];return Array.from(t.childNodes).forEach(t=>{var n;if(t.nodeType===t.TEXT_NODE&&t.textContent&&r.push(t.textContent),(n=t).nodeType===n.ELEMENT_NODE){let n=t.ariaHidden||t.hidden||"none"===t.style.display,i=""===t.dataset.radixToastAnnounceExclude;if(!n)if(i){let e=t.dataset.radixToastAnnounceAlt;e&&r.push(e)}else r.push(...e(t))}}),r}(T):null,[T]);return R.viewport?(0,r.jsxs)(r.Fragment,{children:[_&&(0,r.jsx)(ee,{__scopeToast:n,role:"status","aria-live":"foreground"===a?"assertive":"polite",children:_}),(0,r.jsx)(G,{scope:n,onClose:I,children:s.createPortal((0,r.jsx)(D.ItemSlot,{scope:n,children:(0,r.jsx)(b,{asChild:!0,onEscapeKeyDown:o(f,()=>{R.isFocusedToastEscapeKeyDownRef.current||I(),R.isFocusedToastEscapeKeyDownRef.current=!1}),children:(0,r.jsx)(y.li,{tabIndex:0,"data-state":d?"open":"closed","data-swipe-direction":R.swipeDirection,...E,ref:C,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:o(e.onKeyDown,e=>{"Escape"===e.key&&(f?.(e.nativeEvent),e.nativeEvent.defaultPrevented||(R.isFocusedToastEscapeKeyDownRef.current=!0,I()))}),onPointerDown:o(e.onPointerDown,e=>{0===e.button&&(P.current={x:e.clientX,y:e.clientY})}),onPointerMove:o(e.onPointerMove,e=>{if(!P.current)return;let t=e.clientX-P.current.x,r=e.clientY-P.current.y,n=!!j.current,i=["left","right"].includes(R.swipeDirection),s=["left","up"].includes(R.swipeDirection)?Math.min:Math.max,o=i?s(0,t):0,a=i?0:s(0,r),l="touch"===e.pointerType?10:2,u={x:o,y:a},d={originalEvent:e,delta:u};n?(j.current=u,el("toast.swipeMove",h,d,{discrete:!1})):eu(u,R.swipeDirection,l)?(j.current=u,el("toast.swipeStart",v,d,{discrete:!1}),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>l||Math.abs(r)>l)&&(P.current=null)}),onPointerUp:o(e.onPointerUp,e=>{let t=j.current,r=e.target;if(r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),j.current=null,P.current=null,t){let r=e.currentTarget,n={originalEvent:e,delta:t};eu(t,R.swipeDirection,R.swipeThreshold)?el("toast.swipeEnd",g,n,{discrete:!0}):el("toast.swipeCancel",w,n,{discrete:!0}),r.addEventListener("click",e=>e.preventDefault(),{once:!0})}})})})}),R.viewport)})]}):null}),ee=e=>{let{__scopeToast:t,children:n,...s}=e,o=W(Y,t),[a,l]=i.useState(!1),[u,d]=i.useState(!1);return function(e=()=>{}){let t=x(e);C(()=>{let e=0,r=0;return e=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(e),window.cancelAnimationFrame(r)}},[t])}(()=>l(!0)),i.useEffect(()=>{let e=window.setTimeout(()=>d(!0),1e3);return()=>window.clearTimeout(e)},[]),u?null:(0,r.jsx)(P,{asChild:!0,children:(0,r.jsx)(L,{...s,children:a&&(0,r.jsxs)(r.Fragment,{children:[o.label," ",n]})})})},et=i.forwardRef((e,t)=>{let{__scopeToast:n,...i}=e;return(0,r.jsx)(y.div,{...i,ref:t})});et.displayName="ToastTitle";var er=i.forwardRef((e,t)=>{let{__scopeToast:n,...i}=e;return(0,r.jsx)(y.div,{...i,ref:t})});er.displayName="ToastDescription";var en="ToastAction",ei=i.forwardRef((e,t)=>{let{altText:n,...i}=e;return n.trim()?(0,r.jsx)(ea,{altText:n,asChild:!0,children:(0,r.jsx)(eo,{...i,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${en}\`. Expected non-empty \`string\`.`),null)});ei.displayName=en;var es="ToastClose",eo=i.forwardRef((e,t)=>{let{__scopeToast:n,...i}=e,s=J(es,n);return(0,r.jsx)(ea,{asChild:!0,children:(0,r.jsx)(y.button,{type:"button",...i,ref:t,onClick:o(e.onClick,s.onClose)})})});eo.displayName=es;var ea=i.forwardRef((e,t)=>{let{__scopeToast:n,altText:i,...s}=e;return(0,r.jsx)(y.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":i||void 0,...s,ref:t})});function el(e,t,r,{discrete:n}){let i=r.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?w(i,s):i.dispatchEvent(s)}var eu=(e,t,r=0)=>{let n=Math.abs(e.x),i=Math.abs(e.y),s=n>i;return"left"===t||"right"===t?s&&n>r:!s&&i>r};function ed(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}var ec=e.i(25913),ef=e.i(37727),ep=e.i(75157);let em=i.forwardRef(({className:e,...t},n)=>(0,r.jsx)(X,{ref:n,className:(0,ep.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...t}));em.displayName=X.displayName;let ev=(0,ec.cva)("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),eh=i.forwardRef(({className:e,variant:t,...n},i)=>(0,r.jsx)(Z,{ref:i,className:(0,ep.cn)(ev({variant:t}),e),...n}));eh.displayName=Z.displayName,i.forwardRef(({className:e,...t},n)=>(0,r.jsx)(ei,{ref:n,className:(0,ep.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...t})).displayName=ei.displayName;let ey=i.forwardRef(({className:e,...t},n)=>(0,r.jsx)(eo,{ref:n,className:(0,ep.cn)("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...t,children:(0,r.jsx)(ef.X,{className:"h-4 w-4"})}));ey.displayName=eo.displayName;let ew=i.forwardRef(({className:e,...t},n)=>(0,r.jsx)(et,{ref:n,className:(0,ep.cn)("text-sm font-semibold",e),...t}));ew.displayName=et.displayName;let ex=i.forwardRef(({className:e,...t},n)=>(0,r.jsx)(er,{ref:n,className:(0,ep.cn)("text-sm opacity-90",e),...t}));ex.displayName=er.displayName,e.s(["Toaster",0,function(){let{toasts:e}=(0,n.useToast)();return(0,r.jsxs)($,{children:[e.map(function({id:e,title:t,description:n,action:i,...s}){return(0,r.jsxs)(eh,{...s,children:[(0,r.jsxs)("div",{className:"grid gap-1",children:[t&&(0,r.jsx)(ew,{children:t}),n&&(0,r.jsx)(ex,{children:n})]}),i,(0,r.jsx)(ey,{})]},e)}),(0,r.jsx)(em,{})]})}],77855)}]);