UNPKG

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

3 lines (2 loc) 14.2 kB
module.exports=[42293,a=>{"use strict";var b=a.i(87924),c=a.i(77430),d=a.i(72131),e=a.i(35112),f=a.i(7554),g=a.i(70121),h=a.i(37738),i=a.i(50104),j=a.i(96743),k=a.i(92616),l=a.i(77192),m=a.i(30553),n=a.i(46872),o=a.i(25152),p=a.i(72752),q=a.i(28094),r="ToastProvider",[s,t,u]=(0,h.createCollection)("Toast"),[v,w]=(0,i.createContextScope)("Toast",[u]),[x,y]=v(r),z=a=>{let{__scopeToast:c,label:e="Notification",duration:f=5e3,swipeDirection:g="right",swipeThreshold:h=50,children:i}=a,[j,k]=d.useState(null),[l,m]=d.useState(0),n=d.useRef(!1),o=d.useRef(!1);return e.trim()||console.error(`Invalid prop \`label\` supplied to \`${r}\`. Expected non-empty \`string\`.`),(0,b.jsx)(s.Provider,{scope:c,children:(0,b.jsx)(x,{scope:c,label:e,duration:f,swipeDirection:g,swipeThreshold:h,toastCount:l,viewport:j,onViewportChange:k,onToastAdd:d.useCallback(()=>m(a=>a+1),[]),onToastRemove:d.useCallback(()=>m(a=>a-1),[]),isFocusedToastEscapeKeyDownRef:n,isClosePausedRef:o,children:i})})};z.displayName=r;var A="ToastViewport",B=["F8"],C="toast.viewportPause",D="toast.viewportResume",E=d.forwardRef((a,c)=>{let{__scopeToast:e,hotkey:f=B,label:h="Notifications ({hotkey})",...i}=a,k=y(A,e),l=t(e),n=d.useRef(null),o=d.useRef(null),p=d.useRef(null),q=d.useRef(null),r=(0,g.useComposedRefs)(c,q,k.onViewportChange),u=f.join("+").replace(/Key/g,"").replace(/Digit/g,""),v=k.toastCount>0;d.useEffect(()=>{let a=a=>{0!==f.length&&f.every(b=>a[b]||a.code===b)&&q.current?.focus()};return document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)},[f]),d.useEffect(()=>{let a=n.current,b=q.current;if(v&&a&&b){let c=()=>{if(!k.isClosePausedRef.current){let a=new CustomEvent(C);b.dispatchEvent(a),k.isClosePausedRef.current=!0}},d=()=>{if(k.isClosePausedRef.current){let a=new CustomEvent(D);b.dispatchEvent(a),k.isClosePausedRef.current=!1}},e=b=>{a.contains(b.relatedTarget)||d()},f=()=>{a.contains(document.activeElement)||d()};return a.addEventListener("focusin",c),a.addEventListener("focusout",e),a.addEventListener("pointermove",c),a.addEventListener("pointerleave",f),window.addEventListener("blur",c),window.addEventListener("focus",d),()=>{a.removeEventListener("focusin",c),a.removeEventListener("focusout",e),a.removeEventListener("pointermove",c),a.removeEventListener("pointerleave",f),window.removeEventListener("blur",c),window.removeEventListener("focus",d)}}},[v,k.isClosePausedRef]);let w=d.useCallback(({tabbingDirection:a})=>{let b=l().map(b=>{let c=b.ref.current,d=[c,...function(a){let b=[],c=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{let b="INPUT"===a.tagName&&"hidden"===a.type;return a.disabled||a.hidden||b?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;c.nextNode();)b.push(c.currentNode);return b}(c)];return"forwards"===a?d:d.reverse()});return("forwards"===a?b.reverse():b).flat()},[l]);return d.useEffect(()=>{let a=q.current;if(a){let b=b=>{let c=b.altKey||b.ctrlKey||b.metaKey;if("Tab"===b.key&&!c){let c=document.activeElement,d=b.shiftKey;if(b.target===a&&d)return void o.current?.focus();let e=w({tabbingDirection:d?"backwards":"forwards"}),f=e.findIndex(a=>a===c);W(e.slice(f+1))?b.preventDefault():d?o.current?.focus():p.current?.focus()}};return a.addEventListener("keydown",b),()=>a.removeEventListener("keydown",b)}},[l,w]),(0,b.jsxs)(j.Branch,{ref:n,role:"region","aria-label":h.replace("{hotkey}",u),tabIndex:-1,style:{pointerEvents:v?void 0:"none"},children:[v&&(0,b.jsx)(G,{ref:o,onFocusFromOutsideViewport:()=>{W(w({tabbingDirection:"forwards"}))}}),(0,b.jsx)(s.Slot,{scope:e,children:(0,b.jsx)(m.Primitive.ol,{tabIndex:-1,...i,ref:r})}),v&&(0,b.jsx)(G,{ref:p,onFocusFromOutsideViewport:()=>{W(w({tabbingDirection:"backwards"}))}})]})});E.displayName=A;var F="ToastFocusProxy",G=d.forwardRef((a,c)=>{let{__scopeToast:d,onFocusFromOutsideViewport:e,...f}=a,g=y(F,d);return(0,b.jsx)(q.VisuallyHidden,{"aria-hidden":!0,tabIndex:0,...f,ref:c,style:{position:"fixed"},onFocus:a=>{let b=a.relatedTarget;g.viewport?.contains(b)||e()}})});G.displayName=F;var H="Toast",I=d.forwardRef((a,c)=>{let{forceMount:d,open:e,defaultOpen:g,onOpenChange:h,...i}=a,[j=!0,k]=(0,o.useControllableState)({prop:e,defaultProp:g,onChange:h});return(0,b.jsx)(l.Presence,{present:d||j,children:(0,b.jsx)(L,{open:j,...i,ref:c,onClose:()=>k(!1),onPause:(0,n.useCallbackRef)(a.onPause),onResume:(0,n.useCallbackRef)(a.onResume),onSwipeStart:(0,f.composeEventHandlers)(a.onSwipeStart,a=>{a.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:(0,f.composeEventHandlers)(a.onSwipeMove,a=>{let{x:b,y:c}=a.detail.delta;a.currentTarget.setAttribute("data-swipe","move"),a.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${b}px`),a.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${c}px`)}),onSwipeCancel:(0,f.composeEventHandlers)(a.onSwipeCancel,a=>{a.currentTarget.setAttribute("data-swipe","cancel"),a.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),a.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),a.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),a.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:(0,f.composeEventHandlers)(a.onSwipeEnd,a=>{let{x:b,y:c}=a.detail.delta;a.currentTarget.setAttribute("data-swipe","end"),a.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),a.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),a.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${b}px`),a.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${c}px`),k(!1)})})})});I.displayName=H;var[J,K]=v(H,{onClose(){}}),L=d.forwardRef((a,c)=>{let{__scopeToast:h,type:i="foreground",duration:k,open:l,onClose:o,onEscapeKeyDown:p,onPause:q,onResume:r,onSwipeStart:t,onSwipeMove:u,onSwipeCancel:v,onSwipeEnd:w,...x}=a,z=y(H,h),[A,B]=d.useState(null),E=(0,g.useComposedRefs)(c,a=>B(a)),F=d.useRef(null),G=d.useRef(null),I=k||z.duration,K=d.useRef(0),L=d.useRef(I),N=d.useRef(0),{onToastAdd:O,onToastRemove:P}=z,Q=(0,n.useCallbackRef)(()=>{A?.contains(document.activeElement)&&z.viewport?.focus(),o()}),R=d.useCallback(a=>{a&&a!==1/0&&(window.clearTimeout(N.current),K.current=new Date().getTime(),N.current=window.setTimeout(Q,a))},[Q]);d.useEffect(()=>{let a=z.viewport;if(a){let b=()=>{R(L.current),r?.()},c=()=>{let a=new Date().getTime()-K.current;L.current=L.current-a,window.clearTimeout(N.current),q?.()};return a.addEventListener(C,c),a.addEventListener(D,b),()=>{a.removeEventListener(C,c),a.removeEventListener(D,b)}}},[z.viewport,I,q,r,R]),d.useEffect(()=>{l&&!z.isClosePausedRef.current&&R(I)},[l,I,z.isClosePausedRef,R]),d.useEffect(()=>(O(),()=>P()),[O,P]);let S=d.useMemo(()=>A?function a(b){let c=[];return Array.from(b.childNodes).forEach(b=>{var d;if(b.nodeType===b.TEXT_NODE&&b.textContent&&c.push(b.textContent),(d=b).nodeType===d.ELEMENT_NODE){let d=b.ariaHidden||b.hidden||"none"===b.style.display,e=""===b.dataset.radixToastAnnounceExclude;if(!d)if(e){let a=b.dataset.radixToastAnnounceAlt;a&&c.push(a)}else c.push(...a(b))}}),c}(A):null,[A]);return z.viewport?(0,b.jsxs)(b.Fragment,{children:[S&&(0,b.jsx)(M,{__scopeToast:h,role:"status","aria-live":"foreground"===i?"assertive":"polite","aria-atomic":!0,children:S}),(0,b.jsx)(J,{scope:h,onClose:Q,children:e.createPortal((0,b.jsx)(s.ItemSlot,{scope:h,children:(0,b.jsx)(j.Root,{asChild:!0,onEscapeKeyDown:(0,f.composeEventHandlers)(p,()=>{z.isFocusedToastEscapeKeyDownRef.current||Q(),z.isFocusedToastEscapeKeyDownRef.current=!1}),children:(0,b.jsx)(m.Primitive.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":l?"open":"closed","data-swipe-direction":z.swipeDirection,...x,ref:E,style:{userSelect:"none",touchAction:"none",...a.style},onKeyDown:(0,f.composeEventHandlers)(a.onKeyDown,a=>{"Escape"===a.key&&(p?.(a.nativeEvent),a.nativeEvent.defaultPrevented||(z.isFocusedToastEscapeKeyDownRef.current=!0,Q()))}),onPointerDown:(0,f.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(F.current={x:a.clientX,y:a.clientY})}),onPointerMove:(0,f.composeEventHandlers)(a.onPointerMove,a=>{if(!F.current)return;let b=a.clientX-F.current.x,c=a.clientY-F.current.y,d=!!G.current,e=["left","right"].includes(z.swipeDirection),f=["left","up"].includes(z.swipeDirection)?Math.min:Math.max,g=e?f(0,b):0,h=e?0:f(0,c),i="touch"===a.pointerType?10:2,j={x:g,y:h},k={originalEvent:a,delta:j};d?(G.current=j,U("toast.swipeMove",u,k,{discrete:!1})):V(j,z.swipeDirection,i)?(G.current=j,U("toast.swipeStart",t,k,{discrete:!1}),a.target.setPointerCapture(a.pointerId)):(Math.abs(b)>i||Math.abs(c)>i)&&(F.current=null)}),onPointerUp:(0,f.composeEventHandlers)(a.onPointerUp,a=>{let b=G.current,c=a.target;if(c.hasPointerCapture(a.pointerId)&&c.releasePointerCapture(a.pointerId),G.current=null,F.current=null,b){let c=a.currentTarget,d={originalEvent:a,delta:b};V(b,z.swipeDirection,z.swipeThreshold)?U("toast.swipeEnd",w,d,{discrete:!0}):U("toast.swipeCancel",v,d,{discrete:!0}),c.addEventListener("click",a=>a.preventDefault(),{once:!0})}})})})}),z.viewport)})]}):null}),M=a=>{let{__scopeToast:c,children:e,...f}=a,g=y(H,c),[h,i]=d.useState(!1),[j,l]=d.useState(!1);return function(a=()=>{}){let b=(0,n.useCallbackRef)(a);(0,p.useLayoutEffect)(()=>{let a=0,c=0;return a=window.requestAnimationFrame(()=>c=window.requestAnimationFrame(b)),()=>{window.cancelAnimationFrame(a),window.cancelAnimationFrame(c)}},[b])}(()=>i(!0)),d.useEffect(()=>{let a=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(a)},[]),j?null:(0,b.jsx)(k.Portal,{asChild:!0,children:(0,b.jsx)(q.VisuallyHidden,{...f,children:h&&(0,b.jsxs)(b.Fragment,{children:[g.label," ",e]})})})},N=d.forwardRef((a,c)=>{let{__scopeToast:d,...e}=a;return(0,b.jsx)(m.Primitive.div,{...e,ref:c})});N.displayName="ToastTitle";var O=d.forwardRef((a,c)=>{let{__scopeToast:d,...e}=a;return(0,b.jsx)(m.Primitive.div,{...e,ref:c})});O.displayName="ToastDescription";var P="ToastAction",Q=d.forwardRef((a,c)=>{let{altText:d,...e}=a;return d.trim()?(0,b.jsx)(T,{altText:d,asChild:!0,children:(0,b.jsx)(S,{...e,ref:c})}):(console.error(`Invalid prop \`altText\` supplied to \`${P}\`. Expected non-empty \`string\`.`),null)});Q.displayName=P;var R="ToastClose",S=d.forwardRef((a,c)=>{let{__scopeToast:d,...e}=a,g=K(R,d);return(0,b.jsx)(T,{asChild:!0,children:(0,b.jsx)(m.Primitive.button,{type:"button",...e,ref:c,onClick:(0,f.composeEventHandlers)(a.onClick,g.onClose)})})});S.displayName=R;var T=d.forwardRef((a,c)=>{let{__scopeToast:d,altText:e,...f}=a;return(0,b.jsx)(m.Primitive.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":e||void 0,...f,ref:c})});function U(a,b,c,{discrete:d}){let e=c.originalEvent.currentTarget,f=new CustomEvent(a,{bubbles:!0,cancelable:!0,detail:c});b&&e.addEventListener(a,b,{once:!0}),d?(0,m.dispatchDiscreteCustomEvent)(e,f):e.dispatchEvent(f)}var V=(a,b,c=0)=>{let d=Math.abs(a.x),e=Math.abs(a.y),f=d>e;return"left"===b||"right"===b?f&&d>c:!f&&e>c};function W(a){let b=document.activeElement;return a.some(a=>a===b||(a.focus(),document.activeElement!==b))}var X=a.i(187),Y=a.i(33508),Z=a.i(68114);let $=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(E,{ref:d,className:(0,Z.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]",a),...c}));$.displayName=E.displayName;let _=(0,X.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"}}),aa=d.forwardRef(({className:a,variant:c,...d},e)=>(0,b.jsx)(I,{ref:e,className:(0,Z.cn)(_({variant:c}),a),...d}));aa.displayName=I.displayName,d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(Q,{ref:d,className:(0,Z.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",a),...c})).displayName=Q.displayName;let ab=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(S,{ref:d,className:(0,Z.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",a),"toast-close":"",...c,children:(0,b.jsx)(Y.X,{className:"h-4 w-4"})}));ab.displayName=S.displayName;let ac=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(N,{ref:d,className:(0,Z.cn)("text-sm font-semibold",a),...c}));ac.displayName=N.displayName;let ad=d.forwardRef(({className:a,...c},d)=>(0,b.jsx)(O,{ref:d,className:(0,Z.cn)("text-sm opacity-90",a),...c}));function ae(){let{toasts:a}=(0,c.useToast)();return(0,b.jsxs)(z,{children:[a.map(function({id:a,title:c,description:d,action:e,...f}){return(0,b.jsxs)(aa,{...f,children:[(0,b.jsxs)("div",{className:"grid gap-1",children:[c&&(0,b.jsx)(ac,{children:c}),d&&(0,b.jsx)(ad,{children:d})]}),e,(0,b.jsx)(ab,{})]},a)}),(0,b.jsx)($,{})]})}ad.displayName=O.displayName,a.s(["Toaster",()=>ae],42293)}]; //# sourceMappingURL=src_components_ui_toaster_tsx_475f3ca1._.js.map