@qaiddev/thumbs-embed 1.6.1 → 1.7.0

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.
@@ -1,20 +1,20 @@
1
- import { i as ct, F as ut, T as ht, a as pt, R as bt } from "./annotate-NeITyYNe.js";
2
- const ft = "button{cursor:pointer}.qaid-buttons{display:flex;gap:.5rem}.qaid-buttons.qaid-vertical{flex-direction:column}.qaid-buttons.qaid-auto-container{position:fixed;z-index:50}.qaid-buttons.qaid-auto-container.qaid-bottom-right{bottom:1rem;right:1rem}.qaid-buttons.qaid-auto-container.qaid-bottom-left{bottom:1rem;left:1rem}.qaid-buttons.qaid-auto-container.qaid-top-right{top:1rem;right:1rem}.qaid-buttons.qaid-auto-container.qaid-top-left{top:1rem;left:1rem}.qaid-buttons.qaid-incognito{opacity:0;transition:opacity .2s ease-in-out}.qaid-buttons.qaid-incognito:hover{opacity:1}.qaid-buttons.qaid-dismissed{display:none!important}.qaid-dismiss-btn{width:20px;height:20px;padding:0;border:none;border-radius:50%;background:#0006;color:#fff;display:flex;align-items:center;justify-content:center;align-self:center;opacity:0;transition:opacity .15s,background .15s;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none}.qaid-dismiss-btn:hover{background:#0009}.qaid-buttons:hover .qaid-dismiss-btn{opacity:1}button.qaid-btn-structural{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-appearance:none;appearance:none}.qaid-icon{width:24px;height:24px}.qaid-btn-structural:not(:has(svg)),.qaid-btn:not(:has(svg)){font-size:var(--qaid-icon-size, 24px);line-height:1}.qaid-emoji-icon{font-size:var(--qaid-icon-size, 24px);line-height:1}.qaid-buttons,.qaid-buttons *,.qaid-modal-container,.qaid-modal-container *{cursor:pointer!important}.qaid-tooltip-wrapper{position:relative}.qaid-tooltip-text{position:fixed;padding:.5rem .75rem;background:#1f2937;color:#fff;font-size:1rem;font-weight:600;border-radius:.5rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:99999}.qaid-tooltip-text.qaid-tooltip-visible{opacity:1}.qaid-targeting-overlay{position:fixed;inset:0;z-index:40;pointer-events:none}.qaid-capture-layer{position:fixed;inset:0;pointer-events:none;z-index:9999}@keyframes qaid-slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.qaid-vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.3) 70%,rgba(0,0,0,.6) 100%);z-index:41}.qaid-crosshair-h,.qaid-crosshair-v{position:fixed;pointer-events:none;z-index:42}.qaid-crosshair-h{left:0;right:0;height:1px;background:color-mix(in srgb,var(--qaid-negative) 60%,transparent)}.qaid-crosshair-v{top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--qaid-negative) 60%,transparent)}.qaid-type-up .qaid-crosshair-h,.qaid-type-up .qaid-crosshair-v{background:color-mix(in srgb,var(--qaid-positive) 60%,transparent)}.qaid-highlight-box{position:fixed;top:0;left:0;pointer-events:none;z-index:41;display:none;border:3px solid color-mix(in srgb,var(--qaid-negative) 80%,transparent);border-radius:2px;background:color-mix(in srgb,var(--qaid-negative) 8%,transparent);will-change:transform,width,height}.qaid-type-up .qaid-highlight-box{border-color:color-mix(in srgb,var(--qaid-positive) 80%,transparent);background:color-mix(in srgb,var(--qaid-positive) 8%,transparent)}.qaid-scope{position:fixed;width:80px;height:80px;pointer-events:none;z-index:43;transform:translate(-50%,-50%)}.qaid-scope-ring{position:absolute;inset:10px;border:2px solid color-mix(in srgb,var(--qaid-negative) 80%,transparent);border-radius:50%}.qaid-type-up .qaid-scope-ring{border-color:color-mix(in srgb,var(--qaid-positive) 80%,transparent)}.qaid-scope-ring-inner{position:absolute;inset:20px;border:1px solid color-mix(in srgb,var(--qaid-negative) 50%,transparent);border-radius:50%}.qaid-type-up .qaid-scope-ring-inner{border-color:color-mix(in srgb,var(--qaid-positive) 50%,transparent)}.qaid-scope-dot{position:absolute;top:50%;left:50%;width:4px;height:4px;background:var(--qaid-negative);border-radius:50%;transform:translate(-50%,-50%)}.qaid-type-up .qaid-scope-dot{background:var(--qaid-positive)}.qaid-selected-marker{position:fixed;border:3px solid var(--qaid-marker, #6366f1);border-radius:50%;pointer-events:none;z-index:44;animation:qaid-markerPulse 1.5s ease-in-out infinite}@keyframes qaid-markerPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}.qaid-backdrop{position:fixed;inset:0;z-index:45;background:#0000004d}.qaid-modal-container{position:fixed;z-index:50;display:flex;flex-direction:column;align-items:flex-start;max-height:calc(100vh - 32px);font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-modal-container.qaid-above{flex-direction:column-reverse}.qaid-modal-arrow{width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;position:relative;align-self:flex-start}.qaid-modal-container.qaid-below .qaid-modal-arrow{border-bottom:12px solid light-dark(#ffffff,#1f2937)}.qaid-modal-container.qaid-above .qaid-modal-arrow{border-top:12px solid light-dark(#ffffff,#1f2937)}.qaid-modal-box{color-scheme:inherit;background:light-dark(#ffffff,#1f2937);border-radius:1rem;padding:1.5rem;box-shadow:0 25px 50px -12px light-dark(rgba(0,0,0,.25),rgba(0,0,0,.5));width:var(--qaid-modal-width, 400px);max-width:calc(100vw - 32px);max-height:calc(100vh - 60px);overflow-y:auto}.qaid-modal-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}button.qaid-type-toggle{border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;flex-shrink:0;-webkit-appearance:none;appearance:none}button.qaid-type-toggle:hover{transform:scale(1.1)}button.qaid-type-toggle:not(.qaid-type-toggle-custom){width:2.5rem;height:2.5rem;border-radius:50%}button.qaid-type-toggle:not(.qaid-type-toggle-custom) svg{width:1.25rem;height:1.25rem}button.qaid-type-toggle.qaid-type-up{background:var(--qaid-positive);color:#fff}button.qaid-type-toggle.qaid-type-down{background:var(--qaid-negative);color:#fff}.qaid-type-static{width:2.5rem;height:2.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--qaid-marker, #6366f1);color:var(--qaid-marker-text, white)}.qaid-type-static svg{width:1.25rem;height:1.25rem}.qaid-modal-header-text{flex:1;min-width:0}.qaid-modal-title{font-size:1.125rem;font-weight:700;margin:0 0 .25rem;color:light-dark(#1f2937,#f9fafb)}.qaid-modal-subtitle{color:light-dark(#6b7280,#9ca3af);margin:0;font-size:.875rem}.qaid-textarea{width:100%;height:6rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:1rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box;background:light-dark(#ffffff,#111827);color:light-dark(#1f2937,#f9fafb)}.qaid-textarea:focus{outline:none;border-color:var(--qaid-marker);box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 20%,transparent)}.qaid-btn-row{display:flex;gap:.5rem;justify-content:flex-end}button.qaid-btn-submit{padding:.5rem 1rem;background:var(--qaid-marker);color:var(--qaid-marker-text, white);border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s,filter .2s;-webkit-appearance:none;appearance:none}button.qaid-btn-submit:hover{filter:brightness(.85)}button.qaid-btn-submit:focus{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 30%,transparent)}.qaid-bottom-sheet{position:fixed;bottom:0;left:0;right:0;z-index:50;animation:qaid-slideUpSheet .3s ease-out;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-bottom-sheet-content{background:light-dark(#ffffff,#1f2937);border-radius:1rem 1rem 0 0;padding:1.5rem;padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}.qaid-bottom-sheet-handle{width:36px;height:4px;background:light-dark(rgba(0,0,0,.2),rgba(255,255,255,.2));border-radius:2px;margin:0 auto 1rem}@keyframes qaid-slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}button.qaid-btn-record:hover{background:#dc2626;color:#fff}.qaid-recording-indicator{position:fixed;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:light-dark(#1f2937,#374151);color:#fff;border-radius:9999px;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:.875rem;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:99999;animation:qaid-slideDown .2s ease-out}.qaid-recording-dot{width:10px;height:10px;background:#dc2626;border-radius:50%;animation:qaid-dotPulse 1.5s ease-in-out infinite}@keyframes qaid-dotPulse{0%,to{opacity:1}50%{opacity:.3}}.qaid-recording-time{font-variant-numeric:tabular-nums;min-width:2.5rem;text-align:center}button.qaid-recording-stop{padding:.25rem .75rem;background:#dc2626;color:#fff;border:none;border-radius:9999px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background-color .2s;-webkit-appearance:none;appearance:none}button.qaid-recording-stop:hover{background:#b91c1c}.qaid-video-preview{position:fixed;inset:0 0 auto;height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:#0009;z-index:99998;animation:qaid-fadeIn .2s ease-out}@keyframes qaid-fadeIn{0%{opacity:0}to{opacity:1}}.qaid-video-preview-box{color-scheme:inherit;background:light-dark(#ffffff,#1f2937);border-radius:1rem;padding:1.5rem;box-shadow:0 25px 50px -12px #00000080;width:560px;max-width:100%;max-height:100%;overflow-y:auto;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-video-preview-box h3{font-size:1.125rem;font-weight:700;margin:0 0 1rem;color:light-dark(#1f2937,#f9fafb)}.qaid-video-preview-box video{width:100%;max-height:50vh;max-height:50dvh;object-fit:contain;border-radius:.5rem;background:#000;margin-bottom:1rem}.qaid-video-preview-box textarea{width:100%;height:4rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:.875rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box;background:light-dark(#ffffff,#111827);color:light-dark(#1f2937,#f9fafb)}.qaid-video-preview-box textarea:focus{outline:none;border-color:var(--qaid-marker);box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 20%,transparent)}.qaid-video-preview-actions{display:flex;gap:.5rem;justify-content:flex-end}button.qaid-video-btn{padding:.5rem 1rem;border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s,filter .2s;-webkit-appearance:none;appearance:none}button.qaid-video-btn-cancel{background:light-dark(#f3f4f6,#374151);color:light-dark(#374151,#d1d5db)}button.qaid-video-btn-cancel:hover{background:light-dark(#e5e7eb,#4b5563)}button.qaid-video-btn-rerecord{background:light-dark(#fef3c7,#78350f);color:light-dark(#92400e,#fde68a)}button.qaid-video-btn-rerecord:hover{filter:brightness(.9)}button.qaid-video-btn-send{background:var(--qaid-marker);color:var(--qaid-marker-text, white)}button.qaid-video-btn-send:hover{filter:brightness(.85)}button.qaid-video-btn-send:disabled{opacity:.5;cursor:not-allowed}.qaid-video-sending{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:light-dark(#6b7280,#9ca3af)}.qaid-annotate{position:fixed;inset:0;z-index:2147483000;display:flex;flex-direction:column;gap:.75rem;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:#000000d9;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px);animation:qaid-fadeIn .2s ease-out}.qaid-annotate-title{margin:0;font-size:1rem;font-weight:700;text-align:center;color:#f9fafb}.qaid-annotate-desc{margin:0;font-size:.8125rem;line-height:1.4;text-align:center;color:#f9fafbbf}.qaid-annotate-stage{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto}.qaid-annotate-canvas{max-width:100%;max-height:100%;object-fit:contain;background:light-dark(#ffffff,#111827);border-radius:.5rem;box-shadow:0 10px 30px #00000080;touch-action:none;cursor:crosshair}.qaid-annotate-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:center;padding:.5rem .75rem;background:light-dark(#ffffff,#1f2937);border-radius:.75rem;box-shadow:0 10px 30px light-dark(rgba(0,0,0,.25),rgba(0,0,0,.5))}.qaid-annotate-tools,.qaid-annotate-actions{display:flex;gap:.375rem;align-items:center}button.qaid-annotate-tool,button.qaid-annotate-action{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:44px;min-height:44px;padding:0 .75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;background:light-dark(#f9fafb,#111827);color:light-dark(#1f2937,#f9fafb);font-family:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;-webkit-appearance:none;appearance:none;transition:background-color .15s,color .15s,border-color .15s,filter .15s}button.qaid-annotate-tool svg,button.qaid-annotate-action svg{width:20px;height:20px}.qaid-annotate-colors{display:flex;gap:.25rem;align-items:center}button.qaid-annotate-swatch{width:28px;height:28px;min-width:28px;padding:0;border-radius:9999px;border:2px solid light-dark(#d1d5db,#4b5563);background:var(--qaid-swatch, #000);cursor:pointer;-webkit-appearance:none;appearance:none;transition:transform .1s,box-shadow .15s,border-color .15s}button.qaid-annotate-swatch:hover{transform:scale(1.12)}button.qaid-annotate-swatch[aria-pressed=true]{border-color:light-dark(#111827,#f9fafb);box-shadow:0 0 0 2px var(--qaid-swatch)}@media(forced-colors:active){button.qaid-annotate-swatch[aria-pressed=true]{outline:2px solid Highlight;outline-offset:1px}}button.qaid-annotate-tool:hover,button.qaid-annotate-action:hover{background:light-dark(#eef2ff,#312e81)}button.qaid-annotate-tool[aria-pressed=true],button.qaid-annotate-done{background:var(--qaid-marker, #6366f1);color:var(--qaid-marker-text, #fff);border-color:var(--qaid-marker, #6366f1)}button.qaid-annotate-done:hover{filter:brightness(.9);background:var(--qaid-marker, #6366f1)}button.qaid-annotate-action:disabled{opacity:.45;cursor:not-allowed}@media(forced-colors:active){button.qaid-annotate-tool[aria-pressed=true],button.qaid-annotate-done{border:2px solid Highlight}.qaid-annotate-canvas{border:1px solid CanvasText}}button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible{outline:2px solid var(--qaid-marker, #6366f1);outline-offset:2px}.qaid-textarea:focus-visible,button.qaid-btn-submit:focus-visible,.qaid-video-preview-box textarea:focus-visible{outline:2px solid var(--qaid-marker, #6366f1);outline-offset:2px}.qaid-buttons.qaid-incognito:focus-within{opacity:1}.qaid-buttons:focus-within .qaid-dismiss-btn,.qaid-dismiss-btn:focus-visible{opacity:1}.qaid-dismiss-btn{min-width:24px;min-height:24px}button.qaid-recording-stop{min-height:24px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,.qaid-textarea:focus,button.qaid-btn-submit:focus,.qaid-video-preview-box textarea:focus{outline:2px solid CanvasText;outline-offset:2px}.qaid-selected-marker,.qaid-highlight-box{border-color:Highlight}}", mt = "body.qaid-targeting,body.qaid-targeting *{cursor:none!important}";
3
- let f = 0;
4
- const gt = "button.qaid-btn{width:var(--qaid-btn-size);height:var(--qaid-btn-size);border-radius:50%;border:none;background:#f3f4f6;color:#374151;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:background-color .2s,color .2s,transform .2s;-webkit-appearance:none;appearance:none;--qaid-hover-up-bg:var(--qaid-positive);--qaid-hover-up-color:#fff;--qaid-hover-down-bg:var(--qaid-negative);--qaid-hover-down-color:#fff}button.qaid-btn:hover{transform:scale(1.05)}button.qaid-btn-up:hover{background:var(--qaid-hover-up-bg);color:var(--qaid-hover-up-color)}button.qaid-btn-down:hover{background:var(--qaid-hover-down-bg);color:var(--qaid-hover-down-color)}button.qaid-btn-feedback:hover{background:var(--qaid-marker,#6366f1);color:var(--qaid-marker-text,#fff)}button.qaid-btn svg{width:var(--qaid-icon-size);height:var(--qaid-icon-size)}", vt = {
1
+ import { i as pt, F as bt, T as mt, a as gt, R as vt } from "./annotate-CMq95aXG.js";
2
+ const yt = "button{cursor:pointer}.qaid-buttons{display:flex;gap:.5rem}.qaid-buttons.qaid-vertical{flex-direction:column}.qaid-buttons.qaid-auto-container{position:fixed;z-index:50}.qaid-buttons.qaid-auto-container.qaid-bottom-right{bottom:1rem;right:1rem}.qaid-buttons.qaid-auto-container.qaid-bottom-left{bottom:1rem;left:1rem}.qaid-buttons.qaid-auto-container.qaid-top-right{top:1rem;right:1rem}.qaid-buttons.qaid-auto-container.qaid-top-left{top:1rem;left:1rem}.qaid-buttons.qaid-incognito{opacity:0;transition:opacity .2s ease-in-out}.qaid-buttons.qaid-incognito:hover{opacity:1}.qaid-buttons.qaid-dismissed{display:none!important}.qaid-dismiss-btn{width:20px;height:20px;padding:0;border:none;border-radius:50%;background:#0006;color:#fff;display:flex;align-items:center;justify-content:center;align-self:center;opacity:0;transition:opacity .15s,background .15s;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none}.qaid-dismiss-btn:hover{background:#0009}.qaid-buttons:hover .qaid-dismiss-btn{opacity:1}button.qaid-btn-structural{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-appearance:none;appearance:none}.qaid-icon{width:24px;height:24px}.qaid-btn-structural:not(:has(svg)),.qaid-btn:not(:has(svg)){font-size:var(--qaid-icon-size, 24px);line-height:1}.qaid-emoji-icon{font-size:var(--qaid-icon-size, 24px);line-height:1}.qaid-buttons,.qaid-buttons *,.qaid-modal-container,.qaid-modal-container *{cursor:pointer!important}.qaid-tooltip-wrapper{position:relative}.qaid-tooltip-text{position:fixed;padding:.5rem .75rem;background:#1f2937;color:#fff;font-size:1rem;font-weight:600;border-radius:.5rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:99999}.qaid-tooltip-text.qaid-tooltip-visible{opacity:1}.qaid-targeting-overlay{position:fixed;inset:0;z-index:40;pointer-events:none}.qaid-capture-layer{position:fixed;inset:0;pointer-events:none;z-index:9999}@keyframes qaid-slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.qaid-vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.3) 70%,rgba(0,0,0,.6) 100%);z-index:41}.qaid-crosshair-h,.qaid-crosshair-v{position:fixed;pointer-events:none;z-index:42}.qaid-crosshair-h{left:0;right:0;height:1px;background:color-mix(in srgb,var(--qaid-negative) 60%,transparent)}.qaid-crosshair-v{top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--qaid-negative) 60%,transparent)}.qaid-type-up .qaid-crosshair-h,.qaid-type-up .qaid-crosshair-v{background:color-mix(in srgb,var(--qaid-positive) 60%,transparent)}.qaid-highlight-box{position:fixed;top:0;left:0;pointer-events:none;z-index:41;display:none;border:3px solid color-mix(in srgb,var(--qaid-negative) 80%,transparent);border-radius:2px;background:color-mix(in srgb,var(--qaid-negative) 8%,transparent);will-change:transform,width,height}.qaid-type-up .qaid-highlight-box{border-color:color-mix(in srgb,var(--qaid-positive) 80%,transparent);background:color-mix(in srgb,var(--qaid-positive) 8%,transparent)}.qaid-scope{position:fixed;width:80px;height:80px;pointer-events:none;z-index:43;transform:translate(-50%,-50%)}.qaid-scope-ring{position:absolute;inset:10px;border:2px solid color-mix(in srgb,var(--qaid-negative) 80%,transparent);border-radius:50%}.qaid-type-up .qaid-scope-ring{border-color:color-mix(in srgb,var(--qaid-positive) 80%,transparent)}.qaid-scope-ring-inner{position:absolute;inset:20px;border:1px solid color-mix(in srgb,var(--qaid-negative) 50%,transparent);border-radius:50%}.qaid-type-up .qaid-scope-ring-inner{border-color:color-mix(in srgb,var(--qaid-positive) 50%,transparent)}.qaid-scope-dot{position:absolute;top:50%;left:50%;width:4px;height:4px;background:var(--qaid-negative);border-radius:50%;transform:translate(-50%,-50%)}.qaid-type-up .qaid-scope-dot{background:var(--qaid-positive)}.qaid-selected-marker{position:fixed;border:3px solid var(--qaid-marker, #6366f1);border-radius:50%;pointer-events:none;z-index:44;animation:qaid-markerPulse 1.5s ease-in-out infinite}@keyframes qaid-markerPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}.qaid-backdrop{position:fixed;inset:0;z-index:45;background:#0000004d}.qaid-modal-container{position:fixed;z-index:50;display:flex;flex-direction:column;align-items:flex-start;max-height:calc(100vh - 32px);font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-modal-container.qaid-above{flex-direction:column-reverse}.qaid-modal-arrow{width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;position:relative;align-self:flex-start}.qaid-modal-container.qaid-below .qaid-modal-arrow{border-bottom:12px solid light-dark(#ffffff,#1f2937)}.qaid-modal-container.qaid-above .qaid-modal-arrow{border-top:12px solid light-dark(#ffffff,#1f2937)}.qaid-modal-box{color-scheme:inherit;background:light-dark(#ffffff,#1f2937);border-radius:1rem;padding:1.5rem;box-shadow:0 25px 50px -12px light-dark(rgba(0,0,0,.25),rgba(0,0,0,.5));width:var(--qaid-modal-width, 400px);max-width:calc(100vw - 32px);max-height:calc(100vh - 60px);overflow-y:auto}.qaid-modal-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}button.qaid-type-toggle{border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;flex-shrink:0;-webkit-appearance:none;appearance:none}button.qaid-type-toggle:hover{transform:scale(1.1)}button.qaid-type-toggle:not(.qaid-type-toggle-custom){width:2.5rem;height:2.5rem;border-radius:50%}button.qaid-type-toggle:not(.qaid-type-toggle-custom) svg{width:1.25rem;height:1.25rem}button.qaid-type-toggle.qaid-type-up{background:var(--qaid-positive);color:#fff}button.qaid-type-toggle.qaid-type-down{background:var(--qaid-negative);color:#fff}.qaid-type-static{width:2.5rem;height:2.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--qaid-marker, #6366f1);color:var(--qaid-marker-text, white)}.qaid-type-static svg{width:1.25rem;height:1.25rem}.qaid-modal-header-text{flex:1;min-width:0}.qaid-modal-title{font-size:1.125rem;font-weight:700;margin:0 0 .25rem;color:light-dark(#1f2937,#f9fafb)}.qaid-modal-subtitle{color:light-dark(#6b7280,#9ca3af);margin:0;font-size:.875rem}.qaid-textarea{width:100%;height:6rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:1rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box;background:light-dark(#ffffff,#111827);color:light-dark(#1f2937,#f9fafb)}.qaid-textarea:focus{outline:none;border-color:var(--qaid-marker);box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 20%,transparent)}.qaid-btn-row{display:flex;gap:.5rem;justify-content:flex-end}button.qaid-btn-submit{padding:.5rem 1rem;background:var(--qaid-marker);color:var(--qaid-marker-text, white);border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s,filter .2s;-webkit-appearance:none;appearance:none}button.qaid-btn-submit:hover{filter:brightness(.85)}button.qaid-btn-submit:focus{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 30%,transparent)}.qaid-bottom-sheet{position:fixed;bottom:0;left:0;right:0;z-index:50;animation:qaid-slideUpSheet .3s ease-out;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-bottom-sheet-content{background:light-dark(#ffffff,#1f2937);border-radius:1rem 1rem 0 0;padding:1.5rem;padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}.qaid-bottom-sheet-handle{width:36px;height:4px;background:light-dark(rgba(0,0,0,.2),rgba(255,255,255,.2));border-radius:2px;margin:0 auto 1rem}@keyframes qaid-slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}button.qaid-btn-record:hover{background:#dc2626;color:#fff}.qaid-recording-indicator{position:fixed;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:light-dark(#1f2937,#374151);color:#fff;border-radius:9999px;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:.875rem;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:99999;animation:qaid-slideDown .2s ease-out}.qaid-recording-dot{width:10px;height:10px;background:#dc2626;border-radius:50%;animation:qaid-dotPulse 1.5s ease-in-out infinite}@keyframes qaid-dotPulse{0%,to{opacity:1}50%{opacity:.3}}.qaid-recording-time{font-variant-numeric:tabular-nums;min-width:2.5rem;text-align:center}button.qaid-recording-stop{padding:.25rem .75rem;background:#dc2626;color:#fff;border:none;border-radius:9999px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background-color .2s;-webkit-appearance:none;appearance:none}button.qaid-recording-stop:hover{background:#b91c1c}.qaid-video-preview{position:fixed;inset:0 0 auto;height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:#0009;z-index:99998;animation:qaid-fadeIn .2s ease-out}@keyframes qaid-fadeIn{0%{opacity:0}to{opacity:1}}.qaid-video-preview-box{color-scheme:inherit;background:light-dark(#ffffff,#1f2937);border-radius:1rem;padding:1.5rem;box-shadow:0 25px 50px -12px #00000080;width:560px;max-width:100%;max-height:100%;overflow-y:auto;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-video-preview-box h3{font-size:1.125rem;font-weight:700;margin:0 0 1rem;color:light-dark(#1f2937,#f9fafb)}.qaid-video-preview-box video{width:100%;max-height:50vh;max-height:50dvh;object-fit:contain;border-radius:.5rem;background:#000;margin-bottom:1rem}.qaid-video-preview-box textarea{width:100%;height:4rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:.875rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box;background:light-dark(#ffffff,#111827);color:light-dark(#1f2937,#f9fafb)}.qaid-video-preview-box textarea:focus{outline:none;border-color:var(--qaid-marker);box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 20%,transparent)}.qaid-video-preview-actions{display:flex;gap:.5rem;justify-content:flex-end}button.qaid-video-btn{padding:.5rem 1rem;border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s,filter .2s;-webkit-appearance:none;appearance:none}button.qaid-video-btn-cancel{background:light-dark(#f3f4f6,#374151);color:light-dark(#374151,#d1d5db)}button.qaid-video-btn-cancel:hover{background:light-dark(#e5e7eb,#4b5563)}button.qaid-video-btn-rerecord{background:light-dark(#fef3c7,#78350f);color:light-dark(#92400e,#fde68a)}button.qaid-video-btn-rerecord:hover{filter:brightness(.9)}button.qaid-video-btn-send{background:var(--qaid-marker);color:var(--qaid-marker-text, white)}button.qaid-video-btn-send:hover{filter:brightness(.85)}button.qaid-video-btn-send:disabled{opacity:.5;cursor:not-allowed}.qaid-video-sending{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:light-dark(#6b7280,#9ca3af)}.qaid-annotate{position:fixed;inset:0;z-index:2147483000;display:flex;flex-direction:column;gap:.75rem;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:#000000d9;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px);animation:qaid-fadeIn .2s ease-out}.qaid-annotate-title{margin:0;font-size:1rem;font-weight:700;text-align:center;color:#f9fafb}.qaid-annotate-desc{margin:0;font-size:.8125rem;line-height:1.4;text-align:center;color:#f9fafbbf}.qaid-annotate-stage{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto}.qaid-annotate-canvas{max-width:100%;max-height:100%;object-fit:contain;background:light-dark(#ffffff,#111827);border-radius:.5rem;box-shadow:0 10px 30px #00000080;touch-action:none;cursor:crosshair}.qaid-annotate-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:center;padding:.5rem .75rem;background:light-dark(#ffffff,#1f2937);border-radius:.75rem;box-shadow:0 10px 30px light-dark(rgba(0,0,0,.25),rgba(0,0,0,.5))}.qaid-annotate-tools,.qaid-annotate-actions{display:flex;gap:.375rem;align-items:center}button.qaid-annotate-tool,button.qaid-annotate-action{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:44px;min-height:44px;padding:0 .75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;background:light-dark(#f9fafb,#111827);color:light-dark(#1f2937,#f9fafb);font-family:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;-webkit-appearance:none;appearance:none;transition:background-color .15s,color .15s,border-color .15s,filter .15s}button.qaid-annotate-tool svg,button.qaid-annotate-action svg{width:20px;height:20px}.qaid-annotate-colors{display:flex;gap:.25rem;align-items:center}button.qaid-annotate-swatch{width:28px;height:28px;min-width:28px;padding:0;border-radius:9999px;border:2px solid light-dark(#d1d5db,#4b5563);background:var(--qaid-swatch, #000);cursor:pointer;-webkit-appearance:none;appearance:none;transition:transform .1s,box-shadow .15s,border-color .15s}button.qaid-annotate-swatch:hover{transform:scale(1.12)}button.qaid-annotate-swatch[aria-pressed=true]{border-color:light-dark(#111827,#f9fafb);box-shadow:0 0 0 2px var(--qaid-swatch)}@media(forced-colors:active){button.qaid-annotate-swatch[aria-pressed=true]{outline:2px solid Highlight;outline-offset:1px}}button.qaid-annotate-tool:hover,button.qaid-annotate-action:hover{background:light-dark(#eef2ff,#312e81)}button.qaid-annotate-tool[aria-pressed=true],button.qaid-annotate-done{background:var(--qaid-marker, #6366f1);color:var(--qaid-marker-text, #fff);border-color:var(--qaid-marker, #6366f1)}button.qaid-annotate-done:hover{filter:brightness(.9);background:var(--qaid-marker, #6366f1)}button.qaid-annotate-action:disabled{opacity:.45;cursor:not-allowed}@media(forced-colors:active){button.qaid-annotate-tool[aria-pressed=true],button.qaid-annotate-done{border:2px solid Highlight}.qaid-annotate-canvas{border:1px solid CanvasText}}button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible{outline:2px solid var(--qaid-marker, #6366f1);outline-offset:2px}.qaid-textarea:focus-visible,button.qaid-btn-submit:focus-visible,.qaid-video-preview-box textarea:focus-visible{outline:2px solid var(--qaid-marker, #6366f1);outline-offset:2px}.qaid-buttons.qaid-incognito:focus-within{opacity:1}.qaid-buttons:focus-within .qaid-dismiss-btn,.qaid-dismiss-btn:focus-visible{opacity:1}.qaid-dismiss-btn{min-width:24px;min-height:24px}button.qaid-recording-stop{min-height:24px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,.qaid-textarea:focus,button.qaid-btn-submit:focus,.qaid-video-preview-box textarea:focus{outline:2px solid CanvasText;outline-offset:2px}.qaid-selected-marker,.qaid-highlight-box{border-color:Highlight}}.qaid-confirm{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:.5rem 0}.qaid-confirm-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:9999px;color:#fff;background:var(--qaid-success, #22c55e);margin-bottom:.25rem;animation:qaid-confirm-pop .28s cubic-bezier(.34,1.56,.64,1)}.qaid-confirm-icon .qaid-icon{width:24px;height:24px}.qaid-confirm-title{margin:0;font-size:1rem;font-weight:600;color:var(--qaid-text, #111827)}.qaid-confirm-title:focus-visible{outline:2px solid var(--qaid-primary, #6366f1);outline-offset:3px;border-radius:4px}.qaid-confirm-message{margin:0;font-size:.875rem;color:var(--qaid-text-muted, #6b7280)}.qaid-confirm .qaid-confirm-close{margin-top:.5rem;min-width:96px}@keyframes qaid-confirm-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.qaid-confirm-icon{animation:none}}", wt = "body.qaid-targeting,body.qaid-targeting *{cursor:none!important}";
3
+ let b = 0;
4
+ const qt = "button.qaid-btn{width:var(--qaid-btn-size);height:var(--qaid-btn-size);border-radius:50%;border:none;background:#f3f4f6;color:#374151;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:background-color .2s,color .2s,transform .2s;-webkit-appearance:none;appearance:none;--qaid-hover-up-bg:var(--qaid-positive);--qaid-hover-up-color:#fff;--qaid-hover-down-bg:var(--qaid-negative);--qaid-hover-down-color:#fff}button.qaid-btn:hover{transform:scale(1.05)}button.qaid-btn-up:hover{background:var(--qaid-hover-up-bg);color:var(--qaid-hover-up-color)}button.qaid-btn-down:hover{background:var(--qaid-hover-down-bg);color:var(--qaid-hover-down-color)}button.qaid-btn-feedback:hover{background:var(--qaid-marker,#6366f1);color:var(--qaid-marker-text,#fff)}button.qaid-btn svg{width:var(--qaid-icon-size);height:var(--qaid-icon-size)}", xt = {
5
5
  small: 36,
6
6
  medium: 48,
7
7
  large: 64
8
- }, yt = {
8
+ }, kt = {
9
9
  small: 18,
10
10
  medium: 24,
11
11
  large: 32
12
12
  };
13
- function wt(e, t, i) {
13
+ function Ct(e, t, i) {
14
14
  const [o, r, n] = [e, t, i].map((a) => (a = a / 255, a <= 0.03928 ? a / 12.92 : Math.pow((a + 0.055) / 1.055, 2.4)));
15
15
  return 0.2126 * o + 0.7152 * r + 0.0722 * n;
16
16
  }
17
- function qt(e) {
17
+ function St(e) {
18
18
  if (e.startsWith("#")) {
19
19
  const i = e.slice(1), o = i.length === 3 ? i.split("").map((n) => n + n).join("") : i, r = parseInt(o, 16);
20
20
  return {
@@ -30,11 +30,11 @@ function qt(e) {
30
30
  b: parseInt(t[3])
31
31
  } : null;
32
32
  }
33
- function xt(e) {
34
- const t = qt(e);
35
- return t && wt(t.r, t.g, t.b) > 0.4 ? "black" : "white";
33
+ function At(e) {
34
+ const t = St(e);
35
+ return t && Ct(t.r, t.g, t.b) > 0.4 ? "black" : "white";
36
36
  }
37
- function kt(e = {}) {
37
+ function Tt(e = {}) {
38
38
  const {
39
39
  positiveColor: t = "rgb(0, 200, 83)",
40
40
  negativeColor: i = "rgb(255, 0, 0)",
@@ -44,7 +44,7 @@ function kt(e = {}) {
44
44
  backdropOpacity: a = 0.3,
45
45
  fontFamily: l = "system-ui, -apple-system, sans-serif",
46
46
  fontSize: c = 16
47
- } = e, d = vt[r], s = yt[r], u = xt(o);
47
+ } = e, d = xt[r], s = kt[r], u = At(o);
48
48
  return {
49
49
  "--qaid-positive": t,
50
50
  "--qaid-negative": i,
@@ -58,22 +58,22 @@ function kt(e = {}) {
58
58
  "--qaid-font-size": `${c}px`
59
59
  };
60
60
  }
61
- function St(e, t) {
61
+ function Et(e, t) {
62
62
  for (const [i, o] of Object.entries(t))
63
63
  e.style.setProperty(i, o);
64
64
  }
65
- function R() {
66
- return ft + gt;
65
+ function U() {
66
+ return yt + qt;
67
67
  }
68
- function Ct() {
69
- if (f++, f > 1) return;
68
+ function It() {
69
+ if (b++, b > 1) return;
70
70
  const e = document.createElement("style");
71
- e.id = "qaid-styles", e.textContent = mt, document.head.appendChild(e);
71
+ e.id = "qaid-styles", e.textContent = wt, document.head.appendChild(e);
72
72
  }
73
- function At() {
74
- f <= 0 || (f--, f === 0 && document.getElementById("qaid-styles").remove());
73
+ function Dt() {
74
+ b <= 0 || (b--, b === 0 && document.getElementById("qaid-styles")?.remove());
75
75
  }
76
- const P = "data-qaid-a11y-live", Tt = "position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;", Et = [
76
+ const V = "data-qaid-a11y-live", Ht = "position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;", zt = [
77
77
  "a[href]",
78
78
  "button",
79
79
  "input",
@@ -81,25 +81,25 @@ const P = "data-qaid-a11y-live", Tt = "position:absolute;width:1px;height:1px;ma
81
81
  "select",
82
82
  "[tabindex]"
83
83
  ].join(",");
84
- function It(e) {
84
+ function Lt(e) {
85
85
  return e.ownerDocument || document;
86
86
  }
87
- function Dt(e, t) {
87
+ function Mt(e, t) {
88
88
  const i = t ? "assertive" : "polite", o = e.querySelector(
89
- `[${P}="${i}"]`
89
+ `[${V}="${i}"]`
90
90
  );
91
91
  if (o) return o;
92
- const n = It(e).createElement("div");
93
- return n.setAttribute(P, i), n.setAttribute("role", t ? "alert" : "status"), n.setAttribute("aria-live", t ? "assertive" : "polite"), n.setAttribute("aria-atomic", "true"), n.style.cssText = Tt, e.appendChild(n), n;
92
+ const n = Lt(e).createElement("div");
93
+ return n.setAttribute(V, i), n.setAttribute("role", t ? "alert" : "status"), n.setAttribute("aria-live", t ? "assertive" : "polite"), n.setAttribute("aria-atomic", "true"), n.style.cssText = Ht, e.appendChild(n), n;
94
94
  }
95
- function Ht(e, t, i = {}) {
96
- const o = Dt(e, !!i.assertive);
95
+ function Bt(e, t, i = {}) {
96
+ const o = Mt(e, !!i.assertive);
97
97
  o.textContent = "", o.textContent = t;
98
98
  }
99
- function zt(e) {
99
+ function Ot(e) {
100
100
  return e.hasAttribute("disabled") ? !0 : e.disabled === !0;
101
101
  }
102
- function Lt(e) {
102
+ function Rt(e) {
103
103
  let t = e;
104
104
  for (; t; ) {
105
105
  if (t.hasAttribute("hidden")) return !0;
@@ -110,52 +110,52 @@ function Lt(e) {
110
110
  }
111
111
  return !1;
112
112
  }
113
- function F(e) {
113
+ function _(e) {
114
114
  return Array.from(
115
- e.querySelectorAll(Et)
116
- ).filter((i) => !(i.getAttribute("tabindex") === "-1" || i instanceof HTMLInputElement && i.type === "hidden" || i instanceof HTMLAnchorElement && !i.getAttribute("href") || zt(i) || Lt(i)));
115
+ e.querySelectorAll(zt)
116
+ ).filter((i) => !(i.getAttribute("tabindex") === "-1" || i instanceof HTMLInputElement && i.type === "hidden" || i instanceof HTMLAnchorElement && !i.getAttribute("href") || Ot(i) || Rt(i)));
117
117
  }
118
- function K(e) {
118
+ function j(e) {
119
119
  let t = e.activeElement;
120
120
  for (; t && t.shadowRoot && t.shadowRoot.activeElement; )
121
121
  t = t.shadowRoot.activeElement;
122
122
  return t instanceof HTMLElement ? t : null;
123
123
  }
124
- function Mt(e) {
124
+ function Pt(e) {
125
125
  const t = e.ownerDocument || document;
126
126
  let i = !1;
127
127
  const o = (n) => {
128
128
  if (n.key !== "Tab") return;
129
- const a = F(e);
129
+ const a = _(e);
130
130
  if (a.length === 0) {
131
131
  n.preventDefault(), e.focus();
132
132
  return;
133
133
  }
134
- const l = a[0], c = a[a.length - 1], d = K(t), s = d ? a.indexOf(d) !== -1 : !1;
134
+ const l = a[0], c = a[a.length - 1], d = j(t), s = d ? a.indexOf(d) !== -1 : !1;
135
135
  n.shiftKey ? (!s || d === l) && (n.preventDefault(), c.focus()) : (!s || d === c) && (n.preventDefault(), l.focus());
136
136
  };
137
137
  e.addEventListener("keydown", o);
138
- const r = F(e);
138
+ const r = _(e);
139
139
  return r.length > 0 ? r[0].focus() : (e.hasAttribute("tabindex") || (e.setAttribute("tabindex", "-1"), i = !0), e.focus()), {
140
140
  release() {
141
141
  e.removeEventListener("keydown", o), i && (e.removeAttribute("tabindex"), i = !1);
142
142
  }
143
143
  };
144
144
  }
145
- function Bt() {
146
- return K(document);
145
+ function Ft() {
146
+ return j(document);
147
147
  }
148
- function Ot(e) {
148
+ function Ut(e) {
149
149
  if (!(!e || typeof e.focus != "function"))
150
150
  try {
151
151
  e.focus();
152
152
  } catch {
153
153
  }
154
154
  }
155
- function Rt(e, t = {}) {
155
+ function Vt(e, t = {}) {
156
156
  e.setAttribute("role", "dialog"), e.setAttribute("aria-modal", "true"), t.labelledbyId && e.setAttribute("aria-labelledby", t.labelledbyId), t.describedbyId && e.setAttribute("aria-describedby", t.describedbyId), t.label && e.setAttribute("aria-label", t.label);
157
157
  }
158
- function Pt(e, t) {
158
+ function _t(e, t) {
159
159
  let i = e;
160
160
  for (; i && i !== t; ) {
161
161
  const o = i.parentNode;
@@ -169,11 +169,11 @@ function Pt(e, t) {
169
169
  }
170
170
  return null;
171
171
  }
172
- function Ft(e) {
172
+ function Kt(e) {
173
173
  const i = (e.ownerDocument || document).body;
174
174
  if (!i) return () => {
175
175
  };
176
- const o = Pt(e, i), r = [];
176
+ const o = _t(e, i), r = [];
177
177
  return Array.from(i.children).forEach((n) => {
178
178
  if (!(n instanceof HTMLElement) || o && n === o) return;
179
179
  const a = n.inert === !0, l = n.getAttribute("aria-hidden");
@@ -185,14 +185,14 @@ function Ft(e) {
185
185
  }
186
186
  };
187
187
  }
188
- const N = {
188
+ const Q = {
189
189
  width: 400,
190
190
  height: 280,
191
191
  arrowHeight: 12,
192
192
  gap: 8,
193
193
  viewportPadding: 16
194
194
  };
195
- function Ut(e, t, i, o, r) {
195
+ function Nt(e, t, i, o, r) {
196
196
  const n = e.y, a = t - (e.y + e.height);
197
197
  if (a >= i + o)
198
198
  return {
@@ -211,22 +211,22 @@ function Ut(e, t, i, o, r) {
211
211
  t - i - r
212
212
  ) : c = Math.max(r, e.y - i - o), { top: c, position: l };
213
213
  }
214
- function Vt(e, t, i, o) {
214
+ function $t(e, t, i, o) {
215
215
  let n = e.x + e.width / 2 - i / 2;
216
216
  return n = Math.max(o, Math.min(n, t - i - o)), n;
217
217
  }
218
- function _t(e, t, i, o = 24, r = 24) {
218
+ function jt(e, t, i, o = 24, r = 24) {
219
219
  const a = e.clickX - t - r / 2;
220
220
  return Math.max(o, Math.min(a, i - o - r / 2));
221
221
  }
222
- function Kt(e, t, i, o = N) {
223
- const r = o.height + o.arrowHeight, n = Ut(
222
+ function Qt(e, t, i, o = Q) {
223
+ const r = o.height + o.arrowHeight, n = Nt(
224
224
  e,
225
225
  i,
226
226
  r,
227
227
  o.gap,
228
228
  o.viewportPadding
229
- ), a = Vt(
229
+ ), a = $t(
230
230
  e,
231
231
  t,
232
232
  o.width,
@@ -238,15 +238,15 @@ function Kt(e, t, i, o = N) {
238
238
  position: n.position
239
239
  };
240
240
  }
241
- function Nt(e, t, i, o = {}) {
241
+ function Wt(e, t, i, o = {}) {
242
242
  const r = o.gap ?? 8;
243
243
  let n = e.bottom + r;
244
244
  n + t.height > i.height - r && (n = e.top - t.height - r);
245
245
  let a = e.left;
246
246
  return a < r ? a = r : a + t.width > i.width - r && (a = i.width - t.width - r), n < r ? n = r : n + t.height > i.height - r && (n = i.height - t.height - r), { top: n, left: a };
247
247
  }
248
- function se(e, t, i, o = N) {
249
- const r = Kt(e, t, i, o), n = _t(
248
+ function ue(e, t, i, o = Q) {
249
+ const r = Qt(e, t, i, o), n = jt(
250
250
  e,
251
251
  r.left,
252
252
  o.width
@@ -256,15 +256,15 @@ function se(e, t, i, o = N) {
256
256
  arrow: { left: n }
257
257
  };
258
258
  }
259
- const $t = 20;
260
- function jt(e) {
259
+ const Yt = 20;
260
+ function Xt(e) {
261
261
  const t = [], i = console.error, o = console.warn, r = console.log, n = (a, l) => {
262
262
  const c = {
263
263
  message: l.map((d) => String(d)).join(" "),
264
264
  timestamp: Date.now(),
265
265
  level: a
266
266
  };
267
- t.length >= $t && t.shift(), t.push(c), e && e(c);
267
+ t.length >= Yt && t.shift(), t.push(c), e && e(c);
268
268
  };
269
269
  return console.error = function(...a) {
270
270
  n("error", a), i.apply(console, a);
@@ -279,7 +279,7 @@ function jt(e) {
279
279
  }
280
280
  };
281
281
  }
282
- const Qt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Wt = (e) => (
282
+ const Gt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Jt = (e) => (
283
283
  // The URL is a runtime value, not a static specifier — keep Vite from
284
284
  // trying to analyze/bundle it.
285
285
  import(
@@ -287,19 +287,19 @@ const Qt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Wt =
287
287
  e
288
288
  )
289
289
  );
290
- let Yt = Wt, b = null, x = null;
291
- function Xt(e) {
292
- return b && x === e || (x = e, b = Promise.resolve(Yt(e)).then((t) => {
290
+ let Zt = Jt, p = null, x = null;
291
+ function te(e) {
292
+ return p && x === e || (x = e, p = Promise.resolve(Zt(e)).then((t) => {
293
293
  const i = t;
294
294
  if (!i || typeof i.QaidQuests != "function")
295
295
  throw new Error("quests module has no QaidQuests export");
296
296
  return i;
297
297
  }).catch((t) => {
298
- throw b = null, x = null, t;
299
- })), b;
298
+ throw p = null, x = null, t;
299
+ })), p;
300
300
  }
301
- async function Gt(e) {
302
- const t = await Xt(e.moduleUrl), i = e.base.replace(/\/+$/, ""), o = e.feedbackId != null ? { feedbackId: e.feedbackId } : void 0;
301
+ async function ee(e) {
302
+ const t = await te(e.moduleUrl), i = e.base.replace(/\/+$/, ""), o = e.feedbackId != null ? { feedbackId: e.feedbackId } : void 0;
303
303
  return new t.QaidQuests({
304
304
  endpoint: `${i}/responses`,
305
305
  configUrl: `${i}/${encodeURIComponent(e.questId)}/definition`,
@@ -308,7 +308,7 @@ async function Gt(e) {
308
308
  onClose: e.onClose
309
309
  });
310
310
  }
311
- const U = "qaid_visitor_id", V = "qaid_hide_feedback", Jt = [
311
+ const K = "qaid_visitor_id", N = "qaid_hide_feedback", ie = [
312
312
  "#ef4444",
313
313
  "#f59e0b",
314
314
  "#22c55e",
@@ -316,34 +316,34 @@ const U = "qaid_visitor_id", V = "qaid_hide_feedback", Jt = [
316
316
  "#111827",
317
317
  "#ffffff"
318
318
  ];
319
- function Zt() {
319
+ function oe() {
320
320
  return typeof window.matchMedia == "function" && window.matchMedia("(pointer: coarse)").matches;
321
321
  }
322
322
  function k(e) {
323
- return e ? `${V}_${e}` : V;
323
+ return e ? `${N}_${e}` : N;
324
324
  }
325
- function te(e) {
325
+ function ae(e) {
326
326
  try {
327
327
  return localStorage.getItem(k(e)) === "1";
328
328
  } catch {
329
329
  return !1;
330
330
  }
331
331
  }
332
- function _(e, t = !0) {
332
+ function $(e, t = !0) {
333
333
  try {
334
334
  t ? localStorage.setItem(k(e), "1") : localStorage.removeItem(k(e));
335
335
  } catch {
336
336
  }
337
337
  }
338
- function ee() {
338
+ function ne() {
339
339
  try {
340
- let e = localStorage.getItem(U);
341
- return e || (e = crypto.randomUUID(), localStorage.setItem(U, e)), e;
340
+ let e = localStorage.getItem(K);
341
+ return e || (e = crypto.randomUUID(), localStorage.setItem(K, e)), e;
342
342
  } catch {
343
343
  return crypto.randomUUID();
344
344
  }
345
345
  }
346
- class ie {
346
+ class re {
347
347
  config;
348
348
  state = "IDLE";
349
349
  feedbackData = {
@@ -446,8 +446,12 @@ class ie {
446
446
  negativeLabel: t.text?.negativeLabel ?? "Send negative feedback",
447
447
  recordLabel: t.text?.recordLabel ?? "Record a screen recording",
448
448
  dismissLabel: t.text?.dismissLabel ?? "Hide Feedback",
449
- feedbackLabel: t.text?.feedbackLabel ?? "Send feedback"
449
+ feedbackLabel: t.text?.feedbackLabel ?? "Send feedback",
450
+ confirmationTitle: t.text?.confirmationTitle ?? "Thank you!",
451
+ confirmationMessage: t.text?.confirmationMessage ?? "Your feedback has been received.",
452
+ confirmationClose: t.text?.confirmationClose ?? "Close"
450
453
  },
454
+ hideConfirmation: t.hideConfirmation ?? !1,
451
455
  modalWidth: t.modalWidth ?? 400,
452
456
  backdropOpacity: t.backdropOpacity ?? 0.3,
453
457
  fontFamily: t.fontFamily ?? "system-ui, -apple-system, sans-serif",
@@ -455,7 +459,7 @@ class ie {
455
459
  captureScreenshot: t.captureScreenshot ?? !1,
456
460
  annotate: t.annotate ?? !0,
457
461
  annotationColor: t.annotationColor ?? t.colors?.marker ?? "#6366f1",
458
- annotationPalette: t.annotationPalette ?? Jt,
462
+ annotationPalette: t.annotationPalette ?? ie,
459
463
  screenshotMethod: t.screenshotMethod ?? "permission",
460
464
  screenshotOptions: {
461
465
  quality: t.screenshotOptions?.quality ?? 0.8,
@@ -482,12 +486,12 @@ class ie {
482
486
  video: t.quests?.video ?? "",
483
487
  // Quest service reuses the feedback API key unless overridden.
484
488
  apiKey: t.quests?.apiKey ?? t.apiKey ?? "",
485
- moduleUrl: t.quests?.moduleUrl ?? Qt
489
+ moduleUrl: t.quests?.moduleUrl ?? Gt
486
490
  }
487
- }, this.boundKeyDown = this.handleKeyDown.bind(this), this.boundResize = this.handleResize.bind(this), this.visitorId = ee(), this.init();
491
+ }, this.boundKeyDown = this.handleKeyDown.bind(this), this.boundResize = this.handleResize.bind(this), this.visitorId = ne(), this.init();
488
492
  }
489
493
  applyVars(t) {
490
- St(t, this.cssVars);
494
+ Et(t, this.cssVars);
491
495
  }
492
496
  /**
493
497
  * Announce a message via the shared visually-hidden live regions.
@@ -497,7 +501,7 @@ class ie {
497
501
  */
498
502
  announceMsg(t, i = !1) {
499
503
  const o = this.overlayShadowRoot ?? this.shadowRoot;
500
- o && Ht(o, t, { assertive: i });
504
+ o && Bt(o, t, { assertive: i });
501
505
  }
502
506
  /**
503
507
  * Turn a transient surface into an accessible modal dialog: save the
@@ -505,16 +509,16 @@ class ie {
505
509
  * background. Paired with closeDialogA11y() on every close path.
506
510
  */
507
511
  openDialogA11y(t, i) {
508
- this.dialogTrigger = Bt(), Rt(t, i), this.dialogTrap = Mt(t), this.dialogRestoreInert = Ft(t);
512
+ this.dialogTrigger = Ft(), Vt(t, i), this.dialogTrap = Pt(t), this.dialogRestoreInert = Kt(t);
509
513
  }
510
514
  closeDialogA11y() {
511
- this.dialogTrap?.release(), this.dialogTrap = null, this.dialogRestoreInert && (this.dialogRestoreInert(), this.dialogRestoreInert = null), Ot(this.dialogTrigger), this.dialogTrigger = null;
515
+ this.dialogTrap?.release(), this.dialogTrap = null, this.dialogRestoreInert && (this.dialogRestoreInert(), this.dialogRestoreInert = null), Ut(this.dialogTrigger), this.dialogTrigger = null;
512
516
  }
513
517
  clearActiveThumb() {
514
518
  this.activeThumbBtn && (this.activeThumbBtn.setAttribute("aria-pressed", "false"), this.activeThumbBtn = null);
515
519
  }
516
520
  init() {
517
- Ct(), this.cssVars = kt({
521
+ It(), this.cssVars = Tt({
518
522
  positiveColor: this.config.colors.positive,
519
523
  negativeColor: this.config.colors.negative,
520
524
  markerColor: this.config.colors.marker,
@@ -523,7 +527,7 @@ class ie {
523
527
  backdropOpacity: this.config.backdropOpacity,
524
528
  fontFamily: this.config.fontFamily,
525
529
  fontSize: this.config.fontSize
526
- }), !this.config.hideDismiss && te(this.config.apiKey) && (this._startDismissed = !0), this.checkMobile(), window.addEventListener("resize", this.boundResize), this.createEmbed(), this.consoleCapture = jt((t) => {
530
+ }), !this.config.hideDismiss && ae(this.config.apiKey) && (this._startDismissed = !0), this.checkMobile(), window.addEventListener("resize", this.boundResize), this.createEmbed(), this.consoleCapture = Xt((t) => {
527
531
  this.feedbackData.consoleErrors = this.consoleCapture?.errors ?? [];
528
532
  }), this.feedbackData.consoleErrors = this.consoleCapture.errors, this.observeDom(), (this.config.captureVideo && this.videoSupported() || this.config.captureScreenshot) && this.schedulePrewarm(() => {
529
533
  this.config.captureVideo && this.videoSupported() && this.prewarmVideo(), this.config.captureScreenshot && this.prewarmScreenshot();
@@ -536,13 +540,13 @@ class ie {
536
540
  * swallowed — a failed preload just falls back to an on-demand load.
537
541
  */
538
542
  prewarmVideo() {
539
- this.videoPrewarmed || (this.videoPrewarmed = !0, import("./recording-DhRZ6-tW.js").catch(() => {
543
+ this.videoPrewarmed || (this.videoPrewarmed = !0, import("./recording-BVFd_ryf.js").catch(() => {
540
544
  }), import("./video-BOYqf2Im.js").catch(() => {
541
545
  }));
542
546
  }
543
547
  prewarmScreenshot() {
544
548
  this.screenshotPrewarmed || (this.screenshotPrewarmed = !0, (this.shouldCaptureViaDom() ? import("./screenshot-dom-CME7tYRE.js") : import("./screenshot-BkOCLuS2.js")).catch(() => {
545
- }), this.config.annotate && import("./annotate-NeITyYNe.js").then((t) => t.d).catch(() => {
549
+ }), this.config.annotate && import("./annotate-CMq95aXG.js").then((t) => t.d).catch(() => {
546
550
  }));
547
551
  }
548
552
  /** Run fn when the main thread is idle; cancelled by destroy(). */
@@ -571,7 +575,7 @@ class ie {
571
575
  }), this.domObserver.observe(document.body, { childList: !0 });
572
576
  }
573
577
  checkMobile() {
574
- this.isMobile = ct();
578
+ this.isMobile = pt();
575
579
  }
576
580
  handleResize() {
577
581
  this.checkMobile();
@@ -581,7 +585,7 @@ class ie {
581
585
  let t = null;
582
586
  this.config.container && (t = document.querySelector(this.config.container)), t ? (t.appendChild(this.shadowHost), this.isUserProvidedContainer = !0, this.config.hideDismiss = !0) : (this.shadowHost.style.position = "fixed", this.shadowHost.style.display = "block", this.shadowHost.style.inset = "0", this.shadowHost.style.pointerEvents = "none", this.shadowHost.style.zIndex = String(this.config.zIndex), document.body.appendChild(this.shadowHost)), this.shadowRoot = this.shadowHost.attachShadow({ mode: "open" });
583
587
  const i = document.createElement("style");
584
- if (i.textContent = R(), this.shadowRoot.appendChild(i), this.config.css) {
588
+ if (i.textContent = U(), this.shadowRoot.appendChild(i), this.config.css) {
585
589
  const d = document.createElement("style");
586
590
  d.textContent = this.config.css, this.shadowRoot.appendChild(d);
587
591
  }
@@ -605,20 +609,20 @@ class ie {
605
609
  const d = document.createElement("div");
606
610
  d.className = "qaid-tooltip-wrapper";
607
611
  const s = document.createElement("button");
608
- s.type = "button", s.className = r ? `${n} qaid-btn-feedback` : "qaid-btn qaid-btn-feedback", s.setAttribute("aria-label", this.config.text.feedbackLabel), s.innerHTML = this.config.feedbackIcon || ut, s.addEventListener("click", (u) => this.handleThumbClick("neutral", u.currentTarget, u)), s.addEventListener("mouseenter", () => {
612
+ s.type = "button", s.className = r ? `${n} qaid-btn-feedback` : "qaid-btn qaid-btn-feedback", s.setAttribute("aria-label", this.config.text.feedbackLabel), s.innerHTML = this.config.feedbackIcon || bt, s.addEventListener("click", (u) => this.handleThumbClick("neutral", u.currentTarget, u)), s.addEventListener("mouseenter", () => {
609
613
  this.prewarmTargeting(), this.showTooltip(s);
610
614
  }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s), this.buttonsContainer.appendChild(d);
611
615
  } else if (!this.config.hideThumbs) {
612
616
  const d = document.createElement("div");
613
617
  d.className = "qaid-tooltip-wrapper";
614
618
  const s = document.createElement("button");
615
- s.type = "button", s.className = r ? `${n} qaid-btn-up` : "qaid-btn qaid-btn-up", s.setAttribute("aria-label", this.config.text.positiveLabel), s.innerHTML = this.config.positiveIcon || ht, s.addEventListener("click", (p) => this.handleThumbClick("up", p.currentTarget, p)), s.addEventListener("mouseenter", () => {
619
+ s.type = "button", s.className = r ? `${n} qaid-btn-up` : "qaid-btn qaid-btn-up", s.setAttribute("aria-label", this.config.text.positiveLabel), s.innerHTML = this.config.positiveIcon || mt, s.addEventListener("click", (f) => this.handleThumbClick("up", f.currentTarget, f)), s.addEventListener("mouseenter", () => {
616
620
  this.prewarmTargeting(), this.showTooltip(s);
617
621
  }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s);
618
622
  const u = document.createElement("div");
619
623
  u.className = "qaid-tooltip-wrapper";
620
624
  const h = document.createElement("button");
621
- h.type = "button", h.className = r ? `${n} qaid-btn-down` : "qaid-btn qaid-btn-down", h.setAttribute("aria-label", this.config.text.negativeLabel), h.innerHTML = this.config.negativeIcon || pt, h.addEventListener("click", (p) => this.handleThumbClick("down", p.currentTarget, p)), h.addEventListener("mouseenter", () => {
625
+ h.type = "button", h.className = r ? `${n} qaid-btn-down` : "qaid-btn qaid-btn-down", h.setAttribute("aria-label", this.config.text.negativeLabel), h.innerHTML = this.config.negativeIcon || gt, h.addEventListener("click", (f) => this.handleThumbClick("down", f.currentTarget, f)), h.addEventListener("mouseenter", () => {
622
626
  this.prewarmTargeting(), this.showTooltip(h);
623
627
  }), h.addEventListener("mouseleave", () => this.hideTooltip()), u.appendChild(h), this.buttonsContainer.appendChild(d), this.buttonsContainer.appendChild(u);
624
628
  }
@@ -626,7 +630,7 @@ class ie {
626
630
  const d = document.createElement("div");
627
631
  d.className = "qaid-tooltip-wrapper";
628
632
  const s = document.createElement("button");
629
- s.type = "button", s.className = r ? `${n} qaid-btn-record` : "qaid-btn qaid-btn-record", s.setAttribute("aria-label", this.config.text.recordLabel), s.innerHTML = this.config.recordIcon || bt, s.addEventListener("click", () => {
633
+ s.type = "button", s.className = r ? `${n} qaid-btn-record` : "qaid-btn qaid-btn-record", s.setAttribute("aria-label", this.config.text.recordLabel), s.innerHTML = this.config.recordIcon || vt, s.addEventListener("click", () => {
630
634
  this.ensureRecording().then(
631
635
  (h) => this.config.videoOptions.redaction ? h.startPicking() : h.startRecording()
632
636
  );
@@ -650,7 +654,7 @@ class ie {
650
654
  if (this.overlayShadowRoot) return this.overlayShadowRoot;
651
655
  this.overlayShadowHost = document.createElement("div"), this.overlayShadowHost.setAttribute("data-qaid-embed-overlay", ""), this.overlayShadowHost.style.position = "fixed", this.overlayShadowHost.style.inset = "0", this.overlayShadowHost.style.pointerEvents = "none", this.overlayShadowHost.style.zIndex = String(this.config.zIndex), document.body.appendChild(this.overlayShadowHost), this.overlayShadowRoot = this.overlayShadowHost.attachShadow({ mode: "open" });
652
656
  const t = document.createElement("style");
653
- if (t.textContent = R(), this.overlayShadowRoot.appendChild(t), this.config.css) {
657
+ if (t.textContent = U(), this.overlayShadowRoot.appendChild(t), this.config.css) {
654
658
  const i = document.createElement("style");
655
659
  i.textContent = this.config.css, this.overlayShadowRoot.appendChild(i);
656
660
  }
@@ -660,7 +664,7 @@ class ie {
660
664
  showTooltip(t) {
661
665
  const i = this.tooltipElement;
662
666
  i.style.visibility = "hidden", i.classList.add("qaid-tooltip-visible");
663
- const o = t.getBoundingClientRect(), r = i.getBoundingClientRect(), { top: n, left: a } = Nt(
667
+ const o = t.getBoundingClientRect(), r = i.getBoundingClientRect(), { top: n, left: a } = Wt(
664
668
  o,
665
669
  r,
666
670
  { width: window.innerWidth, height: window.innerHeight }
@@ -671,10 +675,10 @@ class ie {
671
675
  this.tooltipElement.classList.remove("qaid-tooltip-visible");
672
676
  }
673
677
  handleDismiss() {
674
- this.buttonsContainer.classList.add("qaid-dismissed"), _(this.config.apiKey, !0);
678
+ this.buttonsContainer.classList.add("qaid-dismissed"), $(this.config.apiKey, !0);
675
679
  }
676
680
  handleThumbClick(t, i, o) {
677
- if (this.buttonsContainer?.classList.contains("qaid-incognito") && (this.buttonsContainer.classList.remove("qaid-incognito"), _(this.config.apiKey, !1)), this.prewarmModal(), this.config.skipTargeting || this.config.feedbackMode === "annotate")
681
+ if (this.buttonsContainer?.classList.contains("qaid-incognito") && (this.buttonsContainer.classList.remove("qaid-incognito"), $(this.config.apiKey, !1)), this.prewarmModal(), this.config.skipTargeting || this.config.feedbackMode === "annotate")
678
682
  this.submitDirectFeedback(t, i);
679
683
  else {
680
684
  this.activeThumbBtn = i, i.setAttribute("aria-pressed", "true");
@@ -707,7 +711,7 @@ class ie {
707
711
  * instead of the permission-based Screen Capture API. Explicit "dom" wins;
708
712
  * otherwise DOM is used on touch devices to avoid the getDisplayMedia prompt. */
709
713
  shouldCaptureViaDom() {
710
- return this.config.screenshotMethod === "dom" || Zt();
714
+ return this.config.screenshotMethod === "dom" || oe();
711
715
  }
712
716
  /**
713
717
  * Open the full-screen annotation editor over the captured screenshot,
@@ -720,7 +724,7 @@ class ie {
720
724
  const i = this.ensureOverlayHost(), o = this.overlayShadowHost, r = o.style.pointerEvents;
721
725
  o.style.pointerEvents = "auto";
722
726
  try {
723
- const { openAnnotationEditor: n } = await import("./annotate-NeITyYNe.js").then((a) => a.d);
727
+ const { openAnnotationEditor: n } = await import("./annotate-CMq95aXG.js").then((a) => a.d);
724
728
  return await n({
725
729
  dataUrl: t,
726
730
  root: i,
@@ -824,7 +828,7 @@ class ie {
824
828
  const o = this.questIdFor(t);
825
829
  if (!o) return !1;
826
830
  try {
827
- return this.activeQuest?.destroy(), this.activeQuest = await Gt({
831
+ return this.activeQuest?.destroy(), this.activeQuest = await ee({
828
832
  questId: o,
829
833
  base: this.config.quests.base,
830
834
  apiKey: this.config.quests.apiKey || void 0,
@@ -853,7 +857,7 @@ class ie {
853
857
  */
854
858
  async ensureModal() {
855
859
  if (!this.modal) {
856
- const { ModalController: t } = await import("./modal-C8Ca7E5j.js");
860
+ const { ModalController: t } = await import("./modal-Br5x7m6f.js");
857
861
  this.modal = new t(this.makeModalHost());
858
862
  }
859
863
  return this.modal;
@@ -899,7 +903,7 @@ class ie {
899
903
  }
900
904
  /** Warm the modal chunk while the user is targeting, so it opens instantly. */
901
905
  prewarmModal() {
902
- this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-C8Ca7E5j.js").catch(() => {
906
+ this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-Br5x7m6f.js").catch(() => {
903
907
  }));
904
908
  }
905
909
  /**
@@ -909,7 +913,7 @@ class ie {
909
913
  */
910
914
  async ensureTargeting() {
911
915
  if (!this.targeting) {
912
- const { TargetingController: t } = await import("./targeting-BEQU2Ogo.js");
916
+ const { TargetingController: t } = await import("./targeting-1pK6nJI9.js");
913
917
  this.targeting = new t(this.makeTargetingHost());
914
918
  }
915
919
  return this.targeting;
@@ -954,7 +958,7 @@ class ie {
954
958
  }
955
959
  /** Warm the targeting chunk on thumb-button hover, before the click. */
956
960
  prewarmTargeting() {
957
- this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-BEQU2Ogo.js").catch(() => {
961
+ this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-1pK6nJI9.js").catch(() => {
958
962
  }));
959
963
  }
960
964
  // ==================== Video Recording ====================
@@ -973,7 +977,7 @@ class ie {
973
977
  */
974
978
  async ensureRecording() {
975
979
  if (!this.recording) {
976
- const { RecordingController: t } = await import("./recording-DhRZ6-tW.js");
980
+ const { RecordingController: t } = await import("./recording-BVFd_ryf.js");
977
981
  this.recording = new t(this.makeRecordingHost());
978
982
  }
979
983
  return this.recording;
@@ -1029,13 +1033,13 @@ class ie {
1029
1033
  const t = window;
1030
1034
  this.prewarmIsTimeout ? clearTimeout(this.prewarmHandle) : t.cancelIdleCallback?.(this.prewarmHandle), this.prewarmHandle = null;
1031
1035
  }
1032
- this.recording?.destroy(), this.recording = null, this.modal?.destroy(), this.modal = null, this.activeQuest?.destroy(), this.activeQuest = null, this.consoleCapture && (this.consoleCapture.restore(), this.consoleCapture = null), window.removeEventListener("resize", this.boundResize), document.removeEventListener("keydown", this.boundKeyDown), document.body.classList.remove("qaid-targeting", "qaid-type-up"), document.body.style.removeProperty("--qaid-positive"), document.body.style.removeProperty("--qaid-negative"), this.shadowHost && (this.shadowHost.remove(), this.shadowHost = null, this.shadowRoot = null), this.overlayShadowHost && (this.overlayShadowHost.remove(), this.overlayShadowHost = null, this.overlayShadowRoot = null), this.buttonsContainer = null, this.dismissBtn = null, this.tooltipElement = null, At();
1036
+ this.recording?.destroy(), this.recording = null, this.modal?.destroy(), this.modal = null, this.activeQuest?.destroy(), this.activeQuest = null, this.consoleCapture && (this.consoleCapture.restore(), this.consoleCapture = null), window.removeEventListener("resize", this.boundResize), document.removeEventListener("keydown", this.boundKeyDown), document.body.classList.remove("qaid-targeting", "qaid-type-up"), document.body.style.removeProperty("--qaid-positive"), document.body.style.removeProperty("--qaid-negative"), this.shadowHost && (this.shadowHost.remove(), this.shadowHost = null, this.shadowRoot = null), this.overlayShadowHost && (this.overlayShadowHost.remove(), this.overlayShadowHost = null, this.overlayShadowRoot = null), this.buttonsContainer = null, this.dismissBtn = null, this.tooltipElement = null, Dt();
1033
1037
  }
1034
1038
  }
1035
- function $(e) {
1039
+ function W(e) {
1036
1040
  return document.querySelector(e)?.textContent?.trim() ?? "";
1037
1041
  }
1038
- function oe() {
1042
+ function se() {
1039
1043
  const e = document.querySelector(
1040
1044
  'script[type="application/json"][data-feedback-config]'
1041
1045
  );
@@ -1044,23 +1048,23 @@ function oe() {
1044
1048
  if (!t) return null;
1045
1049
  try {
1046
1050
  const i = JSON.parse(t);
1047
- return i.cssSelector && !i.css && (i.css = $(i.cssSelector), delete i.cssSelector), i;
1051
+ return i.cssSelector && !i.css && (i.css = W(i.cssSelector), delete i.cssSelector), i;
1048
1052
  } catch {
1049
1053
  return null;
1050
1054
  }
1051
1055
  }
1052
- function ae(e) {
1056
+ function de(e) {
1053
1057
  const t = e.getAttribute("data-endpoint");
1054
1058
  if (!t) return null;
1055
- const i = e.getAttribute("data-position"), o = e.getAttribute("data-zindex"), r = e.getAttribute("data-positive-color"), n = e.getAttribute("data-negative-color"), a = e.getAttribute("data-marker-color"), l = e.getAttribute("data-container"), c = e.getAttribute("data-button-class"), d = e.getAttribute("data-skip-targeting"), s = e.getAttribute("data-single-button"), u = e.getAttribute("data-feedback-mode"), h = e.getAttribute("data-incognito"), p = e.getAttribute("data-button-size"), m = e.getAttribute("data-offset-x"), g = e.getAttribute("data-offset-y"), S = e.getAttribute("data-modal-width"), C = e.getAttribute("data-backdrop-opacity"), j = e.getAttribute("data-font-family"), A = e.getAttribute("data-font-size"), T = e.getAttribute("data-tooltip"), E = e.getAttribute("data-modal-title"), I = e.getAttribute("data-modal-subtitle"), D = e.getAttribute("data-placeholder"), H = e.getAttribute("data-submit-button"), z = e.getAttribute("data-skip-button"), Q = e.getAttribute("data-positive-icon"), W = e.getAttribute("data-negative-icon"), Y = e.getAttribute("data-feedback-icon"), L = e.getAttribute("data-feedback-label"), X = e.getAttribute("data-api-key"), G = e.getAttribute("data-capture-screenshot"), J = e.getAttribute("data-annotate"), Z = e.getAttribute("data-annotation-color"), v = e.getAttribute("data-screenshot-quality"), y = e.getAttribute("data-screenshot-max-width"), w = e.getAttribute("data-screenshot-max-height"), tt = e.getAttribute("data-capture-video"), M = e.getAttribute("data-video-redaction"), et = e.getAttribute("data-hide-thumbs"), it = e.getAttribute("data-hide-dismiss"), q = e.getAttribute("data-video-max-duration"), ot = e.getAttribute("data-screenshot-method"), at = e.getAttribute("data-direction"), B = e.getAttribute("data-css-selector"), O = e.getAttribute("data-quest-base"), nt = e.getAttribute("data-quest-up"), rt = e.getAttribute("data-quest-down"), st = e.getAttribute("data-quest-video"), dt = e.getAttribute("data-quest-api-key"), lt = e.getAttribute("data-quest-module-url");
1059
+ const i = e.getAttribute("data-position"), o = e.getAttribute("data-zindex"), r = e.getAttribute("data-positive-color"), n = e.getAttribute("data-negative-color"), a = e.getAttribute("data-marker-color"), l = e.getAttribute("data-container"), c = e.getAttribute("data-button-class"), d = e.getAttribute("data-skip-targeting"), s = e.getAttribute("data-hide-confirmation"), u = e.getAttribute("data-single-button"), h = e.getAttribute("data-feedback-mode"), f = e.getAttribute("data-incognito"), Y = e.getAttribute("data-button-size"), m = e.getAttribute("data-offset-x"), g = e.getAttribute("data-offset-y"), C = e.getAttribute("data-modal-width"), S = e.getAttribute("data-backdrop-opacity"), X = e.getAttribute("data-font-family"), A = e.getAttribute("data-font-size"), T = e.getAttribute("data-tooltip"), E = e.getAttribute("data-modal-title"), I = e.getAttribute("data-confirmation-title"), D = e.getAttribute("data-confirmation-message"), H = e.getAttribute("data-confirmation-close"), z = e.getAttribute("data-modal-subtitle"), L = e.getAttribute("data-placeholder"), M = e.getAttribute("data-submit-button"), B = e.getAttribute("data-skip-button"), G = e.getAttribute("data-positive-icon"), J = e.getAttribute("data-negative-icon"), Z = e.getAttribute("data-feedback-icon"), O = e.getAttribute("data-feedback-label"), tt = e.getAttribute("data-api-key"), et = e.getAttribute("data-capture-screenshot"), it = e.getAttribute("data-annotate"), ot = e.getAttribute("data-annotation-color"), v = e.getAttribute("data-screenshot-quality"), y = e.getAttribute("data-screenshot-max-width"), w = e.getAttribute("data-screenshot-max-height"), at = e.getAttribute("data-capture-video"), R = e.getAttribute("data-video-redaction"), nt = e.getAttribute("data-hide-thumbs"), rt = e.getAttribute("data-hide-dismiss"), q = e.getAttribute("data-video-max-duration"), st = e.getAttribute("data-screenshot-method"), dt = e.getAttribute("data-direction"), P = e.getAttribute("data-css-selector"), F = e.getAttribute("data-quest-base"), lt = e.getAttribute("data-quest-up"), ct = e.getAttribute("data-quest-down"), ut = e.getAttribute("data-quest-video"), ht = e.getAttribute("data-quest-api-key"), ft = e.getAttribute("data-quest-module-url");
1056
1060
  return {
1057
1061
  endpoint: t,
1058
- css: B ? $(B) : void 0,
1059
- apiKey: X ?? void 0,
1060
- captureScreenshot: G === "true" ? !0 : void 0,
1062
+ css: P ? W(P) : void 0,
1063
+ apiKey: tt ?? void 0,
1064
+ captureScreenshot: et === "true" ? !0 : void 0,
1061
1065
  // Annotation is on by default; only an explicit "false" disables it.
1062
- annotate: J === "false" ? !1 : void 0,
1063
- annotationColor: Z ?? void 0,
1066
+ annotate: it === "false" ? !1 : void 0,
1067
+ annotationColor: ot ?? void 0,
1064
1068
  screenshotOptions: v || y || w ? {
1065
1069
  quality: v ? parseFloat(v) : void 0,
1066
1070
  maxWidth: y ? parseInt(y, 10) : void 0,
@@ -1068,68 +1072,72 @@ function ae(e) {
1068
1072
  } : void 0,
1069
1073
  container: l ?? void 0,
1070
1074
  buttonClass: c ?? void 0,
1071
- direction: at ?? void 0,
1075
+ direction: dt ?? void 0,
1072
1076
  position: i ?? void 0,
1073
1077
  zIndex: o ? parseInt(o, 10) : void 0,
1074
1078
  skipTargeting: d === "true" ? !0 : void 0,
1075
- singleButton: s === "true" ? !0 : void 0,
1076
- feedbackMode: u ?? void 0,
1077
- incognito: h === "true" ? !0 : void 0,
1078
- buttonSize: p ?? void 0,
1079
+ hideConfirmation: s === "true" ? !0 : void 0,
1080
+ singleButton: u === "true" ? !0 : void 0,
1081
+ feedbackMode: h ?? void 0,
1082
+ incognito: f === "true" ? !0 : void 0,
1083
+ buttonSize: Y ?? void 0,
1079
1084
  offset: m || g ? {
1080
1085
  x: m ? parseInt(m, 10) : void 0,
1081
1086
  y: g ? parseInt(g, 10) : void 0
1082
1087
  } : void 0,
1083
- modalWidth: S ? parseInt(S, 10) : void 0,
1084
- backdropOpacity: C ? parseFloat(C) : void 0,
1085
- fontFamily: j ?? void 0,
1088
+ modalWidth: C ? parseInt(C, 10) : void 0,
1089
+ backdropOpacity: S ? parseFloat(S) : void 0,
1090
+ fontFamily: X ?? void 0,
1086
1091
  fontSize: A ? parseInt(A, 10) : void 0,
1087
1092
  colors: {
1088
1093
  positive: r ?? void 0,
1089
1094
  negative: n ?? void 0,
1090
1095
  marker: a ?? void 0
1091
1096
  },
1092
- text: T || E || I || D || H || z || L ? {
1097
+ text: T || E || z || L || M || B || O || I || D || H ? {
1093
1098
  tooltip: T ?? void 0,
1094
1099
  modalTitle: E ?? void 0,
1095
- modalSubtitle: I ?? void 0,
1096
- placeholder: D ?? void 0,
1097
- submitButton: H ?? void 0,
1098
- skipButton: z ?? void 0,
1099
- feedbackLabel: L ?? void 0
1100
+ modalSubtitle: z ?? void 0,
1101
+ placeholder: L ?? void 0,
1102
+ submitButton: M ?? void 0,
1103
+ skipButton: B ?? void 0,
1104
+ feedbackLabel: O ?? void 0,
1105
+ confirmationTitle: I ?? void 0,
1106
+ confirmationMessage: D ?? void 0,
1107
+ confirmationClose: H ?? void 0
1100
1108
  } : void 0,
1101
- positiveIcon: Q ?? void 0,
1102
- negativeIcon: W ?? void 0,
1103
- feedbackIcon: Y ?? void 0,
1104
- screenshotMethod: ot ?? void 0,
1105
- captureVideo: tt === "true" ? !0 : void 0,
1106
- hideThumbs: et === "true" ? !0 : void 0,
1107
- hideDismiss: it === "true" ? !0 : void 0,
1108
- videoOptions: q || M ? {
1109
+ positiveIcon: G ?? void 0,
1110
+ negativeIcon: J ?? void 0,
1111
+ feedbackIcon: Z ?? void 0,
1112
+ screenshotMethod: st ?? void 0,
1113
+ captureVideo: at === "true" ? !0 : void 0,
1114
+ hideThumbs: nt === "true" ? !0 : void 0,
1115
+ hideDismiss: rt === "true" ? !0 : void 0,
1116
+ videoOptions: q || R ? {
1109
1117
  maxDuration: q ? parseInt(q, 10) : void 0,
1110
- redaction: M === "true" ? !0 : void 0
1118
+ redaction: R === "true" ? !0 : void 0
1111
1119
  } : void 0,
1112
- quests: O ? {
1113
- base: O,
1114
- up: nt ?? void 0,
1115
- down: rt ?? void 0,
1116
- video: st ?? void 0,
1117
- apiKey: dt ?? void 0,
1118
- moduleUrl: lt ?? void 0
1120
+ quests: F ? {
1121
+ base: F,
1122
+ up: lt ?? void 0,
1123
+ down: ct ?? void 0,
1124
+ video: ut ?? void 0,
1125
+ apiKey: ht ?? void 0,
1126
+ moduleUrl: ft ?? void 0
1119
1127
  } : void 0
1120
1128
  };
1121
1129
  }
1122
- function ne() {
1130
+ function le() {
1123
1131
  if (typeof document > "u") return;
1124
1132
  const e = () => {
1125
- const t = document.currentScript ?? document.querySelector("script[data-endpoint]"), i = oe(), o = t ? ae(t) : null, r = i ?? o;
1126
- r?.endpoint && new ie(r);
1133
+ const t = document.currentScript ?? document.querySelector("script[data-endpoint]"), i = se(), o = t ? de(t) : null, r = i ?? o;
1134
+ r?.endpoint && new re(r);
1127
1135
  };
1128
1136
  document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", e) : e();
1129
1137
  }
1130
- ne();
1138
+ le();
1131
1139
  export {
1132
- ie as Q,
1133
- se as c
1140
+ re as Q,
1141
+ ue as c
1134
1142
  };
1135
- //# sourceMappingURL=loader-DnJ3MHkt.js.map
1143
+ //# sourceMappingURL=loader-CYM1rxDH.js.map