react-grab 0.0.76 → 0.0.78

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.
@@ -949,7 +949,7 @@ function cleanChildren(parent, current, marker, replacement) {
949
949
 
950
950
  // dist/styles.css
951
951
  var styles_default = `/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
952
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--font-weight-medium:500;--radius-xs:.125rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-grab-pink:#b21c8e;--color-grab-purple:#d239c0;--color-label-tag-border:#730079;--color-label-muted:#767676}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.top-0{top:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-2147483645{z-index:2147483645}.z-2147483646{z-index:2147483646}.z-2147483647{z-index:2147483647}.z-\\[2147483645\\]{z-index:2147483645}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.-mt-px{margin-top:-1px}.-ml-\\[2px\\]{margin-left:-2px}.ml-1{margin-left:calc(var(--spacing)*1)}.box-border{box-sizing:border-box}.flex{display:flex}.grid{display:grid}.hidden{display:none}.size-fit{width:fit-content;height:fit-content}.h-0{height:calc(var(--spacing)*0)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-5\\.5{height:calc(var(--spacing)*5.5)}.h-\\[7px\\]{height:7px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-fit{height:fit-content}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.w-0{width:calc(var(--spacing)*0)}.w-0\\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-\\[7px\\]{width:7px}.w-\\[17px\\]{width:17px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\\[280px\\]{max-width:280px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-crosshair{cursor:crosshair}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-\\[3px\\]{gap:3px}.gap-\\[5px\\]{gap:5px}.gap-px{gap:1px}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[1\\.5px\\]{border-radius:1.5px}.rounded-\\[1px\\]{border-radius:1px}.rounded-full{border-radius:3.40282e38px}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-b-xs{border-bottom-right-radius:var(--radius-xs);border-bottom-left-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[\\#7e0002\\]{border-color:#7e0002}.border-\\[\\#B3B3B3\\]{border-color:#b3b3b3}.border-grab-purple{border-color:var(--color-grab-purple)}.border-grab-purple\\/40{border-color:#d239c066}@supports (color:color-mix(in lab, red, red)){.border-grab-purple\\/40{border-color:color-mix(in oklab,var(--color-grab-purple)40%,transparent)}}.border-grab-purple\\/50{border-color:#d239c080}@supports (color:color-mix(in lab, red, red)){.border-grab-purple\\/50{border-color:color-mix(in oklab,var(--color-grab-purple)50%,transparent)}}.border-label-tag-border{border-color:var(--color-label-tag-border)}.border-white{border-color:var(--color-white)}.border-t-\\[\\#D9D9D9\\]{border-top-color:#d9d9d9}.bg-\\[\\#F7F7F7\\]{background-color:#f7f7f7}.bg-black{background-color:var(--color-black)}.bg-grab-pink{background-color:var(--color-grab-pink)}.bg-grab-purple{background-color:var(--color-grab-purple)}.bg-grab-purple\\/5{background-color:#d239c00d}@supports (color:color-mix(in lab, red, red)){.bg-grab-purple\\/5{background-color:color-mix(in oklab,var(--color-grab-purple)5%,transparent)}}.bg-grab-purple\\/8{background-color:#d239c014}@supports (color:color-mix(in lab, red, red)){.bg-grab-purple\\/8{background-color:color-mix(in oklab,var(--color-grab-purple)8%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-\\[2px\\]{padding-inline:2px}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:calc(var(--spacing)*0)}.py-\\[2px\\]{padding-block:2px}.py-\\[3px\\]{padding-block:3px}.py-\\[5px\\]{padding-block:5px}.py-px{padding-block:1px}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\\.5{padding-top:calc(var(--spacing)*1.5)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-1\\.5{padding-right:calc(var(--spacing)*1.5)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pl-1\\.5{padding-left:calc(var(--spacing)*1.5)}.align-middle{vertical-align:middle}.font-\\[ui-monospace\\,\\'SFMono-Regular\\'\\,\\'SF_Mono\\'\\,\\'Menlo\\'\\,\\'Consolas\\'\\,\\'Liberation_Mono\\'\\,monospace\\]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.leading-3\\.5{--tw-leading:calc(var(--spacing)*3.5);line-height:calc(var(--spacing)*3.5)}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-\\[-0\\.04em\\]{--tw-tracking:-.04em;letter-spacing:-.04em}.tracking-\\[-0\\.08em\\]{--tw-tracking:-.08em;letter-spacing:-.08em}.wrap-break-word{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.text-\\[\\#0C0C0C\\]{color:#0c0c0c}.text-\\[\\#47004A\\]{color:#47004a}.text-\\[\\#71717a\\]{color:#71717a}.text-\\[\\#B91C1C\\]{color:#b91c1c}.text-\\[\\#c00002\\]{color:#c00002}.text-black{color:var(--color-black)}.text-label-muted{color:var(--color-label-muted)}.text-label-tag-border{color:var(--color-label-tag-border)}.text-white{color:var(--color-white)}.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,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.opacity-\\[0\\.99\\]{opacity:.99}.brightness-125{--tw-brightness:brightness(125%);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,)}.filter-\\[drop-shadow\\(0px_0px_4px_\\#51515180\\)\\]{filter:drop-shadow(0 0 4px #51515180)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[width\\,height\\]{transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-30{--tw-duration:30ms;transition-duration:30ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[transform\\,width\\,height\\]{will-change:transform,width,height}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,)var(--tw-contain-layout,)var(--tw-contain-paint,)var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\\[font-synthesis\\:none\\]{font-synthesis:none}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:bg-\\[\\#F5F5F5\\]:hover{background-color:#f5f5f5}.hover\\:bg-\\[\\#FEF2F2\\]:hover{background-color:#fef2f2}.hover\\:opacity-100:hover{opacity:1}}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-contain-size{syntax:"*";inherits:false}@property --tw-contain-layout{syntax:"*";inherits:false}@property --tw-contain-paint{syntax:"*";inherits:false}@property --tw-contain-style{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}`;
952
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--font-weight-medium:500;--radius-xs:.125rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-grab-pink:#b21c8e;--color-grab-purple:#d239c0;--color-label-tag-border:#730079;--color-label-muted:#767676}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.top-0{top:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.z-2147483645{z-index:2147483645}.z-2147483646{z-index:2147483646}.z-2147483647{z-index:2147483647}.z-\\[2147483645\\]{z-index:2147483645}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.-mt-px{margin-top:-1px}.-ml-\\[2px\\]{margin-left:-2px}.ml-1{margin-left:calc(var(--spacing)*1)}.box-border{box-sizing:border-box}.flex{display:flex}.grid{display:grid}.hidden{display:none}.size-fit{width:fit-content;height:fit-content}.h-0{height:calc(var(--spacing)*0)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-5\\.5{height:calc(var(--spacing)*5.5)}.h-\\[7px\\]{height:7px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-fit{height:fit-content}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.w-0{width:calc(var(--spacing)*0)}.w-0\\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-\\[7px\\]{width:7px}.w-\\[17px\\]{width:17px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\\[280px\\]{max-width:280px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-75{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-crosshair{cursor:crosshair}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-\\[3px\\]{gap:3px}.gap-\\[5px\\]{gap:5px}.gap-px{gap:1px}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\\[1\\.5px\\]{border-radius:1.5px}.rounded-\\[1px\\]{border-radius:1px}.rounded-full{border-radius:3.40282e38px}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-b-xs{border-bottom-right-radius:var(--radius-xs);border-bottom-left-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[\\#7e0002\\]{border-color:#7e0002}.border-\\[\\#B3B3B3\\]{border-color:#b3b3b3}.border-grab-purple{border-color:var(--color-grab-purple)}.border-grab-purple\\/40{border-color:#d239c066}@supports (color:color-mix(in lab, red, red)){.border-grab-purple\\/40{border-color:color-mix(in oklab,var(--color-grab-purple)40%,transparent)}}.border-grab-purple\\/50{border-color:#d239c080}@supports (color:color-mix(in lab, red, red)){.border-grab-purple\\/50{border-color:color-mix(in oklab,var(--color-grab-purple)50%,transparent)}}.border-label-tag-border{border-color:var(--color-label-tag-border)}.border-white{border-color:var(--color-white)}.border-t-\\[\\#D9D9D9\\]{border-top-color:#d9d9d9}.bg-\\[\\#F7F7F7\\]{background-color:#f7f7f7}.bg-black{background-color:var(--color-black)}.bg-grab-pink{background-color:var(--color-grab-pink)}.bg-grab-purple{background-color:var(--color-grab-purple)}.bg-grab-purple\\/5{background-color:#d239c00d}@supports (color:color-mix(in lab, red, red)){.bg-grab-purple\\/5{background-color:color-mix(in oklab,var(--color-grab-purple)5%,transparent)}}.bg-grab-purple\\/8{background-color:#d239c014}@supports (color:color-mix(in lab, red, red)){.bg-grab-purple\\/8{background-color:color-mix(in oklab,var(--color-grab-purple)8%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-\\[2px\\]{padding-inline:2px}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:calc(var(--spacing)*0)}.py-\\[2px\\]{padding-block:2px}.py-\\[3px\\]{padding-block:3px}.py-\\[5px\\]{padding-block:5px}.py-px{padding-block:1px}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\\.5{padding-top:calc(var(--spacing)*1.5)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-1\\.5{padding-right:calc(var(--spacing)*1.5)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pl-1\\.5{padding-left:calc(var(--spacing)*1.5)}.align-middle{vertical-align:middle}.font-\\[ui-monospace\\,\\'SFMono-Regular\\'\\,\\'SF_Mono\\'\\,\\'Menlo\\'\\,\\'Consolas\\'\\,\\'Liberation_Mono\\'\\,monospace\\]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12px\\]{font-size:12px}.leading-3\\.5{--tw-leading:calc(var(--spacing)*3.5);line-height:calc(var(--spacing)*3.5)}.leading-4{--tw-leading:calc(var(--spacing)*4);line-height:calc(var(--spacing)*4)}.leading-\\[14px\\]{--tw-leading:14px;line-height:14px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-\\[-0\\.04em\\]{--tw-tracking:-.04em;letter-spacing:-.04em}.tracking-\\[-0\\.08em\\]{--tw-tracking:-.08em;letter-spacing:-.08em}.wrap-break-word{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.text-\\[\\#0C0C0C\\]{color:#0c0c0c}.text-\\[\\#47004A\\]{color:#47004a}.text-\\[\\#71717a\\]{color:#71717a}.text-\\[\\#B91C1C\\]{color:#b91c1c}.text-\\[\\#c00002\\]{color:#c00002}.text-black{color:var(--color-black)}.text-black\\/50{color:#00000080}@supports (color:color-mix(in lab, red, red)){.text-black\\/50{color:color-mix(in oklab,var(--color-black)50%,transparent)}}.text-label-muted{color:var(--color-label-muted)}.text-label-tag-border{color:var(--color-label-tag-border)}.text-white{color:var(--color-white)}.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,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.opacity-\\[0\\.99\\]{opacity:.99}.brightness-125{--tw-brightness:brightness(125%);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,)}.filter-\\[drop-shadow\\(0px_0px_4px_\\#51515180\\)\\]{filter:drop-shadow(0 0 4px #51515180)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[width\\,height\\]{transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-30{--tw-duration:30ms;transition-duration:30ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[transform\\,width\\,height\\]{will-change:transform,width,height}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,)var(--tw-contain-layout,)var(--tw-contain-paint,)var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\\[font-synthesis\\:none\\]{font-synthesis:none}@media (hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:bg-\\[\\#F5F5F5\\]:hover{background-color:#f5f5f5}.hover\\:bg-\\[\\#FEF2F2\\]:hover{background-color:#fef2f2}.hover\\:opacity-100:hover{opacity:1}}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-contain-size{syntax:"*";inherits:false}@property --tw-contain-layout{syntax:"*";inherits:false}@property --tw-contain-paint{syntax:"*";inherits:false}@property --tw-contain-style{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}`;
953
953
 
954
954
  // src/utils/is-keyboard-event-triggered-by-input.ts
955
955
  var FORM_TAGS_AND_ROLES = [
@@ -1078,7 +1078,7 @@ var buildOpenFileUrl = (filePath, lineNumber) => {
1078
1078
  };
1079
1079
 
1080
1080
  // src/constants.ts
1081
- var VERSION = "0.0.76";
1081
+ var VERSION = "0.0.78";
1082
1082
  var VIEWPORT_MARGIN_PX = 8;
1083
1083
  var OFFSCREEN_POSITION = -1e3;
1084
1084
  var SELECTION_LERP_FACTOR = 0.95;
@@ -1088,6 +1088,7 @@ var SELECTION_CURSOR_SETTLE_DELAY_MS = 500;
1088
1088
  var BLUR_DEACTIVATION_THRESHOLD_MS = 500;
1089
1089
  var INPUT_FOCUS_ACTIVATION_DELAY_MS = 150;
1090
1090
  var DEFAULT_KEY_HOLD_DURATION_MS = 200;
1091
+ var DOUBLE_CLICK_THRESHOLD_MS = 250;
1091
1092
  var DRAG_THRESHOLD_PX = 2;
1092
1093
  var ELEMENT_DETECTION_THROTTLE_MS = 32;
1093
1094
  var BOUNDS_RECALC_INTERVAL_MS = 100;
@@ -3951,21 +3952,23 @@ var _tmpl$52 = /* @__PURE__ */ template(`<div role=button><div class="text-black
3951
3952
  var _tmpl$62 = /* @__PURE__ */ template(`<div class="[font-synthesis:none] contain-layout shrink-0 flex flex-col items-start px-2 py-[5px] w-auto h-fit self-stretch [border-top-width:0.5px] border-t-solid border-t-[#D9D9D9] antialiased rounded-t-none rounded-b-xs -mt-px"style="background-image:linear-gradient(in oklab 180deg, oklab(100% 0 0) 0%, oklab(96.1% 0 0) 5.92%)">`);
3952
3953
  var _tmpl$7 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center justify-end gap-[5px] w-full h-fit"><button class="contain-layout shrink-0 flex items-center justify-center px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] cursor-pointer transition-all hover:bg-[#F5F5F5] h-[17px]"><span class="text-black text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">No</span></button><button class="contain-layout shrink-0 flex items-center justify-center gap-1 px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#7e0002] cursor-pointer transition-all hover:bg-[#FEF2F2] h-[17px]"><span class="text-[#B91C1C] text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">Yes`);
3953
3954
  var _tmpl$8 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-end gap-1 w-fit h-fit"><div class="contain-layout shrink-0 flex items-center gap-1 pt-1 px-1.5 w-full h-fit"><span class="text-black text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">Discard prompt?`);
3954
- var _tmpl$9 = /* @__PURE__ */ template(`<button class="contain-layout shrink-0 flex items-center justify-center px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] cursor-pointer transition-all hover:bg-[#F5F5F5] h-[17px]"><span class="text-black text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">Undo`);
3955
- var _tmpl$0 = /* @__PURE__ */ template(`<button class="contain-layout shrink-0 flex items-center justify-center px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] cursor-pointer transition-all hover:bg-[#F5F5F5] h-[17px]"><span class="text-black text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">Ok`);
3956
- var _tmpl$1 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center justify-end gap-[5px] w-full h-fit">`);
3957
- var _tmpl$10 = /* @__PURE__ */ template(`<div class="[font-synthesis:none] contain-layout shrink-0 flex flex-col justify-center items-end rounded-xs bg-white antialiased w-fit h-fit"><div class="contain-layout shrink-0 flex items-center gap-1 pt-1.5 pb-1 px-1.5 w-full h-fit"><span class="text-black text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit tabular-nums">`);
3958
- var _tmpl$11 = /* @__PURE__ */ template(`<button data-react-grab-ignore-events class="contain-layout shrink-0 flex flex-col items-start rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] p-1 size-fit cursor-pointer ml-1 transition-none hover:scale-105"><div data-react-grab-ignore-events class="shrink-0 w-[7px] h-[7px] rounded-[1px] bg-black pointer-events-none">`);
3959
- var _tmpl$12 = /* @__PURE__ */ template(`<div class="shrink-0 flex justify-between items-end w-full min-h-4"><textarea data-react-grab-ignore-events class="text-black text-[12px] leading-4 tracking-[-0.04em] font-medium bg-transparent border-none outline-none resize-none flex-1 p-0 m-0 opacity-50 wrap-break-word overflow-y-auto"placeholder="type to edit"rows=1 disabled style=field-sizing:content;min-height:16px;max-height:95px;scrollbar-width:none>`);
3960
- var _tmpl$13 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-start gap-1 w-fit h-fit max-w-[280px]"><div class="contain-layout shrink-0 flex items-center gap-1 pt-1 px-1.5 w-auto h-fit"><div class="contain-layout flex items-center px-0 py-px w-auto h-fit rounded-[1.5px] gap-[3px]"><span class="text-[12px] leading-4 tracking-[-0.04em] font-sans font-medium w-auto h-fit whitespace-normal text-[#71717a] animate-pulse tabular-nums">`);
3961
- var _tmpl$14 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-px w-fit h-fit">`);
3962
- var _tmpl$15 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-1 w-fit h-fit"><span class="text-label-muted text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">Press</span><div class="contain-layout shrink-0 flex flex-col items-start px-[3px] py-[3px] rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] size-fit"></div><span class="text-label-muted text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">to edit`);
3963
- var _tmpl$16 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-start gap-1 w-fit h-fit"><div></div><div class="grid transition-[grid-template-rows] duration-30 ease-out self-stretch"><div>`);
3964
- var _tmpl$17 = /* @__PURE__ */ template(`<button>`);
3965
- var _tmpl$18 = /* @__PURE__ */ template(`<button class="contain-layout shrink-0 flex flex-col items-start px-[3px] py-[3px] rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] size-fit cursor-pointer transition-all hover:scale-105">`);
3966
- var _tmpl$19 = /* @__PURE__ */ template(`<div class="shrink-0 flex justify-between items-end w-full min-h-4"><textarea data-react-grab-ignore-events class="text-black text-[12px] leading-4 tracking-[-0.04em] font-medium bg-transparent border-none outline-none resize-none flex-1 p-0 m-0 wrap-break-word overflow-y-auto"rows=1 style=field-sizing:content;min-height:16px;max-height:95px;scrollbar-width:none></textarea><div class="flex items-center gap-0.5 ml-1 w-[17px] h-[17px] justify-end">`);
3967
- var _tmpl$20 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-start gap-1 w-fit h-fit max-w-[280px]"><div>`);
3968
- var _tmpl$21 = /* @__PURE__ */ template(`<div data-react-grab-ignore-events class="fixed font-sans antialiased transition-opacity duration-300 ease-out filter-[drop-shadow(0px_0px_4px_#51515180)] select-none"style=z-index:2147483647><div class="[font-synthesis:none] contain-layout flex items-center gap-[5px] rounded-xs bg-white antialiased w-fit h-fit p-0">`);
3955
+ var _tmpl$9 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center justify-end gap-[5px] w-full h-fit"><button class="contain-layout shrink-0 flex items-center justify-center gap-1 px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] cursor-pointer transition-all hover:bg-[#F5F5F5] h-[17px]"><span class="text-black text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">Ok`);
3956
+ var _tmpl$0 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-end gap-1 w-fit h-fit max-w-[280px]"><div class="contain-layout shrink-0 flex items-center gap-1 pt-1 px-1.5 w-full h-fit"><span class="text-[#B91C1C] text-[12px] leading-4 tracking-[-0.04em] font-sans font-medium">`);
3957
+ var _tmpl$1 = /* @__PURE__ */ template(`<button class="contain-layout shrink-0 flex items-center justify-center px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] cursor-pointer transition-all hover:bg-[#F5F5F5] h-[17px]"><span class="text-black text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">Undo`);
3958
+ var _tmpl$10 = /* @__PURE__ */ template(`<button class="contain-layout shrink-0 flex items-center justify-center gap-1 px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] cursor-pointer transition-all hover:bg-[#F5F5F5] h-[17px]"><span class="text-black text-[11px] leading-3.5 tracking-[-0.04em] font-sans font-medium">Ok`);
3959
+ var _tmpl$11 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center justify-end gap-[5px] w-full h-fit">`);
3960
+ var _tmpl$12 = /* @__PURE__ */ template(`<div class="[font-synthesis:none] contain-layout shrink-0 flex flex-col justify-center items-end rounded-xs bg-white antialiased w-fit h-fit"><div class="contain-layout shrink-0 flex items-center gap-1 pt-1.5 pb-1 px-1.5 w-full h-fit"><span class="text-black text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit tabular-nums">`);
3961
+ var _tmpl$13 = /* @__PURE__ */ template(`<button data-react-grab-ignore-events class="contain-layout shrink-0 flex flex-col items-start rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] p-1 size-fit cursor-pointer ml-1 transition-none hover:scale-105"><div data-react-grab-ignore-events class="shrink-0 w-[7px] h-[7px] rounded-[1px] bg-black pointer-events-none">`);
3962
+ var _tmpl$14 = /* @__PURE__ */ template(`<div class="shrink-0 flex justify-between items-end w-full min-h-4"><textarea data-react-grab-ignore-events class="text-black text-[12px] leading-4 tracking-[-0.04em] font-medium bg-transparent border-none outline-none resize-none flex-1 p-0 m-0 opacity-50 wrap-break-word overflow-y-auto"placeholder="type to edit"rows=1 disabled style=field-sizing:content;min-height:16px;max-height:95px;scrollbar-width:none>`);
3963
+ var _tmpl$15 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-start gap-1 w-fit h-fit max-w-[280px]"><div class="contain-layout shrink-0 flex items-center gap-1 pt-1 px-1.5 w-auto h-fit"><div class="contain-layout flex items-center px-0 py-px w-auto h-fit rounded-[1.5px] gap-[3px]"><span class="text-[12px] leading-4 tracking-[-0.04em] font-sans font-medium w-auto h-fit whitespace-normal text-[#71717a] animate-pulse tabular-nums">`);
3964
+ var _tmpl$16 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-px w-fit h-fit">`);
3965
+ var _tmpl$17 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-1 w-fit h-fit"><span class="text-label-muted text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">Press</span><div class="contain-layout shrink-0 flex flex-col items-start px-[3px] py-[3px] rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] size-fit"></div><span class="text-label-muted text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">or</span><div class="contain-layout shrink-0 flex items-center px-[3px] py-px rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] size-fit"><span class="text-black text-[10px] leading-[14px] tracking-[-0.04em] font-sans font-medium">double-click</span></div><span class="text-label-muted text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">to edit`);
3966
+ var _tmpl$18 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-start gap-1 w-fit h-fit"><div></div><div class="grid transition-[grid-template-rows] duration-30 ease-out self-stretch"><div>`);
3967
+ var _tmpl$19 = /* @__PURE__ */ template(`<button>`);
3968
+ var _tmpl$20 = /* @__PURE__ */ template(`<button class="contain-layout shrink-0 flex flex-col items-start px-[3px] py-[3px] rounded-xs bg-white [border-width:0.5px] border-solid border-[#B3B3B3] size-fit cursor-pointer transition-all hover:scale-105">`);
3969
+ var _tmpl$21 = /* @__PURE__ */ template(`<div class="shrink-0 flex justify-between items-end w-full min-h-4"><textarea data-react-grab-ignore-events class="text-black text-[12px] leading-4 tracking-[-0.04em] font-medium bg-transparent border-none outline-none resize-none flex-1 p-0 m-0 wrap-break-word overflow-y-auto"rows=1 style=field-sizing:content;min-height:16px;max-height:95px;scrollbar-width:none></textarea><div class="flex items-center gap-0.5 ml-1 w-[17px] h-[17px] justify-end">`);
3970
+ var _tmpl$222 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex flex-col justify-center items-start gap-1 w-fit h-fit max-w-[280px]"><div>`);
3971
+ var _tmpl$23 = /* @__PURE__ */ template(`<div data-react-grab-ignore-events class="fixed font-sans antialiased transition-opacity duration-300 ease-out filter-[drop-shadow(0px_0px_4px_#51515180)] select-none"style=z-index:2147483647><div class="[font-synthesis:none] contain-layout flex items-center gap-[5px] rounded-xs bg-white antialiased w-fit h-fit p-0">`);
3969
3972
  var ARROW_HEIGHT = 8;
3970
3973
  var LABEL_GAP = 4;
3971
3974
  var IDLE_TIMEOUT_MS = 400;
@@ -4092,6 +4095,109 @@ var DismissConfirmation = (props) => {
4092
4095
  return _el$0;
4093
4096
  })();
4094
4097
  };
4098
+ var MAX_ERROR_LENGTH = 50;
4099
+ var ErrorConfirmation = (props) => {
4100
+ const handleKeyDown = (event) => {
4101
+ if (event.code === "Enter" || event.code === "Escape") {
4102
+ event.preventDefault();
4103
+ event.stopPropagation();
4104
+ props.onAcknowledge?.();
4105
+ }
4106
+ };
4107
+ const truncatedError = () => {
4108
+ const error = props.error;
4109
+ if (error.length <= MAX_ERROR_LENGTH) return error;
4110
+ return `${error.slice(0, MAX_ERROR_LENGTH)}\u2026`;
4111
+ };
4112
+ onMount(() => {
4113
+ window.addEventListener("keydown", handleKeyDown, {
4114
+ capture: true
4115
+ });
4116
+ });
4117
+ onCleanup(() => {
4118
+ window.removeEventListener("keydown", handleKeyDown, {
4119
+ capture: true
4120
+ });
4121
+ });
4122
+ return (() => {
4123
+ var _el$14 = _tmpl$0(), _el$15 = _el$14.firstChild, _el$16 = _el$15.firstChild;
4124
+ insert(_el$16, truncatedError);
4125
+ insert(_el$14, createComponent(BottomSection, {
4126
+ get children() {
4127
+ var _el$17 = _tmpl$9(), _el$18 = _el$17.firstChild; _el$18.firstChild;
4128
+ addEventListener(_el$18, "click", props.onAcknowledge);
4129
+ insert(_el$18, createComponent(IconReturn, {
4130
+ size: 10,
4131
+ "class": "text-black/50"
4132
+ }), null);
4133
+ return _el$17;
4134
+ }
4135
+ }), null);
4136
+ createRenderEffect(() => setAttribute(_el$16, "title", props.error));
4137
+ return _el$14;
4138
+ })();
4139
+ };
4140
+ var CompletedConfirmation = (props) => {
4141
+ const handleKeyDown = (event) => {
4142
+ if (event.code === "Enter" || event.code === "Escape") {
4143
+ event.preventDefault();
4144
+ event.stopPropagation();
4145
+ props.onDismiss?.();
4146
+ }
4147
+ };
4148
+ onMount(() => {
4149
+ window.addEventListener("keydown", handleKeyDown, {
4150
+ capture: true
4151
+ });
4152
+ });
4153
+ onCleanup(() => {
4154
+ window.removeEventListener("keydown", handleKeyDown, {
4155
+ capture: true
4156
+ });
4157
+ });
4158
+ return (() => {
4159
+ var _el$20 = _tmpl$12(), _el$21 = _el$20.firstChild, _el$22 = _el$21.firstChild;
4160
+ insert(_el$22, () => props.statusText);
4161
+ insert(_el$20, createComponent(Show, {
4162
+ get when() {
4163
+ return props.onDismiss || props.onUndo;
4164
+ },
4165
+ get children() {
4166
+ return createComponent(BottomSection, {
4167
+ get children() {
4168
+ var _el$23 = _tmpl$11();
4169
+ insert(_el$23, createComponent(Show, {
4170
+ get when() {
4171
+ return props.onUndo;
4172
+ },
4173
+ get children() {
4174
+ var _el$24 = _tmpl$1();
4175
+ _el$24.$$click = () => props.onUndo?.();
4176
+ return _el$24;
4177
+ }
4178
+ }), null);
4179
+ insert(_el$23, createComponent(Show, {
4180
+ get when() {
4181
+ return props.onDismiss;
4182
+ },
4183
+ get children() {
4184
+ var _el$25 = _tmpl$10(); _el$25.firstChild;
4185
+ _el$25.$$click = () => props.onDismiss?.();
4186
+ insert(_el$25, createComponent(IconReturn, {
4187
+ size: 10,
4188
+ "class": "text-black/50"
4189
+ }), null);
4190
+ return _el$25;
4191
+ }
4192
+ }), null);
4193
+ return _el$23;
4194
+ }
4195
+ });
4196
+ }
4197
+ }), null);
4198
+ return _el$20;
4199
+ })();
4200
+ };
4095
4201
  var SelectionLabel = (props) => {
4096
4202
  let containerRef;
4097
4203
  let inputRef;
@@ -4173,6 +4279,8 @@ var SelectionLabel = (props) => {
4173
4279
  void props.inputValue;
4174
4280
  void props.hasAgent;
4175
4281
  void props.isInputExpanded;
4282
+ void props.isPendingDismiss;
4283
+ void props.error;
4176
4284
  requestAnimationFrame(measureContainer);
4177
4285
  });
4178
4286
  createEffect(() => {
@@ -4291,111 +4399,83 @@ var SelectionLabel = (props) => {
4291
4399
  return memo(() => props.visible !== false)() && (props.selectionBounds || shouldShowWithoutBounds());
4292
4400
  },
4293
4401
  get children() {
4294
- var _el$14 = _tmpl$21(), _el$21 = _el$14.firstChild;
4295
- _el$14.$$click = stopPropagation;
4296
- _el$14.$$mousedown = stopPropagation;
4297
- _el$14.$$pointerdown = handleContainerPointerDown;
4402
+ var _el$27 = _tmpl$23(), _el$28 = _el$27.firstChild;
4403
+ _el$27.$$click = stopPropagation;
4404
+ _el$27.$$mousedown = stopPropagation;
4405
+ _el$27.$$pointerdown = handleContainerPointerDown;
4298
4406
  var _ref$ = containerRef;
4299
- typeof _ref$ === "function" ? use(_ref$, _el$14) : containerRef = _el$14;
4300
- insert(_el$14, createComponent(Arrow, {
4407
+ typeof _ref$ === "function" ? use(_ref$, _el$27) : containerRef = _el$27;
4408
+ insert(_el$27, createComponent(Arrow, {
4301
4409
  get position() {
4302
4410
  return arrowPosition();
4303
4411
  },
4304
4412
  get leftPx() {
4305
4413
  return computedPosition().arrowLeft;
4306
4414
  }
4307
- }), _el$21);
4308
- insert(_el$14, createComponent(Show, {
4415
+ }), _el$28);
4416
+ insert(_el$27, createComponent(Show, {
4309
4417
  get when() {
4310
- return props.status === "copied" || props.status === "fading";
4418
+ return memo(() => !!(props.status === "copied" || props.status === "fading"))() && !props.error;
4311
4419
  },
4312
4420
  get children() {
4313
- var _el$15 = _tmpl$10(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild;
4314
- insert(_el$17, (() => {
4315
- var _c$ = memo(() => !!props.hasAgent);
4316
- return () => _c$() ? props.statusText ?? "Completed" : "Copied";
4317
- })());
4318
- insert(_el$15, createComponent(Show, {
4319
- get when() {
4320
- return props.onDismiss || props.onUndo;
4421
+ return createComponent(CompletedConfirmation, {
4422
+ get statusText() {
4423
+ return memo(() => !!props.hasAgent)() ? props.statusText ?? "Completed" : "Copied";
4321
4424
  },
4322
- get children() {
4323
- return createComponent(BottomSection, {
4324
- get children() {
4325
- var _el$18 = _tmpl$1();
4326
- insert(_el$18, createComponent(Show, {
4327
- get when() {
4328
- return props.onUndo;
4329
- },
4330
- get children() {
4331
- var _el$19 = _tmpl$9();
4332
- _el$19.$$click = () => props.onUndo?.();
4333
- return _el$19;
4334
- }
4335
- }), null);
4336
- insert(_el$18, createComponent(Show, {
4337
- get when() {
4338
- return props.onDismiss;
4339
- },
4340
- get children() {
4341
- var _el$20 = _tmpl$0();
4342
- _el$20.$$click = () => props.onDismiss?.();
4343
- return _el$20;
4344
- }
4345
- }), null);
4346
- return _el$18;
4347
- }
4348
- });
4425
+ get onDismiss() {
4426
+ return props.onDismiss;
4427
+ },
4428
+ get onUndo() {
4429
+ return props.onUndo;
4349
4430
  }
4350
- }), null);
4351
- return _el$15;
4431
+ });
4352
4432
  }
4353
- }), _el$21);
4354
- insert(_el$21, createComponent(Show, {
4433
+ }), _el$28);
4434
+ insert(_el$28, createComponent(Show, {
4355
4435
  get when() {
4356
4436
  return props.status === "copying";
4357
4437
  },
4358
4438
  get children() {
4359
- var _el$22 = _tmpl$13(), _el$23 = _el$22.firstChild, _el$24 = _el$23.firstChild, _el$25 = _el$24.firstChild;
4360
- insert(_el$25, () => props.statusText ?? "Grabbing\u2026");
4361
- insert(_el$22, createComponent(BottomSection, {
4439
+ var _el$29 = _tmpl$15(), _el$30 = _el$29.firstChild, _el$31 = _el$30.firstChild, _el$32 = _el$31.firstChild;
4440
+ insert(_el$32, () => props.statusText ?? "Grabbing\u2026");
4441
+ insert(_el$29, createComponent(BottomSection, {
4362
4442
  get children() {
4363
- var _el$26 = _tmpl$12(), _el$27 = _el$26.firstChild;
4443
+ var _el$33 = _tmpl$14(), _el$34 = _el$33.firstChild;
4364
4444
  var _ref$2 = inputRef;
4365
- typeof _ref$2 === "function" ? use(_ref$2, _el$27) : inputRef = _el$27;
4366
- insert(_el$26, createComponent(Show, {
4445
+ typeof _ref$2 === "function" ? use(_ref$2, _el$34) : inputRef = _el$34;
4446
+ insert(_el$33, createComponent(Show, {
4367
4447
  get when() {
4368
4448
  return props.onAbort;
4369
4449
  },
4370
4450
  get children() {
4371
- var _el$28 = _tmpl$11();
4372
- _el$28.$$click = (event) => {
4451
+ var _el$35 = _tmpl$13();
4452
+ _el$35.$$click = (event) => {
4373
4453
  event.stopPropagation();
4374
4454
  props.onAbort?.();
4375
4455
  };
4376
- _el$28.$$pointerup = (event) => {
4456
+ _el$35.$$pointerup = (event) => {
4377
4457
  event.stopPropagation();
4378
4458
  props.onAbort?.();
4379
4459
  };
4380
- _el$28.$$mousedown = (event) => event.stopPropagation();
4381
- _el$28.$$pointerdown = (event) => event.stopPropagation();
4382
- return _el$28;
4460
+ _el$35.$$mousedown = (event) => event.stopPropagation();
4461
+ _el$35.$$pointerdown = (event) => event.stopPropagation();
4462
+ return _el$35;
4383
4463
  }
4384
4464
  }), null);
4385
- createRenderEffect(() => _el$27.value = props.inputValue ?? "");
4386
- return _el$26;
4465
+ createRenderEffect(() => _el$34.value = props.inputValue ?? "");
4466
+ return _el$33;
4387
4467
  }
4388
4468
  }), null);
4389
- return _el$22;
4469
+ return _el$29;
4390
4470
  }
4391
4471
  }), null);
4392
- insert(_el$21, createComponent(Show, {
4472
+ insert(_el$28, createComponent(Show, {
4393
4473
  get when() {
4394
4474
  return memo(() => !!isNotProcessing())() && !props.isInputExpanded;
4395
4475
  },
4396
4476
  get children() {
4397
- var _el$29 = _tmpl$16(), _el$30 = _el$29.firstChild, _el$32 = _el$30.nextSibling, _el$33 = _el$32.firstChild;
4398
- insert(_el$30, createComponent(ClickToCopyPill, {
4477
+ var _el$36 = _tmpl$18(), _el$37 = _el$36.firstChild, _el$39 = _el$37.nextSibling, _el$40 = _el$39.firstChild;
4478
+ insert(_el$37, createComponent(ClickToCopyPill, {
4399
4479
  onClick: handleSubmit,
4400
4480
  shrink: true,
4401
4481
  get hasParent() {
@@ -4405,19 +4485,19 @@ var SelectionLabel = (props) => {
4405
4485
  return props.hasAgent;
4406
4486
  }
4407
4487
  }), null);
4408
- insert(_el$30, createComponent(Show, {
4488
+ insert(_el$37, createComponent(Show, {
4409
4489
  get when() {
4410
4490
  return props.componentName;
4411
4491
  },
4412
4492
  get children() {
4413
- var _el$31 = _tmpl$14();
4414
- insert(_el$31, createComponent(ParentBadge, {
4493
+ var _el$38 = _tmpl$16();
4494
+ insert(_el$38, createComponent(ParentBadge, {
4415
4495
  get name() {
4416
4496
  return props.componentName;
4417
4497
  }
4418
4498
  }), null);
4419
- insert(_el$31, createComponent(ChevronSeparator, {}), null);
4420
- insert(_el$31, createComponent(TagBadge, {
4499
+ insert(_el$38, createComponent(ChevronSeparator, {}), null);
4500
+ insert(_el$38, createComponent(TagBadge, {
4421
4501
  get tagName() {
4422
4502
  return tagDisplay();
4423
4503
  },
@@ -4429,10 +4509,10 @@ var SelectionLabel = (props) => {
4429
4509
  showMono: true,
4430
4510
  shrink: true
4431
4511
  }), null);
4432
- return _el$31;
4512
+ return _el$38;
4433
4513
  }
4434
4514
  }), null);
4435
- insert(_el$30, createComponent(Show, {
4515
+ insert(_el$37, createComponent(Show, {
4436
4516
  get when() {
4437
4517
  return !props.componentName;
4438
4518
  },
@@ -4451,37 +4531,37 @@ var SelectionLabel = (props) => {
4451
4531
  });
4452
4532
  }
4453
4533
  }), null);
4454
- insert(_el$33, createComponent(BottomSection, {
4534
+ insert(_el$40, createComponent(BottomSection, {
4455
4535
  get children() {
4456
- var _el$34 = _tmpl$15(), _el$35 = _el$34.firstChild, _el$36 = _el$35.nextSibling;
4457
- insert(_el$36, createComponent(IconReturn, {
4536
+ var _el$41 = _tmpl$17(), _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling;
4537
+ insert(_el$43, createComponent(IconReturn, {
4458
4538
  size: 10,
4459
4539
  "class": "opacity-[0.99] text-black"
4460
4540
  }));
4461
- return _el$34;
4541
+ return _el$41;
4462
4542
  }
4463
4543
  }));
4464
4544
  createRenderEffect((_p$) => {
4465
4545
  var _v$3 = cn("contain-layout shrink-0 flex items-center gap-1 pt-1 w-fit h-fit pl-1.5", props.componentName ? "pr-1.5" : "pr-1"), _v$4 = isIdle() ? "1fr" : "0fr", _v$5 = cn("overflow-hidden min-h-0", !isIdle() && "w-0");
4466
- _v$3 !== _p$.e && className(_el$30, _p$.e = _v$3);
4467
- _v$4 !== _p$.t && setStyleProperty(_el$32, "grid-template-rows", _p$.t = _v$4);
4468
- _v$5 !== _p$.a && className(_el$33, _p$.a = _v$5);
4546
+ _v$3 !== _p$.e && className(_el$37, _p$.e = _v$3);
4547
+ _v$4 !== _p$.t && setStyleProperty(_el$39, "grid-template-rows", _p$.t = _v$4);
4548
+ _v$5 !== _p$.a && className(_el$40, _p$.a = _v$5);
4469
4549
  return _p$;
4470
4550
  }, {
4471
4551
  e: void 0,
4472
4552
  t: void 0,
4473
4553
  a: void 0
4474
4554
  });
4475
- return _el$29;
4555
+ return _el$36;
4476
4556
  }
4477
4557
  }), null);
4478
- insert(_el$21, createComponent(Show, {
4558
+ insert(_el$28, createComponent(Show, {
4479
4559
  get when() {
4480
4560
  return memo(() => !!(isNotProcessing() && props.isInputExpanded))() && !props.isPendingDismiss;
4481
4561
  },
4482
4562
  get children() {
4483
- var _el$37 = _tmpl$20(), _el$38 = _el$37.firstChild;
4484
- insert(_el$38, createComponent(ClickToCopyPill, {
4563
+ var _el$44 = _tmpl$222(), _el$45 = _el$44.firstChild;
4564
+ insert(_el$45, createComponent(ClickToCopyPill, {
4485
4565
  onClick: handleSubmit,
4486
4566
  dimmed: true,
4487
4567
  shrink: true,
@@ -4492,19 +4572,19 @@ var SelectionLabel = (props) => {
4492
4572
  return props.hasAgent;
4493
4573
  }
4494
4574
  }), null);
4495
- insert(_el$38, createComponent(Show, {
4575
+ insert(_el$45, createComponent(Show, {
4496
4576
  get when() {
4497
4577
  return props.componentName;
4498
4578
  },
4499
4579
  get children() {
4500
- var _el$39 = _tmpl$14();
4501
- insert(_el$39, createComponent(ParentBadge, {
4580
+ var _el$46 = _tmpl$16();
4581
+ insert(_el$46, createComponent(ParentBadge, {
4502
4582
  get name() {
4503
4583
  return props.componentName;
4504
4584
  }
4505
4585
  }), null);
4506
- insert(_el$39, createComponent(ChevronSeparator, {}), null);
4507
- insert(_el$39, createComponent(TagBadge, {
4586
+ insert(_el$46, createComponent(ChevronSeparator, {}), null);
4587
+ insert(_el$46, createComponent(TagBadge, {
4508
4588
  get tagName() {
4509
4589
  return tagDisplay();
4510
4590
  },
@@ -4517,10 +4597,10 @@ var SelectionLabel = (props) => {
4517
4597
  shrink: true,
4518
4598
  forceShowIcon: true
4519
4599
  }), null);
4520
- return _el$39;
4600
+ return _el$46;
4521
4601
  }
4522
4602
  }), null);
4523
- insert(_el$38, createComponent(Show, {
4603
+ insert(_el$45, createComponent(Show, {
4524
4604
  get when() {
4525
4605
  return !props.componentName;
4526
4606
  },
@@ -4540,21 +4620,21 @@ var SelectionLabel = (props) => {
4540
4620
  });
4541
4621
  }
4542
4622
  }), null);
4543
- insert(_el$37, createComponent(BottomSection, {
4623
+ insert(_el$44, createComponent(BottomSection, {
4544
4624
  get children() {
4545
- var _el$40 = _tmpl$19(), _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
4546
- _el$41.$$keydown = handleKeyDown;
4547
- _el$41.$$input = handleInput;
4625
+ var _el$47 = _tmpl$21(), _el$48 = _el$47.firstChild, _el$49 = _el$48.nextSibling;
4626
+ _el$48.$$keydown = handleKeyDown;
4627
+ _el$48.$$input = handleInput;
4548
4628
  var _ref$3 = inputRef;
4549
- typeof _ref$3 === "function" ? use(_ref$3, _el$41) : inputRef = _el$41;
4550
- insert(_el$42, createComponent(Show, {
4629
+ typeof _ref$3 === "function" ? use(_ref$3, _el$48) : inputRef = _el$48;
4630
+ insert(_el$49, createComponent(Show, {
4551
4631
  get when() {
4552
4632
  return memo(() => !!(props.hasAgent && speechRecognition.isSupported()))() && !props.inputValue;
4553
4633
  },
4554
4634
  get children() {
4555
- var _el$43 = _tmpl$17();
4556
- addEventListener(_el$43, "click", speechRecognition.toggle);
4557
- insert(_el$43, createComponent(IconMic, {
4635
+ var _el$50 = _tmpl$19();
4636
+ addEventListener(_el$50, "click", speechRecognition.toggle);
4637
+ insert(_el$50, createComponent(IconMic, {
4558
4638
  size: 11,
4559
4639
  get ["class"]() {
4560
4640
  return speechRecognition.isListening() ? "animate-pulse" : "";
@@ -4562,40 +4642,40 @@ var SelectionLabel = (props) => {
4562
4642
  }));
4563
4643
  createRenderEffect((_p$) => {
4564
4644
  var _v$6 = cn("contain-layout shrink-0 flex items-center justify-center px-[2px] py-[2px] rounded-xs [border-width:0.5px] border-solid size-fit cursor-pointer transition-all hover:scale-105", speechRecognition.isListening() ? "bg-grab-purple border-grab-purple text-white" : "bg-white border-[#B3B3B3] text-black"), _v$7 = speechRecognition.isListening() ? "Stop listening" : "Start voice input";
4565
- _v$6 !== _p$.e && className(_el$43, _p$.e = _v$6);
4566
- _v$7 !== _p$.t && setAttribute(_el$43, "title", _p$.t = _v$7);
4645
+ _v$6 !== _p$.e && className(_el$50, _p$.e = _v$6);
4646
+ _v$7 !== _p$.t && setAttribute(_el$50, "title", _p$.t = _v$7);
4567
4647
  return _p$;
4568
4648
  }, {
4569
4649
  e: void 0,
4570
4650
  t: void 0
4571
4651
  });
4572
- return _el$43;
4652
+ return _el$50;
4573
4653
  }
4574
4654
  }), null);
4575
- insert(_el$42, createComponent(Show, {
4655
+ insert(_el$49, createComponent(Show, {
4576
4656
  get when() {
4577
4657
  return props.inputValue;
4578
4658
  },
4579
4659
  get children() {
4580
- var _el$44 = _tmpl$18();
4581
- _el$44.$$click = handleSubmit;
4582
- insert(_el$44, createComponent(IconReturn, {
4660
+ var _el$51 = _tmpl$20();
4661
+ _el$51.$$click = handleSubmit;
4662
+ insert(_el$51, createComponent(IconReturn, {
4583
4663
  size: 10,
4584
4664
  "class": "opacity-[0.99] text-black"
4585
4665
  }));
4586
- return _el$44;
4666
+ return _el$51;
4587
4667
  }
4588
4668
  }), null);
4589
- createRenderEffect(() => setAttribute(_el$41, "placeholder", speechRecognition.isListening() ? "listening..." : props.hasAgent && props.isAgentConnected ? "type to edit" : "type prompt"));
4590
- createRenderEffect(() => _el$41.value = props.inputValue ?? "");
4591
- return _el$40;
4669
+ createRenderEffect(() => setAttribute(_el$48, "placeholder", speechRecognition.isListening() ? "listening..." : "type prompt"));
4670
+ createRenderEffect(() => _el$48.value = props.inputValue ?? "");
4671
+ return _el$47;
4592
4672
  }
4593
4673
  }), null);
4594
- createRenderEffect(() => className(_el$38, cn("contain-layout shrink-0 flex items-center gap-1 pt-1 w-fit h-fit pl-1.5", props.componentName ? "pr-1.5" : "pr-1")));
4595
- return _el$37;
4674
+ createRenderEffect(() => className(_el$45, cn("contain-layout shrink-0 flex items-center gap-1 pt-1 w-fit h-fit pl-1.5", props.componentName ? "pr-1.5" : "pr-1")));
4675
+ return _el$44;
4596
4676
  }
4597
4677
  }), null);
4598
- insert(_el$21, createComponent(Show, {
4678
+ insert(_el$28, createComponent(Show, {
4599
4679
  get when() {
4600
4680
  return props.isPendingDismiss;
4601
4681
  },
@@ -4610,13 +4690,28 @@ var SelectionLabel = (props) => {
4610
4690
  });
4611
4691
  }
4612
4692
  }), null);
4693
+ insert(_el$28, createComponent(Show, {
4694
+ get when() {
4695
+ return props.error;
4696
+ },
4697
+ get children() {
4698
+ return createComponent(ErrorConfirmation, {
4699
+ get error() {
4700
+ return props.error;
4701
+ },
4702
+ get onAcknowledge() {
4703
+ return props.onAcknowledgeError;
4704
+ }
4705
+ });
4706
+ }
4707
+ }), null);
4613
4708
  createRenderEffect((_p$) => {
4614
- var _v$8 = `${computedPosition().top}px`, _v$9 = `${computedPosition().left}px`, _v$0 = props.isInputExpanded || props.status === "copied" && props.onDismiss || props.status === "copying" && props.onAbort ? "auto" : "none", _v$1 = props.status === "fading" ? 0 : 1, _v$10 = props.status === "copied" || props.status === "fading" ? "none" : void 0;
4615
- _v$8 !== _p$.e && setStyleProperty(_el$14, "top", _p$.e = _v$8);
4616
- _v$9 !== _p$.t && setStyleProperty(_el$14, "left", _p$.t = _v$9);
4617
- _v$0 !== _p$.a && setStyleProperty(_el$14, "pointer-events", _p$.a = _v$0);
4618
- _v$1 !== _p$.o && setStyleProperty(_el$14, "opacity", _p$.o = _v$1);
4619
- _v$10 !== _p$.i && setStyleProperty(_el$21, "display", _p$.i = _v$10);
4709
+ var _v$8 = `${computedPosition().top}px`, _v$9 = `${computedPosition().left}px`, _v$0 = props.isInputExpanded || props.status === "copied" && props.onDismiss || props.status === "copying" && props.onAbort ? "auto" : "none", _v$1 = props.status === "fading" ? 0 : 1, _v$10 = (props.status === "copied" || props.status === "fading") && !props.error ? "none" : void 0;
4710
+ _v$8 !== _p$.e && setStyleProperty(_el$27, "top", _p$.e = _v$8);
4711
+ _v$9 !== _p$.t && setStyleProperty(_el$27, "left", _p$.t = _v$9);
4712
+ _v$0 !== _p$.a && setStyleProperty(_el$27, "pointer-events", _p$.a = _v$0);
4713
+ _v$1 !== _p$.o && setStyleProperty(_el$27, "opacity", _p$.o = _v$1);
4714
+ _v$10 !== _p$.i && setStyleProperty(_el$28, "display", _p$.i = _v$10);
4620
4715
  return _p$;
4621
4716
  }, {
4622
4717
  e: void 0,
@@ -4625,14 +4720,14 @@ var SelectionLabel = (props) => {
4625
4720
  o: void 0,
4626
4721
  i: void 0
4627
4722
  });
4628
- return _el$14;
4723
+ return _el$27;
4629
4724
  }
4630
4725
  });
4631
4726
  };
4632
4727
  delegateEvents(["click", "pointerdown", "mousedown", "pointerup", "input", "keydown"]);
4633
4728
 
4634
4729
  // src/components/selection-cursor.tsx
4635
- var _tmpl$23 = /* @__PURE__ */ template(`<div class="fixed z-2147483647"><button data-react-grab-selection-cursor>`);
4730
+ var _tmpl$24 = /* @__PURE__ */ template(`<div class="fixed z-2147483647"><button data-react-grab-selection-cursor>`);
4636
4731
  var SelectionCursor = (props) => {
4637
4732
  const [isHovered, setIsHovered] = createSignal(false);
4638
4733
  const [debouncedVisible, setDebouncedVisible] = createSignal(false);
@@ -4669,7 +4764,7 @@ var SelectionCursor = (props) => {
4669
4764
  });
4670
4765
  }
4671
4766
  }), (() => {
4672
- var _el$ = _tmpl$23(), _el$2 = _el$.firstChild;
4767
+ var _el$ = _tmpl$24(), _el$2 = _el$.firstChild;
4673
4768
  _el$.addEventListener("mouseleave", () => setIsHovered(false));
4674
4769
  _el$.addEventListener("mouseenter", () => setIsHovered(true));
4675
4770
  _el$2.$$click = handleClick;
@@ -4827,7 +4922,11 @@ var ReactGrabRenderer = (props) => {
4827
4922
  },
4828
4923
  get onUndo() {
4829
4924
  return session().isStreaming ? void 0 : () => props.onUndoSession?.(session().id);
4830
- }
4925
+ },
4926
+ get error() {
4927
+ return session().error;
4928
+ },
4929
+ onAcknowledgeError: () => props.onAcknowledgeSessionError?.(session().id)
4831
4930
  })]
4832
4931
  }), createComponent(Show, {
4833
4932
  get when() {
@@ -6449,7 +6548,15 @@ var createAgentManager = (initialAgentOptions) => {
6449
6548
  );
6450
6549
  setSessions((prev) => new Map(prev).set(session.id, completedSession));
6451
6550
  const element = sessionElements.get(session.id);
6452
- agentOptions?.onComplete?.(completedSession, element);
6551
+ const result = agentOptions?.onComplete?.(completedSession, element);
6552
+ if (result?.error) {
6553
+ const errorSession = updateSession(
6554
+ completedSession,
6555
+ { error: result.error },
6556
+ storage
6557
+ );
6558
+ setSessions((prev) => new Map(prev).set(session.id, errorSession));
6559
+ }
6453
6560
  }
6454
6561
  } catch (error) {
6455
6562
  const currentSessions = sessions();
@@ -6462,33 +6569,18 @@ var createAgentManager = (initialAgentOptions) => {
6462
6569
  }
6463
6570
  } else {
6464
6571
  const errorMessage = error instanceof Error ? error.message : "Unknown error";
6465
- const lowerMessage = errorMessage.toLowerCase();
6466
- const isNetworkError = lowerMessage.includes("network") || lowerMessage.includes("fetch") || lowerMessage.includes("load failed") || lowerMessage.includes("cancelled") || lowerMessage.includes("canceled") || lowerMessage.includes("aborted");
6467
- if (isNetworkError) {
6468
- if (currentSession) {
6469
- const errorSession = updateSession(
6470
- currentSession,
6471
- {
6472
- lastStatus: `Error: ${errorMessage}`
6473
- },
6474
- storage
6475
- );
6476
- setSessions((prev) => new Map(prev).set(session.id, errorSession));
6477
- }
6478
- } else {
6479
- if (currentSession) {
6480
- const errorSession = updateSession(
6481
- currentSession,
6482
- {
6483
- lastStatus: `Error: ${errorMessage}`,
6484
- isStreaming: false
6485
- },
6486
- storage
6487
- );
6488
- setSessions((prev) => new Map(prev).set(session.id, errorSession));
6489
- if (error instanceof Error) {
6490
- agentOptions?.onError?.(error, errorSession);
6491
- }
6572
+ if (currentSession) {
6573
+ const errorSession = updateSession(
6574
+ currentSession,
6575
+ {
6576
+ error: errorMessage,
6577
+ isStreaming: false
6578
+ },
6579
+ storage
6580
+ );
6581
+ setSessions((prev) => new Map(prev).set(session.id, errorSession));
6582
+ if (error instanceof Error) {
6583
+ agentOptions?.onError?.(error, errorSession);
6492
6584
  }
6493
6585
  }
6494
6586
  }
@@ -6636,6 +6728,13 @@ var createAgentManager = (initialAgentOptions) => {
6636
6728
  }
6637
6729
  dismissSession(sessionId);
6638
6730
  };
6731
+ const acknowledgeSessionError = (sessionId) => {
6732
+ const currentSessions = sessions();
6733
+ const session = currentSessions.get(sessionId);
6734
+ const prompt = session?.context.prompt;
6735
+ dismissSession(sessionId);
6736
+ return prompt;
6737
+ };
6639
6738
  const updateSessionBoundsOnViewportChange = () => {
6640
6739
  const currentSessions = sessions();
6641
6740
  if (currentSessions.size === 0) return;
@@ -6679,6 +6778,7 @@ var createAgentManager = (initialAgentOptions) => {
6679
6778
  abortAllSessions,
6680
6779
  dismissSession,
6681
6780
  undoSession,
6781
+ acknowledgeSessionError,
6682
6782
  updateSessionBoundsOnViewportChange,
6683
6783
  getSessionElement,
6684
6784
  setOptions,
@@ -6687,8 +6787,8 @@ var createAgentManager = (initialAgentOptions) => {
6687
6787
  };
6688
6788
 
6689
6789
  // src/core.tsx
6690
- var _tmpl$24 = /* @__PURE__ */ template(`<span class="tabular-nums align-middle">`);
6691
- var _tmpl$25 = /* @__PURE__ */ template(`<span class="font-mono tabular-nums align-middle">&lt;<!>>`);
6790
+ var _tmpl$25 = /* @__PURE__ */ template(`<span class="tabular-nums align-middle">`);
6791
+ var _tmpl$26 = /* @__PURE__ */ template(`<span class="font-mono tabular-nums align-middle">&lt;<!>>`);
6692
6792
  var _tmpl$33 = /* @__PURE__ */ template(`<span class="tabular-nums ml-1 align-middle"> in `);
6693
6793
  var onIdle = (callback) => {
6694
6794
  if ("scheduler" in globalThis) {
@@ -6785,12 +6885,12 @@ var init = (rawOptions) => {
6785
6885
  hasInited = true;
6786
6886
  const logIntro = () => {
6787
6887
  try {
6788
- const version = "0.0.76";
6888
+ const version = "0.0.78";
6789
6889
  const logoDataUri = `data:image/svg+xml;base64,${btoa(LOGO_SVG)}`;
6790
6890
  console.log(`%cReact Grab${version ? ` v${version}` : ""}%c
6791
6891
  https://react-grab.com`, `background: #330039; color: #ffffff; border: 1px solid #d75fcb; padding: 4px 4px 4px 24px; border-radius: 4px; background-image: url("${logoDataUri}"); background-size: 16px 16px; background-repeat: no-repeat; background-position: 4px center; display: inline-block; margin-bottom: 4px;`, "");
6792
6892
  if (navigator.onLine && version) {
6793
- fetch(`https://www.react-grab.com/api/version?t=${Date.now()}`, {
6893
+ fetch(`https://www.react-grab.com/api/version?source=browser&t=${Date.now()}`, {
6794
6894
  referrerPolicy: "origin",
6795
6895
  keepalive: true,
6796
6896
  priority: "low",
@@ -6904,6 +7004,8 @@ https://react-grab.com`, `background: #330039; color: #ffffff; border: 1px solid
6904
7004
  let keydownSpamTimerId = null;
6905
7005
  let autoScrollAnimationId = null;
6906
7006
  let previouslyFocusedElement = null;
7007
+ let pendingClickTimeoutId = null;
7008
+ let pendingClickData = null;
6907
7009
  const isRendererActive = createMemo(() => isActivated() && !isCopying());
6908
7010
  const getAutoScrollDirection = (clientX, clientY) => {
6909
7011
  return {
@@ -7164,7 +7266,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7164
7266
  const copying = isCopying();
7165
7267
  if (!element) {
7166
7268
  return (() => {
7167
- var _el$ = _tmpl$24();
7269
+ var _el$ = _tmpl$25();
7168
7270
  insert(_el$, copying ? "Processing\u2026" : "1 element");
7169
7271
  return _el$;
7170
7272
  })();
@@ -7173,7 +7275,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7173
7275
  const componentName = labelComponentName();
7174
7276
  if (tagName && componentName) {
7175
7277
  return [(() => {
7176
- var _el$2 = _tmpl$25(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling; _el$5.nextSibling;
7278
+ var _el$2 = _tmpl$26(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling; _el$5.nextSibling;
7177
7279
  insert(_el$2, tagName, _el$5);
7178
7280
  return _el$2;
7179
7281
  })(), (() => {
@@ -7184,13 +7286,13 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7184
7286
  }
7185
7287
  if (tagName) {
7186
7288
  return (() => {
7187
- var _el$8 = _tmpl$25(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
7289
+ var _el$8 = _tmpl$26(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
7188
7290
  insert(_el$8, tagName, _el$1);
7189
7291
  return _el$8;
7190
7292
  })();
7191
7293
  }
7192
7294
  return (() => {
7193
- var _el$10 = _tmpl$24();
7295
+ var _el$10 = _tmpl$25();
7194
7296
  insert(_el$10, copying ? "Processing\u2026" : "1 element");
7195
7297
  return _el$10;
7196
7298
  })();
@@ -7393,6 +7495,20 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7393
7495
  }
7394
7496
  if (holdTimerId) window.clearTimeout(holdTimerId);
7395
7497
  if (keydownSpamTimerId) window.clearTimeout(keydownSpamTimerId);
7498
+ if (pendingClickTimeoutId) {
7499
+ window.clearTimeout(pendingClickTimeoutId);
7500
+ pendingClickTimeoutId = null;
7501
+ const clickData = pendingClickData;
7502
+ pendingClickData = null;
7503
+ if (clickData) {
7504
+ setLastGrabbedElement(clickData.element);
7505
+ const bounds = createElementBounds(clickData.element);
7506
+ const tagName = extractElementTagName(clickData.element);
7507
+ void getNearestComponentName(clickData.element).then((componentName) => {
7508
+ void executeCopyOperation(clickData.clientX, clickData.clientY, () => copySingleElementToClipboard(clickData.element), bounds, tagName, componentName ?? void 0, clickData.element);
7509
+ });
7510
+ }
7511
+ }
7396
7512
  stopAutoScroll();
7397
7513
  stopProgressAnimation();
7398
7514
  activationTimestamp = null;
@@ -7631,12 +7747,55 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7631
7747
  } else {
7632
7748
  const element = getElementAtPosition(clientX, clientY);
7633
7749
  if (!element) return;
7634
- setLastGrabbedElement(element);
7635
- const bounds = createElementBounds(element);
7636
- const tagName = extractElementTagName(element);
7637
- void getNearestComponentName(element).then((componentName) => {
7638
- void executeCopyOperation(clientX, clientY, () => copySingleElementToClipboard(element), bounds, tagName, componentName ?? void 0, element);
7639
- });
7750
+ if (hasAgentProvider()) {
7751
+ if (pendingClickTimeoutId !== null) {
7752
+ window.clearTimeout(pendingClickTimeoutId);
7753
+ pendingClickTimeoutId = null;
7754
+ const clickElement = pendingClickData?.element ?? element;
7755
+ pendingClickData = null;
7756
+ const bounds = createElementBounds(clickElement);
7757
+ const selectionCenterX = bounds.x + bounds.width / 2;
7758
+ setCopyStartX(clientX);
7759
+ setCopyStartY(clientY);
7760
+ setCopyOffsetFromCenterX(clientX - selectionCenterX);
7761
+ const cachedInput = elementInputCache.get(clickElement);
7762
+ if (cachedInput) {
7763
+ setInputText(cachedInput);
7764
+ }
7765
+ setMouseX(clientX);
7766
+ setMouseY(clientY);
7767
+ setFrozenElement(clickElement);
7768
+ setIsToggleMode(true);
7769
+ setIsToggleFrozen(true);
7770
+ setIsInputExpanded(true);
7771
+ setIsInputMode(true);
7772
+ return;
7773
+ }
7774
+ pendingClickData = {
7775
+ clientX,
7776
+ clientY,
7777
+ element
7778
+ };
7779
+ pendingClickTimeoutId = window.setTimeout(() => {
7780
+ pendingClickTimeoutId = null;
7781
+ const clickData = pendingClickData;
7782
+ pendingClickData = null;
7783
+ if (!clickData) return;
7784
+ setLastGrabbedElement(clickData.element);
7785
+ const bounds = createElementBounds(clickData.element);
7786
+ const tagName = extractElementTagName(clickData.element);
7787
+ void getNearestComponentName(clickData.element).then((componentName) => {
7788
+ void executeCopyOperation(clickData.clientX, clickData.clientY, () => copySingleElementToClipboard(clickData.element), bounds, tagName, componentName ?? void 0, clickData.element);
7789
+ });
7790
+ }, DOUBLE_CLICK_THRESHOLD_MS);
7791
+ } else {
7792
+ setLastGrabbedElement(element);
7793
+ const bounds = createElementBounds(element);
7794
+ const tagName = extractElementTagName(element);
7795
+ void getNearestComponentName(element).then((componentName) => {
7796
+ void executeCopyOperation(clientX, clientY, () => copySingleElementToClipboard(element), bounds, tagName, componentName ?? void 0, element);
7797
+ });
7798
+ }
7640
7799
  }
7641
7800
  };
7642
7801
  const abortController = new AbortController();
@@ -7777,7 +7936,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7777
7936
  setIsInputMode(true);
7778
7937
  return;
7779
7938
  }
7780
- if (event.key.toLowerCase() === "o" && !isInputMode()) {
7939
+ if (event.key?.toLowerCase() === "o" && !isInputMode()) {
7781
7940
  if (isActivated() && (event.metaKey || event.ctrlKey)) {
7782
7941
  const filePath = selectionFilePath();
7783
7942
  const lineNumber = selectionLineNumber();
@@ -7870,7 +8029,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7870
8029
  };
7871
8030
  const requiredModifiers = getRequiredModifiers();
7872
8031
  const isReleasingModifier = requiredModifiers.metaKey || requiredModifiers.ctrlKey ? !event.metaKey && !event.ctrlKey : requiredModifiers.shiftKey && !event.shiftKey || requiredModifiers.altKey && !event.altKey;
7873
- const isReleasingActivationKey = options.activationShortcut ? !options.activationShortcut(event) : options.activationKey ? options.activationKey.key ? event.key.toLowerCase() === options.activationKey.key.toLowerCase() || keyMatchesCode(options.activationKey.key, event.code) : false : isCLikeKey(event.key, event.code);
8032
+ const isReleasingActivationKey = options.activationShortcut ? !options.activationShortcut(event) : options.activationKey ? options.activationKey.key ? event.key?.toLowerCase() === options.activationKey.key.toLowerCase() || keyMatchesCode(options.activationKey.key, event.code) : false : isCLikeKey(event.key, event.code);
7874
8033
  if (isActivated()) {
7875
8034
  if (isReleasingModifier) {
7876
8035
  if (isToggleMode()) return;
@@ -8086,6 +8245,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8086
8245
  abortController.abort();
8087
8246
  if (holdTimerId) window.clearTimeout(holdTimerId);
8088
8247
  if (keydownSpamTimerId) window.clearTimeout(keydownSpamTimerId);
8248
+ if (pendingClickTimeoutId) window.clearTimeout(pendingClickTimeoutId);
8089
8249
  stopAutoScroll();
8090
8250
  stopProgressAnimation();
8091
8251
  document.body.style.userSelect = "";
@@ -8222,6 +8382,12 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8222
8382
  onAbortSession: (sessionId) => agentManager.abortSession(sessionId),
8223
8383
  onDismissSession: (sessionId) => agentManager.dismissSession(sessionId),
8224
8384
  onUndoSession: (sessionId) => agentManager.undoSession(sessionId),
8385
+ onAcknowledgeSessionError: (sessionId) => {
8386
+ const prompt = agentManager.acknowledgeSessionError(sessionId);
8387
+ if (prompt) {
8388
+ setInputText(prompt);
8389
+ }
8390
+ },
8225
8391
  onInputChange: handleInputChange,
8226
8392
  onInputSubmit: () => void handleInputSubmit(),
8227
8393
  onInputCancel: handleInputCancel,