pierre-review 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
|
|
8
8
|
Outdated base version: https://github.com/primer/github-syntax-dark
|
|
9
9
|
Current colors taken from GitHub's CSS
|
|
10
|
-
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-1\.5{right:.375rem}.right-2{right:.5rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-full{top:100%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.\!hidden{display:none!important}.hidden{display:none}.h-0{height:0px}.h-1{height:.25rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-full{height:100%}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[80vh\]{max-height:80vh}.min-h-0{min-height:0px}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-4{width:1rem}.w-44{width:11rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[28rem\]{width:28rem}.w-\[34rem\]{width:34rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-\[14rem\]{max-width:14rem}.max-w-\[90vw\]{max-width:90vw}.max-w-\[92vw\]{max-width:92vw}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-2{row-gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(243 244 246 / var(--tw-divide-opacity, 1))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-sky-300{--tw-border-opacity: 1;border-color:rgb(125 211 252 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.bg-\[\#8957e5\]\/15{background-color:#8957e526}.bg-amber-400\/5{background-color:#fbbf240d}.bg-black\/50{background-color:#00000080}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500\/10{background-color:#6b72801a}.bg-gray-500\/20{background-color:#6b728033}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/15{background-color:#22c55e26}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/15{background-color:#ef444426}.bg-sky-100{--tw-bg-opacity: 1;background-color:rgb(224 242 254 / var(--tw-bg-opacity, 1))}.bg-sky-500\/15{background-color:#0ea5e926}.bg-sky-500\/20{background-color:#0ea5e933}.bg-sky-500\/5{background-color:#0ea5e90d}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-3{padding-bottom:.75rem}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-28{padding-right:7rem}.pr-4{padding-right:1rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[9px\]{font-size:9px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.45\]{line-height:1.45}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-wide{letter-spacing:.025em}.text-\[\#8957e5\]{--tw-text-opacity: 1;color:rgb(137 87 229 / var(--tw-text-opacity, 1))}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-sky-400\/80{color:#38bdf8cc}.text-sky-500{--tw-text-opacity: 1;color:rgb(14 165 233 / var(--tw-text-opacity, 1))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity, 1))}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-blue-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[grid-template-rows\]{transition-property:grid-template-rows;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{color-scheme:light dark}html,body,#root{height:100%;margin:0}body{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}body:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.brand-title{font-family:Great Vibes,ui-serif,cursive;font-weight:400;font-size:1.75rem;line-height:1;letter-spacing:.3px;padding-bottom:2px}.focus-indicator{display:inline-flex;align-items:center;gap:7px;padding:2px 10px;border-radius:9999px;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:#0284c7;background:#38bdf81f;border:1px solid rgba(56,189,248,.4);white-space:nowrap}.dark .focus-indicator{color:#7dd3fc}.focus-indicator-dot{width:7px;height:7px;border-radius:9999px;background:#38bdf8;box-shadow:0 0 #38bdf899;animation:focus-dot-pulse 1.8s ease-in-out infinite}@keyframes focus-dot-pulse{0%,to{box-shadow:0 0 #38bdf88c}50%{box-shadow:0 0 0 5px #38bdf800}}@media(prefers-reduced-motion:reduce){.focus-indicator-dot{animation:none}}.md-body{font-size:13px;line-height:1.5;word-break:break-word}.md-body>*:first-child{margin-top:0}.md-body>*:last-child{margin-bottom:0}.md-body p{margin:.5em 0}.md-body h1,.md-body h2,.md-body h3{font-weight:600;margin:.6em 0 .3em}.md-body ul,.md-body ol{margin:.5em 0;padding-left:1.4em}.md-body ul{list-style:disc}.md-body ol{list-style:decimal}.md-body li{margin:.15em 0}.md-body a{color:#3b82f6;text-decoration:underline}.md-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:#7f7f7f2e;padding:.1em .3em;border-radius:4px}.md-body pre{margin:.5em 0;padding:.7em;border-radius:6px;overflow-x:auto;background:#0d1117}.md-body pre code{background:transparent;padding:0}.md-body blockquote{border-left:3px solid rgba(127,127,127,.4);padding-left:.8em;margin:.5em 0;color:#9ca3af}.md-body table{border-collapse:collapse;margin:.5em 0}.md-body th,.md-body td{border:1px solid rgba(127,127,127,.3);padding:.3em .6em}.md-body img{max-width:100%}.md-body input[type=checkbox]{margin-right:.4em}.dark .vis-timeline{border-color:#1f2937}.dark .vis-panel .vis-content,.dark .vis-panel .vis-background,.dark .vis-labelset .vis-label,.dark .vis-foreground .vis-group{border-color:#1f2937;color:#e5e7eb}.dark .vis-time-axis .vis-text{color:#9ca3af}.dark .vis-time-axis .vis-grid.vis-minor{border-color:#1f2937}.dark .vis-time-axis .vis-grid.vis-major{border-color:#374151}.dark .vis-labelset .vis-label{color:#d1d5db}.dark .vis-current-time{background-color:#ef4444}.vis-labelset .vis-label.vis-nested-group{padding-left:.625rem;font-size:11px;opacity:.85}.vis-labelset .vis-label.tl-user-row .vis-inner{width:100%;max-width:264px}.tl-user{display:flex;align-items:flex-start;gap:5px;min-width:0;width:100%}.tl-user-main{display:flex;flex-direction:column;min-width:0;flex:1 1 auto;gap:1px}.tl-user-name-line{display:flex;align-items:center;gap:5px;min-width:0}.tl-collapse-caret{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:-1px;padding:0;border:0;border-radius:3px;background:transparent;color:#9ca3af;font-size:13px;line-height:1;cursor:pointer}.tl-collapse-caret:hover{background:#7878782e;color:#374151}.dark .tl-collapse-caret:hover{color:#e5e7eb}.tl-focus-active .tl-collapse-caret{display:none}.tl-user-avatar{flex:none;width:18px;height:18px;border-radius:9999px;-o-object-fit:cover;object-fit:cover;background:#e5e7eb}.dark .tl-user-avatar{background:#374151}.tl-user-avatar-fallback{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#6b7280}.tl-user-name{font-size:12.5px;font-weight:600;flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl-user-name-link{color:inherit;text-decoration:none;cursor:pointer}.tl-user-name-link:hover{text-decoration:underline}.tl-merger{flex:none;display:inline-flex;align-items:center}.tl-user-stats{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px;font-size:11px;color:#6b7280}.dark .tl-user-stats{color:#9ca3af}.tl-stat{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.tl-stat svg{display:block}.tl-prs{gap:5px}.tl-pr{display:inline-flex;align-items:center;gap:2px}.tl-pr-dot{display:inline-block;width:6px;height:6px;border-radius:9999px}.tl-modal-header{display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;border-bottom:1px solid #e5e7eb;background:#f9fafb;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.dark .tl-modal-header{border-color:#374151;background:#11182799}.tl-modal-header:active{cursor:grabbing}.tl-grip{flex:none;color:#9ca3af}.tl-modal-title{font-size:11px;color:#9ca3af;margin-right:auto}.tl-modal-close{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;font-size:12px;line-height:1;color:#9ca3af;cursor:pointer}.tl-modal-close:hover{background:#94a3b833;color:#374151}.dark .tl-modal-close:hover{color:#e5e7eb}.tl-exit-focus{position:absolute;bottom:12px;left:12px;z-index:1000;display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:9999px;font-size:12px;font-weight:600;color:#fff;background:#2563eb;border:1px solid rgba(255,255,255,.25);box-shadow:0 2px 10px #00000059;cursor:pointer;transition:background .15s ease}.tl-exit-focus:hover{background:#1d4ed8}.vis-labelset .vis-label.tl-user-row,.vis-foreground .vis-group.tl-user-row{transition:max-height .22s ease,opacity .22s ease}@media(prefers-reduced-motion:reduce){.vis-labelset .vis-label.tl-user-row,.vis-foreground .vis-group.tl-user-row{transition:none}}.vis-labelset .vis-label.tl-user-row:nth-child(odd),.vis-foreground .vis-group.tl-user-row:nth-child(odd){background-color:transparent}.vis-labelset .vis-label.tl-user-row:nth-child(2n),.vis-foreground .vis-group.tl-user-row:nth-child(2n){background-color:#0f172a0b}.dark .vis-labelset .vis-label.tl-user-row:nth-child(2n),.dark .vis-foreground .vis-group.tl-user-row:nth-child(2n){background-color:#ffffff0d}.vis-labelset .vis-label.tl-user-row,.vis-foreground .vis-group.tl-user-row{box-shadow:inset 0 -2px #0f172a33}.dark .vis-labelset .vis-label.tl-user-row,.dark .vis-foreground .vis-group.tl-user-row{box-shadow:inset 0 -2px #ffffff29}.vis-item.pr-bar{border-radius:6px;border-width:1px;color:#fff;font-size:11px;cursor:pointer;z-index:2;min-width:4px}.vis-item.pr-emph{font-size:11px}.vis-item.pr-muted{opacity:.85;font-size:10px}.vis-item.pr-muted .pr-title{max-width:16ch}.pr-status{display:flex;align-items:center;gap:5px;padding:1px 4px 2px;font-size:9px;line-height:1.2}.pr-ci{display:inline-block;width:7px;height:7px;border-radius:50%}.pr-warn{color:#fdba74;font-weight:700}.pr-new{color:#e0f2fe;font-weight:700}.pr-comment-mark{display:inline-flex;align-items:center;color:#e0f2fe;opacity:.85}.pr-comment-mark svg{display:block}.vis-item.pr-muted .pr-comment-mark{margin-left:2px;opacity:.75}.vis-item.pr-bar.pr-open{background-color:#1d4ed8;border-color:#3b82f6}.vis-item.pr-bar.pr-merged{background-color:#15803d;border-color:#22c55e}.vis-item.pr-bar.pr-closed{background-color:#4b5563;border-color:#9ca3af}.vis-item.pr-draft{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.12),rgba(255,255,255,.12) 4px,transparent 4px,transparent 8px)}.vis-item.pr-stalled{box-shadow:0 0 0 2px #ef4444}.vis-item.vis-selected.pr-bar{overflow:visible;z-index:5;animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.pr-bar.pr-focus-hidden{display:none}@media(prefers-reduced-motion:reduce){.vis-item.vis-selected.pr-bar{animation:none;box-shadow:0 0 0 3px #38bdf8d9,0 0 12px 3px #38bdf880}}.vis-item.pr-bar.pr-cross-linked,.vis-item.ev-cross-linked .ev-marker-inner,.vis-item.ev-cross-linked .ev-cluster-inner{animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.pr-bar.pr-cross-linked{overflow:visible;z-index:5}.vis-item.ev-cross-linked .ev-marker-inner,.vis-item.ev-cross-linked .ev-cluster-inner{position:relative;z-index:5}.vis-item.ev-cross-linked .ev-marker-inner{border-radius:9999px}@media(prefers-reduced-motion:reduce){.vis-item.pr-bar.pr-cross-linked,.vis-item.ev-cross-linked .ev-marker-inner,.vis-item.ev-cross-linked .ev-cluster-inner{animation:none;box-shadow:0 0 0 3px #38bdf8d9,0 0 12px 3px #38bdf880}}@keyframes pr-focus-glow{0%{box-shadow:0 0 0 4px #38bdf8f2,0 0 20px 6px #38bdf8a6}to{box-shadow:0 0 #38bdf800,0 0 #38bdf800}}.vis-item.pr-bar.pr-focus-glow{overflow:visible;z-index:5;animation:pr-focus-glow 2s ease-out forwards}@media(prefers-reduced-motion:reduce){.vis-item.pr-bar.pr-focus-glow{animation:none;box-shadow:0 0 0 3px #38bdf8cc,0 0 12px 3px #38bdf880}}.vis-item.ev-exit-glow .ev-marker-inner,.vis-item.ev-exit-glow .ev-cluster-inner{position:relative;z-index:5;animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.ev-exit-glow .ev-marker-inner{border-radius:9999px}@media(prefers-reduced-motion:reduce){.vis-item.ev-exit-glow .ev-marker-inner,.vis-item.ev-exit-glow .ev-cluster-inner{animation:none;box-shadow:0 0 0 3px #38bdf8cc,0 0 12px 3px #38bdf880}}@keyframes ev-select-pulse{0%,to{box-shadow:0 0 0 3px #38bdf8d9,0 0 14px 5px #38bdf88c}50%{box-shadow:0 0 0 5px #38bdf866,0 0 8px 2px #38bdf840}}.vis-item.ev-selected:not(.ev-cross-linked) .ev-marker-inner,.vis-item.ev-selected:not(.ev-cross-linked) .ev-cluster-inner{position:relative;z-index:5;animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.ev-selected:not(.ev-cross-linked) .ev-marker-inner{border-radius:9999px}@media(prefers-reduced-motion:reduce){.vis-item.ev-selected:not(.ev-cross-linked) .ev-marker-inner,.vis-item.ev-selected:not(.ev-cross-linked) .ev-cluster-inner{animation:none;box-shadow:0 0 0 3px #38bdf8d9,0 0 12px 3px #38bdf880}}.pr-bar-inner{display:flex;align-items:center;gap:4px;padding:0 2px}.pr-num{font-weight:700;opacity:.85}.pr-avatar{border-radius:9999px;flex-shrink:0;vertical-align:middle}.pr-author{font-size:10px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12ch}.vis-item.pr-muted .pr-author{max-width:9ch}.pr-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:22ch}.pr-draft-tag{font-size:9px;text-transform:uppercase;background:#00000040;border-radius:3px;padding:0 3px}.pr-stall{color:#fca5a5}.pr-dots{display:inline-flex;align-items:center;gap:2px;margin-left:2px}.pr-dot{display:inline-block;width:7px;height:7px;border-radius:50%}.pr-dot-n{font-size:9px;font-weight:700;margin-right:3px}.vis-item.ev-marker,.vis-item.ev-cluster{background:transparent;border:none;box-shadow:none;pointer-events:none}.vis-item.ev-marker .vis-dot,.vis-item.ev-cluster .vis-dot{display:none}.vis-item.ev-marker .vis-item-content,.vis-item.ev-cluster .vis-item-content{transform:translate(-50%);padding:0}.ev-marker-inner{display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;pointer-events:auto}.ev-marker-inner svg{display:block}.ev-cluster-inner{display:flex;align-items:center;justify-content:center;gap:2px;min-width:18px;height:16px;padding:0 4px;border-radius:9px;background:#475569;color:#fff;font-size:10px;font-weight:700;line-height:1;cursor:pointer;border:1px solid rgba(255,255,255,.25);position:relative;pointer-events:auto}.vis-item.ev-cluster.vis-selected,.vis-item.ev-marker.vis-selected{background:transparent;box-shadow:none}.vis-item.vis-background.cross-sep{border-top:1px solid rgba(99,102,241,.38);background:#6366f10f;pointer-events:none}.dark .vis-item.vis-background.cross-sep{border-top-color:#818cf86b;background:#818cf817}.vis-item.ev-own .ev-marker-inner:after,.vis-item.ev-own .ev-cluster-inner:after{content:"";position:absolute;bottom:100%;left:50%;width:0;height:14px;border-left:1.5px solid rgba(203,213,225,.85);transform:translate(-50%);pointer-events:none}.vis-item.ev-own .ev-marker-inner.ev-round:after{bottom:calc(100% - 3px);height:17px}.vis-item.ev-cross .ev-marker-inner{border-radius:9999px;background:#6366f11a}.vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-marker-inner{box-shadow:inset 0 0 0 1px #6366f16b}.vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-cluster-inner{box-shadow:0 0 0 2px #6366f140}.dark .vis-item.ev-cross .ev-marker-inner{background:#818cf829}.dark .vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-marker-inner{box-shadow:inset 0 0 0 1px #818cf885}.dark .vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-cluster-inner{box-shadow:0 0 0 2px #818cf852}.vis-item.vis-point .vis-dot{border-width:5px}.ev-pr_opened .vis-dot{border-color:#3b82f6}.ev-pr_merged .vis-dot{border-color:#8957e5}.ev-pr_closed .vis-dot{border-color:#9ca3af}.ev-review_submitted .vis-dot{border-color:#22c55e}.ev-review_comment .vis-dot{border-color:#f59e0b}.ev-pr_comment .vis-dot{border-color:#a78bfa}.ev-commit_pushed .vis-dot{border-color:#6b7280;border-width:4px}.ev-diamond .vis-dot{border-radius:0;transform:rotate(45deg)}.ev-square .vis-dot{border-radius:2px}.comment-new{border-left:3px solid #38bdf8;margin-left:-2px;border-radius:1px;background:#38bdf80d}@keyframes activity-flash{0%{background:#38bdf847}to{background:#38bdf800}}.activity-flash{animation:activity-flash 1.8s ease-out forwards}@keyframes myturn-pulse{0%,to{box-shadow:0 0 0 1px #3b82f6e6}50%{box-shadow:0 0 0 2px #3b82f659}}.my-turn-ring,.vis-item.pr-myturn{animation:myturn-pulse 2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.my-turn-ring,.vis-item.pr-myturn{animation:none;box-shadow:0 0 0 1px #3b82f6e6}}.first\:pt-0:first-child{padding-top:0}.last\:mb-0:last-child{margin-bottom:0}.last\:pb-0:last-child{padding-bottom:0}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-red-400:hover{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.hover\:border-sky-400:hover{--tw-border-opacity: 1;border-color:rgb(56 189 248 / var(--tw-border-opacity, 1))}.hover\:bg-blue-400:hover{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200\/60:hover{background-color:#e5e7eb99}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-sky-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.hover\:bg-sky-500\/25:hover{background-color:#0ea5e940}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:opacity-100{opacity:1}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}.dark\:divide-gray-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(31 41 55 / var(--tw-divide-opacity, 1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:border-red-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.dark\:border-sky-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(3 105 161 / var(--tw-border-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900\/50:is(.dark *){background-color:#11182780}.dark\:bg-gray-900\/60:is(.dark *){background-color:#11182799}.dark\:bg-sky-900\/50:is(.dark *){background-color:#0c4a6e80}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-green-500:is(.dark *){--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-sky-300:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-sky-400:is(.dark *){--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.dark\:hover\:border-gray-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-500:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/60:hover:is(.dark *){background-color:#37415199}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-950:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-sky-900\/30:hover:is(.dark *){background-color:#0c4a6e4d}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}
|
|
10
|
+
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.right-1\.5{right:.375rem}.right-2{right:.5rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-full{top:100%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.\!hidden{display:none!important}.hidden{display:none}.h-0{height:0px}.h-1{height:.25rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-full{height:100%}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[80vh\]{max-height:80vh}.min-h-0{min-height:0px}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-4{width:1rem}.w-44{width:11rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[28rem\]{width:28rem}.w-\[34rem\]{width:34rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-\[14rem\]{max-width:14rem}.max-w-\[90vw\]{max-width:90vw}.max-w-\[92vw\]{max-width:92vw}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.resize{resize:both}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-2{row-gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(243 244 246 / var(--tw-divide-opacity, 1))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-sky-300{--tw-border-opacity: 1;border-color:rgb(125 211 252 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.bg-\[\#8957e5\]\/15{background-color:#8957e526}.bg-amber-400\/5{background-color:#fbbf240d}.bg-black\/50{background-color:#00000080}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-500\/10{background-color:#6b72801a}.bg-gray-500\/20{background-color:#6b728033}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/15{background-color:#22c55e26}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/15{background-color:#ef444426}.bg-sky-100{--tw-bg-opacity: 1;background-color:rgb(224 242 254 / var(--tw-bg-opacity, 1))}.bg-sky-500\/15{background-color:#0ea5e926}.bg-sky-500\/20{background-color:#0ea5e933}.bg-sky-500\/5{background-color:#0ea5e90d}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-3{padding-bottom:.75rem}.pl-0\.5{padding-left:.125rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-28{padding-right:7rem}.pr-4{padding-right:1rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[9px\]{font-size:9px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.45\]{line-height:1.45}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-wide{letter-spacing:.025em}.text-\[\#8957e5\]{--tw-text-opacity: 1;color:rgb(137 87 229 / var(--tw-text-opacity, 1))}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-sky-400\/80{color:#38bdf8cc}.text-sky-500{--tw-text-opacity: 1;color:rgb(14 165 233 / var(--tw-text-opacity, 1))}.text-sky-600{--tw-text-opacity: 1;color:rgb(2 132 199 / var(--tw-text-opacity, 1))}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-blue-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[grid-template-rows\]{transition-property:grid-template-rows;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{color-scheme:light dark}html,body,#root{height:100%;margin:0}body{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}body:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.brand-title{font-family:Great Vibes,ui-serif,cursive;font-weight:400;font-size:1.75rem;line-height:1;letter-spacing:.3px;padding-bottom:2px}.focus-indicator{display:inline-flex;align-items:center;gap:7px;padding:2px 10px;border-radius:9999px;font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:#0284c7;background:#38bdf81f;border:1px solid rgba(56,189,248,.4);white-space:nowrap}.dark .focus-indicator{color:#7dd3fc}.focus-indicator-dot{width:7px;height:7px;border-radius:9999px;background:#38bdf8;box-shadow:0 0 #38bdf899;animation:focus-dot-pulse 1.8s ease-in-out infinite}@keyframes focus-dot-pulse{0%,to{box-shadow:0 0 #38bdf88c}50%{box-shadow:0 0 0 5px #38bdf800}}@media(prefers-reduced-motion:reduce){.focus-indicator-dot{animation:none}}.md-body{font-size:13px;line-height:1.5;word-break:break-word}.md-body>*:first-child{margin-top:0}.md-body>*:last-child{margin-bottom:0}.md-body p{margin:.5em 0}.md-body h1,.md-body h2,.md-body h3{font-weight:600;margin:.6em 0 .3em}.md-body ul,.md-body ol{margin:.5em 0;padding-left:1.4em}.md-body ul{list-style:disc}.md-body ol{list-style:decimal}.md-body li{margin:.15em 0}.md-body a{color:#3b82f6;text-decoration:underline}.md-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:#7f7f7f2e;padding:.1em .3em;border-radius:4px}.md-body pre{margin:.5em 0;padding:.7em;border-radius:6px;overflow-x:auto;background:#0d1117}.md-body pre code{background:transparent;padding:0}.md-body blockquote{border-left:3px solid rgba(127,127,127,.4);padding-left:.8em;margin:.5em 0;color:#9ca3af}.md-body table{border-collapse:collapse;margin:.5em 0}.md-body th,.md-body td{border:1px solid rgba(127,127,127,.3);padding:.3em .6em}.md-body img{max-width:100%}.md-body input[type=checkbox]{margin-right:.4em}.dark .vis-timeline{border-color:#1f2937}.dark .vis-panel .vis-content,.dark .vis-panel .vis-background,.dark .vis-labelset .vis-label,.dark .vis-foreground .vis-group{border-color:#1f2937;color:#e5e7eb}.dark .vis-time-axis .vis-text{color:#9ca3af}.dark .vis-time-axis .vis-grid.vis-minor{border-color:#1f2937}.dark .vis-time-axis .vis-grid.vis-major{border-color:#374151}.dark .vis-labelset .vis-label{color:#d1d5db}.dark .vis-current-time{background-color:#ef4444}.vis-labelset .vis-label.vis-nested-group{padding-left:.625rem;font-size:11px;opacity:.85}.vis-labelset .vis-label.tl-user-row .vis-inner{width:100%;max-width:264px}.tl-user{display:flex;align-items:flex-start;gap:5px;min-width:0;width:100%}.tl-user-main{display:flex;flex-direction:column;min-width:0;flex:1 1 auto;gap:1px}.tl-user-name-line{display:flex;align-items:center;gap:5px;min-width:0}.tl-collapse-caret{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:-1px;padding:0;border:0;border-radius:3px;background:transparent;color:#9ca3af;font-size:13px;line-height:1;cursor:pointer}.tl-collapse-caret:hover{background:#7878782e;color:#374151}.dark .tl-collapse-caret:hover{color:#e5e7eb}.tl-focus-active .tl-collapse-caret{display:none}.tl-user-avatar{flex:none;width:18px;height:18px;border-radius:9999px;-o-object-fit:cover;object-fit:cover;background:#e5e7eb}.dark .tl-user-avatar{background:#374151}.tl-user-avatar-fallback{display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#6b7280}.tl-user-name{font-size:12.5px;font-weight:600;flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tl-user-name-link{color:inherit;text-decoration:none;cursor:pointer}.tl-user-name-link:hover{text-decoration:underline}.tl-merger{flex:none;display:inline-flex;align-items:center}.tl-user-stats{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px;font-size:11px;color:#6b7280}.dark .tl-user-stats{color:#9ca3af}.tl-stat{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}.tl-stat svg{display:block}.tl-prs{gap:5px}.tl-pr{display:inline-flex;align-items:center;gap:2px}.tl-pr-dot{display:inline-block;width:6px;height:6px;border-radius:9999px}.tl-modal-header{display:flex;align-items:center;gap:6px;padding:4px 8px;cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;border-bottom:1px solid #e5e7eb;background:#f9fafb;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.dark .tl-modal-header{border-color:#374151;background:#11182799}.tl-modal-header:active{cursor:grabbing}.tl-grip{flex:none;color:#9ca3af}.tl-modal-title{font-size:11px;color:#9ca3af;margin-right:auto}.tl-modal-close{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;font-size:12px;line-height:1;color:#9ca3af;cursor:pointer}.tl-modal-close:hover{background:#94a3b833;color:#374151}.dark .tl-modal-close:hover{color:#e5e7eb}.tl-exit-focus{position:absolute;bottom:12px;left:12px;z-index:1000;display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:9999px;font-size:12px;font-weight:600;color:#fff;background:#2563eb;border:1px solid rgba(255,255,255,.25);box-shadow:0 2px 10px #00000059;cursor:pointer;transition:background .15s ease}.tl-exit-focus:hover{background:#1d4ed8}.vis-labelset .vis-label.tl-user-row,.vis-foreground .vis-group.tl-user-row{transition:max-height .22s ease,opacity .22s ease}@media(prefers-reduced-motion:reduce){.vis-labelset .vis-label.tl-user-row,.vis-foreground .vis-group.tl-user-row{transition:none}}.vis-labelset .vis-label.tl-user-row:nth-child(odd),.vis-foreground .vis-group.tl-user-row:nth-child(odd){background-color:transparent}.vis-labelset .vis-label.tl-user-row:nth-child(2n),.vis-foreground .vis-group.tl-user-row:nth-child(2n){background-color:#0f172a0b}.dark .vis-labelset .vis-label.tl-user-row:nth-child(2n),.dark .vis-foreground .vis-group.tl-user-row:nth-child(2n){background-color:#ffffff0d}.vis-labelset .vis-label.tl-user-row,.vis-foreground .vis-group.tl-user-row{box-shadow:inset 0 -2px #0f172a33}.dark .vis-labelset .vis-label.tl-user-row,.dark .vis-foreground .vis-group.tl-user-row{box-shadow:inset 0 -2px #ffffff29}.vis-item.vis-range.pr-bar{border-radius:6px;border-width:1px;color:#fff;font-size:11px;cursor:pointer;z-index:2;min-width:4px}.vis-item.pr-emph{font-size:11px}.vis-item.pr-muted{opacity:.85;font-size:10px}.vis-item.pr-muted .pr-title{max-width:16ch}.pr-status{display:flex;align-items:center;gap:5px;padding:1px 4px 2px;font-size:9px;line-height:1.2}.pr-ci{display:inline-block;width:7px;height:7px;border-radius:50%}.pr-warn{color:#fdba74;font-weight:700}.pr-new{color:#e0f2fe;font-weight:700}.pr-comment-mark{display:inline-flex;align-items:center;color:#e0f2fe;opacity:.85}.pr-comment-mark svg{display:block}.vis-item.pr-muted .pr-comment-mark{margin-left:2px;opacity:.75}.vis-item.pr-bar.pr-open{background-color:#1d4ed8;border-color:#3b82f6}.vis-item.pr-bar.pr-merged{background-color:#15803d;border-color:#22c55e}.vis-item.pr-bar.pr-closed{background-color:#4b5563;border-color:#9ca3af}.vis-item.pr-draft{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.12),rgba(255,255,255,.12) 4px,transparent 4px,transparent 8px)}.vis-item.pr-stalled{box-shadow:0 0 0 2px #ef4444}.vis-item.vis-selected.pr-bar{overflow:visible;z-index:5;animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.pr-bar.pr-focus-hidden{display:none}@media(prefers-reduced-motion:reduce){.vis-item.vis-selected.pr-bar{animation:none;box-shadow:0 0 0 3px #38bdf8d9,0 0 12px 3px #38bdf880}}.vis-item.pr-bar.pr-cross-linked,.vis-item.ev-cross-linked .ev-marker-inner,.vis-item.ev-cross-linked .ev-cluster-inner{animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.pr-bar.pr-cross-linked{overflow:visible;z-index:5}.vis-item.ev-cross-linked .ev-marker-inner,.vis-item.ev-cross-linked .ev-cluster-inner{position:relative;z-index:5}.vis-item.ev-cross-linked .ev-marker-inner{border-radius:9999px}@media(prefers-reduced-motion:reduce){.vis-item.pr-bar.pr-cross-linked,.vis-item.ev-cross-linked .ev-marker-inner,.vis-item.ev-cross-linked .ev-cluster-inner{animation:none;box-shadow:0 0 0 3px #38bdf8d9,0 0 12px 3px #38bdf880}}@keyframes pr-focus-glow{0%{box-shadow:0 0 0 4px #38bdf8f2,0 0 20px 6px #38bdf8a6}to{box-shadow:0 0 #38bdf800,0 0 #38bdf800}}.vis-item.pr-bar.pr-focus-glow{overflow:visible;z-index:5;animation:pr-focus-glow 2s ease-out forwards}@media(prefers-reduced-motion:reduce){.vis-item.pr-bar.pr-focus-glow{animation:none;box-shadow:0 0 0 3px #38bdf8cc,0 0 12px 3px #38bdf880}}.vis-item.ev-exit-glow .ev-marker-inner,.vis-item.ev-exit-glow .ev-cluster-inner{position:relative;z-index:5;animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.ev-exit-glow .ev-marker-inner{border-radius:9999px}@media(prefers-reduced-motion:reduce){.vis-item.ev-exit-glow .ev-marker-inner,.vis-item.ev-exit-glow .ev-cluster-inner{animation:none;box-shadow:0 0 0 3px #38bdf8cc,0 0 12px 3px #38bdf880}}@keyframes ev-select-pulse{0%,to{box-shadow:0 0 0 3px #38bdf8d9,0 0 14px 5px #38bdf88c}50%{box-shadow:0 0 0 5px #38bdf866,0 0 8px 2px #38bdf840}}.vis-item.ev-selected:not(.ev-cross-linked) .ev-marker-inner,.vis-item.ev-selected:not(.ev-cross-linked) .ev-cluster-inner{position:relative;z-index:5;animation:ev-select-pulse 1.8s ease-in-out infinite}.vis-item.ev-selected:not(.ev-cross-linked) .ev-marker-inner{border-radius:9999px}@media(prefers-reduced-motion:reduce){.vis-item.ev-selected:not(.ev-cross-linked) .ev-marker-inner,.vis-item.ev-selected:not(.ev-cross-linked) .ev-cluster-inner{animation:none;box-shadow:0 0 0 3px #38bdf8d9,0 0 12px 3px #38bdf880}}.pr-bar-inner{display:flex;align-items:center;gap:4px;padding:0 2px}.pr-num{font-weight:700;opacity:.85}.pr-avatar{border-radius:9999px;flex-shrink:0;vertical-align:middle}.pr-author{font-size:10px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:12ch}.vis-item.pr-muted .pr-author{max-width:9ch}.pr-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:22ch}.pr-draft-tag{font-size:9px;text-transform:uppercase;background:#00000040;border-radius:3px;padding:0 3px}.pr-stall{color:#fca5a5}.pr-dots{display:inline-flex;align-items:center;gap:2px;margin-left:2px}.pr-dot{display:inline-block;width:7px;height:7px;border-radius:50%}.pr-dot-n{font-size:9px;font-weight:700;margin-right:3px}.vis-item.ev-marker,.vis-item.ev-cluster{background:transparent;border:none;box-shadow:none;pointer-events:none}.vis-item.ev-marker .vis-dot,.vis-item.ev-cluster .vis-dot{display:none}.vis-item.ev-marker .vis-item-content,.vis-item.ev-cluster .vis-item-content{transform:translate(-50%);padding:0}.ev-marker-inner{display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;pointer-events:auto}.ev-marker-inner svg{display:block}.ev-cluster-inner{display:flex;align-items:center;justify-content:center;gap:2px;min-width:18px;height:16px;padding:0 4px;border-radius:9px;background:#475569;color:#fff;font-size:10px;font-weight:700;line-height:1;cursor:pointer;border:1px solid rgba(255,255,255,.25);position:relative;pointer-events:auto}.vis-item.ev-cluster.vis-selected,.vis-item.ev-marker.vis-selected{background:transparent;box-shadow:none}.vis-item.vis-background.cross-sep{border-top:1px solid rgba(99,102,241,.38);background:#6366f10f;pointer-events:none}.dark .vis-item.vis-background.cross-sep{border-top-color:#818cf86b;background:#818cf817}.vis-item.ev-own .ev-marker-inner:after,.vis-item.ev-own .ev-cluster-inner:after{content:"";position:absolute;bottom:100%;left:50%;width:0;height:14px;border-left:1.5px solid rgba(203,213,225,.85);transform:translate(-50%);pointer-events:none}.vis-item.ev-own .ev-marker-inner.ev-round:after{bottom:calc(100% - 3px);height:17px}.vis-item.ev-cross .ev-marker-inner{border-radius:9999px;background:#6366f11a}.vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-marker-inner{box-shadow:inset 0 0 0 1px #6366f16b}.vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-cluster-inner{box-shadow:0 0 0 2px #6366f140}.dark .vis-item.ev-cross .ev-marker-inner{background:#818cf829}.dark .vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-marker-inner{box-shadow:inset 0 0 0 1px #818cf885}.dark .vis-item.ev-cross:not(.ev-selected):not(.ev-cross-linked):not(.ev-exit-glow) .ev-cluster-inner{box-shadow:0 0 0 2px #818cf852}.vis-item.vis-point .vis-dot{border-width:5px}.ev-pr_opened .vis-dot{border-color:#3b82f6}.ev-pr_merged .vis-dot{border-color:#8957e5}.ev-pr_closed .vis-dot{border-color:#9ca3af}.ev-review_submitted .vis-dot{border-color:#22c55e}.ev-review_comment .vis-dot{border-color:#f59e0b}.ev-pr_comment .vis-dot{border-color:#a78bfa}.ev-commit_pushed .vis-dot{border-color:#6b7280;border-width:4px}.ev-diamond .vis-dot{border-radius:0;transform:rotate(45deg)}.ev-square .vis-dot{border-radius:2px}.comment-new{border-left:3px solid #38bdf8;margin-left:-2px;border-radius:1px;background:#38bdf80d}@keyframes activity-flash{0%{background:#38bdf847}to{background:#38bdf800}}.activity-flash{animation:activity-flash 1.8s ease-out forwards}@keyframes myturn-pulse{0%,to{box-shadow:0 0 0 1px #3b82f6e6}50%{box-shadow:0 0 0 2px #3b82f659}}.my-turn-ring,.vis-item.pr-myturn{animation:myturn-pulse 2s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.my-turn-ring,.vis-item.pr-myturn{animation:none;box-shadow:0 0 0 1px #3b82f6e6}}.first\:pt-0:first-child{padding-top:0}.last\:mb-0:last-child{margin-bottom:0}.last\:pb-0:last-child{padding-bottom:0}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-red-400:hover{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.hover\:border-sky-400:hover{--tw-border-opacity: 1;border-color:rgb(56 189 248 / var(--tw-border-opacity, 1))}.hover\:bg-blue-400:hover{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200\/60:hover{background-color:#e5e7eb99}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-sky-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.hover\:bg-sky-500\/25:hover{background-color:#0ea5e940}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:opacity-100{opacity:1}@media(prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}.dark\:divide-gray-800:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(31 41 55 / var(--tw-divide-opacity, 1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:border-red-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.dark\:border-sky-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(3 105 161 / var(--tw-border-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900\/50:is(.dark *){background-color:#11182780}.dark\:bg-gray-900\/60:is(.dark *){background-color:#11182799}.dark\:bg-sky-900\/50:is(.dark *){background-color:#0c4a6e80}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-green-500:is(.dark *){--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-sky-300:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-sky-400:is(.dark *){--tw-text-opacity: 1;color:rgb(56 189 248 / var(--tw-text-opacity, 1))}.dark\:hover\:border-gray-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-500:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/60:hover:is(.dark *){background-color:#37415199}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-900:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-950:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-sky-900\/30:hover:is(.dark *){background-color:#0c4a6e4d}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}
|
|
@@ -1354,7 +1354,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
1354
1354
|
`).at(-1)??null:null}function Gve({ev:e,pr:n,usersById:t,onOpen:r}){const s=n.authorId!=null?t.get(n.authorId):void 0,a=e.actorId!=null&&n.authorId!=null&&e.actorId!==n.authorId;return C.jsxs("div",{className:"flex items-baseline gap-1 text-[11px] text-gray-500",children:[C.jsx("span",{children:"on"}),a&&C.jsxs("span",{className:"font-medium text-gray-600 dark:text-gray-300",children:[ua(s,n.authorId),"’s"]}),C.jsxs("button",{type:"button",onClick:r,className:"font-medium text-blue-500 hover:underline",children:["#",n.number]}),C.jsx("span",{className:"truncate text-gray-400",title:n.title,children:n.title})]})}function UO({ev:e,usersById:n,prsById:t,onNavigate:r}){var j;const s=He(G=>G.selectThread),a=He(G=>G.selectPr),o=He(G=>G.showActivityEntry),u=He(G=>G.showPrComment),c=P$(e),f=e.actorId!=null?n.get(e.actorId):void 0,h=ua(f,e.actorId),m=e.type==="review_comment"&&e.threadId!=null,{data:g}=Yve(m?e.threadId:null),y=Date.parse(e.occurredAt),w=(g==null?void 0:g.comments.find(G=>Date.parse(G.createdAt)===y&&G.authorId===e.actorId))??(g==null?void 0:g.comments[0]),S=g?Wve((w==null?void 0:w.diffHunk)??((j=g.comments[0])==null?void 0:j.diffHunk)??null):null,k=e.type==="commit_pushed",N=e.type==="pr_comment",{data:D}=X$((k||N)&&e.prId!=null?e.prId:null),R=k&&D?D.commits.find(G=>G.id===e.refId):void 0,I=N&&D?D.comments.find(G=>G.id===e.refId):void 0,L=e.prId!=null?t.get(e.prId):void 0,A=()=>{e.threadId!=null?s(e.prId,e.threadId):N&&e.prId!=null&&e.refId!=null?u(e.prId,e.refId):e.prId!=null&&a(e.prId),r()},Y=()=>{e.prId!=null&&(o(e.prId,{type:e.type,refId:e.refId}),r())};return C.jsxs("div",{className:"space-y-1.5",children:[C.jsxs("div",{className:"flex items-center gap-1.5 text-[11px]",children:[C.jsx("span",{className:"inline-block h-3 w-3",dangerouslySetInnerHTML:{__html:c.svg}}),C.jsx("span",{className:"font-semibold",children:h}),C.jsxs("span",{className:"text-gray-500",children:["· ",c.label]}),C.jsx("span",{className:"ml-auto text-gray-400",children:ca(e.occurredAt)})]}),L&&C.jsx(Gve,{ev:e,pr:L,usersById:n,onOpen:A}),k&&C.jsx("div",{className:"text-[11px]",children:R?C.jsxs("div",{className:"flex items-center gap-1.5",children:[C.jsx("code",{className:"rounded bg-gray-100 px-1 font-mono text-gray-600 dark:bg-gray-800 dark:text-gray-300",children:R.sha.slice(0,7)}),R.message&&C.jsx("span",{className:"truncate text-gray-600 dark:text-gray-300",children:R.message.split(`
|
|
1355
1355
|
`)[0]})]}):C.jsx("span",{className:"text-gray-400",children:"loading commit…"})}),g&&C.jsxs("div",{className:"flex items-center gap-1.5 text-[11px]",children:[C.jsxs("code",{className:"truncate font-mono text-gray-600 dark:text-gray-300",children:[g.path,g.line!=null?`:${g.line}`:""]}),C.jsx("span",{className:"ml-auto shrink-0",children:C.jsx(Z$,{state:g.derivedState})})]}),S&&C.jsx("pre",{className:"overflow-x-auto rounded border border-gray-200 bg-gray-50 px-2 py-1 font-mono text-[11px] leading-snug text-gray-600 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300",children:S}),w&&C.jsxs("div",{className:"text-xs",children:[C.jsx(Dh,{children:w.body}),g&&g.comments.length>1&&C.jsxs("div",{className:"mt-1 text-[11px] text-gray-400",children:["+",g.comments.length-1," more in thread"]})]}),N&&C.jsx("div",{className:"text-xs",children:I?C.jsx(Dh,{children:I.body}):C.jsx("span",{className:"text-gray-400",children:"loading comment…"})}),C.jsxs("div",{className:"flex items-center gap-3 pt-0.5 text-[11px]",children:[!k&&C.jsx("button",{type:"button",onClick:A,className:"text-blue-500 hover:underline",children:"Open in detail pane"}),k&&e.prId!=null&&C.jsx("button",{type:"button",onClick:Y,className:"text-blue-500 hover:underline",title:"Show this commit in the PR's Activity tab",children:"View in Activity"}),k&&R&&D&&C.jsx("a",{href:`${D.githubUrl}/commits/${R.sha}`,target:"_blank",rel:"noreferrer noopener",className:"text-blue-500 hover:underline",children:"Open commit on GitHub ↗"}),N&&I&&D&&C.jsx("a",{href:I.url??D.githubUrl,target:"_blank",rel:"noreferrer noopener",className:"text-blue-500 hover:underline",children:"Open on GitHub ↗"})]})]})}function Vve({state:e,eventsById:n,usersById:t,prsById:r,focusPrId:s,onContextFocus:a,onDismiss:o,onNavigate:u}){var j;const[c,f]=Q$("pierre:popoverSize",null),{refs:h,floatingStyles:m,context:g,isPositioned:y}=Uve({open:!0,onOpenChange:G=>{G||o()},placement:"right-start",middleware:[Sve(24),Tve({fallbackPlacements:["left-start","bottom"]}),Eve({padding:8})],whileElementsMounted:gve}),w=Bve(g,{outsidePress:!1}),{getFloatingProps:S}=Hve([w]);H.useEffect(()=>{h.setReference({getBoundingClientRect:()=>({x:e.x,y:e.y,top:e.y,left:e.x,right:e.x,bottom:e.y,width:0,height:0})})},[h,e.x,e.y]);const k=e.eventIds.map(G=>n.get(G)).filter(G=>G!=null).filter(G=>s==null||G.prId===s),N=((j=k[0])==null?void 0:j.prId)??null;H.useEffect(()=>{a({groupIds:null,prId:N,eventId:null})},[N,a]);const D=G=>{const F=G.currentTarget;f({width:F.offsetWidth,height:F.offsetHeight})},[R,I]=H.useState({x:0,y:0}),L=H.useRef(null);H.useEffect(()=>{const G=B=>{const X=L.current;X&&I({x:X.ox+(B.clientX-X.sx),y:X.oy+(B.clientY-X.sy)})},F=()=>{L.current=null};return window.addEventListener("pointermove",G),window.addEventListener("pointerup",F),()=>{window.removeEventListener("pointermove",G),window.removeEventListener("pointerup",F)}},[]);const A=G=>{G.button===0&&(G.preventDefault(),L.current={sx:G.clientX,sy:G.clientY,ox:R.x,oy:R.y})},Y=`${m.transform??""} translate(${R.x}px, ${R.y}px)`.trim();return C.jsxs("div",{ref:h.setFloating,style:{...m,transform:Y,visibility:y?"visible":"hidden",width:(c==null?void 0:c.width)??420,height:(c==null?void 0:c.height)??340,minWidth:240,minHeight:120,maxWidth:"92vw",maxHeight:"80vh",resize:"both",overflow:"hidden"},...S(),onPointerUp:D,className:"z-50 flex flex-col rounded-lg border border-gray-200 bg-white shadow-xl dark:border-gray-700 dark:bg-gray-900",children:[C.jsxs("div",{className:"tl-modal-header",onPointerDown:A,children:[C.jsx("svg",{className:"tl-grip",width:"10",height:"10",viewBox:"0 0 10 10","aria-hidden":"true",children:C.jsxs("g",{fill:"currentColor",children:[C.jsx("circle",{cx:"2",cy:"2",r:"1"}),C.jsx("circle",{cx:"8",cy:"2",r:"1"}),C.jsx("circle",{cx:"2",cy:"5",r:"1"}),C.jsx("circle",{cx:"8",cy:"5",r:"1"}),C.jsx("circle",{cx:"2",cy:"8",r:"1"}),C.jsx("circle",{cx:"8",cy:"8",r:"1"})]})}),C.jsx("span",{className:"tl-modal-title",children:k.length>1?`${k.length} events`:"Activity"}),C.jsx("button",{type:"button",className:"tl-modal-close",onPointerDown:G=>G.stopPropagation(),onClick:o,"aria-label":"Close",title:"Close",children:"✕"})]}),C.jsx("div",{className:"min-h-0 flex-1 overflow-auto p-2",children:k.length===1?C.jsx(UO,{ev:k[0],usersById:t,prsById:r,onNavigate:u}):C.jsx("div",{className:"divide-y divide-gray-200 dark:divide-gray-800",children:k.map(G=>C.jsx("div",{className:"py-2 first:pt-0 last:pb-0",children:C.jsx(UO,{ev:G,usersById:t,prsById:r,onNavigate:u})},G.id))})})]})}const Kve=1e3*60*60,qve=2e3,Xve={stack:!1,stackSubgroups:!0,orientation:{axis:"top",item:"top"},zoomMin:Kve,zoomMax:1e3*60*60*24*365*2,margin:{item:4,axis:8},tooltip:{followMouse:!0,overflowMethod:"flip"},verticalScroll:!0,horizontalScroll:!0,selectable:!0,multiselect:!1,maxHeight:"100%",xss:{disabled:!0}},Qve=12;function HO(e){return[...new Set(e)]}function YO(e,n){var s,a;if(!e)return 0;const t=e.body,r=n==null?void 0:n.querySelector(".vis-panel.vis-center");return((a=(s=t==null?void 0:t.domProps)==null?void 0:s.center)==null?void 0:a.width)||(r==null?void 0:r.clientWidth)||(n==null?void 0:n.clientWidth)||0}function gh(e){return Date.parse(String(e.start))}function Zve(e){return e.end!=null?Date.parse(String(e.end)):gh(e)}function Jve(e,n){if(n<=0)return;const t=Qve*n,r=new Map;for(const s of e){const a=`${String(s.group)}|${String(s.subgroup??"")}`,o=r.get(a);o?o.push(s):r.set(a,[s])}for(const s of r.values())if(s.length!==0){s.sort((a,o)=>gh(a)-gh(o));for(let a=0;a<s.length;a++){const o=s[a],u=gh(o),c=Zve(o),f=a+1<s.length?gh(s[a+1]):Number.POSITIVE_INFINITY,h=Math.min(Math.max(c,u+t),f);h!==c&&(o.end=new Date(h).toISOString())}}}function WO(e,n){const t=n.getTime()-e.getTime(),r=Math.max(t*.06,14400*1e3),s=Math.max(t*.03,7200*1e3);return{start:new Date(e.getTime()-s),end:new Date(n.getTime()+r)}}function eye(e,n){if(e===n)return!0;if(e==null||n==null||e.length!==n.length)return!1;const t=new Set(e);return n.every(r=>t.has(r))}function tye(e){const n=document.createElement("div");return n.innerHTML=e,n.firstElementChild??n}function nye(){const e=typeof navigator<"u"?navigator.platform||navigator.userAgent:"";return/Mac|iP(hone|ad|od)/.test(e)?"metaKey":"ctrlKey"}function Kc(e){return e.actorId!=null?`repo:${e.repoId}:user:${e.actorId}`:`repo:${e.repoId}`}const rye=/^repo:\d+:user:\d+$/;function us(e){return`tlg-${e.replace(/:/g,"-")}`}function iye(e){const n=new Date(e.openedAt).getTime(),t=new Date(e.mergedAt??e.closedAt??new Date().toISOString()).getTime();return(n+t)/2}function sye(){const e=H.useRef(null),n=H.useRef(null),t=H.useRef(new Tl),r=H.useRef(new Tl),s=H.useRef(new Map),a=H.useRef(new Map),o=H.useRef(new Map),u=H.useRef([]),c=H.useRef(null),f=H.useRef(new Map),h=H.useRef(new Map),m=H.useRef(new Map),g=H.useRef(null),y=H.useRef(null),w=H.useRef(new Set),S=H.useRef(new Set),k=H.useRef(!1);if(!k.current){k.current=!0;try{const K=localStorage.getItem("pierre:collapsedRows");if(K){const ae=JSON.parse(K);Array.isArray(ae)&&(S.current=new Set(ae.map(String)))}}catch{}}const N=H.useRef(new Map),D=H.useRef(null),R=H.useRef(null),I=H.useRef(null),L=H.useRef(null),A=H.useRef(null),Y=H.useRef(null),j=H.useRef(null),G=H.useRef(null),F=H.useRef(0),B=H.useRef(!1),X=H.useRef(!1),ue=H.useRef(null),ne=H.useRef(0),ie=H.useRef(null),_e=H.useRef(null),xe=H.useRef(null),ee=H.useRef(0),[ge,$]=H.useState(null),Q=H.useRef(null);Q.current=ge;const[le,U]=H.useState(!1),{data:Ne,isLoading:ye,error:We}=px(),{data:_t}=OI(),{data:dt}=mx(),{data:be}=gx(),{data:ve}=qh(),{data:Te}=_v(),{data:qe}=hx(),ut=fa(),at=He(K=>K.derivedStates),zt=He(K=>K.userIds),gt=He(K=>K.selectPr),Ut=He(K=>K.selectedPrId),En=H.useRef(Ut),[qn,Rn]=H.useState(0),[Ln,Mi]=H.useState(0),zs=He(K=>K.preset),Zr=He(K=>K.customFrom),ks=He(K=>K.customTo),fe=He(K=>K.rangeResetSignal),Me=H.useMemo(()=>{const K=new Map;for(const ae of ve??[])K.set(ae.id,ae.fullName);return K},[ve]),ft=H.useMemo(()=>{const K=new Map;for(const ae of qe??[])K.set(ae.repoId,new Set(ae.userIds));return K},[qe]),vt=H.useMemo(()=>Xh(Te),[Te]);f.current=vt;const it=H.useRef(!1);H.useEffect(()=>{if(!Ne)return;let K=!1;for(const ae of Ne.events)if(ae.actorId!=null&&!vt.has(ae.actorId)){K=!0;break}if(!K){for(const ae of Ne.prs)if(ae.authorId!=null&&!vt.has(ae.authorId)){K=!0;break}}if(!K){it.current=!1;return}it.current||(it.current=!0,ut.invalidateQueries({queryKey:["users"]}))},[Ne,vt,ut]);const Fn=H.useMemo(()=>{const K=new Map;for(const ae of(Ne==null?void 0:Ne.prs)??[])K.set(ae.id,ae);return K},[Ne]);h.current=Fn;const kr=H.useCallback(K=>{const ae=t.current,we=g.current;if(we!=null&&we!==K){const pe=ae.get(`pr:${we}`);pe&&typeof pe.className=="string"&&ae.update({id:`pr:${we}`,className:pe.className.replace(/\s*pr-cross-linked/g,"")})}if(K!=null){const pe=ae.get(`pr:${K}`);pe&&typeof pe.className=="string"&&!pe.className.includes("pr-cross-linked")&&ae.update({id:`pr:${K}`,className:`${pe.className} pr-cross-linked`})}g.current=K},[]),mn=H.useCallback(K=>{const ae=t.current,we=R.current;if(we!=null){const Ge=ae.get(we);Ge&&typeof Ge.className=="string"&&Ge.className.includes("ev-cross-linked")&&ae.update({id:we,className:Ge.className.replace(/\s*ev-cross-linked/g,"")}),R.current=null}if(D.current=K,K==null)return;const pe=ae.get(`ev:${K}`)?`ev:${K}`:o.current.get(K)??null;if(pe==null)return;const Ee=ae.get(pe);Ee&&typeof Ee.className=="string"&&!Ee.className.includes("ev-cross-linked")&&(ae.update({id:pe,className:`${Ee.className} ev-cross-linked`}),R.current=pe)},[]),Un=H.useCallback(K=>{const ae=t.current;for(const Ee of ae.getIds()){const Ge=ae.get(Ee);Ge&&typeof Ge.className=="string"&&Ge.className.includes("ev-exit-glow")&&ae.update({id:Ee,className:Ge.className.replace(/\s*ev-exit-glow/g,"")})}if(L.current=null,I.current=K,K==null)return;const we=ae.get(`ev:${K}`)?`ev:${K}`:o.current.get(K)??null;if(we==null)return;const pe=ae.get(we);pe&&typeof pe.className=="string"&&!pe.className.includes("ev-exit-glow")&&(ae.update({id:we,className:`${pe.className} ev-exit-glow`}),L.current=we)},[]),Sr=H.useCallback(K=>{const ae=t.current;for(const Ee of ae.getIds()){const Ge=ae.get(Ee);Ge&&typeof Ge.className=="string"&&Ge.className.includes("ev-selected")&&ae.update({id:Ee,className:Ge.className.replace(/\s*ev-selected/g,"")})}if(xe.current=null,_e.current=K,K==null)return;const we=ae.get(`ev:${K}`)?`ev:${K}`:o.current.get(K)??null;if(we==null)return;const pe=ae.get(we);pe&&typeof pe.className=="string"&&!pe.className.includes("ev-selected")&&(ae.update({id:we,className:`${pe.className} ev-selected`}),xe.current=we)},[]),ln=H.useCallback(K=>{const ae=t.current;A.current&&clearTimeout(A.current);for(const pe of ae.get())typeof pe.className=="string"&&pe.className.includes("pr-focus-glow")&&ae.update({id:pe.id,className:pe.className.replace(/\s*pr-focus-glow/g,"")});const we=ae.get(`pr:${K}`);!we||typeof we.className!="string"||(we.className.includes("pr-focus-glow")||ae.update({id:`pr:${K}`,className:`${we.className} pr-focus-glow`}),A.current=setTimeout(()=>{const pe=ae.get(`pr:${K}`);pe&&typeof pe.className=="string"&&ae.update({id:`pr:${K}`,className:pe.className.replace(/\s*pr-focus-glow/g,"")}),A.current=null},qve))},[]),Hn=H.useCallback(()=>{const K=t.current,ae=w.current,we=[],pe=[],Ee=y.current!=null;for(const Ge of u.current){const Le=String(Ge.id),Fe=ae.has(String(Ge.group))||!Ee&&S.current.has(String(Ge.group)),ce=K.get(Le)!=null;Fe&&ce?we.push(Le):!Fe&&!ce&&pe.push(Ge)}we.length&&K.remove(we),pe.length&&K.add(pe)},[]),tr=H.useCallback(()=>{try{localStorage.setItem("pierre:collapsedRows",JSON.stringify([...S.current]))}catch{}},[]),Pr=H.useCallback((K,ae)=>{var Fe,ce;const we=r.current;if(!we.get(K))return;const pe=t.current.get(),Ee=new Set;for(const ke of pe)ke.group===K&&typeof ke.subgroup=="string"&&Ee.add(ke.subgroup);const Ge={};for(const ke of Ee)Ge[ke]=!ae;we.update({id:K,subgroupVisibility:Ge}),ae?S.current.add(K):S.current.delete(K),tr(),Hn();const Le=n.current;(ce=(Fe=Le==null?void 0:Le.itemSet)==null?void 0:Fe.markDirty)==null||ce.call(Fe,{restackGroups:!0}),Le==null||Le.redraw()},[tr,Hn]),ts=H.useCallback(K=>{const ae=r.current.getIds().map(String).filter(Ee=>rye.test(Ee)),we=K&&K.length?new Set(K):null,pe=[];for(const Ee of ae){const Ge=we!=null&&!we.has(Ee);Ge?w.current.add(Ee):w.current.delete(Ee),pe.push({id:Ee,visible:!Ge})}pe.length&&r.current.update(pe),y.current=we?K:null,Hn()},[Hn]),Yn=H.useCallback(()=>{const K=n.current,ae=e.current,we=c.current;if(!K||!ae||!we)return;const pe=K.getWindow(),Ee=pe.end.valueOf()-pe.start.valueOf(),Ge=ae.clientWidth||1e3,Le=Ee/Ge,Fe=X.current&&ue.current!=null?we.events.filter(et=>et.prId===ue.current):we.events,{items:ce,clusterMembers:ke}=kge(Fe,Kc,f.current,h.current,m.current,Le);a.current=ke;const ze=new Map;for(const[et,wt]of ke)for(const Dn of wt)ze.set(Dn,et);o.current=ze;const Re=t.current.getIds().filter(et=>{const wt=String(et);return wt.startsWith("ev:")||wt.startsWith("cl:")||wt.startsWith("xsep:")});if(t.current.remove(Re),t.current.add(ce),u.current=ce.filter(et=>String(et.id).startsWith("xsep:")),Hn(),D.current!=null){const et=D.current;R.current=null,D.current=null,mn(et)}if(I.current!=null){const et=I.current;L.current=null,I.current=null,Un(et)}if(_e.current!=null){const et=_e.current;xe.current=null,_e.current=null,Sr(et)}},[mn,Un,Sr,Hn]),Er=H.useCallback((K,ae)=>{const we=r.current;for(const[Fe,ce]of N.current){if(!we.get(Fe))continue;const ke={};for(const ze of ce)ke[ze]=!0;we.update({id:Fe,subgroupVisibility:ke})}if(N.current.clear(),!K||K.length===0||ae==null)return;const pe=m.current.get(ae),Ee=h.current.get(ae),Ge=Ee?oo(Ee):null,Le=t.current.get();for(const Fe of K){const ce=new Set(["cross"]);Fe===Ge&&pe!=null&&(ce.add(`bar:${pe}`),ce.add(`ev:${pe}`));const ke=new Set;for(const et of Le)et.group===Fe&&typeof et.subgroup=="string"&&ke.add(et.subgroup);const ze=[...ke].filter(et=>!ce.has(et)),Re={};for(const et of ze)Re[et]=!1;for(const et of ke)ce.has(et)&&(Re[et]=!0);Object.keys(Re).length!==0&&(we.update({id:Fe,subgroupVisibility:Re}),ze.length&&N.current.set(Fe,ze))}},[]),ur=H.useCallback(K=>{const ae=t.current,we=[];for(const pe of ae.getIds()){const Ee=String(pe);if(!Ee.startsWith("pr:"))continue;const Ge=ae.get(pe);if(!Ge||typeof Ge.className!="string")continue;const Le=Number.parseInt(Ee.slice(3),10),Fe=Ge.className.includes("pr-focus-hidden"),ce=K!=null&&Le!==K;ce&&!Fe?we.push({id:pe,className:`${Ge.className} pr-focus-hidden`}):!ce&&Fe&&we.push({id:pe,className:Ge.className.replace(/\s*pr-focus-hidden/g,"")})}we.length&&ae.update(we)},[]),V=H.useCallback(K=>{Un(null);const ae=X.current;Er((K==null?void 0:K.groupIds)??null,(K==null?void 0:K.prId)??null),ts((K==null?void 0:K.groupIds)??null),kr((K==null?void 0:K.prId)??null),mn((K==null?void 0:K.eventId)??null);const we=!!(K!=null&&K.groupIds&&K.groupIds.length>0);if(U(we),He.getState().setFocusActive(we),we||(B.current=!1,X.current=!1,ue.current=null),we&&(K==null?void 0:K.prId)!=null){const pe=He.getState();pe.selectedPrId!==K.prId&&pe.selectPr(K.prId)}if(!we&&ae&&(ur(null),Yn()),!we&&S.current.size>0)for(const pe of S.current)Pr(pe,!0)},[Er,ts,kr,mn,Un,ur,Yn,Pr]),re=H.useCallback(K=>{X.current||V(K)},[V]),$e=H.useCallback((K,ae)=>{const we=n.current,pe=c.current;if(!we||!pe)return;const Ee=h.current.get(K);if(!Ee)return;const Ge=Ee.repoId,Le=new Set;Ee.authorId!=null&&Le.add(Ee.authorId);let Fe=1/0,ce=-1/0;const ke=Re=>{Re<Fe&&(Fe=Re),Re>ce&&(ce=Re)};ke(new Date(Ee.openedAt).getTime()),Ee.mergedAt&&ke(new Date(Ee.mergedAt).getTime()),Ee.closedAt&&ke(new Date(Ee.closedAt).getTime());for(const Re of pe.events)Re.prId===K&&(Re.actorId!=null&&Le.add(Re.actorId),ke(new Date(Re.occurredAt).getTime()));const ze=[...Le].map(Re=>`repo:${Ge}:user:${Re}`);if((ae==null?void 0:ae.fitWindow)!==!1&&Number.isFinite(Fe)&&Number.isFinite(ce)){const Re=Math.max((ce-Fe)*.08,432e5);we.setWindow(Fe-Re,ce+Re,{animation:!0})}history.pushState({pierreFocus:1},""),X.current=!0,ue.current=K,V({groupIds:ze.length?ze:null,prId:K,eventId:(ae==null?void 0:ae.anchorEventId)??null}),Yn(),ur(K),we.setSelection([`pr:${K}`]),(ae==null?void 0:ae.anchorEventId)!=null&&mn(ae.anchorEventId)},[V,Yn,ur,mn]),ht=H.useCallback(()=>{const K=e.current;return K?K.querySelector(".vis-panel.vis-left.vis-vertical-scroll")??K.querySelector(".vis-panel.vis-right.vis-vertical-scroll"):null},[]),Mt=H.useCallback(K=>{const ae=ht();if(!ae)return;const we=Math.max(0,ae.scrollHeight-ae.clientHeight);ae.scrollTop=Math.max(0,Math.min(we,K)),ae.dispatchEvent(new Event("scroll"))},[ht]),yt=H.useCallback((K,ae,we=".ev-cross-linked",pe=".pr-cross-linked")=>{const Ee=e.current,Ge=ht(),Le=Ee==null?void 0:Ee.querySelector(".vis-panel.vis-center");if(!Ee||!Ge||!Le)return;const Fe=`.vis-labelset .vis-label.${K}`;let ce;const ke=Kt=>{const bt=Le.getBoundingClientRect(),Tt=Kt.getBoundingClientRect();return Tt.top+Tt.height/2-bt.top-bt.height/2},ze=()=>{const Kt=Bt=>[...Ee.querySelectorAll(Bt)].filter(Mn=>Mn.offsetHeight>0).sort((Mn,Xn)=>Xn.offsetHeight-Mn.offsetHeight)[0];if(ae){const Bt=Kt(we);if(Bt)return{delta:ke(Bt),settleable:!0};const Mn=Ee.querySelector(`.vis-foreground .vis-group.${K}`);if(Mn){const Xn=Le.getBoundingClientRect();return{delta:Mn.getBoundingClientRect().bottom-12-(Xn.top+Xn.height/2),settleable:!1}}return null}if(ce&&ce.isConnected&&ce.offsetHeight>0)return{delta:ke(ce),settleable:!0};const bt=Kt(pe);if(bt)return ce=bt,{delta:ke(bt),settleable:!0};const Tt=Ee.querySelector(Fe);return Tt?{delta:ke(Tt),settleable:!0}:null},Re=Ee.querySelector(Fe);Re&&Mt(Re.offsetTop-8);let et=0,wt=0;const Dn=()=>{const Kt=ze();Kt!=null&&(Math.abs(Kt.delta)>6?(Mt(Ge.scrollTop+Kt.delta),wt=0):Kt.settleable?wt+=1:wt=0),wt<6&&et++<90&&requestAnimationFrame(Dn)};requestAnimationFrame(()=>requestAnimationFrame(Dn))},[ht,Mt]),Se=H.useCallback(K=>{Un(K);const ae=s.current.get(K);if(!ae)return;const we=us(Kc(ae));requestAnimationFrame(()=>requestAnimationFrame(()=>yt(we,!0,".ev-exit-glow")))},[Un,yt]),Ue=H.useCallback(()=>{const K=n.current,ae=ie.current;if(!K||!ae)return;const we=K.getWindow();if(Math.abs(we.start.valueOf()-ae.start.valueOf())<1e3&&Math.abs(we.end.valueOf()-ae.end.valueOf())<1e3)return;const Ee=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;K.setWindow(ae.start,ae.end,{animation:!Ee})},[]),je=H.useCallback(K=>{Mt(K);let ae=0;const we=()=>{Mt(K);const pe=ht();!(pe!=null&&Math.abs(pe.scrollTop-K)<=2)&&ae++<4&&requestAnimationFrame(we)};requestAnimationFrame(we)},[Mt,ht]),Vt=H.useCallback((K,ae,we)=>{var pe;we.length!==0&&(y.current||V(null),ne.current===0&&history.pushState({pierreDrill:1},""),ne.current=1,ie.current=((pe=n.current)==null?void 0:pe.getWindow())??null,$({x:K,y:ae,eventIds:we}))},[V]),an=H.useCallback(()=>{const K=ne.current;$(null),K>0&&(ee.current+=1,history.go(-K)),ne.current=0,y.current||V(null)},[V]),mr=H.useCallback((K=!0)=>{const ae=K?D.current:null,we=X.current,pe=ue.current;if(V(null),$(null),ne.current=0,ie.current=null,we&&K){const Ee=n.current,Ge=ae!=null?s.current.get(ae):void 0,Le=pe!=null?h.current.get(pe):void 0;if(Ee){const Fe=Ge?new Date(Ge.occurredAt).getTime():Le?iye(Le):null;if(Fe!=null){const ce=Ee.getWindow(),ke=ce.end.valueOf()-ce.start.valueOf();Ee.setWindow(Fe-ke/2,Fe+ke/2,{animation:!1})}pe!=null&&Ee.setSelection([`pr:${pe}`])}if(ae!=null)Se(ae);else if(Le){const Fe=us(oo(Le));requestAnimationFrame(()=>requestAnimationFrame(()=>yt(Fe,!1,".ev-cross-linked",".pr-bar.vis-selected")))}return}Ue(),ae!=null&&Se(ae)},[V,Ue,Se,yt]),Zt=H.useCallback((K=!0)=>{const ae=(X.current?1:0)+ne.current;ae>0&&(ee.current+=1,history.go(-ae)),mr(K)},[mr]),nr=H.useCallback(()=>{if(!B.current&&!y.current)return;const K=(X.current?1:0)+ne.current;K>0&&(ee.current+=1,history.go(-K)),ne.current=0,B.current=!1,V(null)},[V]),Jr=H.useCallback(()=>{$(null)},[]);H.useEffect(()=>{const K=()=>{if(ee.current>0){ee.current-=1;return}const ae=ne.current;if(X.current){ae>0&&(ee.current+=1,history.go(-ae)),mr(!0);return}if(ae===1){const we=D.current;ne.current=0,V(null),$(null),Ue(),ie.current=null,we!=null&&Se(we)}};return window.addEventListener("popstate",K),()=>window.removeEventListener("popstate",K)},[V,Ue,Se,mr]),H.useEffect(()=>{Sr(ge&&!le?ge.eventIds[0]??null:null)},[ge,le,Sr]);const gn=(ge==null?void 0:ge.eventIds[0])??null;H.useEffect(()=>{if(gn==null)return;const K=s.current.get(gn);(K==null?void 0:K.prId)!=null&&He.getState().selectPr(K.prId)},[gn]);const gr=He(K=>K.repoIds),rr=H.useRef(gr);H.useEffect(()=>{const K=rr.current;rr.current=gr,!eye(K,gr)&&(le||y.current||B.current)&&Zt(!1)},[gr,le,Zt]);const Yr=He(K=>K.exitFocusSignal),ma=H.useRef(Yr);H.useEffect(()=>{Yr!==ma.current&&(ma.current=Yr,(le||y.current||B.current)&&Zt())},[Yr,le,Zt]),H.useEffect(()=>()=>{A.current&&clearTimeout(A.current)},[]),H.useEffect(()=>{if(!e.current)return;const{from:K,to:ae}=kg(He.getState()),{start:we,end:pe}=WO(K,ae),Ee=new Lme(e.current,t.current,r.current,{...Xve,start:we,end:pe,zoomKey:nye()});Ee.on("click",Fe=>{var Dn,Kt;const ce=Fe.item,ke=((Dn=Fe.event)==null?void 0:Dn.srcEvent)??Fe.event,ze=(ke==null?void 0:ke.clientX)??Fe.pageX??0,Re=(ke==null?void 0:ke.clientY)??Fe.pageY??0,et=(ke==null?void 0:ke.target)??null;if((Kt=et==null?void 0:et.closest)!=null&&Kt.call(et,"[data-collapse-gid]"))return;if(ce==null){Q.current?an():y.current||(En.current!=null?He.getState().clearSelection():I.current!=null&&Un(null));return}const wt=String(ce);if(wt.startsWith("pr:"))gt(Number.parseInt(wt.slice(3),10));else if(wt.startsWith("ev:")){const bt=Number.parseInt(wt.slice(3),10);if(X.current){mn(bt),Vt(ze,Re,[bt]);return}const Tt=s.current.get(bt),Bt=(Tt==null?void 0:Tt.prId)!=null?h.current.get(Tt.prId):void 0;if(Tt!=null&&Tt.actorId!=null&&(Bt==null?void 0:Bt.authorId)!=null&&Tt.actorId!==Bt.authorId&&Tt.prId!=null){$e(Tt.prId,{anchorEventId:bt,fitWindow:!1});const Xn=n.current;if(Xn){const ei=new Date(Tt.occurredAt).getTime(),ti=Xn.getWindow(),Tr=ti.end.valueOf()-ti.start.valueOf();Xn.setWindow(ei-Tr/2,ei+Tr/2,{animation:!1})}Vt(ze,Re,[bt]);const Wr=us(Kc(Tt));window.setTimeout(()=>yt(Wr,!0,".ev-cross-linked"),320);return}if(y.current){if(Zt(!1),Vt(ze,Re,[bt]),Tt){const Xn=us(Kc(Tt));window.setTimeout(()=>yt(Xn,!0,".ev-selected"),320)}return}Vt(ze,Re,[bt])}else if(wt.startsWith("cl:")){const bt=a.current.get(wt)??[];if(bt.length===0)return;const Tt=bt[0];if(X.current){mn(Tt),Vt(ze,Re,bt);return}const Bt=s.current.get(Tt),Mn=(Bt==null?void 0:Bt.prId)!=null?h.current.get(Bt.prId):void 0;if(Bt!=null&&Bt.actorId!=null&&(Mn==null?void 0:Mn.authorId)!=null&&Bt.actorId!==Mn.authorId&&Bt.prId!=null){$e(Bt.prId,{anchorEventId:Tt,fitWindow:!1});const Wr=n.current;if(Wr){const ti=new Date(Bt.occurredAt).getTime(),Tr=Wr.getWindow(),Ye=Tr.end.valueOf()-Tr.start.valueOf();Wr.setWindow(ti-Ye/2,ti+Ye/2,{animation:!1})}Vt(ze,Re,bt);const ei=us(Kc(Bt));window.setTimeout(()=>yt(ei,!0,".ev-cross-linked"),320);return}if(y.current){if(Zt(!1),Vt(ze,Re,bt),Bt){const Wr=us(Kc(Bt));window.setTimeout(()=>yt(Wr,!0,".ev-selected"),320)}return}Vt(ze,Re,bt)}}),Ee.on("doubleClick",Fe=>{const ce=Fe.item;if(ce==null)return;const ke=String(ce);if(!ke.startsWith("pr:"))return;const ze=Number.parseInt(ke.slice(3),10);$e(ze,{fitWindow:!0});const Re=h.current.get(ze);if(Re){const et=us(oo(Re));window.setTimeout(()=>yt(et,!1),320)}});let Ge=null,Le=null;return Ee.on("rangechanged",()=>{Ge&&clearTimeout(Ge),Ge=setTimeout(()=>Yn(),120);const Fe=j.current;if(Fe==null||X.current||y.current)return;const ce=Ee.getWindow(),ke=ce.end.valueOf()-ce.start.valueOf();Math.abs(ke-Fe)/Fe<=.02||(Le&&clearTimeout(Le),Le=setTimeout(()=>Mi(ze=>ze+1),160))}),n.current=Ee,()=>{Ge&&clearTimeout(Ge),Le&&clearTimeout(Le),Ee.destroy(),n.current=null}},[gt,Yn,Vt,V,an,Zt,yt,mn,$e,Un]),H.useEffect(()=>{const K=e.current;if(!K)return;const ae=we=>{var ce;const pe=we.target,Ee=(ce=pe==null?void 0:pe.closest)==null?void 0:ce.call(pe,"[data-collapse-gid]");if(!Ee)return;const Ge=Ee.getAttribute("data-collapse-gid");if(!Ge||(we.stopPropagation(),we.preventDefault(),X.current||y.current))return;const Le=!S.current.has(Ge);Pr(Ge,Le),Ee.textContent=Le?"▸":"▾";const Fe=Le?"Expand row":"Collapse row";Ee.setAttribute("title",Fe),Ee.setAttribute("aria-label",Fe)};return K.addEventListener("click",ae,!0),()=>K.removeEventListener("click",ae,!0)},[Pr]);const Us=H.useCallback(K=>{G.current!=null&&(cancelAnimationFrame(G.current),G.current=null);const ae=Fe=>{const ce=n.current;if(!ce||Fe<=0)return;const ke=ce.getWindow();Jve(K,(ke.end.valueOf()-ke.start.valueOf())/Fe),t.current.update(K),F.current=Fe},we=YO(n.current,e.current);if(we>0&&Math.abs(we-F.current)<1){ae(we);return}let pe=-1,Ee=0,Ge=0;const Le=()=>{const Fe=YO(n.current,e.current);if(Fe>0&&Fe===pe?Ee+=1:(Ee=0,pe=Fe),Fe>0&&Ee>=2||Ge++>40){G.current=null,ae(Fe);return}G.current=requestAnimationFrame(Le)};G.current=requestAnimationFrame(Le)},[]);H.useEffect(()=>()=>{G.current!=null&&cancelAnimationFrame(G.current)},[]),H.useEffect(()=>{let K=null;const ae=()=>{K&&clearTimeout(K),K=setTimeout(()=>Mi(we=>we+1),200)};return window.addEventListener("resize",ae),()=>{window.removeEventListener("resize",ae),K&&clearTimeout(K)}},[]),H.useEffect(()=>{var ti,Tr;if(!Ne)return;c.current=Ne;const K=Y.current,ae=K&&!Ne.prs.some(Ye=>Ye.id===K.id)?[...Ne.prs,K]:Ne.prs,we=zt&&zt.length>0?new Set(zt):null,pe=Ye=>!we||Ye.authorId!=null&&we.has(Ye.authorId),Ee=ae.filter(Ye=>Ye.id===En.current||pe(Ye)&&(at.length===0||at.some(vr=>Ye.threadCounts[vr]>0))),Ge=new Map;for(const Ye of Ne.events)Ge.set(Ye.id,Ye);s.current=Ge;const Le=new Set;for(const Ye of Ne.events)Ye.prId!=null&&(Ye.type==="review_comment"||Ye.type==="pr_comment")&&Le.add(Ye.prId);const Fe=(ti=n.current)==null?void 0:ti.getWindow();j.current=Fe?Fe.end.valueOf()-Fe.start.valueOf():null;const ce=Ege(ae,Ye=>Jme(Ye,Le.has(Ye.id))?1:0);m.current=ce;const ke=nge(Ne.events,ae),ze=HO([...Ee.map(Ye=>Ye.repoId),...Ne.events.map(Ye=>Ye.repoId)]),Re=[],et=0,wt=1e6;ze.forEach((Ye,vr)=>{const Qn=HO([...Ne.events.filter(nt=>nt.repoId===Ye&&nt.actorId!=null).map(nt=>nt.actorId),...Ee.filter(nt=>nt.repoId===Ye&&nt.authorId!=null).map(nt=>nt.authorId)]),ir=ft.get(Ye),Ht=Qn.map(nt=>`repo:${Ye}:user:${nt}`);Re.push({id:`repo:${Ye}`,content:Me.get(Ye)??`repo ${Ye}`,nestedGroups:Ht.length?Ht:void 0,treeLevel:1,order:vr,subgroupOrder:"sortKey"}),Qn.forEach((nt,Va)=>{const vn=`repo:${Ye}:user:${nt}`,Jt=(ir==null?void 0:ir.has(nt))??!1;Re.push({id:vn,content:tye(sge(vt.get(nt),nt,ke.get(nt),Jt,vn,S.current.has(vn))),treeLevel:2,order:(Jt?et:wt)+Va,subgroupOrder:"sortKey",className:`tl-user-row ${us(vn)}`})})});const Dn=Ee.map(Ye=>{const vr=Ye.authorId!=null?vt.get(Ye.authorId):void 0,Qn=oo(Ye),ir=ce.get(Ye.id)??0;return{id:`pr:${Ye.id}`,group:Qn,subgroup:`bar:${ir}`,sortKey:ir*2,type:"range",start:Ye.openedAt,end:Ye.mergedAt??Ye.closedAt??new Date().toISOString(),content:ege(Ye,{author:{label:ua(vr,Ye.authorId),avatarUrl:(vr==null?void 0:vr.avatarUrl)??null},hasComments:Le.has(Ye.id)}),className:tge(Ye),title:`#${Ye.number} ${Ye.title}`}}),Kt=n.current,bt=Kt==null?void 0:Kt.getWindow(),Tt=K?null:((Tr=ht())==null?void 0:Tr.scrollTop)??null,Bt=new Set(Re.map(Ye=>String(Ye.id)));r.current.update(Re);const Mn=r.current.getIds().map(String).filter(Ye=>!Bt.has(Ye));Mn.length&&r.current.remove(Mn);const Xn=new Set(Dn.map(Ye=>String(Ye.id))),Wr=t.current.getIds().map(String).filter(Ye=>Ye.startsWith("pr:")&&!Xn.has(Ye));t.current.update(Dn),Wr.length&&t.current.remove(Wr),Us(Dn),Yn(),Kt&&bt&&Kt.setWindow(bt.start,bt.end,{animation:!1});const ei=En.current;if(ei!=null&&Kt&&t.current.get(`pr:${ei}`)&&!Kt.getSelection().map(String).includes(`pr:${ei}`)&&Kt.setSelection([`pr:${ei}`]),g.current!=null){const Ye=g.current;g.current=null,kr(Ye)}if(y.current&&ts(y.current),X.current&&ue.current!=null&&ur(ue.current),!y.current&&!X.current&&S.current.size>0)for(const Ye of S.current)Pr(Ye,!0);Y.current=null,Tt!=null&&je(Tt)},[Ne,at,zt,Me,vt,ft,qn,Ln,Yn,kr,ts,ur,Pr,ht,je,Us]),H.useEffect(()=>{En.current=Ut;const K=n.current;if(!K)return;if(Ut!=null&&!t.current.get(`pr:${Ut}`)){Rn(Ee=>Ee+1);return}const ae=Ut!=null?[`pr:${Ut}`]:[],we=K.getSelection().map(String);we.length===ae.length&&ae.every(Ee=>we.includes(Ee))||K.setSelection(ae)},[Ut]),H.useEffect(()=>{const K=n.current;if(!K)return;const{from:ae,to:we}=kg(He.getState()),{start:pe,end:Ee}=WO(ae,we);K.setWindow(pe,Ee,{animation:!1})},[zs,Zr,ks,fe]);const hi=He(K=>K.timelineCenterAt);H.useEffect(()=>{if(hi==null)return;const K=n.current;if(!K)return;const ae=K.getWindow(),we=ae.end.valueOf()-ae.start.valueOf();K.setWindow(hi-we/2,hi+we/2,{animation:!0}),He.getState().consumeTimelineCenter()},[hi]);const cr=He(K=>K.timelineFocusPr),Ai=He(K=>K.timelineFocusAt);return H.useEffect(()=>{if(cr==null)return;const K=n.current;if(!K)return;const ae=Ne==null?void 0:Ne.prs.find(Ee=>Ee.id===cr);if(ae){if(He.getState().timelineIsolate&&Ne){$e(cr,{fitWindow:!0});const ze=us(oo(ae));window.setTimeout(()=>yt(ze,!1),320),He.getState().consumeTimelineFocus();return}const Ee=He.getState().timelineFocusEvent;if(Ee&&Ne){const ze=Ne.events.filter(bt=>bt.prId===cr&&bt.type===Ee.type&&(Ee.refId==null||bt.refId===Ee.refId)),Re=Ai!=null&&ze.find(bt=>bt.occurredAt===Ai)||ze[0],et=ae.authorId,wt=(Re==null?void 0:Re.actorId)??et,Dn=wt!=null&&et!=null&&wt!==et,Kt=[];if(wt!=null&&Kt.push(`repo:${ae.repoId}:user:${wt}`),Dn&&et!=null&&Kt.push(`repo:${ae.repoId}:user:${et}`),V({groupIds:Kt.length?Kt:null,prId:cr,eventId:(Re==null?void 0:Re.id)??null}),Ai){const bt=Date.parse(Ai),Tt=K.getWindow(),Bt=Tt.end.valueOf()-Tt.start.valueOf();K.setWindow(bt-Bt/2,bt+Bt/2,{animation:!1})}if(K.setSelection([`pr:${cr}`]),wt!=null){const bt=us(`repo:${ae.repoId}:user:${wt}`),Tt=Re!=null&&(t.current.get(`ev:${Re.id}`)!=null||o.current.get(Re.id)!=null);window.setTimeout(()=>yt(bt,Tt),300)}B.current=Kt.length>0||Re!=null,He.getState().consumeTimelineFocus();return}nr();const Ge=K.getWindow(),Le=Ge.end.valueOf()-Ge.start.valueOf();let Fe;if(Ai)Fe=Date.parse(Ai);else{const ze=new Date(ae.openedAt).getTime(),Re=new Date(ae.mergedAt??ae.closedAt??new Date().toISOString()).getTime();Fe=(ze+Re)/2}K.setWindow(Fe-Le/2,Fe+Le/2,{animation:!0}),K.setSelection([`pr:${cr}`]);const ce=us(oo(ae)),ke=cr;window.setTimeout(()=>{ln(ke),yt(ce,!1,".ev-cross-linked",".pr-focus-glow")},120),He.getState().consumeTimelineFocus();return}const we=Ne&&!Ne.prs.some(Ee=>Ee.id===cr)?dt==null?void 0:dt.prs.find(Ee=>Ee.id===cr):void 0;if(we){nr(),Y.current=we,Rn(Le=>Le+1);const Ee=us(oo(we)),Ge=we.id;window.setTimeout(()=>{K.setSelection([`pr:${Ge}`]),ln(Ge),yt(Ee,!1,".ev-cross-linked",".pr-focus-glow")},360),He.getState().consumeTimelineFocus();return}const pe=(_t==null?void 0:_t.prs.find(Ee=>Ee.id===cr))??(be==null?void 0:be.prs.find(Ee=>Ee.id===cr));if(pe){const{from:Ee}=kg(He.getState()),Ge=new Date(pe.openedAt).getTime();if(Ge<Ee.getTime()){const Le=new Date(Ge-864e5).toISOString().slice(0,10),Fe=new Date().toISOString().slice(0,10);He.getState().setCustomRange(Le,Fe);return}if(Ne&&!Ne.prs.some(Le=>Le.id===pe.id)){nr(),Y.current=pe,Rn(et=>et+1);const Le=K.getWindow(),Fe=Le.end.valueOf()-Le.start.valueOf(),ce=new Date(pe.openedAt).getTime(),ke=new Date(pe.mergedAt??pe.closedAt??new Date().toISOString()).getTime(),ze=(ce+ke)/2;K.setWindow(ze-Fe/2,ze+Fe/2,{animation:!0});const Re=us(oo(pe));window.setTimeout(()=>{K.setSelection([`pr:${pe.id}`]),ln(pe.id),yt(Re,!1,".ev-cross-linked",".pr-focus-glow")},360),He.getState().consumeTimelineFocus();return}}He.getState().consumeTimelineFocus()},[cr,Ai,Ne,_t,dt,be,V,yt,ln,Yn,ur,$e,nr]),C.jsxs("div",{className:`relative h-full w-full${le?" tl-focus-active":""}`,children:[ye&&!Ne&&C.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-sm text-gray-500",children:"Loading timeline…"}),We&&C.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-sm text-red-500",children:String(We)}),Ne&&Ne.prs.length===0&&Ne.events.length===0&&C.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-sm text-gray-500",children:"No activity in this window. Add a repo or widen the date range."}),C.jsx("div",{ref:e,className:"h-full w-full"}),le&&C.jsxs("button",{type:"button",onClick:()=>Zt(),className:"tl-exit-focus",title:"Show all rows again and return to where you were",children:[C.jsx("span",{"aria-hidden":"true",children:"✕"})," Exit focus"]}),ge&&C.jsx(Vve,{state:ge,eventsById:s.current,usersById:vt,prsById:Fn,focusPrId:le?ue.current:null,onContextFocus:re,onDismiss:an,onNavigate:Jr})]})}function ix({prId:e,at:n,event:t,title:r="Show this on the timeline",className:s=""}){const a=He(o=>o.showEventOnTimeline);return C.jsx("button",{type:"button",onClick:()=>a(e,n,t),className:`shrink-0 font-medium text-blue-500 hover:underline ${s}`,title:r,children:"Show"})}function J$(){return C.jsx("span",{className:"rounded bg-sky-500/20 px-1 text-[10px] font-semibold uppercase text-sky-500",children:"new"})}function eL(e,n){return n?Date.parse(e)>Date.parse(n):!1}function aye({comment:e,usersById:n,repoId:t,isNew:r,anchor:s,showLink:a}){const o=e.authorId!=null?n.get(e.authorId):void 0;return C.jsxs("div",{className:`pl-2 ${r?"comment-new":""}`,children:[C.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[a&&C.jsxs(C.Fragment,{children:[a,C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"})]}),C.jsx(bo,{user:o,size:18}),C.jsx(Tu,{user:o,fallbackId:e.authorId,repoId:t,className:"font-semibold"}),C.jsx("span",{className:"text-gray-400",children:ca(e.createdAt)}),r&&C.jsx(J$,{})]}),s&&C.jsx("div",{className:"mt-1.5",children:s}),C.jsx("div",{className:"mt-1 text-sm",children:C.jsx(Dh,{children:e.body})})]})}function oye(e){return e.startsWith("@@")?"meta":e.startsWith("+")?"add":e.startsWith("-")?"del":"ctx"}const lye={add:"bg-green-500/15 text-green-300",del:"bg-red-500/15 text-red-300",meta:"text-sky-400/80",ctx:"text-gray-400"};function uye({hunk:e}){if(!e)return null;const n=e.replace(/\n$/,"").split(`
|
|
1356
1356
|
`);return C.jsx("pre",{className:"overflow-x-auto rounded-md border border-gray-200 bg-gray-50 text-[12px] leading-[1.45] dark:border-gray-800 dark:bg-gray-900",children:C.jsx("code",{className:"block font-mono",children:n.map((t,r)=>{const s=oye(t);return C.jsx("span",{className:`block whitespace-pre px-3 ${lye[s]}`,children:t||" "},r)})})})}function cye(e){return e.startsWith("+")?"add":e.startsWith("-")?"del":"ctx"}const dye={add:"border-green-500 text-green-600 dark:text-green-300",del:"border-red-500 text-red-600 dark:text-red-300",ctx:"border-gray-400 text-gray-600 dark:text-gray-300"};function fye({diffHunk:e,threadId:n}){const t=He(u=>u.expandedDiffHunks.includes(n)),r=He(u=>u.toggleDiffHunk);if(!e)return null;const s=e.replace(/\n$/,"").split(`
|
|
1357
|
-
`),a=s.at(-1)??"",o=cye(a);return t?C.jsxs("div",{className:"space-y-1",children:[C.jsx(uye,{hunk:e}),C.jsx("button",{type:"button",onClick:()=>r(n),className:"text-[11px] text-gray-400 hover:text-gray-600",children:"⌃ Hide code context"})]}):C.jsxs("div",{className:"space-y-1",children:[C.jsx("pre",{className:`overflow-x-auto border-l-2 bg-gray-50 py-0.5 pl-2 font-mono text-[12px] leading-snug dark:bg-gray-900/60 ${dye[o]}`,children:a||" "}),s.length>1&&C.jsxs("button",{type:"button",onClick:()=>r(n),className:"text-[11px] text-gray-400 hover:text-gray-600",children:["⌄ Show full code context (",s.length," lines)"]})]})}function hye({thread:e,usersById:n,prUrl:t,repoId:r,selected:s,viewedSince:a}){var u;const o=((u=e.comments[0])==null?void 0:u.diffHunk)??null;return C.jsxs("div",{className:`rounded-md border px-2.5 py-2 ${s?"border-amber-400 bg-amber-400/5":"border-gray-200 dark:border-gray-800"}`,children:[C.jsxs("div",{className:"mb-2 flex items-center gap-2 text-[11px] text-gray-400",children:[C.jsx(ix,{prId:e.prId,at:e.createdAt,event:{type:"review_comment",refId:e.id},title:"Show this thread on the timeline"}),C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"}),e.line!=null?C.jsxs("span",{children:["line ",e.line]}):C.jsx("span",{children:"file-level"}),e.isOutdated&&C.jsx("span",{children:"· outdated"}),C.jsx("span",{className:"ml-auto",children:C.jsx(Z$,{state:e.derivedState})})]}),C.jsx("div",{className:"space-y-3",children:e.comments.map((c,f)=>C.jsx(aye,{comment:c,usersById:n,repoId:r,isNew:eL(c.createdAt,a),anchor:f===0?C.jsx(fye,{diffHunk:o,threadId:e.id}):void 0,showLink:f>0?C.jsx(ix,{prId:e.prId,at:c.createdAt,event:{type:"review_comment",refId:e.id},title:"Show this reply on the timeline"}):void 0},c.id))}),C.jsx("div",{className:"mt-2 pl-2 text-[11px]",children:C.jsxs("a",{href:e.url??`${t}/files`,target:"_blank",rel:"noreferrer noopener",className:"text-blue-500 hover:underline",children:["↗ ",e.url?"View thread on GitHub":"Reply on GitHub"]})})]})}const pye=["untouched","replied_unresolved","likely_addressed","resolved"];function mye(e){const n={untouched:0,replied_unresolved:0,likely_addressed:0,resolved:0};for(const t of e)n[t.derivedState]+=1;return n}function gye({counts:e}){const n=pye.filter(t=>e[t]>0);return C.jsx("span",{className:"inline-flex items-center gap-1.5",children:n.map(t=>{const r=od[t];return C.jsxs("span",{className:"inline-flex items-center gap-0.5 text-[10px] font-semibold",style:{color:r.color},title:`${r.label}: ${e[t]}`,children:[C.jsx("span",{className:"inline-block h-2 w-2 rounded-full",style:{backgroundColor:r.color}}),e[t]]},t)})})}function vye(e){return[...e].sort((n,t)=>t.createdAt.localeCompare(n.createdAt))}function yye({path:e,threads:n,usersById:t,prUrl:r,repoId:s,selectedThreadId:a,viewedSince:o,registerRef:u}){const c=mye(n),f=n.some(I=>I.derivedState!=="resolved"),h=a!=null&&n.some(I=>I.id===a),m=f,g=He(I=>I.expandedFileGroups),y=He(I=>I.collapsedFileGroups),w=He(I=>I.toggleFileGroup),S=m?!y.includes(e):g.includes(e),k=h||S,N=e.split("/"),D=N.at(-1),R=N.slice(0,-1).join("/");return C.jsxs("div",{className:"border-b border-gray-100 dark:border-gray-800",children:[C.jsxs("button",{type:"button",onClick:()=>w(e,m),className:"flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-gray-50 dark:hover:bg-gray-900",children:[C.jsx("span",{className:"text-gray-400",children:k?"▾":"▸"}),C.jsxs("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",title:e,children:[R&&C.jsxs("span",{className:"text-gray-400",children:[R,"/"]}),C.jsx("span",{className:"font-semibold",children:D})]}),C.jsx(gye,{counts:c})]}),k&&C.jsx("div",{className:"space-y-2 px-3 pb-3",children:vye(n).map(I=>C.jsx("div",{ref:L=>u(I.id,L),children:C.jsx(hye,{thread:I,usersById:t,prUrl:r,repoId:s,selected:I.id===a,viewedSince:o})},I.id))})]})}function bye(e){const n=new Map;for(const r of e){const s=n.get(r.path)??[];s.push(r),n.set(r.path,s)}const t=[...n.entries()].map(([r,s])=>({path:r,threads:s,newest:s.reduce((a,o)=>o.createdAt>a?o.createdAt:a,"")}));return t.sort((r,s)=>s.newest.localeCompare(r.newest)||r.path.localeCompare(s.path)),t}function _ye({threads:e,usersById:n,prUrl:t,repoId:r,selectedThreadId:s,viewedSince:a}){const o=H.useRef(new Map);H.useEffect(()=>{if(s==null)return;const c=o.current.get(s);c&&c.scrollIntoView({behavior:"smooth",block:"nearest"})},[s]);const u=H.useMemo(()=>bye(e),[e]);return e.length===0?C.jsx("div",{className:"px-3 py-6 text-center text-sm text-gray-500",children:"No review threads on this PR."}):C.jsx("div",{children:u.map(c=>C.jsx(yye,{path:c.path,threads:c.threads,usersById:n,prUrl:t,repoId:r,selectedThreadId:s,viewedSince:a,registerRef:(f,h)=>{h?o.current.set(f,h):o.current.delete(f)}},c.path))})}function sl({label:e,children:n}){return C.jsxs("div",{className:"flex gap-3 px-4 py-1.5 text-sm",children:[C.jsx("span",{className:"w-28 shrink-0 text-xs uppercase tracking-wide text-gray-400",children:e}),C.jsx("div",{className:"min-w-0 flex-1",children:n})]})}function wye({pr:e,usersById:n}){const t=vx[e.ciStatus],r=yx(e.mergeable,e.mergeStateStatus),s=e.checkRuns,a=s.reduce((c,f)=>(c[f.state]=(c[f.state]??0)+1,c),{}),o=new Map;for(const c of e.reviews)c.authorId==null||c.state!=="approved"&&c.state!=="changes_requested"&&c.state!=="dismissed"||o.set(c.authorId,c.state);const u=[...o].filter(([,c])=>c==="approved").map(([c])=>c);return C.jsxs("div",{className:"divide-y divide-gray-100 py-1 dark:divide-gray-800",children:[C.jsx(sl,{label:"CI",children:t?C.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[C.jsx("span",{className:"inline-block h-2.5 w-2.5 rounded-full",style:{backgroundColor:t.color}}),t.label,s.length>0&&C.jsxs("span",{className:"text-xs text-gray-400",children:["·"," ",[a.success?`${a.success} passed`:null,a.failure?`${a.failure} failed`:null,a.pending?`${a.pending} running`:null].filter(Boolean).join(" · ")]})]}):C.jsx("span",{className:"text-gray-400",children:"no checks reported"})}),C.jsx(sl,{label:"Mergeable",children:r?C.jsxs("span",{className:"font-medium text-orange-500",children:["⚠ ",r]}):e.mergeable==="mergeable"?C.jsx("span",{className:"text-green-500",children:"clean"}):C.jsx("span",{className:"text-gray-400",children:e.mergeStateStatus})}),e.mergedById!=null&&C.jsx(sl,{label:"Merged by",children:C.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs",children:[C.jsx(bo,{user:n.get(e.mergedById),size:14}),C.jsx(Tu,{user:n.get(e.mergedById),fallbackId:e.mergedById,repoId:e.repoId})]})}),s.length>0&&C.jsx(sl,{label:"Checks",children:C.jsx("ul",{className:"space-y-1",children:s.map((c,f)=>{const h=j2[c.state],m=C.jsxs("span",{className:"flex items-center gap-2",children:[C.jsx("span",{className:"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold text-white",style:{backgroundColor:h.color},title:h.label,children:h.icon}),C.jsx("span",{className:"min-w-0 truncate",title:c.name,children:c.name}),C.jsx("span",{className:"ml-auto shrink-0 text-xs text-gray-400",children:h.label})]});return C.jsx("li",{className:"text-xs",children:c.url?C.jsx("a",{href:c.url,target:"_blank",rel:"noreferrer noopener",className:"block rounded px-1 py-0.5 hover:bg-gray-100 dark:hover:bg-gray-800",children:m}):C.jsx("div",{className:"px-1 py-0.5",children:m})},`${c.name}-${f}`)})})}),e.labels.length>0&&C.jsx(sl,{label:"Labels",children:C.jsx("div",{className:"flex flex-wrap gap-1",children:e.labels.map(c=>C.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs",style:{borderColor:`#${c.color}`},children:[C.jsx("span",{className:"inline-block h-2 w-2 rounded-full",style:{backgroundColor:`#${c.color}`}}),c.name]},c.name))})}),u.length>0&&C.jsx(sl,{label:"Approvers",children:C.jsx("div",{className:"flex flex-wrap gap-2 text-xs",children:u.map(c=>{const f=n.get(c);return C.jsxs("span",{className:"inline-flex items-center gap-1 rounded bg-green-500/10 px-1.5 py-0.5 text-green-700 dark:text-green-400",title:"Approved this PR",children:[C.jsx("span",{className:"text-green-600 dark:text-green-500",children:"✓"}),C.jsx(bo,{user:f,size:14}),C.jsx(Tu,{user:f,fallbackId:c,repoId:e.repoId})]},c)})})}),e.requestedReviewers.length>0&&C.jsx(sl,{label:"Reviewers",children:C.jsx("div",{className:"flex flex-wrap gap-2 text-xs",children:e.requestedReviewers.map((c,f)=>C.jsx("span",{className:"rounded bg-gray-500/10 px-1.5 py-0.5",children:c.teamName?`@${c.teamName}`:C.jsx(Tu,{user:c.userId!=null?n.get(c.userId):void 0,fallbackId:c.userId,repoId:e.repoId})},f))})}),C.jsx(sl,{label:"Meta",children:C.jsxs("div",{className:"space-y-0.5 text-xs text-gray-500",children:[C.jsx("div",{children:e.repoFullName}),C.jsxs("div",{children:["opened ",ca(e.openedAt)]}),C.jsxs("div",{children:["updated ",ca(e.updatedAt)]})]})})]})}function GO(e){if(!e)return null;const n=[];return e.comments>0&&n.push(`${e.comments} new comment${e.comments===1?"":"s"}`),e.reviews>0&&n.push(`${e.reviews} new review${e.reviews===1?"":"s"}`),e.commits>0&&n.push(`${e.commits} new commit${e.commits===1?"":"s"}`),n.length?n.join(" · "):null}function xye(e){var t;const n=[];n.push({key:"opened",time:e.openedAt,label:"opened this PR",actorId:e.authorId,href:e.githubUrl,event:{type:"pr_opened",refId:null}});for(const r of e.commits)n.push({key:`commit:${r.id}`,time:r.committedAt,label:"pushed a commit",actorId:r.authorId??r.committerId,detail:(t=r.message)==null?void 0:t.split(`
|
|
1358
|
-
`)[0],href:`${e.githubUrl}/commits/${r.sha}`,event:{type:"commit_pushed",refId:r.id}});for(const r of e.reviews)n.push({key:`review:${r.id}`,time:r.submittedAt,label:`reviewed (${r.state.replace("_"," ")})`,actorId:r.authorId,detail:r.body??void 0,href:r.url??e.githubUrl,event:{type:"review_submitted",refId:r.id}});for(const r of e.comments)n.push({key:`comment:${r.id}`,time:r.createdAt,label:"commented",actorId:r.authorId,detail:r.body,href:r.url??e.githubUrl,event:{type:"pr_comment",refId:r.id}});return e.mergedAt?n.push({key:"merged",time:e.mergedAt,label:"merged this PR",actorId:e.authorId,href:e.githubUrl,event:{type:"pr_merged",refId:null}}):e.closedAt&&n.push({key:"closed",time:e.closedAt,label:"closed this PR",actorId:e.authorId,href:e.githubUrl,event:{type:"pr_closed",refId:null}}),n.sort((r,s)=>s.time.localeCompare(r.time))}function
|
|
1359
|
-
`)[0]}),C.jsxs("div",{className:"mt-1 flex items-center gap-3 text-xs",children:[C.jsx("button",{type:"button",onClick:()=>c(e.id,g.time,g.event),className:"text-blue-500 hover:underline",title:"Show this event on the timeline",children:"Show"}),g.href&&C.jsx("a",{href:g.href,target:"_blank",rel:"noreferrer noopener",className:"text-gray-400 hover:text-blue-500",children:"Open on GitHub ↗"})]})]})]},g.key)})]})}function Sye({pr:e,usersById:n,viewedSince:t,focusCommentId:r,onFocusConsumed:s}){const a=H.useRef(new Map),[o,u]=H.useState(null);if(H.useEffect(()=>{if(r==null)return;s();const f=a.current.get(r);f&&(f.scrollIntoView({behavior:"smooth",block:"center"}),u(r))},[r,s]),H.useEffect(()=>{if(o==null)return;const f=setTimeout(()=>u(null),1800);return()=>clearTimeout(f)},[o]),e.comments.length===0)return C.jsx("div",{className:"px-3 py-6 text-center text-sm text-gray-500",children:"No PR comments on this PR."});const c=[...e.comments].sort((f,h)=>h.createdAt.localeCompare(f.createdAt));return C.jsx("div",{className:"space-y-2 px-3 pb-3",children:c.map(f=>{const h=f.authorId!=null?n.get(f.authorId):void 0,m=eL(f.createdAt,t);return C.jsxs("div",{ref:g=>{g?a.current.set(f.id,g):a.current.delete(f.id)},className:`rounded-md border border-gray-200 px-2.5 py-2 dark:border-gray-800 ${m?"comment-new":""} ${f.id===o?"activity-flash":""}`,children:[C.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[C.jsx(ix,{prId:e.id,at:f.createdAt,event:{type:"pr_comment",refId:f.id},title:"Show this comment on the timeline"}),C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"}),C.jsx(bo,{user:h,size:18}),C.jsx(Tu,{user:h,fallbackId:f.authorId,repoId:e.repoId,className:"font-semibold"}),C.jsx("span",{className:"text-gray-400",title:q_(f.createdAt),children:ca(f.createdAt)}),m&&C.jsx(J$,{})]}),C.jsx("div",{className:"mt-1 text-sm",children:C.jsx(Dh,{children:f.body})}),f.url&&C.jsx("div",{className:"mt-2 pl-2 text-[11px]",children:C.jsx("a",{href:f.url,target:"_blank",rel:"noreferrer noopener",className:"text-blue-500 hover:underline",children:"↗ View comment on GitHub"})})]},f.id)})})}function Eye({body:e}){const[n,t]=H.useState(!1),[r,s]=H.useState(!1),a=H.useRef(null);return H.useLayoutEffect(()=>{if(n)return;const o=a.current;o&&s(o.scrollHeight-o.clientHeight>1)},[e,n]),C.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-800",children:[C.jsx("div",{className:"px-4 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-gray-400",children:"Summary"}),C.jsxs("div",{className:"px-4 pb-3 text-sm",children:[C.jsx("div",{ref:a,className:"overflow-hidden",style:n?void 0:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical"},children:C.jsx(Dh,{children:e})}),(r||n)&&C.jsx("button",{type:"button",onClick:()=>t(o=>!o),className:"mt-1 text-xs font-medium text-blue-500 hover:underline",children:n?"Show less":"Show more"})]})]})}function Tye({prId:e,selectedThreadId:n}){const{data:t,isLoading:r,error:s}=X$(e),[a,o]=H.useState("overview"),[u,c]=H.useState(null),f=fa(),h=He(Y=>Y.openPrFocused),m=He(Y=>Y.focusPrOnTimeline),g=He(Y=>Y.activityFocus),y=He(Y=>Y.consumeActivityFocus),w=H.useMemo(()=>g&&t&&g.prId===t.id?{type:g.type,refId:g.refId}:null,[g,t]),S=He(Y=>Y.commentFocus),k=He(Y=>Y.consumeCommentFocus),N=S&&t&&S.prId===t.id?S.commentId:null;H.useEffect(()=>{n!=null&&o("threads")},[n]),H.useEffect(()=>{w&&(o("activity"),c(null))},[w]),H.useEffect(()=>{N!=null&&o("overview")},[N]);const D=Yu({mutationFn:Y=>er.markPrViewed(Y),onSuccess:()=>{f.invalidateQueries({queryKey:["open-prs"]}),f.invalidateQueries({queryKey:["timeline"]}),f.invalidateQueries({queryKey:["my-turn"]}),f.invalidateQueries({queryKey:["me"]})}}),R=H.useRef(null);H.useEffect(()=>{t&&R.current!==t.id&&(R.current=t.id,D.mutate(t.id))},[t,D]);const I=H.useMemo(()=>Xh(t==null?void 0:t.users),[t]);if(r)return C.jsx("div",{className:"p-4 text-sm text-gray-500",children:"Loading PR…"});if(s||!t)return C.jsx("div",{className:"p-4 text-sm text-red-500",children:s?String(s):"PR not found"});const L=$2[t.state],A=t.authorId!=null?I.get(t.authorId):void 0;return C.jsxs("div",{className:"flex h-full flex-col",children:[C.jsxs("div",{className:"border-b border-gray-200 px-4 py-2 pr-28 dark:border-gray-800",children:[C.jsxs("div",{className:"flex items-center gap-2",children:[C.jsx("span",{className:"rounded px-1.5 py-0.5 text-xs font-semibold text-white",style:{backgroundColor:L.color},children:t.isDraft?"Draft":L.label}),C.jsxs("a",{href:t.githubUrl,target:"_blank",rel:"noreferrer noopener",className:"truncate text-sm font-semibold hover:underline",title:t.title,children:[C.jsxs("span",{className:"text-gray-400",children:["#",t.number]})," ",t.title]}),t.isStalled&&C.jsx("span",{className:"rounded bg-red-500/15 px-1.5 py-0.5 text-xs font-medium text-red-500",title:"Open, no recent commits, and has open threads",children:"Stalled"}),(()=>{const Y=GO(t.newSinceLastViewed);return Y?C.jsxs("button",{type:"button",onClick:()=>{o("activity"),c(t.lastViewedAt)},className:"ml-auto shrink-0 rounded bg-sky-500/15 px-1.5 py-0.5 text-xs font-medium text-sky-500 hover:bg-sky-500/25",title:"Filter activity to what's new since you last looked",children:["👁 ",Y]}):null})(),C.jsx("a",{href:t.githubUrl,target:"_blank",rel:"noreferrer noopener",className:`${GO(t.newSinceLastViewed)?"":"ml-auto"} shrink-0 text-xs text-blue-500 hover:underline`,children:"open on GitHub ↗"})]}),C.jsxs("div",{className:"mt-1 flex items-center gap-2 text-xs text-gray-500",children:[C.jsx("button",{type:"button",onClick:()=>h(t.id),className:"shrink-0 font-medium text-blue-500 hover:underline",title:"Centre and highlight this PR on the timeline",children:"Show"}),C.jsx("button",{type:"button",onClick:()=>m(t.id),className:"shrink-0 font-medium text-blue-500 hover:underline",title:"Isolate this PR and its contributors on the timeline (Exit focus / Esc to leave)",children:"Focus"}),C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"}),C.jsx(bo,{user:A,size:16}),C.jsx(Tu,{user:A,fallbackId:t.authorId,repoId:t.repoId}),C.jsx("span",{children:"·"}),C.jsx("span",{children:t.repoFullName}),C.jsx("span",{children:"·"}),C.jsxs("span",{children:["opened ",ca(t.openedAt)]})]})]}),C.jsx("div",{className:"flex gap-1 border-b border-gray-200 px-3 dark:border-gray-800",children:["overview","threads","activity"].map(Y=>{const j=t.checkRuns.filter(G=>G.state==="failure"||G.state==="error").length;return C.jsxs("button",{type:"button",onClick:()=>o(Y),className:`-mb-px border-b-2 px-3 py-1.5 text-xs capitalize ${a===Y?"border-blue-500 text-blue-500":"border-transparent text-gray-500 hover:text-gray-700"}`,children:[Y,Y==="overview"&&j>0&&C.jsx("span",{className:"ml-1 text-red-500",title:`${j} failing`,children:"●"}),Y==="threads"&&t.threads.length>0&&C.jsx("span",{className:"ml-1 opacity-60",title:`${t.threads.length} threads`,children:t.threads.length})]},Y)})}),C.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:a==="overview"?C.jsxs("div",{children:[C.jsx(wye,{pr:t,usersById:I}),t.body&&t.body.trim()&&C.jsx(Eye,{body:t.body}),C.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-800",children:[C.jsxs("div",{className:"px-4 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-gray-400",children:["PR comments",t.comments.length>0&&C.jsxs("span",{className:"ml-1 font-normal opacity-70",children:["· ",t.comments.length]})]}),C.jsx(Sye,{pr:t,usersById:I,viewedSince:t.lastViewedAt,focusCommentId:N,onFocusConsumed:k})]})]}):a==="threads"?C.jsx(_ye,{threads:t.threads,usersById:I,prUrl:t.githubUrl,repoId:t.repoId,selectedThreadId:n,viewedSince:t.lastViewedAt}):C.jsx(kye,{pr:t,usersById:I,since:u,onClearSince:()=>c(null),focusEvent:w,onConsumed:y})})]})}function Cye(){const{data:e}=px(),{data:n}=qh(),t=H.useMemo(()=>{if(!e)return[];const r=new Map,s=a=>{var o;return((o=n==null?void 0:n.find(u=>u.id===a))==null?void 0:o.fullName)??`repo ${a}`};for(const a of e.prs){const o=r.get(a.repoId)??{repoId:a.repoId,name:s(a.repoId),openPrs:0,stalled:0,untouched:0,replied:0};a.state==="open"&&(o.openPrs+=1),a.isStalled&&(o.stalled+=1),o.untouched+=a.threadCounts.untouched,o.replied+=a.threadCounts.replied_unresolved,r.set(a.repoId,o)}return[...r.values()].sort((a,o)=>a.name.localeCompare(o.name))},[e,n]);return t.length===0?C.jsx("div",{className:"flex h-full items-center justify-center text-sm text-gray-500",children:"Select a PR or event on the timeline."}):C.jsxs("div",{className:"p-4",children:[C.jsx("h2",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-400",children:"In this window"}),C.jsxs("table",{className:"w-full text-sm",children:[C.jsx("thead",{children:C.jsxs("tr",{className:"text-left text-xs text-gray-400",children:[C.jsx("th",{className:"py-1 pr-4 font-medium",children:"Repo"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Open PRs"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Stalled"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Untouched"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Replied"})]})}),C.jsx("tbody",{children:t.map(r=>C.jsxs("tr",{className:"border-t border-gray-100 dark:border-gray-800",children:[C.jsx("td",{className:"py-1.5 pr-4 font-medium",children:r.name}),C.jsx("td",{className:"py-1.5 pr-4 text-right tabular-nums",children:r.openPrs}),C.jsx("td",{className:`py-1.5 pr-4 text-right tabular-nums ${r.stalled>0?"font-semibold text-red-500":""}`,children:r.stalled}),C.jsx("td",{className:`py-1.5 pr-4 text-right tabular-nums ${r.untouched>0?"font-semibold text-red-400":""}`,children:r.untouched}),C.jsx("td",{className:`py-1.5 pr-4 text-right tabular-nums ${r.replied>0?"text-amber-500":""}`,children:r.replied})]},r.repoId))})]})]})}function Nye({items:e}){const n=He(s=>s.openPrFocused),t=fa(),r=Yu({mutationFn:s=>er.dismissMyTurn("review_request",s),onSuccess:()=>{t.invalidateQueries({queryKey:["my-turn"]}),t.invalidateQueries({queryKey:["me"]})}});return e.length===0?null:C.jsxs("section",{children:[C.jsxs("h3",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold",children:[C.jsx("span",{className:"text-blue-500",children:"●"}),"Awaiting your review",C.jsxs("span",{className:"text-gray-400",children:["(",e.length,")"]})]}),C.jsx("ul",{className:"space-y-0.5",children:e.map(s=>C.jsxs("li",{className:"group flex items-stretch",children:[C.jsxs("button",{type:"button",onClick:()=>n(s.prId),className:"flex min-w-0 flex-1 items-baseline gap-2 rounded px-2 py-1 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-800",children:[C.jsxs("span",{className:"shrink-0 text-xs text-gray-400",children:[s.repoFullName," #",s.number]}),C.jsx("span",{className:"min-w-0 flex-1 truncate",title:s.title,children:s.title}),s.alsoRequested>0&&C.jsxs("span",{className:"shrink-0 text-[11px] text-gray-400",children:["+",s.alsoRequested," other",s.alsoRequested===1?"":"s"]}),C.jsx("span",{className:"shrink-0 text-[11px] text-gray-400",children:ca(s.openedAt)})]}),C.jsx("button",{type:"button",onClick:()=>r.mutate(s.prId),disabled:r.isPending,className:"shrink-0 rounded px-1.5 text-[11px] text-gray-300 opacity-0 hover:text-gray-600 group-hover:opacity-100 dark:text-gray-600 dark:hover:text-gray-300",title:"Dismiss — reappears if the PR is updated",children:"✓ done"})]},s.prId))})]})}function Oye({items:e}){const n=He(s=>s.openPrFocused),t=fa(),r=Yu({mutationFn:s=>er.dismissPr(s),onSuccess:()=>{t.invalidateQueries({queryKey:["my-turn"]}),t.invalidateQueries({queryKey:["me"]}),t.invalidateQueries({queryKey:["open-prs"]}),t.invalidateQueries({queryKey:["timeline"]})}});return e.length===0?null:C.jsxs("section",{children:[C.jsxs("h3",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold",children:[C.jsx("span",{className:"text-green-500",children:"●"}),"Your PRs with new activity",C.jsxs("span",{className:"text-gray-400",children:["(",e.length,")"]})]}),C.jsx("ul",{className:"space-y-0.5",children:e.map(s=>C.jsxs("li",{className:"group flex items-stretch",children:[C.jsxs("button",{type:"button",onClick:()=>n(s.prId),className:"min-w-0 flex-1 rounded px-2 py-1 text-left hover:bg-gray-100 dark:hover:bg-gray-800",children:[C.jsxs("div",{className:"flex items-baseline gap-2 text-sm",children:[C.jsxs("span",{className:"shrink-0 text-xs text-gray-400",children:[s.repoFullName," #",s.number]}),C.jsx("span",{className:"min-w-0 flex-1 truncate",title:s.title,children:s.title})]}),C.jsx("div",{className:"pl-1 text-[11px] font-medium text-sky-500",children:s.summary})]}),C.jsx("button",{type:"button",onClick:()=>r.mutate(s.prId),disabled:r.isPending,className:"shrink-0 self-start rounded px-1.5 py-1 text-[11px] text-gray-300 opacity-0 hover:text-gray-600 group-hover:opacity-100 dark:text-gray-600 dark:hover:text-gray-300",title:"Mark seen — clears the new-activity badge",children:"✓ seen"})]},s.prId))})]})}function Iye({items:e}){const n=He(s=>s.openPrFocused),t=fa(),r=Yu({mutationFn:s=>er.dismissMyTurn("thread",s),onSuccess:()=>{t.invalidateQueries({queryKey:["my-turn"]}),t.invalidateQueries({queryKey:["me"]})}});return e.length===0?null:C.jsxs("section",{children:[C.jsxs("h3",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold",children:[C.jsx("span",{className:"text-amber-500",children:"●"}),"Threads awaiting your response",C.jsxs("span",{className:"text-gray-400",children:["(",e.length,")"]})]}),C.jsx("ul",{className:"space-y-0.5",children:e.map(s=>{const a=s.path.split("/").at(-1);return C.jsxs("li",{className:"group flex items-stretch",children:[C.jsxs("button",{type:"button",onClick:()=>n(s.prId,s.threadId),className:"min-w-0 flex-1 rounded px-2 py-1 text-left hover:bg-gray-100 dark:hover:bg-gray-800",children:[C.jsxs("div",{className:"flex items-baseline gap-2 text-sm",children:[C.jsxs("span",{className:"shrink-0 text-xs text-gray-400",children:[s.repoFullName," #",s.prNumber]}),C.jsxs("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",title:s.path,children:[a,s.line!=null?`:${s.line}`:""]}),C.jsx("span",{className:"shrink-0 text-[11px] text-gray-400",children:ca(s.lastReplyAt)})]}),C.jsxs("div",{className:"truncate pl-1 text-[11px] italic text-gray-500",title:s.lastReplyExcerpt,children:["“",s.lastReplyExcerpt,"”"]})]}),C.jsx("button",{type:"button",onClick:()=>r.mutate(s.threadId),disabled:r.isPending,className:"shrink-0 self-start rounded px-1.5 py-1 text-[11px] text-gray-300 opacity-0 hover:text-gray-600 group-hover:opacity-100 dark:text-gray-600 dark:hover:text-gray-300",title:"Dismiss — reappears on a newer reply",children:"✓ done"})]},s.threadId)})})]})}function Rye(){const{data:e,isLoading:n}=P2(),{data:t}=II(),r=H.useMemo(()=>Xh(e==null?void 0:e.users),[e]);return n&&!e?C.jsx("div",{className:"p-4 text-sm text-gray-500",children:"Loading…"}):!e||e.awaitingReview.length===0&&e.yourPrs.length===0&&e.threadsAwaiting.length===0?C.jsxs("div",{className:"flex h-full flex-col",children:[C.jsx("div",{className:"px-4 pt-3 text-sm text-gray-500",children:t!=null&&t.user?`Nothing needs you right now, ${t.user.login}. 🎉`:"Sign in with the gh CLI to see your triage queue."}),C.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:C.jsx(Cye,{})})]}):C.jsxs("div",{className:"h-full overflow-auto p-4",children:[C.jsx("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wide text-gray-400",children:"My turn"}),C.jsxs("div",{className:"space-y-4",children:[C.jsx(Nye,{items:e.awaitingReview,usersById:r}),C.jsx(Oye,{items:e.yourPrs,usersById:r}),C.jsx(Iye,{items:e.threadsAwaiting,usersById:r})]})]})}function Dye(){const{data:e}=II(),n=He(s=>s.clearSelection),t=He(s=>s.selectedPrId);if(!(e!=null&&e.user))return null;const r=e.counts;return C.jsxs("button",{type:"button",onClick:()=>{t!=null&&n()},title:"My turn: awaiting your review · your PRs with activity · threads awaiting your response",className:"flex items-center gap-1 rounded-full border border-gray-300 px-2 py-0.5 text-xs tabular-nums hover:border-gray-400 dark:border-gray-700 dark:hover:border-gray-500",children:[C.jsx("span",{className:"text-blue-500",children:r.awaitingReview}),C.jsx("span",{className:"text-gray-400",children:"·"}),C.jsx("span",{className:"text-green-500",children:r.yourPrsActivity}),C.jsx("span",{className:"text-gray-400",children:"·"}),C.jsx("span",{className:"text-amber-500",children:r.threadsAwaiting})]})}function Mye(){const e=He(r=>r.selectedPrId),n=He(r=>r.selectedThreadId),t=He(r=>r.clearSelection);return C.jsxs("div",{className:"relative h-full",children:[C.jsxs("div",{className:"absolute right-2 top-1.5 z-10 flex items-center gap-2",children:[C.jsx(Dye,{}),e!=null&&C.jsx("button",{type:"button",onClick:t,className:"rounded px-2 py-0.5 text-xs text-gray-400 hover:text-gray-600",title:"Clear selection (Esc)",children:"✕"})]}),e==null?C.jsx(Rye,{}):C.jsx(Tye,{prId:e,selectedThreadId:n},e)]})}function Aye({repos:e,statuses:n,cancelling:t,onCancel:r}){const s=c=>n==null?void 0:n.find(f=>f.repoId===c),a=c=>{if(n===void 0)return!0;const f=s(c);return f===void 0||f.status==="running"},o=e.filter(c=>!a(c.id)).length,u=e.length>0&&o===e.length;return C.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",role:"presentation",children:C.jsxs("div",{className:"w-[28rem] max-w-[90vw] rounded-lg border border-gray-200 bg-white p-4 shadow-xl dark:border-gray-700 dark:bg-gray-900",role:"dialog","aria-modal":"true","aria-label":"Sync progress",children:[C.jsx("div",{className:"mb-3 flex items-center justify-between",children:C.jsx("h2",{className:"text-sm font-semibold",children:t?"Cancelling…":e.length===0?"Starting sync…":u?"Sync complete":`Syncing ${e.length} repo${e.length===1?"":"s"}`})}),C.jsx("ul",{className:"space-y-3",children:e.map(c=>{var w,S;const f=s(c.id),h=a(c.id),m=(f==null?void 0:f.status)==="error",g=((w=f==null?void 0:f.progress)==null?void 0:w.prsProcessed)??0,y=h?Math.round((((S=f==null?void 0:f.progress)==null?void 0:S.percent)??0)*100):100;return C.jsxs("li",{children:[C.jsxs("div",{className:"mb-1 flex items-baseline justify-between gap-2 text-xs",children:[C.jsx("span",{className:"truncate font-medium",title:c.fullName,children:c.fullName}),C.jsx("span",{className:"shrink-0 text-gray-500",children:m?C.jsx("span",{className:"text-red-500",children:"error"}):h?`${y}%${g>0?` · ${g} PRs`:""}`:C.jsxs("span",{className:"text-green-600 dark:text-green-400",children:["✓ done",g>0?` · ${g} PRs`:""]})})]}),C.jsx("div",{className:"h-2 w-full overflow-hidden rounded bg-gray-200 dark:bg-gray-800",children:C.jsx("div",{className:`h-2 rounded transition-all duration-500 ${m?"bg-red-500":h?"bg-blue-500":"bg-green-500"}`,style:{width:`${m?100:y}%`}})})]},c.id)})}),C.jsxs("div",{className:"mt-4 flex items-center justify-between gap-3 text-xs text-gray-500",children:[C.jsxs("span",{children:[o," of ",e.length," repo",e.length===1?"":"s"," complete"]}),C.jsx("button",{type:"button",onClick:r,disabled:t,title:"Stop the sync and remove any repos still loading for the first time",className:"rounded border border-red-300 px-3 py-1 text-red-600 hover:border-red-400 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:text-red-400 dark:hover:bg-red-950",children:t?"Cancelling…":"Cancel"})]})]})})}function Pye(e){let n=null;for(const t of e){const r=t.lastIncrementalSyncAt??t.lastFullSyncAt;r&&(!n||r>n)&&(n=r)}return n}const VO=5,KO=e=>e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});function $ye(e){const n=new Date,t=new Date(n);return t.setSeconds(0,0),t.setMinutes(Math.floor(n.getMinutes()/e)*e+e),t}function Lye(e){const n=$ye(VO),t=Math.max(1,Math.round((n.getTime()-Date.now())/6e4)),r=e?[`Last synced ${KO(new Date(e))}`]:[];return r.push(`Syncs automatically every ${VO} minutes`),r.push(`Next sync ~${KO(n)} (in ${t} min)`),r.join(`
|
|
1357
|
+
`),a=s.at(-1)??"",o=cye(a);return t?C.jsxs("div",{className:"space-y-1",children:[C.jsx(uye,{hunk:e}),C.jsx("button",{type:"button",onClick:()=>r(n),className:"text-[11px] text-gray-400 hover:text-gray-600",children:"⌃ Hide code context"})]}):C.jsxs("div",{className:"space-y-1",children:[C.jsx("pre",{className:`overflow-x-auto border-l-2 bg-gray-50 py-0.5 pl-2 font-mono text-[12px] leading-snug dark:bg-gray-900/60 ${dye[o]}`,children:a||" "}),s.length>1&&C.jsxs("button",{type:"button",onClick:()=>r(n),className:"text-[11px] text-gray-400 hover:text-gray-600",children:["⌄ Show full code context (",s.length," lines)"]})]})}function hye({thread:e,usersById:n,prUrl:t,repoId:r,selected:s,viewedSince:a}){var u;const o=((u=e.comments[0])==null?void 0:u.diffHunk)??null;return C.jsxs("div",{className:`rounded-md border px-2.5 py-2 ${s?"border-amber-400 bg-amber-400/5":"border-gray-200 dark:border-gray-800"}`,children:[C.jsxs("div",{className:"mb-2 flex items-center gap-2 text-[11px] text-gray-400",children:[C.jsx(ix,{prId:e.prId,at:e.createdAt,event:{type:"review_comment",refId:e.id},title:"Show this thread on the timeline"}),C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"}),e.line!=null?C.jsxs("span",{children:["line ",e.line]}):C.jsx("span",{children:"file-level"}),e.isOutdated&&C.jsx("span",{children:"· outdated"}),C.jsx("span",{className:"ml-auto",children:C.jsx(Z$,{state:e.derivedState})})]}),C.jsx("div",{className:"space-y-3",children:e.comments.map((c,f)=>C.jsx(aye,{comment:c,usersById:n,repoId:r,isNew:eL(c.createdAt,a),anchor:f===0?C.jsx(fye,{diffHunk:o,threadId:e.id}):void 0,showLink:f>0?C.jsx(ix,{prId:e.prId,at:c.createdAt,event:{type:"review_comment",refId:e.id},title:"Show this reply on the timeline"}):void 0},c.id))}),C.jsx("div",{className:"mt-2 pl-2 text-[11px]",children:C.jsxs("a",{href:e.url??`${t}/files`,target:"_blank",rel:"noreferrer noopener",className:"text-blue-500 hover:underline",children:["↗ ",e.url?"View thread on GitHub":"Reply on GitHub"]})})]})}const pye=["untouched","replied_unresolved","likely_addressed","resolved"];function mye(e){const n={untouched:0,replied_unresolved:0,likely_addressed:0,resolved:0};for(const t of e)n[t.derivedState]+=1;return n}function gye({counts:e}){const n=pye.filter(t=>e[t]>0);return C.jsx("span",{className:"inline-flex items-center gap-1.5",children:n.map(t=>{const r=od[t];return C.jsxs("span",{className:"inline-flex items-center gap-0.5 text-[10px] font-semibold",style:{color:r.color},title:`${r.label}: ${e[t]}`,children:[C.jsx("span",{className:"inline-block h-2 w-2 rounded-full",style:{backgroundColor:r.color}}),e[t]]},t)})})}function vye(e){return[...e].sort((n,t)=>t.createdAt.localeCompare(n.createdAt))}function yye({path:e,threads:n,usersById:t,prUrl:r,repoId:s,selectedThreadId:a,viewedSince:o,registerRef:u}){const c=mye(n),f=n.some(I=>I.derivedState!=="resolved"),h=a!=null&&n.some(I=>I.id===a),m=f,g=He(I=>I.expandedFileGroups),y=He(I=>I.collapsedFileGroups),w=He(I=>I.toggleFileGroup),S=m?!y.includes(e):g.includes(e),k=h||S,N=e.split("/"),D=N.at(-1),R=N.slice(0,-1).join("/");return C.jsxs("div",{className:"border-b border-gray-100 dark:border-gray-800",children:[C.jsxs("button",{type:"button",onClick:()=>w(e,m),className:"flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-gray-50 dark:hover:bg-gray-900",children:[C.jsx("span",{className:"text-gray-400",children:k?"▾":"▸"}),C.jsxs("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",title:e,children:[R&&C.jsxs("span",{className:"text-gray-400",children:[R,"/"]}),C.jsx("span",{className:"font-semibold",children:D})]}),C.jsx(gye,{counts:c})]}),k&&C.jsx("div",{className:"space-y-2 px-3 pb-3",children:vye(n).map(I=>C.jsx("div",{ref:L=>u(I.id,L),children:C.jsx(hye,{thread:I,usersById:t,prUrl:r,repoId:s,selected:I.id===a,viewedSince:o})},I.id))})]})}function bye(e){const n=new Map;for(const r of e){const s=n.get(r.path)??[];s.push(r),n.set(r.path,s)}const t=[...n.entries()].map(([r,s])=>({path:r,threads:s,newest:s.reduce((a,o)=>o.createdAt>a?o.createdAt:a,"")}));return t.sort((r,s)=>s.newest.localeCompare(r.newest)||r.path.localeCompare(s.path)),t}function _ye({threads:e,usersById:n,prUrl:t,repoId:r,selectedThreadId:s,viewedSince:a}){const o=H.useRef(new Map);H.useEffect(()=>{if(s==null)return;const c=o.current.get(s);c&&c.scrollIntoView({behavior:"smooth",block:"nearest"})},[s]);const u=H.useMemo(()=>bye(e),[e]);return e.length===0?C.jsx("div",{className:"px-3 py-6 text-center text-sm text-gray-500",children:"No review threads on this PR."}):C.jsx("div",{children:u.map(c=>C.jsx(yye,{path:c.path,threads:c.threads,usersById:n,prUrl:t,repoId:r,selectedThreadId:s,viewedSince:a,registerRef:(f,h)=>{h?o.current.set(f,h):o.current.delete(f)}},c.path))})}function sl({label:e,children:n}){return C.jsxs("div",{className:"flex gap-3 px-4 py-1.5 text-sm",children:[C.jsx("span",{className:"w-28 shrink-0 text-xs uppercase tracking-wide text-gray-400",children:e}),C.jsx("div",{className:"min-w-0 flex-1",children:n})]})}function wye({body:e}){const[n,t]=H.useState(!1),[r,s]=H.useState(!1),a=H.useRef(null);return H.useLayoutEffect(()=>{if(n)return;const o=a.current;o&&s(o.scrollHeight-o.clientHeight>1)},[e,n]),C.jsxs("div",{children:[C.jsx("div",{className:"px-4 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-gray-400",children:"Summary"}),C.jsxs("div",{className:"px-4 pb-3 text-sm",children:[C.jsx("div",{ref:a,className:"overflow-hidden",style:n?void 0:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical"},children:C.jsx(Dh,{children:e})}),(r||n)&&C.jsx("button",{type:"button",onClick:()=>t(o=>!o),className:"mt-1 text-xs font-medium text-blue-500 hover:underline",children:n?"Show less":"Show more"})]})]})}function xye({pr:e,usersById:n}){const t=vx[e.ciStatus],r=yx(e.mergeable,e.mergeStateStatus),s=e.checkRuns,a=s.reduce((c,f)=>(c[f.state]=(c[f.state]??0)+1,c),{}),o=new Map;for(const c of e.reviews)c.authorId==null||c.state!=="approved"&&c.state!=="changes_requested"&&c.state!=="dismissed"||o.set(c.authorId,c.state);const u=[...o].filter(([,c])=>c==="approved").map(([c])=>c);return C.jsxs("div",{className:"divide-y divide-gray-100 py-1 dark:divide-gray-800",children:[C.jsx(sl,{label:"CI",children:t?C.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[C.jsx("span",{className:"inline-block h-2.5 w-2.5 rounded-full",style:{backgroundColor:t.color}}),t.label,s.length>0&&C.jsxs("span",{className:"text-xs text-gray-400",children:["·"," ",[a.success?`${a.success} passed`:null,a.failure?`${a.failure} failed`:null,a.pending?`${a.pending} running`:null].filter(Boolean).join(" · ")]})]}):C.jsx("span",{className:"text-gray-400",children:"no checks reported"})}),C.jsx(sl,{label:"Mergeable",children:r?C.jsxs("span",{className:"font-medium text-orange-500",children:["⚠ ",r]}):e.mergeable==="mergeable"?C.jsx("span",{className:"text-green-500",children:"clean"}):C.jsx("span",{className:"text-gray-400",children:e.mergeStateStatus})}),e.mergedById!=null&&C.jsx(sl,{label:"Merged by",children:C.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs",children:[C.jsx(bo,{user:n.get(e.mergedById),size:14}),C.jsx(Tu,{user:n.get(e.mergedById),fallbackId:e.mergedById,repoId:e.repoId})]})}),e.body!=null&&e.body.trim()!==""&&C.jsx(wye,{body:e.body}),s.length>0&&C.jsx(sl,{label:"Checks",children:C.jsx("ul",{className:"space-y-1",children:s.map((c,f)=>{const h=j2[c.state],m=C.jsxs("span",{className:"flex items-center gap-2",children:[C.jsx("span",{className:"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[10px] font-bold text-white",style:{backgroundColor:h.color},title:h.label,children:h.icon}),C.jsx("span",{className:"min-w-0 truncate",title:c.name,children:c.name}),C.jsx("span",{className:"ml-auto shrink-0 text-xs text-gray-400",children:h.label})]});return C.jsx("li",{className:"text-xs",children:c.url?C.jsx("a",{href:c.url,target:"_blank",rel:"noreferrer noopener",className:"block rounded px-1 py-0.5 hover:bg-gray-100 dark:hover:bg-gray-800",children:m}):C.jsx("div",{className:"px-1 py-0.5",children:m})},`${c.name}-${f}`)})})}),e.labels.length>0&&C.jsx(sl,{label:"Labels",children:C.jsx("div",{className:"flex flex-wrap gap-1",children:e.labels.map(c=>C.jsxs("span",{className:"inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs",style:{borderColor:`#${c.color}`},children:[C.jsx("span",{className:"inline-block h-2 w-2 rounded-full",style:{backgroundColor:`#${c.color}`}}),c.name]},c.name))})}),u.length>0&&C.jsx(sl,{label:"Approvers",children:C.jsx("div",{className:"flex flex-wrap gap-2 text-xs",children:u.map(c=>{const f=n.get(c);return C.jsxs("span",{className:"inline-flex items-center gap-1 rounded bg-green-500/10 px-1.5 py-0.5 text-green-700 dark:text-green-400",title:"Approved this PR",children:[C.jsx("span",{className:"text-green-600 dark:text-green-500",children:"✓"}),C.jsx(bo,{user:f,size:14}),C.jsx(Tu,{user:f,fallbackId:c,repoId:e.repoId})]},c)})})}),e.requestedReviewers.length>0&&C.jsx(sl,{label:"Reviewers",children:C.jsx("div",{className:"flex flex-wrap gap-2 text-xs",children:e.requestedReviewers.map((c,f)=>C.jsx("span",{className:"rounded bg-gray-500/10 px-1.5 py-0.5",children:c.teamName?`@${c.teamName}`:C.jsx(Tu,{user:c.userId!=null?n.get(c.userId):void 0,fallbackId:c.userId,repoId:e.repoId})},f))})}),C.jsx(sl,{label:"Meta",children:C.jsxs("div",{className:"space-y-0.5 text-xs text-gray-500",children:[C.jsx("div",{children:e.repoFullName}),C.jsxs("div",{children:["opened ",ca(e.openedAt)]}),C.jsxs("div",{children:["updated ",ca(e.updatedAt)]})]})})]})}function GO(e){if(!e)return null;const n=[];return e.comments>0&&n.push(`${e.comments} new comment${e.comments===1?"":"s"}`),e.reviews>0&&n.push(`${e.reviews} new review${e.reviews===1?"":"s"}`),e.commits>0&&n.push(`${e.commits} new commit${e.commits===1?"":"s"}`),n.length?n.join(" · "):null}function kye(e){var t;const n=[];n.push({key:"opened",time:e.openedAt,label:"opened this PR",actorId:e.authorId,href:e.githubUrl,event:{type:"pr_opened",refId:null}});for(const r of e.commits)n.push({key:`commit:${r.id}`,time:r.committedAt,label:"pushed a commit",actorId:r.authorId??r.committerId,detail:(t=r.message)==null?void 0:t.split(`
|
|
1358
|
+
`)[0],href:`${e.githubUrl}/commits/${r.sha}`,event:{type:"commit_pushed",refId:r.id}});for(const r of e.reviews)n.push({key:`review:${r.id}`,time:r.submittedAt,label:`reviewed (${r.state.replace("_"," ")})`,actorId:r.authorId,detail:r.body??void 0,href:r.url??e.githubUrl,event:{type:"review_submitted",refId:r.id}});for(const r of e.comments)n.push({key:`comment:${r.id}`,time:r.createdAt,label:"commented",actorId:r.authorId,detail:r.body,href:r.url??e.githubUrl,event:{type:"pr_comment",refId:r.id}});return e.mergedAt?n.push({key:"merged",time:e.mergedAt,label:"merged this PR",actorId:e.authorId,href:e.githubUrl,event:{type:"pr_merged",refId:null}}):e.closedAt&&n.push({key:"closed",time:e.closedAt,label:"closed this PR",actorId:e.authorId,href:e.githubUrl,event:{type:"pr_closed",refId:null}}),n.sort((r,s)=>s.time.localeCompare(r.time))}function Sye({pr:e,usersById:n,since:t,onClearSince:r,focusEvent:s,onConsumed:a}){const o=H.useMemo(()=>kye(e),[e]),u=t?o.filter(g=>g.time>t):o,c=He(g=>g.showEventOnTimeline),f=H.useRef(new Map),[h,m]=H.useState(null);return H.useEffect(()=>{var y;if(!s)return;const g=o.find(w=>w.event.type===s.type&&w.event.refId===s.refId);a(),g&&((y=f.current.get(g.key))==null||y.scrollIntoView({behavior:"smooth",block:"center"}),m(g.key))},[s,o,a]),H.useEffect(()=>{if(h==null)return;const g=setTimeout(()=>m(null),1800);return()=>clearTimeout(g)},[h]),C.jsxs("ul",{className:"divide-y divide-gray-100 dark:divide-gray-800",children:[t&&C.jsxs("li",{className:"flex items-center gap-2 bg-sky-500/5 px-3 py-1.5 text-xs text-sky-600 dark:text-sky-400",children:[C.jsxs("span",{children:["Showing ",u.length," since you last looked"]}),C.jsx("button",{type:"button",onClick:r,className:"ml-auto text-gray-400 hover:text-gray-600",children:"show all"})]}),u.map(g=>{const y=g.actorId!=null?n.get(g.actorId):void 0;return C.jsxs("li",{ref:w=>{w?f.current.set(g.key,w):f.current.delete(g.key)},className:`flex items-start gap-2 px-3 py-2 text-sm ${g.key===h?"activity-flash":""}`,children:[C.jsx(bo,{user:y,size:20}),C.jsxs("div",{className:"min-w-0 flex-1",children:[C.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-2 gap-y-0.5",children:[C.jsx(Tu,{user:y,fallbackId:g.actorId,repoId:e.repoId,className:"font-medium"}),C.jsx("span",{className:"text-gray-500",children:g.label}),C.jsxs("span",{className:"text-xs text-gray-400",title:q_(g.time),children:["· ",q_(g.time)]})]}),g.detail&&C.jsx("div",{className:"mt-0.5 truncate text-xs text-gray-500",title:g.detail,children:g.detail.split(`
|
|
1359
|
+
`)[0]}),C.jsxs("div",{className:"mt-1 flex items-center gap-3 text-xs",children:[C.jsx("button",{type:"button",onClick:()=>c(e.id,g.time,g.event),className:"text-blue-500 hover:underline",title:"Show this event on the timeline",children:"Show"}),g.href&&C.jsx("a",{href:g.href,target:"_blank",rel:"noreferrer noopener",className:"text-gray-400 hover:text-blue-500",children:"Open on GitHub ↗"})]})]})]},g.key)})]})}function Eye({pr:e,usersById:n,viewedSince:t,focusCommentId:r,onFocusConsumed:s}){const a=H.useRef(new Map),[o,u]=H.useState(null);if(H.useEffect(()=>{if(r==null)return;s();const f=a.current.get(r);f&&(f.scrollIntoView({behavior:"smooth",block:"center"}),u(r))},[r,s]),H.useEffect(()=>{if(o==null)return;const f=setTimeout(()=>u(null),1800);return()=>clearTimeout(f)},[o]),e.comments.length===0)return C.jsx("div",{className:"px-3 py-6 text-center text-sm text-gray-500",children:"No PR comments on this PR."});const c=[...e.comments].sort((f,h)=>h.createdAt.localeCompare(f.createdAt));return C.jsx("div",{className:"space-y-2 px-3 pb-3",children:c.map(f=>{const h=f.authorId!=null?n.get(f.authorId):void 0,m=eL(f.createdAt,t);return C.jsxs("div",{ref:g=>{g?a.current.set(f.id,g):a.current.delete(f.id)},className:`rounded-md border border-gray-200 px-2.5 py-2 dark:border-gray-800 ${m?"comment-new":""} ${f.id===o?"activity-flash":""}`,children:[C.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[C.jsx(ix,{prId:e.id,at:f.createdAt,event:{type:"pr_comment",refId:f.id},title:"Show this comment on the timeline"}),C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"}),C.jsx(bo,{user:h,size:18}),C.jsx(Tu,{user:h,fallbackId:f.authorId,repoId:e.repoId,className:"font-semibold"}),C.jsx("span",{className:"text-gray-400",title:q_(f.createdAt),children:ca(f.createdAt)}),m&&C.jsx(J$,{})]}),C.jsx("div",{className:"mt-1 text-sm",children:C.jsx(Dh,{children:f.body})}),f.url&&C.jsx("div",{className:"mt-2 pl-2 text-[11px]",children:C.jsx("a",{href:f.url,target:"_blank",rel:"noreferrer noopener",className:"text-blue-500 hover:underline",children:"↗ View comment on GitHub"})})]},f.id)})})}function Tye({prId:e,selectedThreadId:n}){const{data:t,isLoading:r,error:s}=X$(e),[a,o]=H.useState("overview"),[u,c]=H.useState(null),f=fa(),h=He(Y=>Y.openPrFocused),m=He(Y=>Y.focusPrOnTimeline),g=He(Y=>Y.activityFocus),y=He(Y=>Y.consumeActivityFocus),w=H.useMemo(()=>g&&t&&g.prId===t.id?{type:g.type,refId:g.refId}:null,[g,t]),S=He(Y=>Y.commentFocus),k=He(Y=>Y.consumeCommentFocus),N=S&&t&&S.prId===t.id?S.commentId:null;H.useEffect(()=>{n!=null&&o("threads")},[n]),H.useEffect(()=>{w&&(o("activity"),c(null))},[w]),H.useEffect(()=>{N!=null&&o("overview")},[N]);const D=Yu({mutationFn:Y=>er.markPrViewed(Y),onSuccess:()=>{f.invalidateQueries({queryKey:["open-prs"]}),f.invalidateQueries({queryKey:["timeline"]}),f.invalidateQueries({queryKey:["my-turn"]}),f.invalidateQueries({queryKey:["me"]})}}),R=H.useRef(null);H.useEffect(()=>{t&&R.current!==t.id&&(R.current=t.id,D.mutate(t.id))},[t,D]);const I=H.useMemo(()=>Xh(t==null?void 0:t.users),[t]);if(r)return C.jsx("div",{className:"p-4 text-sm text-gray-500",children:"Loading PR…"});if(s||!t)return C.jsx("div",{className:"p-4 text-sm text-red-500",children:s?String(s):"PR not found"});const L=$2[t.state],A=t.authorId!=null?I.get(t.authorId):void 0;return C.jsxs("div",{className:"flex h-full flex-col",children:[C.jsxs("div",{className:"border-b border-gray-200 px-4 py-2 pr-28 dark:border-gray-800",children:[C.jsxs("div",{className:"flex items-center gap-2",children:[C.jsx("span",{className:"rounded px-1.5 py-0.5 text-xs font-semibold text-white",style:{backgroundColor:L.color},children:t.isDraft?"Draft":L.label}),C.jsxs("a",{href:t.githubUrl,target:"_blank",rel:"noreferrer noopener",className:"truncate text-sm font-semibold hover:underline",title:t.title,children:[C.jsxs("span",{className:"text-gray-400",children:["#",t.number]})," ",t.title]}),t.isStalled&&C.jsx("span",{className:"rounded bg-red-500/15 px-1.5 py-0.5 text-xs font-medium text-red-500",title:"Open, no recent commits, and has open threads",children:"Stalled"}),(()=>{const Y=GO(t.newSinceLastViewed);return Y?C.jsxs("button",{type:"button",onClick:()=>{o("activity"),c(t.lastViewedAt)},className:"ml-auto shrink-0 rounded bg-sky-500/15 px-1.5 py-0.5 text-xs font-medium text-sky-500 hover:bg-sky-500/25",title:"Filter activity to what's new since you last looked",children:["👁 ",Y]}):null})(),C.jsx("a",{href:t.githubUrl,target:"_blank",rel:"noreferrer noopener",className:`${GO(t.newSinceLastViewed)?"":"ml-auto"} shrink-0 text-xs text-blue-500 hover:underline`,children:"open on GitHub ↗"})]}),C.jsxs("div",{className:"mt-1 flex items-center gap-2 text-xs text-gray-500",children:[C.jsx("button",{type:"button",onClick:()=>h(t.id),className:"shrink-0 font-medium text-blue-500 hover:underline",title:"Centre and highlight this PR on the timeline",children:"Show"}),C.jsx("button",{type:"button",onClick:()=>m(t.id),className:"shrink-0 font-medium text-blue-500 hover:underline",title:"Isolate this PR and its contributors on the timeline (Exit focus / Esc to leave)",children:"Focus"}),C.jsx("span",{className:"text-gray-300 dark:text-gray-600",children:"·"}),C.jsx(bo,{user:A,size:16}),C.jsx(Tu,{user:A,fallbackId:t.authorId,repoId:t.repoId}),C.jsx("span",{children:"·"}),C.jsx("span",{children:t.repoFullName}),C.jsx("span",{children:"·"}),C.jsxs("span",{children:["opened ",ca(t.openedAt)]})]})]}),C.jsx("div",{className:"flex gap-1 border-b border-gray-200 px-3 dark:border-gray-800",children:["overview","threads","activity"].map(Y=>{const j=t.checkRuns.filter(G=>G.state==="failure"||G.state==="error").length;return C.jsxs("button",{type:"button",onClick:()=>o(Y),className:`-mb-px border-b-2 px-3 py-1.5 text-xs capitalize ${a===Y?"border-blue-500 text-blue-500":"border-transparent text-gray-500 hover:text-gray-700"}`,children:[Y,Y==="overview"&&j>0&&C.jsx("span",{className:"ml-1 text-red-500",title:`${j} failing`,children:"●"}),Y==="threads"&&t.threads.length>0&&C.jsx("span",{className:"ml-1 opacity-60",title:`${t.threads.length} threads`,children:t.threads.length})]},Y)})}),C.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:a==="overview"?C.jsxs("div",{children:[C.jsx(xye,{pr:t,usersById:I}),C.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-800",children:[C.jsxs("div",{className:"px-4 pb-1 pt-2 text-xs font-semibold uppercase tracking-wide text-gray-400",children:["PR comments",t.comments.length>0&&C.jsxs("span",{className:"ml-1 font-normal opacity-70",children:["· ",t.comments.length]})]}),C.jsx(Eye,{pr:t,usersById:I,viewedSince:t.lastViewedAt,focusCommentId:N,onFocusConsumed:k})]})]}):a==="threads"?C.jsx(_ye,{threads:t.threads,usersById:I,prUrl:t.githubUrl,repoId:t.repoId,selectedThreadId:n,viewedSince:t.lastViewedAt}):C.jsx(Sye,{pr:t,usersById:I,since:u,onClearSince:()=>c(null),focusEvent:w,onConsumed:y})})]})}function Cye(){const{data:e}=px(),{data:n}=qh(),t=H.useMemo(()=>{if(!e)return[];const r=new Map,s=a=>{var o;return((o=n==null?void 0:n.find(u=>u.id===a))==null?void 0:o.fullName)??`repo ${a}`};for(const a of e.prs){const o=r.get(a.repoId)??{repoId:a.repoId,name:s(a.repoId),openPrs:0,stalled:0,untouched:0,replied:0};a.state==="open"&&(o.openPrs+=1),a.isStalled&&(o.stalled+=1),o.untouched+=a.threadCounts.untouched,o.replied+=a.threadCounts.replied_unresolved,r.set(a.repoId,o)}return[...r.values()].sort((a,o)=>a.name.localeCompare(o.name))},[e,n]);return t.length===0?C.jsx("div",{className:"flex h-full items-center justify-center text-sm text-gray-500",children:"Select a PR or event on the timeline."}):C.jsxs("div",{className:"p-4",children:[C.jsx("h2",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-gray-400",children:"In this window"}),C.jsxs("table",{className:"w-full text-sm",children:[C.jsx("thead",{children:C.jsxs("tr",{className:"text-left text-xs text-gray-400",children:[C.jsx("th",{className:"py-1 pr-4 font-medium",children:"Repo"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Open PRs"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Stalled"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Untouched"}),C.jsx("th",{className:"py-1 pr-4 text-right font-medium",children:"Replied"})]})}),C.jsx("tbody",{children:t.map(r=>C.jsxs("tr",{className:"border-t border-gray-100 dark:border-gray-800",children:[C.jsx("td",{className:"py-1.5 pr-4 font-medium",children:r.name}),C.jsx("td",{className:"py-1.5 pr-4 text-right tabular-nums",children:r.openPrs}),C.jsx("td",{className:`py-1.5 pr-4 text-right tabular-nums ${r.stalled>0?"font-semibold text-red-500":""}`,children:r.stalled}),C.jsx("td",{className:`py-1.5 pr-4 text-right tabular-nums ${r.untouched>0?"font-semibold text-red-400":""}`,children:r.untouched}),C.jsx("td",{className:`py-1.5 pr-4 text-right tabular-nums ${r.replied>0?"text-amber-500":""}`,children:r.replied})]},r.repoId))})]})]})}function Nye({items:e}){const n=He(s=>s.openPrFocused),t=fa(),r=Yu({mutationFn:s=>er.dismissMyTurn("review_request",s),onSuccess:()=>{t.invalidateQueries({queryKey:["my-turn"]}),t.invalidateQueries({queryKey:["me"]})}});return e.length===0?null:C.jsxs("section",{children:[C.jsxs("h3",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold",children:[C.jsx("span",{className:"text-blue-500",children:"●"}),"Awaiting your review",C.jsxs("span",{className:"text-gray-400",children:["(",e.length,")"]})]}),C.jsx("ul",{className:"space-y-0.5",children:e.map(s=>C.jsxs("li",{className:"group flex items-stretch",children:[C.jsxs("button",{type:"button",onClick:()=>n(s.prId),className:"flex min-w-0 flex-1 items-baseline gap-2 rounded px-2 py-1 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-800",children:[C.jsxs("span",{className:"shrink-0 text-xs text-gray-400",children:[s.repoFullName," #",s.number]}),C.jsx("span",{className:"min-w-0 flex-1 truncate",title:s.title,children:s.title}),s.alsoRequested>0&&C.jsxs("span",{className:"shrink-0 text-[11px] text-gray-400",children:["+",s.alsoRequested," other",s.alsoRequested===1?"":"s"]}),C.jsx("span",{className:"shrink-0 text-[11px] text-gray-400",children:ca(s.openedAt)})]}),C.jsx("button",{type:"button",onClick:()=>r.mutate(s.prId),disabled:r.isPending,className:"shrink-0 rounded px-1.5 text-[11px] text-gray-300 opacity-0 hover:text-gray-600 group-hover:opacity-100 dark:text-gray-600 dark:hover:text-gray-300",title:"Dismiss — reappears if the PR is updated",children:"✓ done"})]},s.prId))})]})}function Oye({items:e}){const n=He(s=>s.openPrFocused),t=fa(),r=Yu({mutationFn:s=>er.dismissPr(s),onSuccess:()=>{t.invalidateQueries({queryKey:["my-turn"]}),t.invalidateQueries({queryKey:["me"]}),t.invalidateQueries({queryKey:["open-prs"]}),t.invalidateQueries({queryKey:["timeline"]})}});return e.length===0?null:C.jsxs("section",{children:[C.jsxs("h3",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold",children:[C.jsx("span",{className:"text-green-500",children:"●"}),"Your PRs with new activity",C.jsxs("span",{className:"text-gray-400",children:["(",e.length,")"]})]}),C.jsx("ul",{className:"space-y-0.5",children:e.map(s=>C.jsxs("li",{className:"group flex items-stretch",children:[C.jsxs("button",{type:"button",onClick:()=>n(s.prId),className:"min-w-0 flex-1 rounded px-2 py-1 text-left hover:bg-gray-100 dark:hover:bg-gray-800",children:[C.jsxs("div",{className:"flex items-baseline gap-2 text-sm",children:[C.jsxs("span",{className:"shrink-0 text-xs text-gray-400",children:[s.repoFullName," #",s.number]}),C.jsx("span",{className:"min-w-0 flex-1 truncate",title:s.title,children:s.title})]}),C.jsx("div",{className:"pl-1 text-[11px] font-medium text-sky-500",children:s.summary})]}),C.jsx("button",{type:"button",onClick:()=>r.mutate(s.prId),disabled:r.isPending,className:"shrink-0 self-start rounded px-1.5 py-1 text-[11px] text-gray-300 opacity-0 hover:text-gray-600 group-hover:opacity-100 dark:text-gray-600 dark:hover:text-gray-300",title:"Mark seen — clears the new-activity badge",children:"✓ seen"})]},s.prId))})]})}function Iye({items:e}){const n=He(s=>s.openPrFocused),t=fa(),r=Yu({mutationFn:s=>er.dismissMyTurn("thread",s),onSuccess:()=>{t.invalidateQueries({queryKey:["my-turn"]}),t.invalidateQueries({queryKey:["me"]})}});return e.length===0?null:C.jsxs("section",{children:[C.jsxs("h3",{className:"mb-1 flex items-center gap-1.5 text-xs font-semibold",children:[C.jsx("span",{className:"text-amber-500",children:"●"}),"Threads awaiting your response",C.jsxs("span",{className:"text-gray-400",children:["(",e.length,")"]})]}),C.jsx("ul",{className:"space-y-0.5",children:e.map(s=>{const a=s.path.split("/").at(-1);return C.jsxs("li",{className:"group flex items-stretch",children:[C.jsxs("button",{type:"button",onClick:()=>n(s.prId,s.threadId),className:"min-w-0 flex-1 rounded px-2 py-1 text-left hover:bg-gray-100 dark:hover:bg-gray-800",children:[C.jsxs("div",{className:"flex items-baseline gap-2 text-sm",children:[C.jsxs("span",{className:"shrink-0 text-xs text-gray-400",children:[s.repoFullName," #",s.prNumber]}),C.jsxs("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",title:s.path,children:[a,s.line!=null?`:${s.line}`:""]}),C.jsx("span",{className:"shrink-0 text-[11px] text-gray-400",children:ca(s.lastReplyAt)})]}),C.jsxs("div",{className:"truncate pl-1 text-[11px] italic text-gray-500",title:s.lastReplyExcerpt,children:["“",s.lastReplyExcerpt,"”"]})]}),C.jsx("button",{type:"button",onClick:()=>r.mutate(s.threadId),disabled:r.isPending,className:"shrink-0 self-start rounded px-1.5 py-1 text-[11px] text-gray-300 opacity-0 hover:text-gray-600 group-hover:opacity-100 dark:text-gray-600 dark:hover:text-gray-300",title:"Dismiss — reappears on a newer reply",children:"✓ done"})]},s.threadId)})})]})}function Rye(){const{data:e,isLoading:n}=P2(),{data:t}=II(),r=H.useMemo(()=>Xh(e==null?void 0:e.users),[e]);return n&&!e?C.jsx("div",{className:"p-4 text-sm text-gray-500",children:"Loading…"}):!e||e.awaitingReview.length===0&&e.yourPrs.length===0&&e.threadsAwaiting.length===0?C.jsxs("div",{className:"flex h-full flex-col",children:[C.jsx("div",{className:"px-4 pt-3 text-sm text-gray-500",children:t!=null&&t.user?`Nothing needs you right now, ${t.user.login}. 🎉`:"Sign in with the gh CLI to see your triage queue."}),C.jsx("div",{className:"min-h-0 flex-1 overflow-auto",children:C.jsx(Cye,{})})]}):C.jsxs("div",{className:"h-full overflow-auto p-4",children:[C.jsx("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wide text-gray-400",children:"My turn"}),C.jsxs("div",{className:"space-y-4",children:[C.jsx(Nye,{items:e.awaitingReview,usersById:r}),C.jsx(Oye,{items:e.yourPrs,usersById:r}),C.jsx(Iye,{items:e.threadsAwaiting,usersById:r})]})]})}function Dye(){const{data:e}=II(),n=He(s=>s.clearSelection),t=He(s=>s.selectedPrId);if(!(e!=null&&e.user))return null;const r=e.counts;return C.jsxs("button",{type:"button",onClick:()=>{t!=null&&n()},title:"My turn: awaiting your review · your PRs with activity · threads awaiting your response",className:"flex items-center gap-1 rounded-full border border-gray-300 px-2 py-0.5 text-xs tabular-nums hover:border-gray-400 dark:border-gray-700 dark:hover:border-gray-500",children:[C.jsx("span",{className:"text-blue-500",children:r.awaitingReview}),C.jsx("span",{className:"text-gray-400",children:"·"}),C.jsx("span",{className:"text-green-500",children:r.yourPrsActivity}),C.jsx("span",{className:"text-gray-400",children:"·"}),C.jsx("span",{className:"text-amber-500",children:r.threadsAwaiting})]})}function Mye(){const e=He(r=>r.selectedPrId),n=He(r=>r.selectedThreadId),t=He(r=>r.clearSelection);return C.jsxs("div",{className:"relative h-full",children:[C.jsxs("div",{className:"absolute right-2 top-1.5 z-10 flex items-center gap-2",children:[C.jsx(Dye,{}),e!=null&&C.jsx("button",{type:"button",onClick:t,className:"rounded px-2 py-0.5 text-xs text-gray-400 hover:text-gray-600",title:"Clear selection (Esc)",children:"✕"})]}),e==null?C.jsx(Rye,{}):C.jsx(Tye,{prId:e,selectedThreadId:n},e)]})}function Aye({repos:e,statuses:n,cancelling:t,onCancel:r}){const s=c=>n==null?void 0:n.find(f=>f.repoId===c),a=c=>{if(n===void 0)return!0;const f=s(c);return f===void 0||f.status==="running"},o=e.filter(c=>!a(c.id)).length,u=e.length>0&&o===e.length;return C.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",role:"presentation",children:C.jsxs("div",{className:"w-[28rem] max-w-[90vw] rounded-lg border border-gray-200 bg-white p-4 shadow-xl dark:border-gray-700 dark:bg-gray-900",role:"dialog","aria-modal":"true","aria-label":"Sync progress",children:[C.jsx("div",{className:"mb-3 flex items-center justify-between",children:C.jsx("h2",{className:"text-sm font-semibold",children:t?"Cancelling…":e.length===0?"Starting sync…":u?"Sync complete":`Syncing ${e.length} repo${e.length===1?"":"s"}`})}),C.jsx("ul",{className:"space-y-3",children:e.map(c=>{var w,S;const f=s(c.id),h=a(c.id),m=(f==null?void 0:f.status)==="error",g=((w=f==null?void 0:f.progress)==null?void 0:w.prsProcessed)??0,y=h?Math.round((((S=f==null?void 0:f.progress)==null?void 0:S.percent)??0)*100):100;return C.jsxs("li",{children:[C.jsxs("div",{className:"mb-1 flex items-baseline justify-between gap-2 text-xs",children:[C.jsx("span",{className:"truncate font-medium",title:c.fullName,children:c.fullName}),C.jsx("span",{className:"shrink-0 text-gray-500",children:m?C.jsx("span",{className:"text-red-500",children:"error"}):h?`${y}%${g>0?` · ${g} PRs`:""}`:C.jsxs("span",{className:"text-green-600 dark:text-green-400",children:["✓ done",g>0?` · ${g} PRs`:""]})})]}),C.jsx("div",{className:"h-2 w-full overflow-hidden rounded bg-gray-200 dark:bg-gray-800",children:C.jsx("div",{className:`h-2 rounded transition-all duration-500 ${m?"bg-red-500":h?"bg-blue-500":"bg-green-500"}`,style:{width:`${m?100:y}%`}})})]},c.id)})}),C.jsxs("div",{className:"mt-4 flex items-center justify-between gap-3 text-xs text-gray-500",children:[C.jsxs("span",{children:[o," of ",e.length," repo",e.length===1?"":"s"," complete"]}),C.jsx("button",{type:"button",onClick:r,disabled:t,title:"Stop the sync and remove any repos still loading for the first time",className:"rounded border border-red-300 px-3 py-1 text-red-600 hover:border-red-400 hover:bg-red-50 disabled:opacity-50 dark:border-red-900 dark:text-red-400 dark:hover:bg-red-950",children:t?"Cancelling…":"Cancel"})]})]})})}function Pye(e){let n=null;for(const t of e){const r=t.lastIncrementalSyncAt??t.lastFullSyncAt;r&&(!n||r>n)&&(n=r)}return n}const VO=5,KO=e=>e.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});function $ye(e){const n=new Date,t=new Date(n);return t.setSeconds(0,0),t.setMinutes(Math.floor(n.getMinutes()/e)*e+e),t}function Lye(e){const n=$ye(VO),t=Math.max(1,Math.round((n.getTime()-Date.now())/6e4)),r=e?[`Last synced ${KO(new Date(e))}`]:[];return r.push(`Syncs automatically every ${VO} minutes`),r.push(`Next sync ~${KO(n)} (in ${t} min)`),r.join(`
|
|
1360
1360
|
`)}function Fye(){const e=fa(),[n,t]=H.useState(!1),[r,s]=H.useState(!1),[a,o]=H.useState(!1),[u,c]=H.useState(!1),[f,h]=H.useState(null),{data:m}=Ki({queryKey:["repos"],queryFn:er.listRepos,refetchInterval:n?3e3:3e4}),g=(m??[]).map(ie=>ie.id).join(","),{data:y}=Ki({queryKey:["sync-status",g],enabled:n&&!!m&&m.length>0,queryFn:()=>Promise.all((m??[]).map(ie=>er.syncStatus(ie.id))),refetchInterval:1500}),w=f==null?m??[]:(m??[]).filter(ie=>ie.id===f),S=new Set(w.map(ie=>ie.id)),k=y==null?void 0:y.filter(ie=>S.has(ie.repoId)),N=(k??[]).filter(ie=>ie.status==="running").length,D=Pye(m??[]),R=H.useRef(D),I=H.useRef(null),L=()=>{I.current!=null&&(clearTimeout(I.current),I.current=null)},A=()=>{o(!1),L()};H.useEffect(()=>L,[]);const Y=()=>{e.invalidateQueries({queryKey:["timeline"]}),e.invalidateQueries({queryKey:["open-prs"]}),e.invalidateQueries({queryKey:["users"]}),e.invalidateQueries({queryKey:["mergers"]}),e.invalidateQueries({queryKey:["my-turn"]}),e.invalidateQueries({queryKey:["me"]})};H.useEffect(()=>{R.current!==D&&(R.current=D,Y())},[D]),H.useEffect(()=>{N>0&&o(!0)},[N]),H.useEffect(()=>{n&&a&&y&&N===0&&(t(!1),o(!1),Y(),L(),I.current=setTimeout(()=>{s(!1),I.current=null},1e3))},[n,a,y,N]);const j=He(ie=>ie.syncModalSignal),G=He(ie=>ie.syncModalRepoId),F=H.useRef(j);if(H.useEffect(()=>{j!==F.current&&(F.current=j,h(G),s(!0),t(!0),A(),e.invalidateQueries({queryKey:["repos"]}),e.invalidateQueries({queryKey:["sync-status"]}))},[j,e]),!m||m.length===0)return null;const B=m.find(ie=>ie.lastSyncStatus==="error"),X=async(ie=!1)=>{t(!0),s(!0),h(null),A(),await Promise.allSettled(m.map(_e=>er.syncRepo(_e.id,ie))),e.invalidateQueries({queryKey:["repos"]}),e.invalidateQueries({queryKey:["sync-status"]})},ue=async()=>{c(!0),L();const ie=(k??[]).filter(xe=>xe.status==="running").map(xe=>xe.repoId),_e=ie.length?ie:w.map(xe=>xe.id);await Promise.allSettled(_e.map(xe=>er.cancelSync(xe))),t(!1),o(!1),c(!1),s(!1),e.invalidateQueries({queryKey:["repos"]}),Y()},ne=N>0?`syncing ${N} repo${N===1?"":"s"}…`:"syncing…";return C.jsxs(C.Fragment,{children:[r&&C.jsx(Aye,{repos:w,statuses:k,cancelling:u,onCancel:()=>void ue()}),C.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:[B?C.jsxs("span",{className:"text-red-500",title:B.lastSyncError??"",children:["sync error: ",B.fullName]}):C.jsx("span",{className:"cursor-help",title:Lye(D),children:n?ne:D?`synced ${ca(D)}`:"not synced yet"}),C.jsx("button",{type:"button",onClick:()=>void X(!1),disabled:n,className:"rounded border border-gray-300 px-2 py-0.5 hover:border-gray-400 disabled:opacity-50 dark:border-gray-700 dark:hover:border-gray-500",children:"Sync now"}),C.jsx("button",{type:"button",onClick:()=>{window.confirm("Deep re-sync re-fetches the full backfill window for every repo. Slower, but catches CI/thread changes the incremental sync can lag. Continue?")&&X(!0)},disabled:n,className:"rounded px-1.5 py-0.5 text-gray-400 hover:text-gray-600 disabled:opacity-50",title:"Force a full backfill for all repos",children:"deep"})]})]})}function jye(){const e=He(I=>I.searchQuery),n=He(I=>I.setSearchQuery),t=He(I=>I.openPrFocused),{data:r}=mx(),{data:s}=gx(),{data:a}=qh(),{data:o}=_v(),[u,c]=H.useState(!1),[f,h]=H.useState(-1),m=H.useRef(null),g=H.useMemo(()=>{const I=new Map;for(const L of a??[])I.set(L.id,L.fullName);return I},[a]),y=H.useMemo(()=>Xh(o),[o]),w=H.useMemo(()=>{const I=new Map;for(const L of(r==null?void 0:r.prs)??[])I.set(L.id,L);for(const L of(s==null?void 0:s.prs)??[])I.has(L.id)||I.set(L.id,L);return[...I.values()]},[r,s]),S=H.useMemo(()=>{const I=e.trim().toLowerCase();return I?w.filter(L=>L.title.toLowerCase().includes(I)).slice(0,30):[]},[w,e]),k=u&&e.trim().length>0,N=f>=0&&f<S.length?S[f].id:null;H.useEffect(()=>{if(!k)return;const I=L=>{m.current&&!m.current.contains(L.target)&&c(!1)};return document.addEventListener("mousedown",I),()=>document.removeEventListener("mousedown",I)},[k]),H.useEffect(()=>{var I,L;N!=null&&((L=(I=m.current)==null?void 0:I.querySelector(`#pr-result-${N}`))==null||L.scrollIntoView({block:"nearest"}))},[N]);const D=I=>{I&&(t(I.id),c(!1))},R=I=>{if(I.key==="Escape"){c(!1),I.target.blur();return}!k||S.length===0||(I.key==="ArrowDown"?(I.preventDefault(),h(L=>(L+1)%S.length)):I.key==="ArrowUp"?(I.preventDefault(),h(L=>L<=0?S.length-1:L-1)):I.key==="Enter"&&(I.preventDefault(),D(S[f>=0?f:0])))};return C.jsxs("div",{ref:m,className:"relative",children:[C.jsx("input",{type:"search",value:e,placeholder:"Search PR titles…",onChange:I=>{n(I.target.value),h(-1),c(!0)},onFocus:()=>c(!0),onKeyDown:R,role:"combobox","aria-expanded":k,"aria-controls":"pr-search-results","aria-autocomplete":"list","aria-activedescendant":N!=null?`pr-result-${N}`:void 0,"aria-label":"Search PR titles",className:"w-56 rounded border border-gray-300 bg-transparent px-2 py-0.5 text-xs focus:border-blue-500 focus:outline-none dark:border-gray-700"}),k&&C.jsx("div",{id:"pr-search-results",role:"listbox","aria-label":"PR search results",className:"absolute right-0 top-full z-[60] mt-1 max-h-80 w-80 overflow-y-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-900",children:S.length===0?C.jsx("div",{className:"px-3 py-2 text-xs text-gray-500",children:"No matching PRs."}):S.map((I,L)=>{const A=I.authorId!=null?y.get(I.authorId):void 0;return C.jsxs("button",{id:`pr-result-${I.id}`,type:"button",role:"option","aria-selected":L===f,onMouseEnter:()=>h(L),onClick:()=>D(I),className:`flex w-full flex-col gap-0.5 px-3 py-1.5 text-left ${L===f?"bg-gray-100 dark:bg-gray-800":""} hover:bg-gray-100 dark:hover:bg-gray-800`,children:[C.jsxs("span",{className:"flex items-center gap-1 text-[10px] text-gray-400",children:[C.jsx(bo,{user:A,size:12}),C.jsx("span",{className:"truncate",title:ua(A,I.authorId),children:ua(A,I.authorId)}),C.jsx("span",{"aria-hidden":!0,children:"·"}),C.jsxs("span",{className:"shrink-0",children:[g.get(I.repoId)??`repo ${I.repoId}`," · #",I.number]})]}),C.jsx("span",{className:"truncate text-xs",title:I.title,children:I.title})]},I.id)})})]})}function Bye({onClose:e}){return H.useEffect(()=>{const n=t=>{t.key==="Escape"&&(t.stopImmediatePropagation(),e())};return window.addEventListener("keydown",n,!0),()=>window.removeEventListener("keydown",n,!0)},[e]),C.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",onClick:e,role:"presentation",children:C.jsxs("div",{className:"flex max-h-[80vh] w-[34rem] max-w-[92vw] flex-col rounded-lg border border-gray-200 bg-white shadow-xl dark:border-gray-700 dark:bg-gray-900",onClick:n=>n.stopPropagation(),role:"dialog","aria-modal":"true","aria-label":"Pierre help",children:[C.jsxs("div",{className:"flex items-center justify-between border-b border-gray-200 px-4 py-2 dark:border-gray-800",children:[C.jsx("h2",{className:"brand-title",children:"Pierre"}),C.jsx("button",{type:"button",onClick:e,className:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-200","aria-label":"Close (Esc)",title:"Close (Esc)",children:"✕"})]}),C.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-auto px-4 py-3 text-sm leading-relaxed text-gray-600 dark:text-gray-300",children:[C.jsx("p",{className:"text-gray-500 dark:text-gray-400",children:"A local dashboard for your team’s GitHub pull-request activity across repos, drawn as an interactive timeline. Everything runs on your machine."}),C.jsxs(fu,{title:"Track repositories",children:["Add repos in the filter bar’s ",C.jsx("em",{children:"add repo"})," box as ",C.jsx(zye,{children:"owner/name"}),". Pierre syncs their PR activity every few minutes into a local file — nothing leaves your machine."]}),C.jsxs(fu,{title:"Read the timeline",children:["Rows are grouped ",C.jsx("strong",{children:"repo → contributor"}),". Each PR is a bar; the markers beneath it are events — commits, comments, reviews. Scroll to pan, hold the zoom key while scrolling to zoom. Click a marker for its details, or a PR bar to select it."]}),C.jsxs(fu,{title:"Focus mode",children:["To isolate one PR and just its contributors: double-click its bar, click"," ",C.jsx("strong",{children:"Focus"})," in the detail pane, or click a cross-person marker. Leave focus with the ",C.jsx("strong",{children:"Exit focus"})," button, ",C.jsx(dh,{children:"Esc"}),", or the browser ",C.jsx("strong",{children:"Back"})," button."]}),C.jsxs(fu,{title:"Detail pane",children:["Selecting a PR opens the bottom pane with ",C.jsx("strong",{children:"Overview"})," (checks, summary, comments), ",C.jsx("strong",{children:"Threads"}),", and ",C.jsx("strong",{children:"Activity"}),". The ",C.jsx("em",{children:"Show"})," links jump back to that moment on the timeline; drag the divider to resize the pane."]}),C.jsxs(fu,{title:"Filter",children:["Narrow by date range, members (auto-scoped to who’s active in view), event categories, and thread states. ",C.jsx("em",{children:"Exclude bots"})," hides renovate / dependabot / CI noise."]}),C.jsxs(fu,{title:"Open-PRs strip",children:["The collapsible strip up top lists currently-open PRs — toggle between"," ",C.jsx("strong",{children:"all"}),", ",C.jsx("strong",{children:"my turn"}),", and"," ",C.jsx("strong",{children:"needs attention"}),"."]}),C.jsxs(fu,{title:"Keyboard",children:[C.jsx(dh,{children:"/"})," focus the filter · ",C.jsx(dh,{children:"j"}),"/",C.jsx(dh,{children:"k"})," cycle PRs ·"," ",C.jsx(dh,{children:"Esc"})," exit focus, else clear the selection."]})]})]})})}function fu({title:e,children:n}){return C.jsxs("section",{children:[C.jsx("h3",{className:"mb-1 font-semibold text-gray-800 dark:text-gray-100",children:e}),C.jsx("p",{children:n})]})}function zye({children:e}){return C.jsx("code",{className:"rounded bg-gray-100 px-1 font-mono text-[12px] text-gray-700 dark:bg-gray-800 dark:text-gray-300",children:e})}function dh({children:e}){return C.jsx("kbd",{className:"rounded border border-gray-300 bg-gray-100 px-1 text-[11px] font-medium text-gray-600 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-300",children:e})}const Uye=["7d","14d","30d","90d","custom"];function qO(e,n){if(e.length!==n.length)return!1;const t=new Set(e);return n.every(r=>t.has(r))}function XO(e){if(!e)return null;const n=e.split(",").map(t=>Number.parseInt(t,10)).filter(Number.isFinite);return n.length?n:null}function Hye(){const e=new URLSearchParams(window.location.search),n={},t=e.get("preset");t&&Uye.includes(t)&&(n.preset=t),n.repoIds=XO(e.get("repos")),n.userIds=XO(e.get("users")),e.get("bots")!==null&&(n.excludeBots=e.get("bots")!=="0");const r=e.get("stale");r==="0"?n.excludeStale=!1:r==="1"&&(n.excludeStale=!0),n.customFrom=e.get("from"),n.customTo=e.get("to");const s=e.get("cats");if(s){const h=new Set(bv);n.categories=s.split(",").filter(m=>h.has(m))}const a=e.get("status");if(a!==null){const h=new Set(fx);n.prStatuses=a.split(",").filter(m=>h.has(m))}const o=e.get("states");if(o){const h=new Set(kI);n.derivedStates=o.split(",").filter(m=>h.has(m))}const u=e.get("pr");u&&(n.selectedPrId=Number.parseInt(u,10));const c=e.get("thread");c&&(n.selectedThreadId=Number.parseInt(c,10));const f=e.get("strip");return(f==="my_turn"||f==="needs_attention"||f==="all")&&(n.stripFilter=f),e.get("open")==="1"&&(n.stripCollapsed=!1),n}function Yye(e){var s,a;const n=new URLSearchParams;e.preset!=="14d"&&n.set("preset",e.preset),(s=e.repoIds)!=null&&s.length&&n.set("repos",e.repoIds.join(",")),(a=e.userIds)!=null&&a.length&&n.set("users",e.userIds.join(",")),e.excludeBots||n.set("bots","0"),e.excludeStale||n.set("stale","0"),e.preset==="custom"&&e.customFrom&&n.set("from",e.customFrom),e.preset==="custom"&&e.customTo&&n.set("to",e.customTo),qO(e.categories,EI)||n.set("cats",e.categories.join(",")),qO(e.prStatuses,TI)||n.set("status",e.prStatuses.join(",")),e.derivedStates.length&&n.set("states",e.derivedStates.join(",")),e.selectedPrId&&n.set("pr",String(e.selectedPrId)),e.selectedThreadId&&n.set("thread",String(e.selectedThreadId)),e.stripFilter!=="all"&&n.set("strip",e.stripFilter),e.stripCollapsed||n.set("open","1");const t=n.toString(),r=`${window.location.pathname}${t?`?${t}`:""}`;r!==window.location.pathname+window.location.search&&window.history.replaceState(null,"",r)}function Wye(){const e=H.useRef(!1);H.useEffect(()=>(e.current||(He.getState().hydrate(Hye()),e.current=!0),He.subscribe(t=>Yye(t))),[])}function QO(e){if(!(e instanceof HTMLElement))return!1;const n=e.tagName;return n==="INPUT"||n==="TEXTAREA"||e.isContentEditable}function Gye(){const{data:e}=px();H.useEffect(()=>{const n=t=>{var c;const{selectedPrId:r,selectPr:s,clearSelection:a,focusActive:o,exitFocus:u}=He.getState();if(t.key==="Escape"){QO(t.target)?t.target.blur():o?u():a();return}if(!QO(t.target)){if(t.key==="/"){t.preventDefault(),(c=document.getElementById("add-repo-input"))==null||c.focus();return}if(t.key==="j"||t.key==="k"){const f=[...(e==null?void 0:e.prs)??[]].sort((y,w)=>w.openedAt.localeCompare(y.openedAt));if(f.length===0)return;const h=f.findIndex(y=>y.id===r);let m;h===-1?m=0:m=t.key==="j"?h+1:h-1,m=Math.max(0,Math.min(f.length-1,m));const g=f[m];g&&s(g.id)}}};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[e])}function Vye(){const[e,n]=H.useState(()=>(localStorage.getItem("theme")??"dark")!=="light");return H.useEffect(()=>{document.documentElement.classList.toggle("dark",e),localStorage.setItem("theme",e?"dark":"light")},[e]),[e,()=>n(t=>!t)]}function Kye(){Wye(),Gye();const[e,n]=Vye(),[t,r]=H.useState(!1),s=He(g=>g.focusActive),[a,o]=Q$("pierre:detailPaneHeight",384),u=H.useRef(null),c=H.useRef(null),f=g=>{var y;c.current={startY:g.clientY,startH:((y=u.current)==null?void 0:y.offsetHeight)??a},g.currentTarget.setPointerCapture(g.pointerId)},h=g=>{const y=c.current;if(!y||!u.current)return;const w=window.innerHeight*.7,S=Math.min(Math.max(y.startH+(y.startY-g.clientY),160),w);u.current.style.height=`${S}px`,window.dispatchEvent(new Event("resize"))},m=g=>{!c.current||!u.current||(c.current=null,g.currentTarget.releasePointerCapture(g.pointerId),o(u.current.offsetHeight))};return C.jsxs("div",{className:"flex h-full flex-col",children:[C.jsxs("header",{className:"flex items-center gap-3 border-b border-gray-200 px-4 py-2 dark:border-gray-800",children:[C.jsx("h1",{className:"brand-title",title:"Pierre — a play on “PR”",children:"Pierre"}),s&&C.jsxs("span",{className:"focus-indicator",title:"You're in PR focus mode — Esc, the browser Back button, or Exit focus to leave",children:[C.jsx("span",{className:"focus-indicator-dot","aria-hidden":"true"}),"Focus mode"]}),C.jsxs("div",{className:"ml-auto flex items-center gap-3",children:[C.jsx(jye,{}),C.jsx(Fye,{}),C.jsx("button",{type:"button",onClick:()=>r(!0),className:"rounded border border-gray-300 px-2 py-0.5 text-xs font-semibold hover:border-gray-400 dark:border-gray-700 dark:hover:border-gray-500",title:"Help — what is Pierre and how to use it","aria-label":"Help",children:"?"}),C.jsx("button",{type:"button",onClick:n,className:"rounded border border-gray-300 px-2 py-0.5 text-xs hover:border-gray-400 dark:border-gray-700 dark:hover:border-gray-500",title:"Toggle dark mode",children:e?"☀":"☾"})]})]}),t&&C.jsx(Bye,{onClose:()=>r(!1)}),C.jsx(fH,{}),C.jsx(vH,{}),C.jsxs("main",{className:"flex min-h-0 flex-1 flex-col",children:[C.jsx("section",{className:"min-h-0 flex-1 overflow-hidden",children:C.jsx(sye,{})}),C.jsx("div",{role:"separator","aria-orientation":"horizontal","aria-label":"Resize detail pane",onPointerDown:f,onPointerMove:h,onPointerUp:m,title:"Drag to resize",className:"h-1 shrink-0 cursor-row-resize bg-gray-200 transition-colors hover:bg-blue-400 dark:bg-gray-800 dark:hover:bg-blue-500"}),C.jsx("section",{ref:u,style:{height:a},className:"shrink-0 overflow-auto",children:C.jsx(Mye,{})})]})]})}const qye=new m2({defaultOptions:{queries:{staleTime:3e4,refetchOnWindowFocus:!1,retry:1}}}),tL=document.getElementById("root");if(!tL)throw new Error("#root not found");HL.createRoot(tL).render(C.jsx(H.StrictMode,{children:C.jsx(g2,{client:qye,children:C.jsx(Kye,{})})}));
|
package/public/index.html
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
href="https://fonts.googleapis.com/css2?family=Great+Vibes&display=swap"
|
|
17
17
|
rel="stylesheet"
|
|
18
18
|
/>
|
|
19
|
-
<script type="module" crossorigin src="/assets/index-
|
|
20
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
19
|
+
<script type="module" crossorigin src="/assets/index-DzmZQCT9.js"></script>
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CclNaSg7.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
23
23
|
<div id="root"></div>
|