react-grab 0.0.72 → 0.0.74

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-1{padding-block:calc(var(--spacing)*1)}.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)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-1\\.5{padding-right:calc(var(--spacing)*1.5)}.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-\\[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}}`;
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.72";
1083
+ var VERSION = "0.0.74";
1084
1084
  var VIEWPORT_MARGIN_PX = 8;
1085
1085
  var OFFSCREEN_POSITION = -1e3;
1086
1086
  var SELECTION_LERP_FACTOR = 0.95;
@@ -1088,6 +1088,8 @@ var SUCCESS_LABEL_DURATION_MS = 1700;
1088
1088
  var COPIED_LABEL_DURATION_MS = 1500;
1089
1089
  var SELECTION_CURSOR_SETTLE_DELAY_MS = 500;
1090
1090
  var BLUR_DEACTIVATION_THRESHOLD_MS = 500;
1091
+ var INPUT_FOCUS_ACTIVATION_DELAY_MS = 150;
1092
+ var DEFAULT_KEY_HOLD_DURATION_MS = 200;
1091
1093
  var DRAG_THRESHOLD_PX = 2;
1092
1094
  var ELEMENT_DETECTION_THROTTLE_MS = 32;
1093
1095
  var BOUNDS_RECALC_INTERVAL_MS = 100;
@@ -3808,7 +3810,7 @@ var Crosshair = (props) => {
3808
3810
  var useSpeechRecognition = (options) => {
3809
3811
  let speechRecognition;
3810
3812
  const [isListening, setIsListening] = createSignal(false);
3811
- const isSupported = () => typeof window !== "undefined" && (!!window.SpeechRecognition || !!window.webkitSpeechRecognition);
3813
+ const isSupported = () => typeof window !== "undefined" && (Boolean(window.SpeechRecognition) || Boolean(window.webkitSpeechRecognition));
3812
3814
  const start = () => {
3813
3815
  if (!isSupported()) return;
3814
3816
  const SpeechRecognitionConstructor = window.SpeechRecognition || window.webkitSpeechRecognition;
@@ -3951,18 +3953,21 @@ var _tmpl$52 = /* @__PURE__ */ template(`<div role=button><div class="text-black
3951
3953
  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
3954
  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
3955
  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(`<div class="[font-synthesis:none] contain-layout shrink-0 flex items-center gap-1 rounded-xs bg-white antialiased w-fit h-fit py-1 px-1.5"><div class="contain-layout shrink-0 flex items-center px-0 py-px w-fit h-[18px] rounded-[1.5px] gap-[3px]"><div class="text-black text-[12px] leading-4 shrink-0 tracking-[-0.04em] font-sans font-medium w-fit h-fit">`);
3955
- var _tmpl$0 = /* @__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">`);
3956
- var _tmpl$1 = /* @__PURE__ */ template(`<div class="shrink-0 flex justify-between items-end w-full min-h-4"><textarea 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>`);
3957
- var _tmpl$10 = /* @__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">`);
3958
- var _tmpl$11 = /* @__PURE__ */ template(`<div class="contain-layout shrink-0 flex items-center gap-px w-fit h-fit">`);
3959
- var _tmpl$12 = /* @__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`);
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"><div></div><div class="grid transition-[grid-template-rows] duration-30 ease-out self-stretch"><div>`);
3961
- var _tmpl$14 = /* @__PURE__ */ template(`<button>`);
3962
- var _tmpl$15 = /* @__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">`);
3963
- var _tmpl$16 = /* @__PURE__ */ template(`<div class="shrink-0 flex justify-between items-end w-full min-h-4"><textarea 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">`);
3964
- var _tmpl$17 = /* @__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>`);
3965
- var _tmpl$18 = /* @__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">`);
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">`);
3966
3971
  var ARROW_HEIGHT = 8;
3967
3972
  var LABEL_GAP = 4;
3968
3973
  var IDLE_TIMEOUT_MS = 400;
@@ -4167,6 +4172,15 @@ var SelectionLabel = (props) => {
4167
4172
  resetIdleTimer();
4168
4173
  }
4169
4174
  });
4175
+ createEffect(() => {
4176
+ void props.tagName;
4177
+ void props.componentName;
4178
+ void props.statusText;
4179
+ void props.inputValue;
4180
+ void props.hasAgent;
4181
+ void props.isInputExpanded;
4182
+ requestAnimationFrame(measureContainer);
4183
+ });
4170
4184
  createEffect(() => {
4171
4185
  if (props.visible) {
4172
4186
  requestAnimationFrame(measureContainer);
@@ -4283,7 +4297,7 @@ var SelectionLabel = (props) => {
4283
4297
  return memo(() => props.visible !== false)() && (props.selectionBounds || shouldShowWithoutBounds());
4284
4298
  },
4285
4299
  get children() {
4286
- var _el$14 = _tmpl$18(), _el$18 = _el$14.firstChild;
4300
+ var _el$14 = _tmpl$21(), _el$21 = _el$14.firstChild;
4287
4301
  _el$14.$$click = stopPropagation;
4288
4302
  _el$14.$$mousedown = stopPropagation;
4289
4303
  _el$14.$$pointerdown = handleContainerPointerDown;
@@ -4296,84 +4310,120 @@ var SelectionLabel = (props) => {
4296
4310
  get leftPx() {
4297
4311
  return computedPosition().arrowLeft;
4298
4312
  }
4299
- }), _el$18);
4313
+ }), _el$21);
4300
4314
  insert(_el$14, createComponent(Show, {
4301
4315
  get when() {
4302
4316
  return props.status === "copied" || props.status === "fading";
4303
4317
  },
4304
4318
  get children() {
4305
- var _el$15 = _tmpl$9(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild;
4306
- insert(_el$17, () => props.hasAgent ? "Completed" : "Copied");
4319
+ var _el$15 = _tmpl$10(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild;
4320
+ insert(_el$17, (() => {
4321
+ var _c$ = memo(() => !!props.hasAgent);
4322
+ return () => _c$() ? props.statusText ?? "Completed" : "Copied";
4323
+ })());
4324
+ insert(_el$15, createComponent(Show, {
4325
+ get when() {
4326
+ return props.onDismiss || props.onUndo;
4327
+ },
4328
+ get children() {
4329
+ return createComponent(BottomSection, {
4330
+ get children() {
4331
+ var _el$18 = _tmpl$1();
4332
+ insert(_el$18, createComponent(Show, {
4333
+ get when() {
4334
+ return props.onUndo;
4335
+ },
4336
+ get children() {
4337
+ var _el$19 = _tmpl$9();
4338
+ _el$19.$$click = () => props.onUndo?.();
4339
+ return _el$19;
4340
+ }
4341
+ }), null);
4342
+ insert(_el$18, createComponent(Show, {
4343
+ get when() {
4344
+ return props.onDismiss;
4345
+ },
4346
+ get children() {
4347
+ var _el$20 = _tmpl$0();
4348
+ _el$20.$$click = () => props.onDismiss?.();
4349
+ return _el$20;
4350
+ }
4351
+ }), null);
4352
+ return _el$18;
4353
+ }
4354
+ });
4355
+ }
4356
+ }), null);
4307
4357
  return _el$15;
4308
4358
  }
4309
- }), _el$18);
4310
- insert(_el$18, createComponent(Show, {
4359
+ }), _el$21);
4360
+ insert(_el$21, createComponent(Show, {
4311
4361
  get when() {
4312
4362
  return props.status === "copying";
4313
4363
  },
4314
4364
  get children() {
4315
- var _el$19 = _tmpl$10(), _el$20 = _el$19.firstChild, _el$21 = _el$20.firstChild, _el$22 = _el$21.firstChild;
4316
- insert(_el$22, () => props.statusText ?? "Grabbing\u2026");
4317
- insert(_el$19, createComponent(BottomSection, {
4365
+ var _el$22 = _tmpl$13(), _el$23 = _el$22.firstChild, _el$24 = _el$23.firstChild, _el$25 = _el$24.firstChild;
4366
+ insert(_el$25, () => props.statusText ?? "Grabbing\u2026");
4367
+ insert(_el$22, createComponent(BottomSection, {
4318
4368
  get children() {
4319
- var _el$23 = _tmpl$1(), _el$24 = _el$23.firstChild;
4369
+ var _el$26 = _tmpl$12(), _el$27 = _el$26.firstChild;
4320
4370
  var _ref$2 = inputRef;
4321
- typeof _ref$2 === "function" ? use(_ref$2, _el$24) : inputRef = _el$24;
4322
- insert(_el$23, createComponent(Show, {
4371
+ typeof _ref$2 === "function" ? use(_ref$2, _el$27) : inputRef = _el$27;
4372
+ insert(_el$26, createComponent(Show, {
4323
4373
  get when() {
4324
4374
  return props.onAbort;
4325
4375
  },
4326
4376
  get children() {
4327
- var _el$25 = _tmpl$0();
4328
- _el$25.$$click = (event) => {
4377
+ var _el$28 = _tmpl$11();
4378
+ _el$28.$$click = (event) => {
4329
4379
  event.stopPropagation();
4330
4380
  props.onAbort?.();
4331
4381
  };
4332
- _el$25.$$pointerup = (event) => {
4382
+ _el$28.$$pointerup = (event) => {
4333
4383
  event.stopPropagation();
4334
4384
  props.onAbort?.();
4335
4385
  };
4336
- _el$25.$$mousedown = (event) => event.stopPropagation();
4337
- _el$25.$$pointerdown = (event) => event.stopPropagation();
4338
- return _el$25;
4386
+ _el$28.$$mousedown = (event) => event.stopPropagation();
4387
+ _el$28.$$pointerdown = (event) => event.stopPropagation();
4388
+ return _el$28;
4339
4389
  }
4340
4390
  }), null);
4341
- createRenderEffect(() => _el$24.value = props.inputValue ?? "");
4342
- return _el$23;
4391
+ createRenderEffect(() => _el$27.value = props.inputValue ?? "");
4392
+ return _el$26;
4343
4393
  }
4344
4394
  }), null);
4345
- return _el$19;
4395
+ return _el$22;
4346
4396
  }
4347
4397
  }), null);
4348
- insert(_el$18, createComponent(Show, {
4398
+ insert(_el$21, createComponent(Show, {
4349
4399
  get when() {
4350
4400
  return memo(() => !!isNotProcessing())() && !props.isInputExpanded;
4351
4401
  },
4352
4402
  get children() {
4353
- var _el$26 = _tmpl$13(), _el$27 = _el$26.firstChild, _el$29 = _el$27.nextSibling, _el$30 = _el$29.firstChild;
4354
- insert(_el$27, createComponent(ClickToCopyPill, {
4403
+ var _el$29 = _tmpl$16(), _el$30 = _el$29.firstChild, _el$32 = _el$30.nextSibling, _el$33 = _el$32.firstChild;
4404
+ insert(_el$30, createComponent(ClickToCopyPill, {
4355
4405
  onClick: handleSubmit,
4356
4406
  shrink: true,
4357
4407
  get hasParent() {
4358
- return !!props.componentName;
4408
+ return Boolean(props.componentName);
4359
4409
  },
4360
4410
  get hasAgent() {
4361
4411
  return props.hasAgent;
4362
4412
  }
4363
4413
  }), null);
4364
- insert(_el$27, createComponent(Show, {
4414
+ insert(_el$30, createComponent(Show, {
4365
4415
  get when() {
4366
4416
  return props.componentName;
4367
4417
  },
4368
4418
  get children() {
4369
- var _el$28 = _tmpl$11();
4370
- insert(_el$28, createComponent(ParentBadge, {
4419
+ var _el$31 = _tmpl$14();
4420
+ insert(_el$31, createComponent(ParentBadge, {
4371
4421
  get name() {
4372
4422
  return props.componentName;
4373
4423
  }
4374
4424
  }), null);
4375
- insert(_el$28, createComponent(ChevronSeparator, {}), null);
4376
- insert(_el$28, createComponent(TagBadge, {
4425
+ insert(_el$31, createComponent(ChevronSeparator, {}), null);
4426
+ insert(_el$31, createComponent(TagBadge, {
4377
4427
  get tagName() {
4378
4428
  return tagDisplay();
4379
4429
  },
@@ -4385,10 +4435,10 @@ var SelectionLabel = (props) => {
4385
4435
  showMono: true,
4386
4436
  shrink: true
4387
4437
  }), null);
4388
- return _el$28;
4438
+ return _el$31;
4389
4439
  }
4390
4440
  }), null);
4391
- insert(_el$27, createComponent(Show, {
4441
+ insert(_el$30, createComponent(Show, {
4392
4442
  get when() {
4393
4443
  return !props.componentName;
4394
4444
  },
@@ -4407,60 +4457,60 @@ var SelectionLabel = (props) => {
4407
4457
  });
4408
4458
  }
4409
4459
  }), null);
4410
- insert(_el$30, createComponent(BottomSection, {
4460
+ insert(_el$33, createComponent(BottomSection, {
4411
4461
  get children() {
4412
- var _el$31 = _tmpl$12(), _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling;
4413
- insert(_el$33, createComponent(IconReturn, {
4462
+ var _el$34 = _tmpl$15(), _el$35 = _el$34.firstChild, _el$36 = _el$35.nextSibling;
4463
+ insert(_el$36, createComponent(IconReturn, {
4414
4464
  size: 10,
4415
4465
  "class": "opacity-[0.99] text-black"
4416
4466
  }));
4417
- return _el$31;
4467
+ return _el$34;
4418
4468
  }
4419
4469
  }));
4420
4470
  createRenderEffect((_p$) => {
4421
4471
  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");
4422
- _v$3 !== _p$.e && className(_el$27, _p$.e = _v$3);
4423
- _v$4 !== _p$.t && setStyleProperty(_el$29, "grid-template-rows", _p$.t = _v$4);
4424
- _v$5 !== _p$.a && className(_el$30, _p$.a = _v$5);
4472
+ _v$3 !== _p$.e && className(_el$30, _p$.e = _v$3);
4473
+ _v$4 !== _p$.t && setStyleProperty(_el$32, "grid-template-rows", _p$.t = _v$4);
4474
+ _v$5 !== _p$.a && className(_el$33, _p$.a = _v$5);
4425
4475
  return _p$;
4426
4476
  }, {
4427
4477
  e: void 0,
4428
4478
  t: void 0,
4429
4479
  a: void 0
4430
4480
  });
4431
- return _el$26;
4481
+ return _el$29;
4432
4482
  }
4433
4483
  }), null);
4434
- insert(_el$18, createComponent(Show, {
4484
+ insert(_el$21, createComponent(Show, {
4435
4485
  get when() {
4436
4486
  return memo(() => !!(isNotProcessing() && props.isInputExpanded))() && !props.isPendingDismiss;
4437
4487
  },
4438
4488
  get children() {
4439
- var _el$34 = _tmpl$17(), _el$35 = _el$34.firstChild;
4440
- insert(_el$35, createComponent(ClickToCopyPill, {
4489
+ var _el$37 = _tmpl$20(), _el$38 = _el$37.firstChild;
4490
+ insert(_el$38, createComponent(ClickToCopyPill, {
4441
4491
  onClick: handleSubmit,
4442
4492
  dimmed: true,
4443
4493
  shrink: true,
4444
4494
  get hasParent() {
4445
- return !!props.componentName;
4495
+ return Boolean(props.componentName);
4446
4496
  },
4447
4497
  get hasAgent() {
4448
4498
  return props.hasAgent;
4449
4499
  }
4450
4500
  }), null);
4451
- insert(_el$35, createComponent(Show, {
4501
+ insert(_el$38, createComponent(Show, {
4452
4502
  get when() {
4453
4503
  return props.componentName;
4454
4504
  },
4455
4505
  get children() {
4456
- var _el$36 = _tmpl$11();
4457
- insert(_el$36, createComponent(ParentBadge, {
4506
+ var _el$39 = _tmpl$14();
4507
+ insert(_el$39, createComponent(ParentBadge, {
4458
4508
  get name() {
4459
4509
  return props.componentName;
4460
4510
  }
4461
4511
  }), null);
4462
- insert(_el$36, createComponent(ChevronSeparator, {}), null);
4463
- insert(_el$36, createComponent(TagBadge, {
4512
+ insert(_el$39, createComponent(ChevronSeparator, {}), null);
4513
+ insert(_el$39, createComponent(TagBadge, {
4464
4514
  get tagName() {
4465
4515
  return tagDisplay();
4466
4516
  },
@@ -4473,10 +4523,10 @@ var SelectionLabel = (props) => {
4473
4523
  shrink: true,
4474
4524
  forceShowIcon: true
4475
4525
  }), null);
4476
- return _el$36;
4526
+ return _el$39;
4477
4527
  }
4478
4528
  }), null);
4479
- insert(_el$35, createComponent(Show, {
4529
+ insert(_el$38, createComponent(Show, {
4480
4530
  get when() {
4481
4531
  return !props.componentName;
4482
4532
  },
@@ -4496,21 +4546,21 @@ var SelectionLabel = (props) => {
4496
4546
  });
4497
4547
  }
4498
4548
  }), null);
4499
- insert(_el$34, createComponent(BottomSection, {
4549
+ insert(_el$37, createComponent(BottomSection, {
4500
4550
  get children() {
4501
- var _el$37 = _tmpl$16(), _el$38 = _el$37.firstChild, _el$39 = _el$38.nextSibling;
4502
- _el$38.$$keydown = handleKeyDown;
4503
- _el$38.$$input = handleInput;
4551
+ var _el$40 = _tmpl$19(), _el$41 = _el$40.firstChild, _el$42 = _el$41.nextSibling;
4552
+ _el$41.$$keydown = handleKeyDown;
4553
+ _el$41.$$input = handleInput;
4504
4554
  var _ref$3 = inputRef;
4505
- typeof _ref$3 === "function" ? use(_ref$3, _el$38) : inputRef = _el$38;
4506
- insert(_el$39, createComponent(Show, {
4555
+ typeof _ref$3 === "function" ? use(_ref$3, _el$41) : inputRef = _el$41;
4556
+ insert(_el$42, createComponent(Show, {
4507
4557
  get when() {
4508
4558
  return memo(() => !!(props.hasAgent && speechRecognition.isSupported()))() && !props.inputValue;
4509
4559
  },
4510
4560
  get children() {
4511
- var _el$40 = _tmpl$14();
4512
- addEventListener(_el$40, "click", speechRecognition.toggle);
4513
- insert(_el$40, createComponent(IconMic, {
4561
+ var _el$43 = _tmpl$17();
4562
+ addEventListener(_el$43, "click", speechRecognition.toggle);
4563
+ insert(_el$43, createComponent(IconMic, {
4514
4564
  size: 11,
4515
4565
  get ["class"]() {
4516
4566
  return speechRecognition.isListening() ? "animate-pulse" : "";
@@ -4518,40 +4568,40 @@ var SelectionLabel = (props) => {
4518
4568
  }));
4519
4569
  createRenderEffect((_p$) => {
4520
4570
  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";
4521
- _v$6 !== _p$.e && className(_el$40, _p$.e = _v$6);
4522
- _v$7 !== _p$.t && setAttribute(_el$40, "title", _p$.t = _v$7);
4571
+ _v$6 !== _p$.e && className(_el$43, _p$.e = _v$6);
4572
+ _v$7 !== _p$.t && setAttribute(_el$43, "title", _p$.t = _v$7);
4523
4573
  return _p$;
4524
4574
  }, {
4525
4575
  e: void 0,
4526
4576
  t: void 0
4527
4577
  });
4528
- return _el$40;
4578
+ return _el$43;
4529
4579
  }
4530
4580
  }), null);
4531
- insert(_el$39, createComponent(Show, {
4581
+ insert(_el$42, createComponent(Show, {
4532
4582
  get when() {
4533
4583
  return props.inputValue;
4534
4584
  },
4535
4585
  get children() {
4536
- var _el$41 = _tmpl$15();
4537
- _el$41.$$click = handleSubmit;
4538
- insert(_el$41, createComponent(IconReturn, {
4586
+ var _el$44 = _tmpl$18();
4587
+ _el$44.$$click = handleSubmit;
4588
+ insert(_el$44, createComponent(IconReturn, {
4539
4589
  size: 10,
4540
4590
  "class": "opacity-[0.99] text-black"
4541
4591
  }));
4542
- return _el$41;
4592
+ return _el$44;
4543
4593
  }
4544
4594
  }), null);
4545
- createRenderEffect(() => setAttribute(_el$38, "placeholder", speechRecognition.isListening() ? "listening..." : props.hasAgent && props.isAgentConnected ? "type to edit" : "type prompt"));
4546
- createRenderEffect(() => _el$38.value = props.inputValue ?? "");
4547
- return _el$37;
4595
+ createRenderEffect(() => setAttribute(_el$41, "placeholder", speechRecognition.isListening() ? "listening..." : props.hasAgent && props.isAgentConnected ? "type to edit" : "type prompt"));
4596
+ createRenderEffect(() => _el$41.value = props.inputValue ?? "");
4597
+ return _el$40;
4548
4598
  }
4549
4599
  }), null);
4550
- createRenderEffect(() => className(_el$35, 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")));
4551
- return _el$34;
4600
+ 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")));
4601
+ return _el$37;
4552
4602
  }
4553
4603
  }), null);
4554
- insert(_el$18, createComponent(Show, {
4604
+ insert(_el$21, createComponent(Show, {
4555
4605
  get when() {
4556
4606
  return props.isPendingDismiss;
4557
4607
  },
@@ -4567,12 +4617,12 @@ var SelectionLabel = (props) => {
4567
4617
  }
4568
4618
  }), null);
4569
4619
  createRenderEffect((_p$) => {
4570
- var _v$8 = `${computedPosition().top}px`, _v$9 = `${computedPosition().left}px`, _v$0 = props.isInputExpanded ? "auto" : "none", _v$1 = props.status === "fading" ? 0 : 1, _v$10 = props.status === "copied" || props.status === "fading" ? "none" : void 0;
4620
+ 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;
4571
4621
  _v$8 !== _p$.e && setStyleProperty(_el$14, "top", _p$.e = _v$8);
4572
4622
  _v$9 !== _p$.t && setStyleProperty(_el$14, "left", _p$.t = _v$9);
4573
4623
  _v$0 !== _p$.a && setStyleProperty(_el$14, "pointer-events", _p$.a = _v$0);
4574
4624
  _v$1 !== _p$.o && setStyleProperty(_el$14, "opacity", _p$.o = _v$1);
4575
- _v$10 !== _p$.i && setStyleProperty(_el$18, "display", _p$.i = _v$10);
4625
+ _v$10 !== _p$.i && setStyleProperty(_el$21, "display", _p$.i = _v$10);
4576
4626
  return _p$;
4577
4627
  }, {
4578
4628
  e: void 0,
@@ -4588,7 +4638,7 @@ var SelectionLabel = (props) => {
4588
4638
  delegateEvents(["click", "pointerdown", "mousedown", "pointerup", "input", "keydown"]);
4589
4639
 
4590
4640
  // src/components/selection-cursor.tsx
4591
- var _tmpl$19 = /* @__PURE__ */ template(`<div class="fixed z-2147483647"><button data-react-grab-selection-cursor>`);
4641
+ var _tmpl$23 = /* @__PURE__ */ template(`<div class="fixed z-2147483647"><button data-react-grab-selection-cursor>`);
4592
4642
  var SelectionCursor = (props) => {
4593
4643
  const [isHovered, setIsHovered] = createSignal(false);
4594
4644
  const [debouncedVisible, setDebouncedVisible] = createSignal(false);
@@ -4625,7 +4675,7 @@ var SelectionCursor = (props) => {
4625
4675
  });
4626
4676
  }
4627
4677
  }), (() => {
4628
- var _el$ = _tmpl$19(), _el$2 = _el$.firstChild;
4678
+ var _el$ = _tmpl$23(), _el$2 = _el$.firstChild;
4629
4679
  _el$.addEventListener("mouseleave", () => setIsHovered(false));
4630
4680
  _el$.addEventListener("mouseenter", () => setIsHovered(true));
4631
4681
  _el$2.$$click = handleClick;
@@ -4777,7 +4827,13 @@ var ReactGrabRenderer = (props) => {
4777
4827
  get inputValue() {
4778
4828
  return session().context.prompt;
4779
4829
  },
4780
- onAbort: () => props.onAbortSession?.(session().id)
4830
+ onAbort: () => props.onAbortSession?.(session().id),
4831
+ get onDismiss() {
4832
+ return session().isStreaming ? void 0 : () => props.onDismissSession?.(session().id);
4833
+ },
4834
+ get onUndo() {
4835
+ return session().isStreaming ? void 0 : () => props.onUndoSession?.(session().id);
4836
+ }
4781
4837
  })]
4782
4838
  }), createComponent(Show, {
4783
4839
  get when() {
@@ -4907,7 +4963,7 @@ var ReactGrabRenderer = (props) => {
4907
4963
  })];
4908
4964
  };
4909
4965
 
4910
- // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.2_react@19.2.1/node_modules/bippy/dist/rdt-hook-7WClMTWh.js
4966
+ // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.7_react@19.2.1/node_modules/bippy/dist/rdt-hook-7WClMTWh.js
4911
4967
  var e = `0.5.25`;
4912
4968
  var t = `bippy-${e}`;
4913
4969
  var n = Object.defineProperty;
@@ -4995,7 +5051,7 @@ var _ = () => {
4995
5051
  }
4996
5052
  };
4997
5053
 
4998
- // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.2_react@19.2.1/node_modules/bippy/dist/core-CoV0JPOT.js
5054
+ // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.7_react@19.2.1/node_modules/bippy/dist/core-CoV0JPOT.js
4999
5055
  var a2 = 0;
5000
5056
  var o2 = 1;
5001
5057
  var c2 = 5;
@@ -5083,7 +5139,7 @@ var Pe = (e2) => {
5083
5139
  return null;
5084
5140
  };
5085
5141
 
5086
- // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.2_react@19.2.1/node_modules/bippy/dist/source.js
5142
+ // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.7_react@19.2.1/node_modules/bippy/dist/source.js
5087
5143
  var g2 = Object.create;
5088
5144
  var _2 = Object.defineProperty;
5089
5145
  var v = Object.getOwnPropertyDescriptor;
@@ -5725,7 +5781,7 @@ var je = (e2) => {
5725
5781
  // src/utils/is-capitalized.ts
5726
5782
  var isCapitalized = (value) => value.length > 0 && /^[A-Z]/.test(value);
5727
5783
 
5728
- // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.2_react@19.2.1/node_modules/bippy/dist/install-hook-only-CTBENLgG.js
5784
+ // ../../node_modules/.pnpm/bippy@0.5.25_@types+react@19.2.7_react@19.2.1/node_modules/bippy/dist/install-hook-only-CTBENLgG.js
5729
5785
  _();
5730
5786
 
5731
5787
  // src/context.ts
@@ -5888,11 +5944,12 @@ var getHTMLPreview = (element) => {
5888
5944
 
5889
5945
  // src/utils/copy-content.ts
5890
5946
  var REACT_GRAB_MIME_TYPE = "application/x-react-grab";
5891
- var copyContent = (content, onSuccess) => {
5947
+ var copyContent = (content, options) => {
5892
5948
  const metadata = JSON.stringify({
5893
5949
  version: VERSION,
5894
5950
  content,
5895
- timestamp: Date.now()
5951
+ timestamp: Date.now(),
5952
+ ...options?.prompt && { prompt: options.prompt }
5896
5953
  });
5897
5954
  const copyHandler = (event) => {
5898
5955
  event.preventDefault();
@@ -5910,7 +5967,7 @@ var copyContent = (content, onSuccess) => {
5910
5967
  try {
5911
5968
  const didCopySucceed = document.execCommand("copy");
5912
5969
  if (didCopySucceed) {
5913
- onSuccess?.();
5970
+ options?.onSuccess?.();
5914
5971
  }
5915
5972
  return didCopySucceed;
5916
5973
  } finally {
@@ -6364,9 +6421,7 @@ var createAgentManager = (initialAgentOptions) => {
6364
6421
  const isProcessing = () => sessions().size > 0;
6365
6422
  const executeSessionStream = async (session, streamIterator) => {
6366
6423
  const storage = agentOptions?.storage;
6367
- let didComplete = false;
6368
6424
  let wasAborted = false;
6369
- let hadError = false;
6370
6425
  try {
6371
6426
  for await (const status of streamIterator) {
6372
6427
  const currentSessions = sessions();
@@ -6380,13 +6435,16 @@ var createAgentManager = (initialAgentOptions) => {
6380
6435
  setSessions((prev) => new Map(prev).set(session.id, updatedSession));
6381
6436
  agentOptions?.onStatus?.(status, updatedSession);
6382
6437
  }
6383
- didComplete = true;
6384
6438
  const finalSessions = sessions();
6385
6439
  const finalSession = finalSessions.get(session.id);
6386
6440
  if (finalSession) {
6441
+ const completionMessage = agentOptions?.provider?.getCompletionMessage?.();
6387
6442
  const completedSession = updateSession(
6388
6443
  finalSession,
6389
- { isStreaming: false },
6444
+ {
6445
+ isStreaming: false,
6446
+ ...completionMessage ? { lastStatus: completionMessage } : {}
6447
+ },
6390
6448
  storage
6391
6449
  );
6392
6450
  setSessions((prev) => new Map(prev).set(session.id, completedSession));
@@ -6418,7 +6476,6 @@ var createAgentManager = (initialAgentOptions) => {
6418
6476
  setSessions((prev) => new Map(prev).set(session.id, errorSession));
6419
6477
  }
6420
6478
  } else {
6421
- hadError = true;
6422
6479
  if (currentSession) {
6423
6480
  const errorSession = updateSession(
6424
6481
  currentSession,
@@ -6437,7 +6494,7 @@ var createAgentManager = (initialAgentOptions) => {
6437
6494
  }
6438
6495
  } finally {
6439
6496
  abortControllers.delete(session.id);
6440
- const removeSession = () => {
6497
+ if (wasAborted) {
6441
6498
  sessionElements.delete(session.id);
6442
6499
  clearSessionById(session.id, storage);
6443
6500
  setSessions((prev) => {
@@ -6445,11 +6502,6 @@ var createAgentManager = (initialAgentOptions) => {
6445
6502
  next.delete(session.id);
6446
6503
  return next;
6447
6504
  });
6448
- };
6449
- if (wasAborted) {
6450
- removeSession();
6451
- } else if (didComplete || hadError) {
6452
- setTimeout(removeSession, 1500);
6453
6505
  }
6454
6506
  }
6455
6507
  };
@@ -6564,20 +6616,33 @@ var createAgentManager = (initialAgentOptions) => {
6564
6616
  setSessions(/* @__PURE__ */ new Map());
6565
6617
  clearSessions(agentOptions?.storage);
6566
6618
  };
6619
+ const dismissSession = (sessionId) => {
6620
+ const storage = agentOptions?.storage;
6621
+ sessionElements.delete(sessionId);
6622
+ clearSessionById(sessionId, storage);
6623
+ setSessions((prev) => {
6624
+ const next = new Map(prev);
6625
+ next.delete(sessionId);
6626
+ return next;
6627
+ });
6628
+ };
6629
+ const undoSession = (sessionId) => {
6630
+ const currentSessions = sessions();
6631
+ const session = currentSessions.get(sessionId);
6632
+ if (session) {
6633
+ const element = sessionElements.get(sessionId);
6634
+ agentOptions?.onUndo?.(session, element);
6635
+ void agentOptions?.provider?.undo?.();
6636
+ }
6637
+ dismissSession(sessionId);
6638
+ };
6567
6639
  const updateSessionBoundsOnViewportChange = () => {
6568
6640
  const currentSessions = sessions();
6569
6641
  if (currentSessions.size === 0) return;
6570
6642
  const updatedSessions = new Map(currentSessions);
6571
6643
  let didUpdate = false;
6572
6644
  for (const [sessionId, session] of currentSessions) {
6573
- let element = sessionElements.get(sessionId);
6574
- if (!element || !document.contains(element)) {
6575
- const reacquiredElement = tryReacquireElement(session);
6576
- if (reacquiredElement) {
6577
- sessionElements.set(sessionId, reacquiredElement);
6578
- element = reacquiredElement;
6579
- }
6580
- }
6645
+ const element = sessionElements.get(sessionId);
6581
6646
  if (element && document.contains(element)) {
6582
6647
  const newBounds = createElementBounds(element);
6583
6648
  if (newBounds) {
@@ -6612,6 +6677,8 @@ var createAgentManager = (initialAgentOptions) => {
6612
6677
  startSession,
6613
6678
  abortSession,
6614
6679
  abortAllSessions,
6680
+ dismissSession,
6681
+ undoSession,
6615
6682
  updateSessionBoundsOnViewportChange,
6616
6683
  getSessionElement,
6617
6684
  setOptions,
@@ -6620,8 +6687,8 @@ var createAgentManager = (initialAgentOptions) => {
6620
6687
  };
6621
6688
 
6622
6689
  // src/core.tsx
6623
- var _tmpl$20 = /* @__PURE__ */ template(`<span class="tabular-nums align-middle">`);
6624
- var _tmpl$23 = /* @__PURE__ */ template(`<span class="font-mono tabular-nums align-middle">&lt;<!>>`);
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;<!>>`);
6625
6692
  var _tmpl$33 = /* @__PURE__ */ template(`<span class="tabular-nums ml-1 align-middle"> in `);
6626
6693
  var onIdle = (callback) => {
6627
6694
  if ("scheduler" in globalThis) {
@@ -6671,13 +6738,15 @@ var init = (rawOptions) => {
6671
6738
  },
6672
6739
  getTheme: () => initialTheme,
6673
6740
  setAgent: () => {
6741
+ },
6742
+ updateOptions: () => {
6674
6743
  }
6675
6744
  };
6676
6745
  }
6677
6746
  const scriptOptions = getScriptOptions();
6678
- const options = {
6747
+ let options = {
6679
6748
  enabled: true,
6680
- keyHoldDuration: 200,
6749
+ keyHoldDuration: DEFAULT_KEY_HOLD_DURATION_MS,
6681
6750
  allowActivationInsideInput: true,
6682
6751
  maxContextLines: 3,
6683
6752
  ...scriptOptions,
@@ -6708,13 +6777,15 @@ var init = (rawOptions) => {
6708
6777
  },
6709
6778
  getTheme: () => mergedTheme,
6710
6779
  setAgent: () => {
6780
+ },
6781
+ updateOptions: () => {
6711
6782
  }
6712
6783
  };
6713
6784
  }
6714
6785
  hasInited = true;
6715
6786
  const logIntro = () => {
6716
6787
  try {
6717
- const version = "0.0.72";
6788
+ const version = "0.0.74";
6718
6789
  const logoDataUri = `data:image/svg+xml;base64,${btoa(LOGO_SVG)}`;
6719
6790
  console.log(`%cReact Grab${version ? ` v${version}` : ""}%c
6720
6791
  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;`, "");
@@ -6952,7 +7023,9 @@ https://react-grab.com`, `background: #330039; color: #ffffff; border: 1px solid
6952
7023
 
6953
7024
  ${combinedSnippets}` : combinedSnippets;
6954
7025
  copiedContent = plainTextContent;
6955
- didCopy = copyContent(plainTextContent);
7026
+ didCopy = copyContent(plainTextContent, {
7027
+ prompt: extraPrompt
7028
+ });
6956
7029
  }
6957
7030
  if (!didCopy) {
6958
7031
  const plainTextContentOnly = createCombinedTextContent(elements);
@@ -6961,12 +7034,11 @@ ${combinedSnippets}` : combinedSnippets;
6961
7034
 
6962
7035
  ${plainTextContentOnly}` : plainTextContentOnly;
6963
7036
  copiedContent = contentWithPrompt;
6964
- didCopy = copyContent(contentWithPrompt);
7037
+ didCopy = copyContent(contentWithPrompt, {
7038
+ prompt: extraPrompt
7039
+ });
6965
7040
  }
6966
7041
  }
6967
- if (didCopy) {
6968
- options.onCopySuccess?.(elements, copiedContent);
6969
- }
6970
7042
  } catch (error) {
6971
7043
  options.onCopyError?.(error);
6972
7044
  const plainTextContentOnly = createCombinedTextContent(elements);
@@ -6975,9 +7047,14 @@ ${plainTextContentOnly}` : plainTextContentOnly;
6975
7047
 
6976
7048
  ${plainTextContentOnly}` : plainTextContentOnly;
6977
7049
  copiedContent = contentWithPrompt;
6978
- didCopy = copyContent(contentWithPrompt);
7050
+ didCopy = copyContent(contentWithPrompt, {
7051
+ prompt: extraPrompt
7052
+ });
6979
7053
  }
6980
7054
  }
7055
+ if (didCopy) {
7056
+ options.onCopySuccess?.(elements, copiedContent);
7057
+ }
6981
7058
  options.onAfterCopy?.(elements, didCopy);
6982
7059
  return didCopy;
6983
7060
  };
@@ -7027,6 +7104,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7027
7104
  onCleanup(() => clearInterval(intervalId));
7028
7105
  });
7029
7106
  createEffect(() => {
7107
+ if (isToggleFrozen()) return;
7030
7108
  const element = targetElement();
7031
7109
  if (element) {
7032
7110
  setFrozenElement(element);
@@ -7086,7 +7164,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7086
7164
  const copying = isCopying();
7087
7165
  if (!element) {
7088
7166
  return (() => {
7089
- var _el$ = _tmpl$20();
7167
+ var _el$ = _tmpl$24();
7090
7168
  insert(_el$, copying ? "Processing\u2026" : "1 element");
7091
7169
  return _el$;
7092
7170
  })();
@@ -7095,7 +7173,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7095
7173
  const componentName = labelComponentName();
7096
7174
  if (tagName && componentName) {
7097
7175
  return [(() => {
7098
- var _el$2 = _tmpl$23(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling; _el$5.nextSibling;
7176
+ var _el$2 = _tmpl$25(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling; _el$5.nextSibling;
7099
7177
  insert(_el$2, tagName, _el$5);
7100
7178
  return _el$2;
7101
7179
  })(), (() => {
@@ -7106,13 +7184,13 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7106
7184
  }
7107
7185
  if (tagName) {
7108
7186
  return (() => {
7109
- var _el$8 = _tmpl$23(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
7187
+ var _el$8 = _tmpl$25(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
7110
7188
  insert(_el$8, tagName, _el$1);
7111
7189
  return _el$8;
7112
7190
  })();
7113
7191
  }
7114
7192
  return (() => {
7115
- var _el$10 = _tmpl$20();
7193
+ var _el$10 = _tmpl$24();
7116
7194
  insert(_el$10, copying ? "Processing\u2026" : "1 element");
7117
7195
  return _el$10;
7118
7196
  })();
@@ -7242,7 +7320,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7242
7320
  }));
7243
7321
  const startProgressAnimation = (duration) => {
7244
7322
  const startTime = Date.now();
7245
- const animationDuration = options.keyHoldDuration;
7323
+ const animationDuration = options.keyHoldDuration ?? DEFAULT_KEY_HOLD_DURATION_MS;
7246
7324
  setProgressStartTime(startTime);
7247
7325
  const animateProgress = () => {
7248
7326
  const currentStartTime = progressStartTime();
@@ -7324,25 +7402,32 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7324
7402
  previouslyFocusedElement = null;
7325
7403
  options.onDeactivate?.();
7326
7404
  };
7405
+ const restoreInputFromSession = (session, element) => {
7406
+ if (element && document.contains(element)) {
7407
+ const rect = element.getBoundingClientRect();
7408
+ const centerY = rect.top + rect.height / 2;
7409
+ setMouseX(session.position.x);
7410
+ setMouseY(centerY);
7411
+ setFrozenElement(element);
7412
+ setInputText(session.context.prompt);
7413
+ setIsInputExpanded(true);
7414
+ setIsInputMode(true);
7415
+ setIsToggleMode(true);
7416
+ setIsToggleFrozen(true);
7417
+ if (!isActivated()) {
7418
+ activateRenderer();
7419
+ }
7420
+ }
7421
+ };
7327
7422
  const agentOptions = options.agent ? {
7328
7423
  ...options.agent,
7329
7424
  onAbort: (session, element) => {
7330
7425
  options.agent?.onAbort?.(session, element);
7331
- if (element && document.contains(element)) {
7332
- const rect = element.getBoundingClientRect();
7333
- const centerY = rect.top + rect.height / 2;
7334
- setMouseX(session.position.x);
7335
- setMouseY(centerY);
7336
- setFrozenElement(element);
7337
- setInputText(session.context.prompt);
7338
- setIsInputExpanded(true);
7339
- setIsInputMode(true);
7340
- setIsToggleMode(true);
7341
- setIsToggleFrozen(true);
7342
- if (!isActivated()) {
7343
- activateRenderer();
7344
- }
7345
- }
7426
+ restoreInputFromSession(session, element);
7427
+ },
7428
+ onUndo: (session, element) => {
7429
+ options.agent?.onUndo?.(session, element);
7430
+ restoreInputFromSession(session, element);
7346
7431
  }
7347
7432
  } : void 0;
7348
7433
  const agentManager = createAgentManager(agentOptions);
@@ -7631,7 +7716,7 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7631
7716
  }
7632
7717
  }
7633
7718
  const copiedElement = lastCopiedElement();
7634
- if (isEnterCode(event.code) && !isHoldingKeys() && !isInputMode() && !isActivated() && copiedElement && document.contains(copiedElement)) {
7719
+ if (isEnterCode(event.code) && !isHoldingKeys() && !isInputMode() && !isActivated() && copiedElement && document.contains(copiedElement) && !labelInstances().some((instance) => instance.status === "copied" || instance.status === "fading")) {
7635
7720
  event.preventDefault();
7636
7721
  event.stopPropagation();
7637
7722
  event.stopImmediatePropagation();
@@ -7742,9 +7827,11 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7742
7827
  if (!isHoldingKeys()) {
7743
7828
  setIsHoldingKeys(true);
7744
7829
  }
7830
+ const keyHoldDuration = options.keyHoldDuration ?? DEFAULT_KEY_HOLD_DURATION_MS;
7831
+ const activationDuration = isKeyboardEventTriggeredByInput(event) ? keyHoldDuration + INPUT_FOCUS_ACTIVATION_DELAY_MS : keyHoldDuration;
7745
7832
  holdTimerId = window.setTimeout(() => {
7746
7833
  activateRenderer();
7747
- }, options.keyHoldDuration);
7834
+ }, activationDuration);
7748
7835
  }, {
7749
7836
  signal: eventListenerSignal,
7750
7837
  capture: true
@@ -7763,10 +7850,10 @@ ${plainTextContentOnly}` : plainTextContentOnly;
7763
7850
  altKey
7764
7851
  } = options.activationKey;
7765
7852
  return {
7766
- metaKey: !!metaKey,
7767
- ctrlKey: !!ctrlKey,
7768
- shiftKey: !!shiftKey,
7769
- altKey: !!altKey
7853
+ metaKey: Boolean(metaKey),
7854
+ ctrlKey: Boolean(ctrlKey),
7855
+ shiftKey: Boolean(shiftKey),
7856
+ altKey: Boolean(altKey)
7770
7857
  };
7771
7858
  }
7772
7859
  return {
@@ -8128,6 +8215,8 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8128
8215
  return agentManager.sessions();
8129
8216
  },
8130
8217
  onAbortSession: (sessionId) => agentManager.abortSession(sessionId),
8218
+ onDismissSession: (sessionId) => agentManager.dismissSession(sessionId),
8219
+ onUndoSession: (sessionId) => agentManager.undoSession(sessionId),
8131
8220
  onInputChange: handleInputChange,
8132
8221
  onInputSubmit: () => void handleInputSubmit(),
8133
8222
  onInputCancel: handleInputCancel,
@@ -8227,21 +8316,11 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8227
8316
  provider: newAgentOptions.provider ?? existingOptions?.provider,
8228
8317
  onAbort: (session, element) => {
8229
8318
  newAgentOptions?.onAbort?.(session, element);
8230
- if (element && document.contains(element)) {
8231
- const rect = element.getBoundingClientRect();
8232
- const centerY = rect.top + rect.height / 2;
8233
- setMouseX(session.position.x);
8234
- setMouseY(centerY);
8235
- setFrozenElement(element);
8236
- setInputText(session.context.prompt);
8237
- setIsInputExpanded(true);
8238
- setIsInputMode(true);
8239
- setIsToggleMode(true);
8240
- setIsToggleFrozen(true);
8241
- if (!isActivated()) {
8242
- activateRenderer();
8243
- }
8244
- }
8319
+ restoreInputFromSession(session, element);
8320
+ },
8321
+ onUndo: (session, element) => {
8322
+ newAgentOptions?.onUndo?.(session, element);
8323
+ restoreInputFromSession(session, element);
8245
8324
  }
8246
8325
  };
8247
8326
  agentManager.setOptions(mergedOptions);
@@ -8252,6 +8331,12 @@ ${plainTextContentOnly}` : plainTextContentOnly;
8252
8331
  });
8253
8332
  }
8254
8333
  agentManager.tryResumeSessions();
8334
+ },
8335
+ updateOptions: (newOptions) => {
8336
+ options = {
8337
+ ...options,
8338
+ ...newOptions
8339
+ };
8255
8340
  }
8256
8341
  };
8257
8342
  });