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.
@@ -951,7 +951,7 @@ function cleanChildren(parent, current, marker, replacement) {
951
951
 
952
952
  // dist/styles.css
953
953
  var styles_default = `/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
954
- @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}}`;
954
+ @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}}`;
955
955
 
956
956
  // src/utils/is-keyboard-event-triggered-by-input.ts
957
957
  var FORM_TAGS_AND_ROLES = [
@@ -1080,7 +1080,7 @@ var buildOpenFileUrl = (filePath, lineNumber) => {
1080
1080
  };
1081
1081
 
1082
1082
  // src/constants.ts
1083
- var VERSION = "0.0.76";
1083
+ var VERSION = "0.0.78";
1084
1084
  var VIEWPORT_MARGIN_PX = 8;
1085
1085
  var OFFSCREEN_POSITION = -1e3;
1086
1086
  var SELECTION_LERP_FACTOR = 0.95;
@@ -1090,6 +1090,7 @@ var SELECTION_CURSOR_SETTLE_DELAY_MS = 500;
1090
1090
  var BLUR_DEACTIVATION_THRESHOLD_MS = 500;
1091
1091
  var INPUT_FOCUS_ACTIVATION_DELAY_MS = 150;
1092
1092
  var DEFAULT_KEY_HOLD_DURATION_MS = 200;
1093
+ var DOUBLE_CLICK_THRESHOLD_MS = 250;
1093
1094
  var DRAG_THRESHOLD_PX = 2;
1094
1095
  var ELEMENT_DETECTION_THROTTLE_MS = 32;
1095
1096
  var BOUNDS_RECALC_INTERVAL_MS = 100;
@@ -3953,21 +3954,23 @@ var _tmpl$52 = /* @__PURE__ */ template(`<div role=button><div class="text-black
3953
3954
  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%)">`);
3954
3955
  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`);
3955
3956
  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?`);
3956
- 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`);
3957
- 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`);
3958
- var _tmpl$1 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center justify-end gap-[5px] w-full h-fit">`);
3959
- 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">`);
3960
- 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">`);
3961
- 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>`);
3962
- 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">`);
3963
- var _tmpl$14 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-px w-fit h-fit">`);
3964
- 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`);
3965
- 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>`);
3966
- var _tmpl$17 = /* @__PURE__ */ template(`<button>`);
3967
- 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">`);
3968
- 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">`);
3969
- 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>`);
3970
- 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">`);
3957
+ 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`);
3958
+ 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">`);
3959
+ 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`);
3960
+ 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`);
3961
+ var _tmpl$11 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center justify-end gap-[5px] w-full h-fit">`);
3962
+ 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">`);
3963
+ 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">`);
3964
+ 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>`);
3965
+ 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">`);
3966
+ var _tmpl$16 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-px w-fit h-fit">`);
3967
+ 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`);
3968
+ 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>`);
3969
+ var _tmpl$19 = /* @__PURE__ */ template(`<button>`);
3970
+ 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">`);
3971
+ 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">`);
3972
+ 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>`);
3973
+ 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">`);
3971
3974
  var ARROW_HEIGHT = 8;
3972
3975
  var LABEL_GAP = 4;
3973
3976
  var IDLE_TIMEOUT_MS = 400;
@@ -4094,6 +4097,109 @@ var DismissConfirmation = (props) => {
4094
4097
  return _el$0;
4095
4098
  })();
4096
4099
  };
4100
+ var MAX_ERROR_LENGTH = 50;
4101
+ var ErrorConfirmation = (props) => {
4102
+ const handleKeyDown = (event) => {
4103
+ if (event.code === "Enter" || event.code === "Escape") {
4104
+ event.preventDefault();
4105
+ event.stopPropagation();
4106
+ props.onAcknowledge?.();
4107
+ }
4108
+ };
4109
+ const truncatedError = () => {
4110
+ const error = props.error;
4111
+ if (error.length <= MAX_ERROR_LENGTH) return error;
4112
+ return `${error.slice(0, MAX_ERROR_LENGTH)}\u2026`;
4113
+ };
4114
+ onMount(() => {
4115
+ window.addEventListener("keydown", handleKeyDown, {
4116
+ capture: true
4117
+ });
4118
+ });
4119
+ onCleanup(() => {
4120
+ window.removeEventListener("keydown", handleKeyDown, {
4121
+ capture: true
4122
+ });
4123
+ });
4124
+ return (() => {
4125
+ var _el$14 = _tmpl$0(), _el$15 = _el$14.firstChild, _el$16 = _el$15.firstChild;
4126
+ insert(_el$16, truncatedError);
4127
+ insert(_el$14, createComponent(BottomSection, {
4128
+ get children() {
4129
+ var _el$17 = _tmpl$9(), _el$18 = _el$17.firstChild; _el$18.firstChild;
4130
+ addEventListener(_el$18, "click", props.onAcknowledge);
4131
+ insert(_el$18, createComponent(IconReturn, {
4132
+ size: 10,
4133
+ "class": "text-black/50"
4134
+ }), null);
4135
+ return _el$17;
4136
+ }
4137
+ }), null);
4138
+ createRenderEffect(() => setAttribute(_el$16, "title", props.error));
4139
+ return _el$14;
4140
+ })();
4141
+ };
4142
+ var CompletedConfirmation = (props) => {
4143
+ const handleKeyDown = (event) => {
4144
+ if (event.code === "Enter" || event.code === "Escape") {
4145
+ event.preventDefault();
4146
+ event.stopPropagation();
4147
+ props.onDismiss?.();
4148
+ }
4149
+ };
4150
+ onMount(() => {
4151
+ window.addEventListener("keydown", handleKeyDown, {
4152
+ capture: true
4153
+ });
4154
+ });
4155
+ onCleanup(() => {
4156
+ window.removeEventListener("keydown", handleKeyDown, {
4157
+ capture: true
4158
+ });
4159
+ });
4160
+ return (() => {
4161
+ var _el$20 = _tmpl$12(), _el$21 = _el$20.firstChild, _el$22 = _el$21.firstChild;
4162
+ insert(_el$22, () => props.statusText);
4163
+ insert(_el$20, createComponent(Show, {
4164
+ get when() {
4165
+ return props.onDismiss || props.onUndo;
4166
+ },
4167
+ get children() {
4168
+ return createComponent(BottomSection, {
4169
+ get children() {
4170
+ var _el$23 = _tmpl$11();
4171
+ insert(_el$23, createComponent(Show, {
4172
+ get when() {
4173
+ return props.onUndo;
4174
+ },
4175
+ get children() {
4176
+ var _el$24 = _tmpl$1();
4177
+ _el$24.$$click = () => props.onUndo?.();
4178
+ return _el$24;
4179
+ }
4180
+ }), null);
4181
+ insert(_el$23, createComponent(Show, {
4182
+ get when() {
4183
+ return props.onDismiss;
4184
+ },
4185
+ get children() {
4186
+ var _el$25 = _tmpl$10(); _el$25.firstChild;
4187
+ _el$25.$$click = () => props.onDismiss?.();
4188
+ insert(_el$25, createComponent(IconReturn, {
4189
+ size: 10,
4190
+ "class": "text-black/50"
4191
+ }), null);
4192
+ return _el$25;
4193
+ }
4194
+ }), null);
4195
+ return _el$23;
4196
+ }
4197
+ });
4198
+ }
4199
+ }), null);
4200
+ return _el$20;
4201
+ })();
4202
+ };
4097
4203
  var SelectionLabel = (props) => {
4098
4204
  let containerRef;
4099
4205
  let inputRef;
@@ -4175,6 +4281,8 @@ var SelectionLabel = (props) => {
4175
4281
  void props.inputValue;
4176
4282
  void props.hasAgent;
4177
4283
  void props.isInputExpanded;
4284
+ void props.isPendingDismiss;
4285
+ void props.error;
4178
4286
  requestAnimationFrame(measureContainer);
4179
4287
  });
4180
4288
  createEffect(() => {
@@ -4293,111 +4401,83 @@ var SelectionLabel = (props) => {
4293
4401
  return memo(() => props.visible !== false)() && (props.selectionBounds || shouldShowWithoutBounds());
4294
4402
  },
4295
4403
  get children() {
4296
- var _el$14 = _tmpl$21(), _el$21 = _el$14.firstChild;
4297
- _el$14.$$click = stopPropagation;
4298
- _el$14.$$mousedown = stopPropagation;
4299
- _el$14.$$pointerdown = handleContainerPointerDown;
4404
+ var _el$27 = _tmpl$23(), _el$28 = _el$27.firstChild;
4405
+ _el$27.$$click = stopPropagation;
4406
+ _el$27.$$mousedown = stopPropagation;
4407
+ _el$27.$$pointerdown = handleContainerPointerDown;
4300
4408
  var _ref$ = containerRef;
4301
- typeof _ref$ === "function" ? use(_ref$, _el$14) : containerRef = _el$14;
4302
- insert(_el$14, createComponent(Arrow, {
4409
+ typeof _ref$ === "function" ? use(_ref$, _el$27) : containerRef = _el$27;
4410
+ insert(_el$27, createComponent(Arrow, {
4303
4411
  get position() {
4304
4412
  return arrowPosition();
4305
4413
  },
4306
4414
  get leftPx() {
4307
4415
  return computedPosition().arrowLeft;
4308
4416
  }
4309
- }), _el$21);
4310
- insert(_el$14, createComponent(Show, {
4417
+ }), _el$28);
4418
+ insert(_el$27, createComponent(Show, {
4311
4419
  get when() {
4312
- return props.status === "copied" || props.status === "fading";
4420
+ return memo(() => !!(props.status === "copied" || props.status === "fading"))() && !props.error;
4313
4421
  },
4314
4422
  get children() {
4315
- var _el$15 = _tmpl$10(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild;
4316
- insert(_el$17, (() => {
4317
- var _c$ = memo(() => !!props.hasAgent);
4318
- return () => _c$() ? props.statusText ?? "Completed" : "Copied";
4319
- })());
4320
- insert(_el$15, createComponent(Show, {
4321
- get when() {
4322
- return props.onDismiss || props.onUndo;
4423
+ return createComponent(CompletedConfirmation, {
4424
+ get statusText() {
4425
+ return memo(() => !!props.hasAgent)() ? props.statusText ?? "Completed" : "Copied";
4323
4426
  },
4324
- get children() {
4325
- return createComponent(BottomSection, {
4326
- get children() {
4327
- var _el$18 = _tmpl$1();
4328
- insert(_el$18, createComponent(Show, {
4329
- get when() {
4330
- return props.onUndo;
4331
- },
4332
- get children() {
4333
- var _el$19 = _tmpl$9();
4334
- _el$19.$$click = () => props.onUndo?.();
4335
- return _el$19;
4336
- }
4337
- }), null);
4338
- insert(_el$18, createComponent(Show, {
4339
- get when() {
4340
- return props.onDismiss;
4341
- },
4342
- get children() {
4343
- var _el$20 = _tmpl$0();
4344
- _el$20.$$click = () => props.onDismiss?.();
4345
- return _el$20;
4346
- }
4347
- }), null);
4348
- return _el$18;
4349
- }
4350
- });
4427
+ get onDismiss() {
4428
+ return props.onDismiss;
4429
+ },
4430
+ get onUndo() {
4431
+ return props.onUndo;
4351
4432
  }
4352
- }), null);
4353
- return _el$15;
4433
+ });
4354
4434
  }
4355
- }), _el$21);
4356
- insert(_el$21, createComponent(Show, {
4435
+ }), _el$28);
4436
+ insert(_el$28, createComponent(Show, {
4357
4437
  get when() {
4358
4438
  return props.status === "copying";
4359
4439
  },
4360
4440
  get children() {
4361
- var _el$22 = _tmpl$13(), _el$23 = _el$22.firstChild, _el$24 = _el$23.firstChild, _el$25 = _el$24.firstChild;
4362
- insert(_el$25, () => props.statusText ?? "Grabbing\u2026");
4363
- insert(_el$22, createComponent(BottomSection, {
4441
+ var _el$29 = _tmpl$15(), _el$30 = _el$29.firstChild, _el$31 = _el$30.firstChild, _el$32 = _el$31.firstChild;
4442
+ insert(_el$32, () => props.statusText ?? "Grabbing\u2026");
4443
+ insert(_el$29, createComponent(BottomSection, {
4364
4444
  get children() {
4365
- var _el$26 = _tmpl$12(), _el$27 = _el$26.firstChild;
4445
+ var _el$33 = _tmpl$14(), _el$34 = _el$33.firstChild;
4366
4446
  var _ref$2 = inputRef;
4367
- typeof _ref$2 === "function" ? use(_ref$2, _el$27) : inputRef = _el$27;
4368
- insert(_el$26, createComponent(Show, {
4447
+ typeof _ref$2 === "function" ? use(_ref$2, _el$34) : inputRef = _el$34;
4448
+ insert(_el$33, createComponent(Show, {
4369
4449
  get when() {
4370
4450
  return props.onAbort;
4371
4451
  },
4372
4452
  get children() {
4373
- var _el$28 = _tmpl$11();
4374
- _el$28.$$click = (event) => {
4453
+ var _el$35 = _tmpl$13();
4454
+ _el$35.$$click = (event) => {
4375
4455
  event.stopPropagation();
4376
4456
  props.onAbort?.();
4377
4457
  };
4378
- _el$28.$$pointerup = (event) => {
4458
+ _el$35.$$pointerup = (event) => {
4379
4459
  event.stopPropagation();
4380
4460
  props.onAbort?.();
4381
4461
  };
4382
- _el$28.$$mousedown = (event) => event.stopPropagation();
4383
- _el$28.$$pointerdown = (event) => event.stopPropagation();
4384
- return _el$28;
4462
+ _el$35.$$mousedown = (event) => event.stopPropagation();
4463
+ _el$35.$$pointerdown = (event) => event.stopPropagation();
4464
+ return _el$35;
4385
4465
  }
4386
4466
  }), null);
4387
- createRenderEffect(() => _el$27.value = props.inputValue ?? "");
4388
- return _el$26;
4467
+ createRenderEffect(() => _el$34.value = props.inputValue ?? "");
4468
+ return _el$33;
4389
4469
  }
4390
4470
  }), null);
4391
- return _el$22;
4471
+ return _el$29;
4392
4472
  }
4393
4473
  }), null);
4394
- insert(_el$21, createComponent(Show, {
4474
+ insert(_el$28, createComponent(Show, {
4395
4475
  get when() {
4396
4476
  return memo(() => !!isNotProcessing())() && !props.isInputExpanded;
4397
4477
  },
4398
4478
  get children() {
4399
- var _el$29 = _tmpl$16(), _el$30 = _el$29.firstChild, _el$32 = _el$30.nextSibling, _el$33 = _el$32.firstChild;
4400
- insert(_el$30, createComponent(ClickToCopyPill, {
4479
+ var _el$36 = _tmpl$18(), _el$37 = _el$36.firstChild, _el$39 = _el$37.nextSibling, _el$40 = _el$39.firstChild;
4480
+ insert(_el$37, createComponent(ClickToCopyPill, {
4401
4481
  onClick: handleSubmit,
4402
4482
  shrink: true,
4403
4483
  get hasParent() {
@@ -4407,19 +4487,19 @@ var SelectionLabel = (props) => {
4407
4487
  return props.hasAgent;
4408
4488
  }
4409
4489
  }), null);
4410
- insert(_el$30, createComponent(Show, {
4490
+ insert(_el$37, createComponent(Show, {
4411
4491
  get when() {
4412
4492
  return props.componentName;
4413
4493
  },
4414
4494
  get children() {
4415
- var _el$31 = _tmpl$14();
4416
- insert(_el$31, createComponent(ParentBadge, {
4495
+ var _el$38 = _tmpl$16();
4496
+ insert(_el$38, createComponent(ParentBadge, {
4417
4497
  get name() {
4418
4498
  return props.componentName;
4419
4499
  }
4420
4500
  }), null);
4421
- insert(_el$31, createComponent(ChevronSeparator, {}), null);
4422
- insert(_el$31, createComponent(TagBadge, {
4501
+ insert(_el$38, createComponent(ChevronSeparator, {}), null);
4502
+ insert(_el$38, createComponent(TagBadge, {
4423
4503
  get tagName() {
4424
4504
  return tagDisplay();
4425
4505
  },
@@ -4431,10 +4511,10 @@ var SelectionLabel = (props) => {
4431
4511
  showMono: true,
4432
4512
  shrink: true
4433
4513
  }), null);
4434
- return _el$31;
4514
+ return _el$38;
4435
4515
  }
4436
4516
  }), null);
4437
- insert(_el$30, createComponent(Show, {
4517
+ insert(_el$37, createComponent(Show, {
4438
4518
  get when() {
4439
4519
  return !props.componentName;
4440
4520
  },
@@ -4453,37 +4533,37 @@ var SelectionLabel = (props) => {
4453
4533
  });
4454
4534
  }
4455
4535
  }), null);
4456
- insert(_el$33, createComponent(BottomSection, {
4536
+ insert(_el$40, createComponent(BottomSection, {
4457
4537
  get children() {
4458
- var _el$34 = _tmpl$15(), _el$35 = _el$34.firstChild, _el$36 = _el$35.nextSibling;
4459
- insert(_el$36, createComponent(IconReturn, {
4538
+ var _el$41 = _tmpl$17(), _el$42 = _el$41.firstChild, _el$43 = _el$42.nextSibling;
4539
+ insert(_el$43, createComponent(IconReturn, {
4460
4540
  size: 10,
4461
4541
  "class": "opacity-[0.99] text-black"
4462
4542
  }));
4463
- return _el$34;
4543
+ return _el$41;
4464
4544
  }
4465
4545
  }));
4466
4546
  createRenderEffect((_p$) => {
4467
4547
  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");
4468
- _v$3 !== _p$.e && className(_el$30, _p$.e = _v$3);
4469
- _v$4 !== _p$.t && setStyleProperty(_el$32, "grid-template-rows", _p$.t = _v$4);
4470
- _v$5 !== _p$.a && className(_el$33, _p$.a = _v$5);
4548
+ _v$3 !== _p$.e && className(_el$37, _p$.e = _v$3);
4549
+ _v$4 !== _p$.t && setStyleProperty(_el$39, "grid-template-rows", _p$.t = _v$4);
4550
+ _v$5 !== _p$.a && className(_el$40, _p$.a = _v$5);
4471
4551
  return _p$;
4472
4552
  }, {
4473
4553
  e: void 0,
4474
4554
  t: void 0,
4475
4555
  a: void 0
4476
4556
  });
4477
- return _el$29;
4557
+ return _el$36;
4478
4558
  }
4479
4559
  }), null);
4480
- insert(_el$21, createComponent(Show, {
4560
+ insert(_el$28, createComponent(Show, {
4481
4561
  get when() {
4482
4562
  return memo(() => !!(isNotProcessing() && props.isInputExpanded))() && !props.isPendingDismiss;
4483
4563
  },
4484
4564
  get children() {
4485
- var _el$37 = _tmpl$20(), _el$38 = _el$37.firstChild;
4486
- insert(_el$38, createComponent(ClickToCopyPill, {
4565
+ var _el$44 = _tmpl$222(), _el$45 = _el$44.firstChild;
4566
+ insert(_el$45, createComponent(ClickToCopyPill, {
4487
4567
  onClick: handleSubmit,
4488
4568
  dimmed: true,
4489
4569
  shrink: true,
@@ -4494,19 +4574,19 @@ var SelectionLabel = (props) => {
4494
4574
  return props.hasAgent;
4495
4575
  }
4496
4576
  }), null);
4497
- insert(_el$38, createComponent(Show, {
4577
+ insert(_el$45, createComponent(Show, {
4498
4578
  get when() {
4499
4579
  return props.componentName;
4500
4580
  },
4501
4581
  get children() {
4502
- var _el$39 = _tmpl$14();
4503
- insert(_el$39, createComponent(ParentBadge, {
4582
+ var _el$46 = _tmpl$16();
4583
+ insert(_el$46, createComponent(ParentBadge, {
4504
4584
  get name() {
4505
4585
  return props.componentName;
4506
4586
  }
4507
4587
  }), null);
4508
- insert(_el$39, createComponent(ChevronSeparator, {}), null);
4509
- insert(_el$39, createComponent(TagBadge, {
4588
+ insert(_el$46, createComponent(ChevronSeparator, {}), null);
4589
+ insert(_el$46, createComponent(TagBadge, {
4510
4590
  get tagName() {
4511
4591
  return tagDisplay();
4512
4592
  },
@@ -4519,10 +4599,10 @@ var SelectionLabel = (props) => {
4519
4599
  shrink: true,
4520
4600
  forceShowIcon: true
4521
4601
  }), null);
4522
- return _el$39;
4602
+ return _el$46;
4523
4603
  }
4524
4604
  }), null);
4525
- insert(_el$38, createComponent(Show, {
4605
+ insert(_el$45, createComponent(Show, {
4526
4606
  get when() {
4527
4607
  return !props.componentName;
4528
4608
  },
@@ -4542,21 +4622,21 @@ var SelectionLabel = (props) => {
4542
4622
  });
4543
4623
  }
4544
4624
  }), null);
4545
- insert(_el$37, createComponent(BottomSection, {
4625
+ insert(_el$44, createComponent(BottomSection, {
4546
4626
  get children() {
4547
- var _el$40 = _tmpl$19(), _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
4548
- _el$41.$$keydown = handleKeyDown;
4549
- _el$41.$$input = handleInput;
4627
+ var _el$47 = _tmpl$21(), _el$48 = _el$47.firstChild, _el$49 = _el$48.nextSibling;
4628
+ _el$48.$$keydown = handleKeyDown;
4629
+ _el$48.$$input = handleInput;
4550
4630
  var _ref$3 = inputRef;
4551
- typeof _ref$3 === "function" ? use(_ref$3, _el$41) : inputRef = _el$41;
4552
- insert(_el$42, createComponent(Show, {
4631
+ typeof _ref$3 === "function" ? use(_ref$3, _el$48) : inputRef = _el$48;
4632
+ insert(_el$49, createComponent(Show, {
4553
4633
  get when() {
4554
4634
  return memo(() => !!(props.hasAgent && speechRecognition.isSupported()))() && !props.inputValue;
4555
4635
  },
4556
4636
  get children() {
4557
- var _el$43 = _tmpl$17();
4558
- addEventListener(_el$43, "click", speechRecognition.toggle);
4559
- insert(_el$43, createComponent(IconMic, {
4637
+ var _el$50 = _tmpl$19();
4638
+ addEventListener(_el$50, "click", speechRecognition.toggle);
4639
+ insert(_el$50, createComponent(IconMic, {
4560
4640
  size: 11,
4561
4641
  get ["class"]() {
4562
4642
  return speechRecognition.isListening() ? "animate-pulse" : "";
@@ -4564,40 +4644,40 @@ var SelectionLabel = (props) => {
4564
4644
  }));
4565
4645
  createRenderEffect((_p$) => {
4566
4646
  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";
4567
- _v$6 !== _p$.e && className(_el$43, _p$.e = _v$6);
4568
- _v$7 !== _p$.t && setAttribute(_el$43, "title", _p$.t = _v$7);
4647
+ _v$6 !== _p$.e && className(_el$50, _p$.e = _v$6);
4648
+ _v$7 !== _p$.t && setAttribute(_el$50, "title", _p$.t = _v$7);
4569
4649
  return _p$;
4570
4650
  }, {
4571
4651
  e: void 0,
4572
4652
  t: void 0
4573
4653
  });
4574
- return _el$43;
4654
+ return _el$50;
4575
4655
  }
4576
4656
  }), null);
4577
- insert(_el$42, createComponent(Show, {
4657
+ insert(_el$49, createComponent(Show, {
4578
4658
  get when() {
4579
4659
  return props.inputValue;
4580
4660
  },
4581
4661
  get children() {
4582
- var _el$44 = _tmpl$18();
4583
- _el$44.$$click = handleSubmit;
4584
- insert(_el$44, createComponent(IconReturn, {
4662
+ var _el$51 = _tmpl$20();
4663
+ _el$51.$$click = handleSubmit;
4664
+ insert(_el$51, createComponent(IconReturn, {
4585
4665
  size: 10,
4586
4666
  "class": "opacity-[0.99] text-black"
4587
4667
  }));
4588
- return _el$44;
4668
+ return _el$51;
4589
4669
  }
4590
4670
  }), null);
4591
- createRenderEffect(() => setAttribute(_el$41, "placeholder", speechRecognition.isListening() ? "listening..." : props.hasAgent && props.isAgentConnected ? "type to edit" : "type prompt"));
4592
- createRenderEffect(() => _el$41.value = props.inputValue ?? "");
4593
- return _el$40;
4671
+ createRenderEffect(() => setAttribute(_el$48, "placeholder", speechRecognition.isListening() ? "listening..." : "type prompt"));
4672
+ createRenderEffect(() => _el$48.value = props.inputValue ?? "");
4673
+ return _el$47;
4594
4674
  }
4595
4675
  }), null);
4596
- 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")));
4597
- return _el$37;
4676
+ 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")));
4677
+ return _el$44;
4598
4678
  }
4599
4679
  }), null);
4600
- insert(_el$21, createComponent(Show, {
4680
+ insert(_el$28, createComponent(Show, {
4601
4681
  get when() {
4602
4682
  return props.isPendingDismiss;
4603
4683
  },
@@ -4612,13 +4692,28 @@ var SelectionLabel = (props) => {
4612
4692
  });
4613
4693
  }
4614
4694
  }), null);
4695
+ insert(_el$28, createComponent(Show, {
4696
+ get when() {
4697
+ return props.error;
4698
+ },
4699
+ get children() {
4700
+ return createComponent(ErrorConfirmation, {
4701
+ get error() {
4702
+ return props.error;
4703
+ },
4704
+ get onAcknowledge() {
4705
+ return props.onAcknowledgeError;
4706
+ }
4707
+ });
4708
+ }
4709
+ }), null);
4615
4710
  createRenderEffect((_p$) => {
4616
- 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;
4617
- _v$8 !== _p$.e && setStyleProperty(_el$14, "top", _p$.e = _v$8);
4618
- _v$9 !== _p$.t && setStyleProperty(_el$14, "left", _p$.t = _v$9);
4619
- _v$0 !== _p$.a && setStyleProperty(_el$14, "pointer-events", _p$.a = _v$0);
4620
- _v$1 !== _p$.o && setStyleProperty(_el$14, "opacity", _p$.o = _v$1);
4621
- _v$10 !== _p$.i && setStyleProperty(_el$21, "display", _p$.i = _v$10);
4711
+ 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;
4712
+ _v$8 !== _p$.e && setStyleProperty(_el$27, "top", _p$.e = _v$8);
4713
+ _v$9 !== _p$.t && setStyleProperty(_el$27, "left", _p$.t = _v$9);
4714
+ _v$0 !== _p$.a && setStyleProperty(_el$27, "pointer-events", _p$.a = _v$0);
4715
+ _v$1 !== _p$.o && setStyleProperty(_el$27, "opacity", _p$.o = _v$1);
4716
+ _v$10 !== _p$.i && setStyleProperty(_el$28, "display", _p$.i = _v$10);
4622
4717
  return _p$;
4623
4718
  }, {
4624
4719
  e: void 0,
@@ -4627,14 +4722,14 @@ var SelectionLabel = (props) => {
4627
4722
  o: void 0,
4628
4723
  i: void 0
4629
4724
  });
4630
- return _el$14;
4725
+ return _el$27;
4631
4726
  }
4632
4727
  });
4633
4728
  };
4634
4729
  delegateEvents(["click", "pointerdown", "mousedown", "pointerup", "input", "keydown"]);
4635
4730
 
4636
4731
  // src/components/selection-cursor.tsx
4637
- var _tmpl$23 = /* @__PURE__ */ template(`<div class="fixed z-2147483647"><button data-react-grab-selection-cursor>`);
4732
+ var _tmpl$24 = /* @__PURE__ */ template(`<div class="fixed z-2147483647"><button data-react-grab-selection-cursor>`);
4638
4733
  var SelectionCursor = (props) => {
4639
4734
  const [isHovered, setIsHovered] = createSignal(false);
4640
4735
  const [debouncedVisible, setDebouncedVisible] = createSignal(false);
@@ -4671,7 +4766,7 @@ var SelectionCursor = (props) => {
4671
4766
  });
4672
4767
  }
4673
4768
  }), (() => {
4674
- var _el$ = _tmpl$23(), _el$2 = _el$.firstChild;
4769
+ var _el$ = _tmpl$24(), _el$2 = _el$.firstChild;
4675
4770
  _el$.addEventListener("mouseleave", () => setIsHovered(false));
4676
4771
  _el$.addEventListener("mouseenter", () => setIsHovered(true));
4677
4772
  _el$2.$$click = handleClick;
@@ -4829,7 +4924,11 @@ var ReactGrabRenderer = (props) => {
4829
4924
  },
4830
4925
  get onUndo() {
4831
4926
  return session().isStreaming ? void 0 : () => props.onUndoSession?.(session().id);
4832
- }
4927
+ },
4928
+ get error() {
4929
+ return session().error;
4930
+ },
4931
+ onAcknowledgeError: () => props.onAcknowledgeSessionError?.(session().id)
4833
4932
  })]
4834
4933
  }), createComponent(Show, {
4835
4934
  get when() {
@@ -6451,7 +6550,15 @@ var createAgentManager = (initialAgentOptions) => {
6451
6550
  );
6452
6551
  setSessions((prev) => new Map(prev).set(session.id, completedSession));
6453
6552
  const element = sessionElements.get(session.id);
6454
- agentOptions?.onComplete?.(completedSession, element);
6553
+ const result = agentOptions?.onComplete?.(completedSession, element);
6554
+ if (result?.error) {
6555
+ const errorSession = updateSession(
6556
+ completedSession,
6557
+ { error: result.error },
6558
+ storage
6559
+ );
6560
+ setSessions((prev) => new Map(prev).set(session.id, errorSession));
6561
+ }
6455
6562
  }
6456
6563
  } catch (error) {
6457
6564
  const currentSessions = sessions();
@@ -6464,33 +6571,18 @@ var createAgentManager = (initialAgentOptions) => {
6464
6571
  }
6465
6572
  } else {
6466
6573
  const errorMessage = error instanceof Error ? error.message : "Unknown error";
6467
- const lowerMessage = errorMessage.toLowerCase();
6468
- const isNetworkError = lowerMessage.includes("network") || lowerMessage.includes("fetch") || lowerMessage.includes("load failed") || lowerMessage.includes("cancelled") || lowerMessage.includes("canceled") || lowerMessage.includes("aborted");
6469
- if (isNetworkError) {
6470
- if (currentSession) {
6471
- const errorSession = updateSession(
6472
- currentSession,
6473
- {
6474
- lastStatus: `Error: ${errorMessage}`
6475
- },
6476
- storage
6477
- );
6478
- setSessions((prev) => new Map(prev).set(session.id, errorSession));
6479
- }
6480
- } else {
6481
- if (currentSession) {
6482
- const errorSession = updateSession(
6483
- currentSession,
6484
- {
6485
- lastStatus: `Error: ${errorMessage}`,
6486
- isStreaming: false
6487
- },
6488
- storage
6489
- );
6490
- setSessions((prev) => new Map(prev).set(session.id, errorSession));
6491
- if (error instanceof Error) {
6492
- agentOptions?.onError?.(error, errorSession);
6493
- }
6574
+ if (currentSession) {
6575
+ const errorSession = updateSession(
6576
+ currentSession,
6577
+ {
6578
+ error: errorMessage,
6579
+ isStreaming: false
6580
+ },
6581
+ storage
6582
+ );
6583
+ setSessions((prev) => new Map(prev).set(session.id, errorSession));
6584
+ if (error instanceof Error) {
6585
+ agentOptions?.onError?.(error, errorSession);
6494
6586
  }
6495
6587
  }
6496
6588
  }
@@ -6638,6 +6730,13 @@ var createAgentManager = (initialAgentOptions) => {
6638
6730
  }
6639
6731
  dismissSession(sessionId);
6640
6732
  };
6733
+ const acknowledgeSessionError = (sessionId) => {
6734
+ const currentSessions = sessions();
6735
+ const session = currentSessions.get(sessionId);
6736
+ const prompt = session?.context.prompt;
6737
+ dismissSession(sessionId);
6738
+ return prompt;
6739
+ };
6641
6740
  const updateSessionBoundsOnViewportChange = () => {
6642
6741
  const currentSessions = sessions();
6643
6742
  if (currentSessions.size === 0) return;
@@ -6681,6 +6780,7 @@ var createAgentManager = (initialAgentOptions) => {
6681
6780
  abortAllSessions,
6682
6781
  dismissSession,
6683
6782
  undoSession,
6783
+ acknowledgeSessionError,
6684
6784
  updateSessionBoundsOnViewportChange,
6685
6785
  getSessionElement,
6686
6786
  setOptions,
@@ -6689,8 +6789,8 @@ var createAgentManager = (initialAgentOptions) => {
6689
6789
  };
6690
6790
 
6691
6791
  // src/core.tsx
6692
- var _tmpl$24 = /* @__PURE__ */ template(`<span class="tabular-nums align-middle">`);
6693
- var _tmpl$25 = /* @__PURE__ */ template(`<span class="font-mono tabular-nums align-middle">&lt;<!>>`);
6792
+ var _tmpl$25 = /* @__PURE__ */ template(`<span class="tabular-nums align-middle">`);
6793
+ var _tmpl$26 = /* @__PURE__ */ template(`<span class="font-mono tabular-nums align-middle">&lt;<!>>`);
6694
6794
  var _tmpl$33 = /* @__PURE__ */ template(`<span class="tabular-nums ml-1 align-middle"> in `);
6695
6795
  var onIdle = (callback) => {
6696
6796
  if ("scheduler" in globalThis) {
@@ -6787,12 +6887,12 @@ var init = (rawOptions) => {
6787
6887
  hasInited = true;
6788
6888
  const logIntro = () => {
6789
6889
  try {
6790
- const version = "0.0.76";
6890
+ const version = "0.0.78";
6791
6891
  const logoDataUri = `data:image/svg+xml;base64,${btoa(LOGO_SVG)}`;
6792
6892
  console.log(`%cReact Grab${version ? ` v${version}` : ""}%c
6793
6893
  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;`, "");
6794
6894
  if (navigator.onLine && version) {
6795
- fetch(`https://www.react-grab.com/api/version?t=${Date.now()}`, {
6895
+ fetch(`https://www.react-grab.com/api/version?source=browser&t=${Date.now()}`, {
6796
6896
  referrerPolicy: "origin",
6797
6897
  keepalive: true,
6798
6898
  priority: "low",
@@ -6906,6 +7006,8 @@ https://react-grab.com`, `background: #330039; color: #ffffff; border: 1px solid
6906
7006
  let keydownSpamTimerId = null;
6907
7007
  let autoScrollAnimationId = null;
6908
7008
  let previouslyFocusedElement = null;
7009
+ let pendingClickTimeoutId = null;
7010
+ let pendingClickData = null;
6909
7011
  const isRendererActive = createMemo(() => isActivated() && !isCopying());
6910
7012
  const getAutoScrollDirection = (clientX, clientY) => {
6911
7013
  return {
@@ -7166,7 +7268,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7166
7268
  const copying = isCopying();
7167
7269
  if (!element) {
7168
7270
  return (() => {
7169
- var _el$ = _tmpl$24();
7271
+ var _el$ = _tmpl$25();
7170
7272
  insert(_el$, copying ? "Processing\u2026" : "1 element");
7171
7273
  return _el$;
7172
7274
  })();
@@ -7175,7 +7277,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7175
7277
  const componentName = labelComponentName();
7176
7278
  if (tagName && componentName) {
7177
7279
  return [(() => {
7178
- var _el$2 = _tmpl$25(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling; _el$5.nextSibling;
7280
+ var _el$2 = _tmpl$26(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling; _el$5.nextSibling;
7179
7281
  insert(_el$2, tagName, _el$5);
7180
7282
  return _el$2;
7181
7283
  })(), (() => {
@@ -7186,13 +7288,13 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7186
7288
  }
7187
7289
  if (tagName) {
7188
7290
  return (() => {
7189
- var _el$8 = _tmpl$25(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
7291
+ var _el$8 = _tmpl$26(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
7190
7292
  insert(_el$8, tagName, _el$1);
7191
7293
  return _el$8;
7192
7294
  })();
7193
7295
  }
7194
7296
  return (() => {
7195
- var _el$10 = _tmpl$24();
7297
+ var _el$10 = _tmpl$25();
7196
7298
  insert(_el$10, copying ? "Processing\u2026" : "1 element");
7197
7299
  return _el$10;
7198
7300
  })();
@@ -7395,6 +7497,20 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7395
7497
  }
7396
7498
  if (holdTimerId) window.clearTimeout(holdTimerId);
7397
7499
  if (keydownSpamTimerId) window.clearTimeout(keydownSpamTimerId);
7500
+ if (pendingClickTimeoutId) {
7501
+ window.clearTimeout(pendingClickTimeoutId);
7502
+ pendingClickTimeoutId = null;
7503
+ const clickData = pendingClickData;
7504
+ pendingClickData = null;
7505
+ if (clickData) {
7506
+ setLastGrabbedElement(clickData.element);
7507
+ const bounds = createElementBounds(clickData.element);
7508
+ const tagName = extractElementTagName(clickData.element);
7509
+ void getNearestComponentName(clickData.element).then((componentName) => {
7510
+ void executeCopyOperation(clickData.clientX, clickData.clientY, () => copySingleElementToClipboard(clickData.element), bounds, tagName, componentName ?? void 0, clickData.element);
7511
+ });
7512
+ }
7513
+ }
7398
7514
  stopAutoScroll();
7399
7515
  stopProgressAnimation();
7400
7516
  activationTimestamp = null;
@@ -7633,12 +7749,55 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7633
7749
  } else {
7634
7750
  const element = getElementAtPosition(clientX, clientY);
7635
7751
  if (!element) return;
7636
- setLastGrabbedElement(element);
7637
- const bounds = createElementBounds(element);
7638
- const tagName = extractElementTagName(element);
7639
- void getNearestComponentName(element).then((componentName) => {
7640
- void executeCopyOperation(clientX, clientY, () => copySingleElementToClipboard(element), bounds, tagName, componentName ?? void 0, element);
7641
- });
7752
+ if (hasAgentProvider()) {
7753
+ if (pendingClickTimeoutId !== null) {
7754
+ window.clearTimeout(pendingClickTimeoutId);
7755
+ pendingClickTimeoutId = null;
7756
+ const clickElement = pendingClickData?.element ?? element;
7757
+ pendingClickData = null;
7758
+ const bounds = createElementBounds(clickElement);
7759
+ const selectionCenterX = bounds.x + bounds.width / 2;
7760
+ setCopyStartX(clientX);
7761
+ setCopyStartY(clientY);
7762
+ setCopyOffsetFromCenterX(clientX - selectionCenterX);
7763
+ const cachedInput = elementInputCache.get(clickElement);
7764
+ if (cachedInput) {
7765
+ setInputText(cachedInput);
7766
+ }
7767
+ setMouseX(clientX);
7768
+ setMouseY(clientY);
7769
+ setFrozenElement(clickElement);
7770
+ setIsToggleMode(true);
7771
+ setIsToggleFrozen(true);
7772
+ setIsInputExpanded(true);
7773
+ setIsInputMode(true);
7774
+ return;
7775
+ }
7776
+ pendingClickData = {
7777
+ clientX,
7778
+ clientY,
7779
+ element
7780
+ };
7781
+ pendingClickTimeoutId = window.setTimeout(() => {
7782
+ pendingClickTimeoutId = null;
7783
+ const clickData = pendingClickData;
7784
+ pendingClickData = null;
7785
+ if (!clickData) return;
7786
+ setLastGrabbedElement(clickData.element);
7787
+ const bounds = createElementBounds(clickData.element);
7788
+ const tagName = extractElementTagName(clickData.element);
7789
+ void getNearestComponentName(clickData.element).then((componentName) => {
7790
+ void executeCopyOperation(clickData.clientX, clickData.clientY, () => copySingleElementToClipboard(clickData.element), bounds, tagName, componentName ?? void 0, clickData.element);
7791
+ });
7792
+ }, DOUBLE_CLICK_THRESHOLD_MS);
7793
+ } else {
7794
+ setLastGrabbedElement(element);
7795
+ const bounds = createElementBounds(element);
7796
+ const tagName = extractElementTagName(element);
7797
+ void getNearestComponentName(element).then((componentName) => {
7798
+ void executeCopyOperation(clientX, clientY, () => copySingleElementToClipboard(element), bounds, tagName, componentName ?? void 0, element);
7799
+ });
7800
+ }
7642
7801
  }
7643
7802
  };
7644
7803
  const abortController = new AbortController();
@@ -7779,7 +7938,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7779
7938
  setIsInputMode(true);
7780
7939
  return;
7781
7940
  }
7782
- if (event.key.toLowerCase() === "o" && !isInputMode()) {
7941
+ if (event.key?.toLowerCase() === "o" && !isInputMode()) {
7783
7942
  if (isActivated() && (event.metaKey || event.ctrlKey)) {
7784
7943
  const filePath = selectionFilePath();
7785
7944
  const lineNumber = selectionLineNumber();
@@ -7872,7 +8031,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7872
8031
  };
7873
8032
  const requiredModifiers = getRequiredModifiers();
7874
8033
  const isReleasingModifier = requiredModifiers.metaKey || requiredModifiers.ctrlKey ? !event.metaKey && !event.ctrlKey : requiredModifiers.shiftKey && !event.shiftKey || requiredModifiers.altKey && !event.altKey;
7875
- 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);
8034
+ 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);
7876
8035
  if (isActivated()) {
7877
8036
  if (isReleasingModifier) {
7878
8037
  if (isToggleMode()) return;
@@ -8088,6 +8247,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8088
8247
  abortController.abort();
8089
8248
  if (holdTimerId) window.clearTimeout(holdTimerId);
8090
8249
  if (keydownSpamTimerId) window.clearTimeout(keydownSpamTimerId);
8250
+ if (pendingClickTimeoutId) window.clearTimeout(pendingClickTimeoutId);
8091
8251
  stopAutoScroll();
8092
8252
  stopProgressAnimation();
8093
8253
  document.body.style.userSelect = "";
@@ -8224,6 +8384,12 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8224
8384
  onAbortSession: (sessionId) => agentManager.abortSession(sessionId),
8225
8385
  onDismissSession: (sessionId) => agentManager.dismissSession(sessionId),
8226
8386
  onUndoSession: (sessionId) => agentManager.undoSession(sessionId),
8387
+ onAcknowledgeSessionError: (sessionId) => {
8388
+ const prompt = agentManager.acknowledgeSessionError(sessionId);
8389
+ if (prompt) {
8390
+ setInputText(prompt);
8391
+ }
8392
+ },
8227
8393
  onInputChange: handleInputChange,
8228
8394
  onInputSubmit: () => void handleInputSubmit(),
8229
8395
  onInputCancel: handleInputCancel,