@qaiddev/thumbs-embed 1.5.0 → 1.6.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,26 +1,26 @@
1
- import { i as nt, T as st, a as rt, R as dt } from "./annotate-BNibaDg3.js";
2
- const lt = "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-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{padding:0}button.qaid-annotate-tool svg,button.qaid-annotate-action svg{width:20px;height:20px}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}}", ct = "body.qaid-targeting,body.qaid-targeting *{cursor:none!important}";
3
- let b = 0;
4
- const ut = "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 svg{width:var(--qaid-icon-size);height:var(--qaid-icon-size)}", ht = {
1
+ import { i as ct, F as ut, T as ht, a as pt, R as bt } from "./annotate-pSxJNPPL.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 = {
5
5
  small: 36,
6
6
  medium: 48,
7
7
  large: 64
8
- }, pt = {
8
+ }, yt = {
9
9
  small: 18,
10
10
  medium: 24,
11
11
  large: 32
12
12
  };
13
- function ft(e, t, i) {
14
- const [o, s, a] = [e, t, i].map((n) => (n = n / 255, n <= 0.03928 ? n / 12.92 : Math.pow((n + 0.055) / 1.055, 2.4)));
15
- return 0.2126 * o + 0.7152 * s + 0.0722 * a;
13
+ function wt(e, t, i) {
14
+ const [o, n, a] = [e, t, i].map((r) => (r = r / 255, r <= 0.03928 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4)));
15
+ return 0.2126 * o + 0.7152 * n + 0.0722 * a;
16
16
  }
17
- function bt(e) {
17
+ function qt(e) {
18
18
  if (e.startsWith("#")) {
19
- const i = e.slice(1), o = i.length === 3 ? i.split("").map((a) => a + a).join("") : i, s = parseInt(o, 16);
19
+ const i = e.slice(1), o = i.length === 3 ? i.split("").map((a) => a + a).join("") : i, n = parseInt(o, 16);
20
20
  return {
21
- r: s >> 16 & 255,
22
- g: s >> 8 & 255,
23
- b: s & 255
21
+ r: n >> 16 & 255,
22
+ g: n >> 8 & 255,
23
+ b: n & 255
24
24
  };
25
25
  }
26
26
  const t = e.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
@@ -30,50 +30,50 @@ function bt(e) {
30
30
  b: parseInt(t[3])
31
31
  } : null;
32
32
  }
33
- function mt(e) {
34
- const t = bt(e);
35
- return t && ft(t.r, t.g, t.b) > 0.4 ? "black" : "white";
33
+ function xt(e) {
34
+ const t = qt(e);
35
+ return t && wt(t.r, t.g, t.b) > 0.4 ? "black" : "white";
36
36
  }
37
- function gt(e = {}) {
37
+ function kt(e = {}) {
38
38
  const {
39
39
  positiveColor: t = "rgb(0, 200, 83)",
40
40
  negativeColor: i = "rgb(255, 0, 0)",
41
41
  markerColor: o = "#6366f1",
42
- buttonSize: s = "medium",
42
+ buttonSize: n = "medium",
43
43
  modalWidth: a = 400,
44
- backdropOpacity: n = 0.3,
44
+ backdropOpacity: r = 0.3,
45
45
  fontFamily: l = "system-ui, -apple-system, sans-serif",
46
46
  fontSize: c = 16
47
- } = e, d = ht[s], r = pt[s], h = mt(o);
47
+ } = e, d = vt[n], s = yt[n], u = xt(o);
48
48
  return {
49
49
  "--qaid-positive": t,
50
50
  "--qaid-negative": i,
51
51
  "--qaid-marker": o,
52
- "--qaid-marker-text": h,
52
+ "--qaid-marker-text": u,
53
53
  "--qaid-btn-size": `${d}px`,
54
- "--qaid-icon-size": `${r}px`,
54
+ "--qaid-icon-size": `${s}px`,
55
55
  "--qaid-modal-width": `${a}px`,
56
- "--qaid-backdrop-opacity": String(n),
56
+ "--qaid-backdrop-opacity": String(r),
57
57
  "--qaid-font-family": l,
58
58
  "--qaid-font-size": `${c}px`
59
59
  };
60
60
  }
61
- function vt(e, t) {
61
+ function St(e, t) {
62
62
  for (const [i, o] of Object.entries(t))
63
63
  e.style.setProperty(i, o);
64
64
  }
65
- function M() {
66
- return lt + ut;
65
+ function R() {
66
+ return ft + gt;
67
67
  }
68
- function yt() {
69
- if (b++, b > 1) return;
68
+ function Ct() {
69
+ if (f++, f > 1) return;
70
70
  const e = document.createElement("style");
71
- e.id = "qaid-styles", e.textContent = ct, document.head.appendChild(e);
71
+ e.id = "qaid-styles", e.textContent = mt, document.head.appendChild(e);
72
72
  }
73
- function wt() {
74
- b <= 0 || (b--, b === 0 && document.getElementById("qaid-styles").remove());
73
+ function At() {
74
+ f <= 0 || (f--, f === 0 && document.getElementById("qaid-styles").remove());
75
75
  }
76
- const B = "data-qaid-a11y-live", qt = "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;", xt = [
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 = [
77
77
  "a[href]",
78
78
  "button",
79
79
  "input",
@@ -81,25 +81,25 @@ const B = "data-qaid-a11y-live", qt = "position:absolute;width:1px;height:1px;ma
81
81
  "select",
82
82
  "[tabindex]"
83
83
  ].join(",");
84
- function kt(e) {
84
+ function It(e) {
85
85
  return e.ownerDocument || document;
86
86
  }
87
- function St(e, t) {
87
+ function Dt(e, t) {
88
88
  const i = t ? "assertive" : "polite", o = e.querySelector(
89
- `[${B}="${i}"]`
89
+ `[${P}="${i}"]`
90
90
  );
91
91
  if (o) return o;
92
- const a = kt(e).createElement("div");
93
- return a.setAttribute(B, i), a.setAttribute("role", t ? "alert" : "status"), a.setAttribute("aria-live", t ? "assertive" : "polite"), a.setAttribute("aria-atomic", "true"), a.style.cssText = qt, e.appendChild(a), a;
92
+ const a = It(e).createElement("div");
93
+ return a.setAttribute(P, i), a.setAttribute("role", t ? "alert" : "status"), a.setAttribute("aria-live", t ? "assertive" : "polite"), a.setAttribute("aria-atomic", "true"), a.style.cssText = Tt, e.appendChild(a), a;
94
94
  }
95
- function Ct(e, t, i = {}) {
96
- const o = St(e, !!i.assertive);
95
+ function Ht(e, t, i = {}) {
96
+ const o = Dt(e, !!i.assertive);
97
97
  o.textContent = "", o.textContent = t;
98
98
  }
99
- function At(e) {
99
+ function zt(e) {
100
100
  return e.hasAttribute("disabled") ? !0 : e.disabled === !0;
101
101
  }
102
- function Tt(e) {
102
+ function Lt(e) {
103
103
  let t = e;
104
104
  for (; t; ) {
105
105
  if (t.hasAttribute("hidden")) return !0;
@@ -110,52 +110,52 @@ function Tt(e) {
110
110
  }
111
111
  return !1;
112
112
  }
113
- function O(e) {
113
+ function F(e) {
114
114
  return Array.from(
115
- e.querySelectorAll(xt)
116
- ).filter((i) => !(i.getAttribute("tabindex") === "-1" || i instanceof HTMLInputElement && i.type === "hidden" || i instanceof HTMLAnchorElement && !i.getAttribute("href") || At(i) || Tt(i)));
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)));
117
117
  }
118
- function U(e) {
118
+ function K(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 Dt(e) {
124
+ function Mt(e) {
125
125
  const t = e.ownerDocument || document;
126
126
  let i = !1;
127
127
  const o = (a) => {
128
128
  if (a.key !== "Tab") return;
129
- const n = O(e);
130
- if (n.length === 0) {
129
+ const r = F(e);
130
+ if (r.length === 0) {
131
131
  a.preventDefault(), e.focus();
132
132
  return;
133
133
  }
134
- const l = n[0], c = n[n.length - 1], d = U(t), r = d ? n.indexOf(d) !== -1 : !1;
135
- a.shiftKey ? (!r || d === l) && (a.preventDefault(), c.focus()) : (!r || d === c) && (a.preventDefault(), l.focus());
134
+ const l = r[0], c = r[r.length - 1], d = K(t), s = d ? r.indexOf(d) !== -1 : !1;
135
+ a.shiftKey ? (!s || d === l) && (a.preventDefault(), c.focus()) : (!s || d === c) && (a.preventDefault(), l.focus());
136
136
  };
137
137
  e.addEventListener("keydown", o);
138
- const s = O(e);
139
- return s.length > 0 ? s[0].focus() : (e.hasAttribute("tabindex") || (e.setAttribute("tabindex", "-1"), i = !0), e.focus()), {
138
+ const n = F(e);
139
+ return n.length > 0 ? n[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 It() {
146
- return U(document);
145
+ function Bt() {
146
+ return K(document);
147
147
  }
148
- function Et(e) {
148
+ function Ot(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 Ht(e, t = {}) {
155
+ function Rt(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 zt(e, t) {
158
+ function Pt(e, t) {
159
159
  let i = e;
160
160
  for (; i && i !== t; ) {
161
161
  const o = i.parentNode;
@@ -169,32 +169,32 @@ function zt(e, t) {
169
169
  }
170
170
  return null;
171
171
  }
172
- function Lt(e) {
172
+ function Ft(e) {
173
173
  const i = (e.ownerDocument || document).body;
174
174
  if (!i) return () => {
175
175
  };
176
- const o = zt(e, i), s = [];
176
+ const o = Pt(e, i), n = [];
177
177
  return Array.from(i.children).forEach((a) => {
178
178
  if (!(a instanceof HTMLElement) || o && a === o) return;
179
- const n = a.inert === !0, l = a.getAttribute("aria-hidden");
180
- n && l === "true" || (a.inert = !0, a.setAttribute("aria-hidden", "true"), s.push({ el: a, prevInert: n, prevAriaHidden: l }));
179
+ const r = a.inert === !0, l = a.getAttribute("aria-hidden");
180
+ r && l === "true" || (a.inert = !0, a.setAttribute("aria-hidden", "true"), n.push({ el: a, prevInert: r, prevAriaHidden: l }));
181
181
  }), function() {
182
- for (; s.length; ) {
183
- const n = s.pop();
184
- n.el.inert = n.prevInert, n.prevAriaHidden === null ? n.el.removeAttribute("aria-hidden") : n.el.setAttribute("aria-hidden", n.prevAriaHidden);
182
+ for (; n.length; ) {
183
+ const r = n.pop();
184
+ r.el.inert = r.prevInert, r.prevAriaHidden === null ? r.el.removeAttribute("aria-hidden") : r.el.setAttribute("aria-hidden", r.prevAriaHidden);
185
185
  }
186
186
  };
187
187
  }
188
- const V = {
188
+ const N = {
189
189
  width: 400,
190
190
  height: 280,
191
191
  arrowHeight: 12,
192
192
  gap: 8,
193
193
  viewportPadding: 16
194
194
  };
195
- function Mt(e, t, i, o, s) {
196
- const a = e.y, n = t - (e.y + e.height);
197
- if (n >= i + o)
195
+ function Ut(e, t, i, o, n) {
196
+ const a = e.y, r = t - (e.y + e.height);
197
+ if (r >= i + o)
198
198
  return {
199
199
  top: e.y + e.height + o,
200
200
  position: "below"
@@ -204,29 +204,29 @@ function Mt(e, t, i, o, s) {
204
204
  top: e.y - i - o,
205
205
  position: "above"
206
206
  };
207
- const l = n > a ? "below" : "above";
207
+ const l = r > a ? "below" : "above";
208
208
  let c;
209
209
  return l === "below" ? c = Math.min(
210
210
  e.y + e.height + o,
211
- t - i - s
212
- ) : c = Math.max(s, e.y - i - o), { top: c, position: l };
211
+ t - i - n
212
+ ) : c = Math.max(n, e.y - i - o), { top: c, position: l };
213
213
  }
214
- function Bt(e, t, i, o) {
214
+ function Vt(e, t, i, o) {
215
215
  let a = e.x + e.width / 2 - i / 2;
216
216
  return a = Math.max(o, Math.min(a, t - i - o)), a;
217
217
  }
218
- function Ot(e, t, i, o = 24, s = 24) {
219
- const n = e.clickX - t - s / 2;
220
- return Math.max(o, Math.min(n, i - o - s / 2));
218
+ function _t(e, t, i, o = 24, n = 24) {
219
+ const r = e.clickX - t - n / 2;
220
+ return Math.max(o, Math.min(r, i - o - n / 2));
221
221
  }
222
- function Rt(e, t, i, o = V) {
223
- const s = o.height + o.arrowHeight, a = Mt(
222
+ function Kt(e, t, i, o = N) {
223
+ const n = o.height + o.arrowHeight, a = Ut(
224
224
  e,
225
225
  i,
226
- s,
226
+ n,
227
227
  o.gap,
228
228
  o.viewportPadding
229
- ), n = Bt(
229
+ ), r = Vt(
230
230
  e,
231
231
  t,
232
232
  o.width,
@@ -234,52 +234,52 @@ function Rt(e, t, i, o = V) {
234
234
  );
235
235
  return {
236
236
  top: a.top,
237
- left: n,
237
+ left: r,
238
238
  position: a.position
239
239
  };
240
240
  }
241
- function Pt(e, t, i, o = {}) {
242
- const s = o.gap ?? 8;
243
- let a = e.bottom + s;
244
- a + t.height > i.height - s && (a = e.top - t.height - s);
245
- let n = e.left;
246
- return n < s ? n = s : n + t.width > i.width - s && (n = i.width - t.width - s), a < s ? a = s : a + t.height > i.height - s && (a = i.height - t.height - s), { top: a, left: n };
241
+ function Nt(e, t, i, o = {}) {
242
+ const n = o.gap ?? 8;
243
+ let a = e.bottom + n;
244
+ a + t.height > i.height - n && (a = e.top - t.height - n);
245
+ let r = e.left;
246
+ return r < n ? r = n : r + t.width > i.width - n && (r = i.width - t.width - n), a < n ? a = n : a + t.height > i.height - n && (a = i.height - t.height - n), { top: a, left: r };
247
247
  }
248
- function Zt(e, t, i, o = V) {
249
- const s = Rt(e, t, i, o), a = Ot(
248
+ function re(e, t, i, o = N) {
249
+ const n = Kt(e, t, i, o), a = _t(
250
250
  e,
251
- s.left,
251
+ n.left,
252
252
  o.width
253
253
  );
254
254
  return {
255
- modal: s,
255
+ modal: n,
256
256
  arrow: { left: a }
257
257
  };
258
258
  }
259
- const Ft = 20;
260
- function Ut(e) {
261
- const t = [], i = console.error, o = console.warn, s = console.log, a = (n, l) => {
259
+ const $t = 20;
260
+ function jt(e) {
261
+ const t = [], i = console.error, o = console.warn, n = console.log, a = (r, l) => {
262
262
  const c = {
263
263
  message: l.map((d) => String(d)).join(" "),
264
264
  timestamp: Date.now(),
265
- level: n
265
+ level: r
266
266
  };
267
- t.length >= Ft && t.shift(), t.push(c), e && e(c);
267
+ t.length >= $t && t.shift(), t.push(c), e && e(c);
268
268
  };
269
- return console.error = function(...n) {
270
- a("error", n), i.apply(console, n);
271
- }, console.warn = function(...n) {
272
- a("warn", n), o.apply(console, n);
273
- }, console.log = function(...n) {
274
- a("log", n), s.apply(console, n);
269
+ return console.error = function(...r) {
270
+ a("error", r), i.apply(console, r);
271
+ }, console.warn = function(...r) {
272
+ a("warn", r), o.apply(console, r);
273
+ }, console.log = function(...r) {
274
+ a("log", r), n.apply(console, r);
275
275
  }, {
276
276
  errors: t,
277
277
  restore: () => {
278
- console.error = i, console.warn = o, console.log = s;
278
+ console.error = i, console.warn = o, console.log = n;
279
279
  }
280
280
  };
281
281
  }
282
- const Vt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Kt = (e) => (
282
+ const Qt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Wt = (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 Vt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Kt =
287
287
  e
288
288
  )
289
289
  );
290
- let _t = Kt, f = null, w = null;
291
- function $t(e) {
292
- return f && w === e || (w = e, f = Promise.resolve(_t(e)).then((t) => {
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) => {
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 f = null, w = null, t;
299
- })), f;
298
+ throw b = null, x = null, t;
299
+ })), b;
300
300
  }
301
- async function Nt(e) {
302
- const t = await $t(e.moduleUrl), i = e.base.replace(/\/+$/, ""), o = e.feedbackId != null ? { feedbackId: e.feedbackId } : void 0;
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;
303
303
  return new t.QaidQuests({
304
304
  endpoint: `${i}/responses`,
305
305
  configUrl: `${i}/${encodeURIComponent(e.questId)}/definition`,
@@ -308,35 +308,42 @@ async function Nt(e) {
308
308
  onClose: e.onClose
309
309
  });
310
310
  }
311
- const R = "qaid_visitor_id", P = "qaid_hide_feedback";
312
- function jt() {
311
+ const U = "qaid_visitor_id", V = "qaid_hide_feedback", Jt = [
312
+ "#ef4444",
313
+ "#f59e0b",
314
+ "#22c55e",
315
+ "#3b82f6",
316
+ "#111827",
317
+ "#ffffff"
318
+ ];
319
+ function Zt() {
313
320
  return typeof window.matchMedia == "function" && window.matchMedia("(pointer: coarse)").matches;
314
321
  }
315
- function q(e) {
316
- return e ? `${P}_${e}` : P;
322
+ function k(e) {
323
+ return e ? `${V}_${e}` : V;
317
324
  }
318
- function Qt(e) {
325
+ function te(e) {
319
326
  try {
320
- return localStorage.getItem(q(e)) === "1";
327
+ return localStorage.getItem(k(e)) === "1";
321
328
  } catch {
322
329
  return !1;
323
330
  }
324
331
  }
325
- function F(e, t = !0) {
332
+ function _(e, t = !0) {
326
333
  try {
327
- t ? localStorage.setItem(q(e), "1") : localStorage.removeItem(q(e));
334
+ t ? localStorage.setItem(k(e), "1") : localStorage.removeItem(k(e));
328
335
  } catch {
329
336
  }
330
337
  }
331
- function Wt() {
338
+ function ee() {
332
339
  try {
333
- let e = localStorage.getItem(R);
334
- return e || (e = crypto.randomUUID(), localStorage.setItem(R, e)), e;
340
+ let e = localStorage.getItem(U);
341
+ return e || (e = crypto.randomUUID(), localStorage.setItem(U, e)), e;
335
342
  } catch {
336
343
  return crypto.randomUUID();
337
344
  }
338
345
  }
339
- class Yt {
346
+ class ie {
340
347
  config;
341
348
  state = "IDLE";
342
349
  feedbackData = {
@@ -420,6 +427,8 @@ class Yt {
420
427
  },
421
428
  zIndex: t.zIndex ?? 50,
422
429
  skipTargeting: t.skipTargeting ?? !1,
430
+ singleButton: t.singleButton ?? !1,
431
+ feedbackMode: t.feedbackMode ?? "target",
423
432
  colors: {
424
433
  positive: t.colors?.positive ?? "rgb(0, 200, 83)",
425
434
  negative: t.colors?.negative ?? "rgb(255, 0, 0)",
@@ -436,7 +445,8 @@ class Yt {
436
445
  positiveLabel: t.text?.positiveLabel ?? "Send positive feedback",
437
446
  negativeLabel: t.text?.negativeLabel ?? "Send negative feedback",
438
447
  recordLabel: t.text?.recordLabel ?? "Record a screen recording",
439
- dismissLabel: t.text?.dismissLabel ?? "Hide Feedback"
448
+ dismissLabel: t.text?.dismissLabel ?? "Hide Feedback",
449
+ feedbackLabel: t.text?.feedbackLabel ?? "Send feedback"
440
450
  },
441
451
  modalWidth: t.modalWidth ?? 400,
442
452
  backdropOpacity: t.backdropOpacity ?? 0.3,
@@ -444,6 +454,8 @@ class Yt {
444
454
  fontSize: t.fontSize ?? 16,
445
455
  captureScreenshot: t.captureScreenshot ?? !1,
446
456
  annotate: t.annotate ?? !0,
457
+ annotationColor: t.annotationColor ?? t.colors?.marker ?? "#6366f1",
458
+ annotationPalette: t.annotationPalette ?? Jt,
447
459
  screenshotMethod: t.screenshotMethod ?? "permission",
448
460
  screenshotOptions: {
449
461
  quality: t.screenshotOptions?.quality ?? 0.8,
@@ -454,6 +466,7 @@ class Yt {
454
466
  hideDismiss: t.hideDismiss ?? !1,
455
467
  positiveIcon: t.positiveIcon ?? "",
456
468
  negativeIcon: t.negativeIcon ?? "",
469
+ feedbackIcon: t.feedbackIcon ?? "",
457
470
  hideThumbs: t.hideThumbs ?? !1,
458
471
  css: t.css ?? "",
459
472
  captureVideo: t.captureVideo ?? !1,
@@ -469,12 +482,12 @@ class Yt {
469
482
  video: t.quests?.video ?? "",
470
483
  // Quest service reuses the feedback API key unless overridden.
471
484
  apiKey: t.quests?.apiKey ?? t.apiKey ?? "",
472
- moduleUrl: t.quests?.moduleUrl ?? Vt
485
+ moduleUrl: t.quests?.moduleUrl ?? Qt
473
486
  }
474
- }, this.boundKeyDown = this.handleKeyDown.bind(this), this.boundResize = this.handleResize.bind(this), this.visitorId = Wt(), this.init();
487
+ }, this.boundKeyDown = this.handleKeyDown.bind(this), this.boundResize = this.handleResize.bind(this), this.visitorId = ee(), this.init();
475
488
  }
476
489
  applyVars(t) {
477
- vt(t, this.cssVars);
490
+ St(t, this.cssVars);
478
491
  }
479
492
  /**
480
493
  * Announce a message via the shared visually-hidden live regions.
@@ -484,7 +497,7 @@ class Yt {
484
497
  */
485
498
  announceMsg(t, i = !1) {
486
499
  const o = this.overlayShadowRoot ?? this.shadowRoot;
487
- o && Ct(o, t, { assertive: i });
500
+ o && Ht(o, t, { assertive: i });
488
501
  }
489
502
  /**
490
503
  * Turn a transient surface into an accessible modal dialog: save the
@@ -492,16 +505,16 @@ class Yt {
492
505
  * background. Paired with closeDialogA11y() on every close path.
493
506
  */
494
507
  openDialogA11y(t, i) {
495
- this.dialogTrigger = It(), Ht(t, i), this.dialogTrap = Dt(t), this.dialogRestoreInert = Lt(t);
508
+ this.dialogTrigger = Bt(), Rt(t, i), this.dialogTrap = Mt(t), this.dialogRestoreInert = Ft(t);
496
509
  }
497
510
  closeDialogA11y() {
498
- this.dialogTrap?.release(), this.dialogTrap = null, this.dialogRestoreInert && (this.dialogRestoreInert(), this.dialogRestoreInert = null), Et(this.dialogTrigger), this.dialogTrigger = null;
511
+ this.dialogTrap?.release(), this.dialogTrap = null, this.dialogRestoreInert && (this.dialogRestoreInert(), this.dialogRestoreInert = null), Ot(this.dialogTrigger), this.dialogTrigger = null;
499
512
  }
500
513
  clearActiveThumb() {
501
514
  this.activeThumbBtn && (this.activeThumbBtn.setAttribute("aria-pressed", "false"), this.activeThumbBtn = null);
502
515
  }
503
516
  init() {
504
- yt(), this.cssVars = gt({
517
+ Ct(), this.cssVars = kt({
505
518
  positiveColor: this.config.colors.positive,
506
519
  negativeColor: this.config.colors.negative,
507
520
  markerColor: this.config.colors.marker,
@@ -510,7 +523,7 @@ class Yt {
510
523
  backdropOpacity: this.config.backdropOpacity,
511
524
  fontFamily: this.config.fontFamily,
512
525
  fontSize: this.config.fontSize
513
- }), !this.config.hideDismiss && Qt(this.config.apiKey) && (this._startDismissed = !0), this.checkMobile(), window.addEventListener("resize", this.boundResize), this.createEmbed(), this.consoleCapture = Ut((t) => {
526
+ }), !this.config.hideDismiss && te(this.config.apiKey) && (this._startDismissed = !0), this.checkMobile(), window.addEventListener("resize", this.boundResize), this.createEmbed(), this.consoleCapture = jt((t) => {
514
527
  this.feedbackData.consoleErrors = this.consoleCapture?.errors ?? [];
515
528
  }), this.feedbackData.consoleErrors = this.consoleCapture.errors, this.observeDom(), (this.config.captureVideo && this.videoSupported() || this.config.captureScreenshot) && this.schedulePrewarm(() => {
516
529
  this.config.captureVideo && this.videoSupported() && this.prewarmVideo(), this.config.captureScreenshot && this.prewarmScreenshot();
@@ -523,13 +536,13 @@ class Yt {
523
536
  * swallowed — a failed preload just falls back to an on-demand load.
524
537
  */
525
538
  prewarmVideo() {
526
- this.videoPrewarmed || (this.videoPrewarmed = !0, import("./recording--IwOtRL2.js").catch(() => {
539
+ this.videoPrewarmed || (this.videoPrewarmed = !0, import("./recording-BRvu1Vkh.js").catch(() => {
527
540
  }), import("./video-BOYqf2Im.js").catch(() => {
528
541
  }));
529
542
  }
530
543
  prewarmScreenshot() {
531
544
  this.screenshotPrewarmed || (this.screenshotPrewarmed = !0, (this.shouldCaptureViaDom() ? import("./screenshot-dom-CME7tYRE.js") : import("./screenshot-BkOCLuS2.js")).catch(() => {
532
- }), this.config.annotate && import("./annotate-BNibaDg3.js").then((t) => t.f).catch(() => {
545
+ }), this.config.annotate && import("./annotate-pSxJNPPL.js").then((t) => t.f).catch(() => {
533
546
  }));
534
547
  }
535
548
  /** Run fn when the main thread is idle; cancelled by destroy(). */
@@ -558,7 +571,7 @@ class Yt {
558
571
  }), this.domObserver.observe(document.body, { childList: !0 });
559
572
  }
560
573
  checkMobile() {
561
- this.isMobile = nt();
574
+ this.isMobile = ct();
562
575
  }
563
576
  handleResize() {
564
577
  this.checkMobile();
@@ -568,7 +581,7 @@ class Yt {
568
581
  let t = null;
569
582
  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" });
570
583
  const i = document.createElement("style");
571
- if (i.textContent = M(), this.shadowRoot.appendChild(i), this.config.css) {
584
+ if (i.textContent = R(), this.shadowRoot.appendChild(i), this.config.css) {
572
585
  const d = document.createElement("style");
573
586
  d.textContent = this.config.css, this.shadowRoot.appendChild(d);
574
587
  }
@@ -577,8 +590,8 @@ class Yt {
577
590
  this.buttonsContainer = document.createElement("div"), this.buttonsContainer.className = `qaid-buttons qaid-${this.config.position} ${o}`.trim(), this.config.incognito && this.buttonsContainer.classList.add("qaid-incognito");
578
591
  else {
579
592
  this.buttonsContainer = document.createElement("div"), this.buttonsContainer.className = `qaid-buttons qaid-auto-container qaid-${this.config.position} ${o}${this.config.incognito ? " qaid-incognito" : ""}`.trim(), this.buttonsContainer.style.pointerEvents = "auto";
580
- const { x: d, y: r } = this.config.offset;
581
- this.config.position.includes("right") ? this.buttonsContainer.style.right = `${d}px` : this.buttonsContainer.style.left = `${d}px`, this.config.position.includes("bottom") ? this.buttonsContainer.style.bottom = `${r}px` : this.buttonsContainer.style.top = `${r}px`;
593
+ const { x: d, y: s } = this.config.offset;
594
+ this.config.position.includes("right") ? this.buttonsContainer.style.right = `${d}px` : this.buttonsContainer.style.left = `${d}px`, this.config.position.includes("bottom") ? this.buttonsContainer.style.bottom = `${s}px` : this.buttonsContainer.style.top = `${s}px`;
582
595
  }
583
596
  this.applyVars(this.buttonsContainer), this.shadowRoot.appendChild(this.buttonsContainer), this.buttonsContainer.addEventListener("keydown", (d) => {
584
597
  (d.key === "Enter" || d.key === " " || d.key === "Spacebar") && (this.keyboardActivation = !0);
@@ -587,34 +600,41 @@ class Yt {
587
600
  }), this.buttonsContainer.addEventListener("pointerdown", () => {
588
601
  this.keyboardActivation = !1;
589
602
  });
590
- const s = !!this.config.buttonClass, a = s ? `qaid-btn-structural ${this.config.buttonClass}` : "qaid-btn", l = this.config.text.tooltip || "Feedback for us?", c = document.createElement("div");
591
- if (c.className = "qaid-tooltip-text", c.textContent = l, this.applyVars(c), this.shadowRoot.appendChild(c), this.tooltipElement = c, !this.config.hideThumbs) {
603
+ const n = !!this.config.buttonClass, a = n ? `qaid-btn-structural ${this.config.buttonClass}` : "qaid-btn", l = this.config.text.tooltip || "Feedback for us?", c = document.createElement("div");
604
+ if (c.className = "qaid-tooltip-text", c.textContent = l, this.applyVars(c), this.shadowRoot.appendChild(c), this.tooltipElement = c, this.config.singleButton) {
592
605
  const d = document.createElement("div");
593
606
  d.className = "qaid-tooltip-wrapper";
594
- const r = document.createElement("button");
595
- r.type = "button", r.className = s ? `${a} qaid-btn-up` : "qaid-btn qaid-btn-up", r.setAttribute("aria-label", this.config.text.positiveLabel), r.innerHTML = this.config.positiveIcon || st, r.addEventListener("click", (p) => this.handleThumbClick("up", p.currentTarget, p)), r.addEventListener("mouseenter", () => {
596
- this.prewarmTargeting(), this.showTooltip(r);
597
- }), r.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(r);
598
- const h = document.createElement("div");
599
- h.className = "qaid-tooltip-wrapper";
600
- const u = document.createElement("button");
601
- u.type = "button", u.className = s ? `${a} qaid-btn-down` : "qaid-btn qaid-btn-down", u.setAttribute("aria-label", this.config.text.negativeLabel), u.innerHTML = this.config.negativeIcon || rt, u.addEventListener("click", (p) => this.handleThumbClick("down", p.currentTarget, p)), u.addEventListener("mouseenter", () => {
602
- this.prewarmTargeting(), this.showTooltip(u);
603
- }), u.addEventListener("mouseleave", () => this.hideTooltip()), h.appendChild(u), this.buttonsContainer.appendChild(d), this.buttonsContainer.appendChild(h);
607
+ const s = document.createElement("button");
608
+ s.type = "button", s.className = n ? `${a} 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", () => {
609
+ this.prewarmTargeting(), this.showTooltip(s);
610
+ }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s), this.buttonsContainer.appendChild(d);
611
+ } else if (!this.config.hideThumbs) {
612
+ const d = document.createElement("div");
613
+ d.className = "qaid-tooltip-wrapper";
614
+ const s = document.createElement("button");
615
+ s.type = "button", s.className = n ? `${a} 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", () => {
616
+ this.prewarmTargeting(), this.showTooltip(s);
617
+ }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s);
618
+ const u = document.createElement("div");
619
+ u.className = "qaid-tooltip-wrapper";
620
+ const h = document.createElement("button");
621
+ h.type = "button", h.className = n ? `${a} 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", () => {
622
+ this.prewarmTargeting(), this.showTooltip(h);
623
+ }), h.addEventListener("mouseleave", () => this.hideTooltip()), u.appendChild(h), this.buttonsContainer.appendChild(d), this.buttonsContainer.appendChild(u);
604
624
  }
605
625
  if (this.config.captureVideo && this.videoSupported()) {
606
626
  const d = document.createElement("div");
607
627
  d.className = "qaid-tooltip-wrapper";
608
- const r = document.createElement("button");
609
- r.type = "button", r.className = s ? `${a} qaid-btn-record` : "qaid-btn qaid-btn-record", r.setAttribute("aria-label", this.config.text.recordLabel), r.innerHTML = this.config.recordIcon || dt, r.addEventListener("click", () => {
628
+ const s = document.createElement("button");
629
+ s.type = "button", s.className = n ? `${a} 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", () => {
610
630
  this.ensureRecording().then(
611
- (u) => this.config.videoOptions.redaction ? u.startPicking() : u.startRecording()
631
+ (h) => this.config.videoOptions.redaction ? h.startPicking() : h.startRecording()
612
632
  );
613
633
  });
614
- const h = () => this.prewarmVideo();
615
- r.addEventListener("mouseenter", () => {
616
- h(), this.showTooltip(r);
617
- }), r.addEventListener("focus", h), r.addEventListener("touchstart", h, { passive: !0 }), r.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(r), this.buttonsContainer.appendChild(d);
634
+ const u = () => this.prewarmVideo();
635
+ s.addEventListener("mouseenter", () => {
636
+ u(), this.showTooltip(s);
637
+ }), s.addEventListener("focus", u), s.addEventListener("touchstart", u, { passive: !0 }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s), this.buttonsContainer.appendChild(d);
618
638
  }
619
639
  this.config.hideDismiss || (this.dismissBtn = document.createElement("button"), this.dismissBtn.type = "button", this.dismissBtn.className = "qaid-dismiss-btn", this.dismissBtn.setAttribute("aria-label", this.config.text.dismissLabel), this.dismissBtn.title = this.config.text.dismissLabel, this.dismissBtn.innerHTML = '<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M2 2l8 8M10 2l-8 8" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>', this.dismissBtn.addEventListener("click", (d) => {
620
640
  d.stopPropagation(), this.handleDismiss();
@@ -630,7 +650,7 @@ class Yt {
630
650
  if (this.overlayShadowRoot) return this.overlayShadowRoot;
631
651
  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" });
632
652
  const t = document.createElement("style");
633
- if (t.textContent = M(), this.overlayShadowRoot.appendChild(t), this.config.css) {
653
+ if (t.textContent = R(), this.overlayShadowRoot.appendChild(t), this.config.css) {
634
654
  const i = document.createElement("style");
635
655
  i.textContent = this.config.css, this.overlayShadowRoot.appendChild(i);
636
656
  }
@@ -640,27 +660,27 @@ class Yt {
640
660
  showTooltip(t) {
641
661
  const i = this.tooltipElement;
642
662
  i.style.visibility = "hidden", i.classList.add("qaid-tooltip-visible");
643
- const o = t.getBoundingClientRect(), s = i.getBoundingClientRect(), { top: a, left: n } = Pt(
663
+ const o = t.getBoundingClientRect(), n = i.getBoundingClientRect(), { top: a, left: r } = Nt(
644
664
  o,
645
- s,
665
+ n,
646
666
  { width: window.innerWidth, height: window.innerHeight }
647
667
  );
648
- i.style.top = `${a}px`, i.style.left = `${n}px`, i.style.visibility = "visible";
668
+ i.style.top = `${a}px`, i.style.left = `${r}px`, i.style.visibility = "visible";
649
669
  }
650
670
  hideTooltip() {
651
671
  this.tooltipElement.classList.remove("qaid-tooltip-visible");
652
672
  }
653
673
  handleDismiss() {
654
- this.buttonsContainer.classList.add("qaid-dismissed"), F(this.config.apiKey, !0);
674
+ this.buttonsContainer.classList.add("qaid-dismissed"), _(this.config.apiKey, !0);
655
675
  }
656
676
  handleThumbClick(t, i, o) {
657
- if (this.buttonsContainer?.classList.contains("qaid-incognito") && (this.buttonsContainer.classList.remove("qaid-incognito"), F(this.config.apiKey, !1)), this.prewarmModal(), this.config.skipTargeting)
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")
658
678
  this.submitDirectFeedback(t, i);
659
679
  else {
660
680
  this.activeThumbBtn = i, i.setAttribute("aria-pressed", "true");
661
- const s = this.keyboardActivation;
681
+ const n = this.keyboardActivation;
662
682
  this.keyboardActivation = !1, this.ensureTargeting().then((a) => {
663
- this.destroyed || (s ? a.startKeyboard(t) : a.startPointer(t, o));
683
+ this.destroyed || (n ? a.startKeyboard(t) : a.startPointer(t, o));
664
684
  });
665
685
  }
666
686
  }
@@ -687,7 +707,7 @@ class Yt {
687
707
  * instead of the permission-based Screen Capture API. Explicit "dom" wins;
688
708
  * otherwise DOM is used on touch devices to avoid the getDisplayMedia prompt. */
689
709
  shouldCaptureViaDom() {
690
- return this.config.screenshotMethod === "dom" || jt();
710
+ return this.config.screenshotMethod === "dom" || Zt();
691
711
  }
692
712
  /**
693
713
  * Open the full-screen annotation editor over the captured screenshot,
@@ -697,43 +717,44 @@ class Yt {
697
717
  * enabled while the editor is open and restored on close.
698
718
  */
699
719
  async openAnnotationEditor(t) {
700
- const i = this.ensureOverlayHost(), o = this.overlayShadowHost, s = o.style.pointerEvents;
720
+ const i = this.ensureOverlayHost(), o = this.overlayShadowHost, n = o.style.pointerEvents;
701
721
  o.style.pointerEvents = "auto";
702
722
  try {
703
- const { openAnnotationEditor: a } = await import("./annotate-BNibaDg3.js").then((n) => n.f);
723
+ const { openAnnotationEditor: a } = await import("./annotate-pSxJNPPL.js").then((r) => r.f);
704
724
  return await a({
705
725
  dataUrl: t,
706
726
  root: i,
707
727
  quality: this.config.screenshotOptions.quality,
708
- color: this.config.colors.marker,
709
- applyVars: (n) => this.applyVars(n),
710
- announce: (n, l) => this.announceMsg(n, l),
711
- openDialog: (n, l) => this.openDialogA11y(n, l),
728
+ color: this.config.annotationColor,
729
+ palette: this.config.annotationPalette,
730
+ applyVars: (r) => this.applyVars(r),
731
+ announce: (r, l) => this.announceMsg(r, l),
732
+ openDialog: (r, l) => this.openDialogA11y(r, l),
712
733
  closeDialog: () => this.closeDialogA11y()
713
734
  });
714
735
  } finally {
715
- o.style.pointerEvents = s;
736
+ o.style.pointerEvents = n;
716
737
  }
717
738
  }
718
739
  async submitFeedback() {
719
740
  let t = null;
720
- if (this.config.captureScreenshot) {
741
+ if (this.config.captureScreenshot || this.config.feedbackMode === "annotate") {
721
742
  if (this.shouldCaptureViaDom()) {
722
- const { captureDomScreenshot: n } = await import("./screenshot-dom-CME7tYRE.js");
723
- t = await n(this.config.screenshotOptions);
743
+ const { captureDomScreenshot: l } = await import("./screenshot-dom-CME7tYRE.js");
744
+ t = await l(this.config.screenshotOptions);
724
745
  } else {
725
- const { captureScreenshot: n } = await import("./screenshot-BkOCLuS2.js");
726
- t = await n(this.config.screenshotOptions);
746
+ const { captureScreenshot: l } = await import("./screenshot-BkOCLuS2.js");
747
+ t = await l(this.config.screenshotOptions);
727
748
  }
728
749
  t && this.announceMsg("Screenshot captured");
729
750
  }
730
751
  t && this.config.annotate && (t = await this.openAnnotationEditor(t) ?? t);
731
- const i = this.feedbackData.elementSelector ? {
752
+ const o = this.feedbackData.elementSelector ? {
732
753
  x: this.selectedBounds.x,
733
754
  y: this.selectedBounds.y,
734
755
  width: this.selectedBounds.width,
735
756
  height: this.selectedBounds.height
736
- } : null, o = {
757
+ } : null, n = {
737
758
  feedbackType: this.feedbackData.feedbackType,
738
759
  pageUrl: window.location.href,
739
760
  apiKey: this.config.apiKey || void 0,
@@ -749,30 +770,30 @@ class Yt {
749
770
  screenshot: t,
750
771
  visitorId: this.visitorId,
751
772
  // Include element bounds and user agent for server-side screenshot fallback
752
- elementBounds: i,
773
+ elementBounds: o,
753
774
  userAgent: navigator.userAgent
754
775
  };
755
776
  try {
756
- const n = await fetch(this.config.endpoint, {
777
+ const l = await fetch(this.config.endpoint, {
757
778
  method: "POST",
758
779
  headers: { "Content-Type": "application/json" },
759
- body: JSON.stringify(o)
780
+ body: JSON.stringify(n)
760
781
  });
761
- if (n.ok) {
762
- const l = await n.json();
763
- this.feedbackId = l.id, this.announceMsg("Feedback sent");
782
+ if (l.ok) {
783
+ const c = await l.json();
784
+ this.feedbackId = c.id, this.announceMsg("Feedback sent");
764
785
  }
765
- } catch (n) {
766
- console.error("Failed to submit feedback:", n), this.announceMsg("Failed to send feedback", !0);
786
+ } catch (l) {
787
+ console.error("Failed to submit feedback:", l), this.announceMsg("Failed to send feedback", !0);
767
788
  }
768
- const s = this.feedbackData.feedbackType;
769
- if (s && await this.tryLaunchQuest(s, this.feedbackId)) {
789
+ const a = this.feedbackData.feedbackType;
790
+ if (a && a !== "neutral" && await this.tryLaunchQuest(a, this.feedbackId)) {
770
791
  this.resetFeedbackUi();
771
792
  return;
772
793
  }
773
794
  this.state = "MODAL_OPEN";
774
- const a = await this.ensureModal();
775
- this.destroyed || (a.open(), this.overlayShadowHost && (this.overlayShadowHost.style.pointerEvents = "auto"));
795
+ const r = await this.ensureModal();
796
+ this.destroyed || (r.open(), this.overlayShadowHost && (this.overlayShadowHost.style.pointerEvents = "auto"));
776
797
  }
777
798
  /**
778
799
  * Quest id linked to `type`, or "" when quest launching is disabled
@@ -793,7 +814,7 @@ class Yt {
793
814
  const o = this.questIdFor(t);
794
815
  if (!o) return !1;
795
816
  try {
796
- return this.activeQuest?.destroy(), this.activeQuest = await Nt({
817
+ return this.activeQuest?.destroy(), this.activeQuest = await Gt({
797
818
  questId: o,
798
819
  base: this.config.quests.base,
799
820
  apiKey: this.config.quests.apiKey || void 0,
@@ -803,8 +824,8 @@ class Yt {
803
824
  this.activeQuest = null;
804
825
  }
805
826
  }), !0;
806
- } catch (s) {
807
- return console.error("Failed to launch quest:", s), this.activeQuest = null, !1;
827
+ } catch (n) {
828
+ return console.error("Failed to launch quest:", n), this.activeQuest = null, !1;
808
829
  }
809
830
  }
810
831
  /**
@@ -822,7 +843,7 @@ class Yt {
822
843
  */
823
844
  async ensureModal() {
824
845
  if (!this.modal) {
825
- const { ModalController: t } = await import("./modal-BX5wqy4s.js");
846
+ const { ModalController: t } = await import("./modal-Br-8TcEE.js");
826
847
  this.modal = new t(this.makeModalHost());
827
848
  }
828
849
  return this.modal;
@@ -868,7 +889,7 @@ class Yt {
868
889
  }
869
890
  /** Warm the modal chunk while the user is targeting, so it opens instantly. */
870
891
  prewarmModal() {
871
- this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-BX5wqy4s.js").catch(() => {
892
+ this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-Br-8TcEE.js").catch(() => {
872
893
  }));
873
894
  }
874
895
  /**
@@ -878,7 +899,7 @@ class Yt {
878
899
  */
879
900
  async ensureTargeting() {
880
901
  if (!this.targeting) {
881
- const { TargetingController: t } = await import("./targeting-DwdDr9Cm.js");
902
+ const { TargetingController: t } = await import("./targeting-_aii7qgw.js");
882
903
  this.targeting = new t(this.makeTargetingHost());
883
904
  }
884
905
  return this.targeting;
@@ -923,7 +944,7 @@ class Yt {
923
944
  }
924
945
  /** Warm the targeting chunk on thumb-button hover, before the click. */
925
946
  prewarmTargeting() {
926
- this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-DwdDr9Cm.js").catch(() => {
947
+ this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-_aii7qgw.js").catch(() => {
927
948
  }));
928
949
  }
929
950
  // ==================== Video Recording ====================
@@ -942,7 +963,7 @@ class Yt {
942
963
  */
943
964
  async ensureRecording() {
944
965
  if (!this.recording) {
945
- const { RecordingController: t } = await import("./recording--IwOtRL2.js");
966
+ const { RecordingController: t } = await import("./recording-BRvu1Vkh.js");
946
967
  this.recording = new t(this.makeRecordingHost());
947
968
  }
948
969
  return this.recording;
@@ -998,13 +1019,13 @@ class Yt {
998
1019
  const t = window;
999
1020
  this.prewarmIsTimeout ? clearTimeout(this.prewarmHandle) : t.cancelIdleCallback?.(this.prewarmHandle), this.prewarmHandle = null;
1000
1021
  }
1001
- 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, wt();
1022
+ 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();
1002
1023
  }
1003
1024
  }
1004
- function K(e) {
1025
+ function $(e) {
1005
1026
  return document.querySelector(e)?.textContent?.trim() ?? "";
1006
1027
  }
1007
- function Xt() {
1028
+ function oe() {
1008
1029
  const e = document.querySelector(
1009
1030
  'script[type="application/json"][data-feedback-config]'
1010
1031
  );
@@ -1013,87 +1034,92 @@ function Xt() {
1013
1034
  if (!t) return null;
1014
1035
  try {
1015
1036
  const i = JSON.parse(t);
1016
- return i.cssSelector && !i.css && (i.css = K(i.cssSelector), delete i.cssSelector), i;
1037
+ return i.cssSelector && !i.css && (i.css = $(i.cssSelector), delete i.cssSelector), i;
1017
1038
  } catch {
1018
1039
  return null;
1019
1040
  }
1020
1041
  }
1021
- function Gt(e) {
1042
+ function ae(e) {
1022
1043
  const t = e.getAttribute("data-endpoint");
1023
1044
  if (!t) return null;
1024
- const i = e.getAttribute("data-position"), o = e.getAttribute("data-zindex"), s = e.getAttribute("data-positive-color"), a = e.getAttribute("data-negative-color"), n = e.getAttribute("data-marker-color"), l = e.getAttribute("data-container"), c = e.getAttribute("data-button-class"), d = e.getAttribute("data-skip-targeting"), r = e.getAttribute("data-incognito"), h = e.getAttribute("data-button-size"), u = e.getAttribute("data-offset-x"), p = e.getAttribute("data-offset-y"), x = e.getAttribute("data-modal-width"), k = e.getAttribute("data-backdrop-opacity"), _ = e.getAttribute("data-font-family"), S = e.getAttribute("data-font-size"), C = e.getAttribute("data-tooltip"), A = e.getAttribute("data-modal-title"), T = e.getAttribute("data-modal-subtitle"), D = e.getAttribute("data-placeholder"), I = e.getAttribute("data-submit-button"), E = e.getAttribute("data-skip-button"), $ = e.getAttribute("data-positive-icon"), N = e.getAttribute("data-negative-icon"), j = e.getAttribute("data-api-key"), Q = e.getAttribute("data-capture-screenshot"), W = e.getAttribute("data-annotate"), m = e.getAttribute("data-screenshot-quality"), g = e.getAttribute("data-screenshot-max-width"), v = e.getAttribute("data-screenshot-max-height"), Y = e.getAttribute("data-capture-video"), H = e.getAttribute("data-video-redaction"), X = e.getAttribute("data-hide-thumbs"), G = e.getAttribute("data-hide-dismiss"), y = e.getAttribute("data-video-max-duration"), J = e.getAttribute("data-screenshot-method"), Z = e.getAttribute("data-direction"), z = e.getAttribute("data-css-selector"), L = e.getAttribute("data-quest-base"), tt = e.getAttribute("data-quest-up"), et = e.getAttribute("data-quest-down"), it = e.getAttribute("data-quest-video"), ot = e.getAttribute("data-quest-api-key"), at = e.getAttribute("data-quest-module-url");
1045
+ const i = e.getAttribute("data-position"), o = e.getAttribute("data-zindex"), n = e.getAttribute("data-positive-color"), a = e.getAttribute("data-negative-color"), r = 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");
1025
1046
  return {
1026
1047
  endpoint: t,
1027
- css: z ? K(z) : void 0,
1028
- apiKey: j ?? void 0,
1029
- captureScreenshot: Q === "true" ? !0 : void 0,
1048
+ css: B ? $(B) : void 0,
1049
+ apiKey: X ?? void 0,
1050
+ captureScreenshot: G === "true" ? !0 : void 0,
1030
1051
  // Annotation is on by default; only an explicit "false" disables it.
1031
- annotate: W === "false" ? !1 : void 0,
1032
- screenshotOptions: m || g || v ? {
1033
- quality: m ? parseFloat(m) : void 0,
1034
- maxWidth: g ? parseInt(g, 10) : void 0,
1035
- maxHeight: v ? parseInt(v, 10) : void 0
1052
+ annotate: J === "false" ? !1 : void 0,
1053
+ annotationColor: Z ?? void 0,
1054
+ screenshotOptions: v || y || w ? {
1055
+ quality: v ? parseFloat(v) : void 0,
1056
+ maxWidth: y ? parseInt(y, 10) : void 0,
1057
+ maxHeight: w ? parseInt(w, 10) : void 0
1036
1058
  } : void 0,
1037
1059
  container: l ?? void 0,
1038
1060
  buttonClass: c ?? void 0,
1039
- direction: Z ?? void 0,
1061
+ direction: at ?? void 0,
1040
1062
  position: i ?? void 0,
1041
1063
  zIndex: o ? parseInt(o, 10) : void 0,
1042
1064
  skipTargeting: d === "true" ? !0 : void 0,
1043
- incognito: r === "true" ? !0 : void 0,
1044
- buttonSize: h ?? void 0,
1045
- offset: u || p ? {
1046
- x: u ? parseInt(u, 10) : void 0,
1047
- y: p ? parseInt(p, 10) : void 0
1065
+ singleButton: s === "true" ? !0 : void 0,
1066
+ feedbackMode: u ?? void 0,
1067
+ incognito: h === "true" ? !0 : void 0,
1068
+ buttonSize: p ?? void 0,
1069
+ offset: m || g ? {
1070
+ x: m ? parseInt(m, 10) : void 0,
1071
+ y: g ? parseInt(g, 10) : void 0
1048
1072
  } : void 0,
1049
- modalWidth: x ? parseInt(x, 10) : void 0,
1050
- backdropOpacity: k ? parseFloat(k) : void 0,
1051
- fontFamily: _ ?? void 0,
1052
- fontSize: S ? parseInt(S, 10) : void 0,
1073
+ modalWidth: S ? parseInt(S, 10) : void 0,
1074
+ backdropOpacity: C ? parseFloat(C) : void 0,
1075
+ fontFamily: j ?? void 0,
1076
+ fontSize: A ? parseInt(A, 10) : void 0,
1053
1077
  colors: {
1054
- positive: s ?? void 0,
1078
+ positive: n ?? void 0,
1055
1079
  negative: a ?? void 0,
1056
- marker: n ?? void 0
1080
+ marker: r ?? void 0
1057
1081
  },
1058
- text: C || A || T || D || I || E ? {
1059
- tooltip: C ?? void 0,
1060
- modalTitle: A ?? void 0,
1061
- modalSubtitle: T ?? void 0,
1082
+ text: T || E || I || D || H || z || L ? {
1083
+ tooltip: T ?? void 0,
1084
+ modalTitle: E ?? void 0,
1085
+ modalSubtitle: I ?? void 0,
1062
1086
  placeholder: D ?? void 0,
1063
- submitButton: I ?? void 0,
1064
- skipButton: E ?? void 0
1087
+ submitButton: H ?? void 0,
1088
+ skipButton: z ?? void 0,
1089
+ feedbackLabel: L ?? void 0
1065
1090
  } : void 0,
1066
- positiveIcon: $ ?? void 0,
1067
- negativeIcon: N ?? void 0,
1068
- screenshotMethod: J ?? void 0,
1069
- captureVideo: Y === "true" ? !0 : void 0,
1070
- hideThumbs: X === "true" ? !0 : void 0,
1071
- hideDismiss: G === "true" ? !0 : void 0,
1072
- videoOptions: y || H ? {
1073
- maxDuration: y ? parseInt(y, 10) : void 0,
1074
- redaction: H === "true" ? !0 : void 0
1091
+ positiveIcon: Q ?? void 0,
1092
+ negativeIcon: W ?? void 0,
1093
+ feedbackIcon: Y ?? void 0,
1094
+ screenshotMethod: ot ?? void 0,
1095
+ captureVideo: tt === "true" ? !0 : void 0,
1096
+ hideThumbs: et === "true" ? !0 : void 0,
1097
+ hideDismiss: it === "true" ? !0 : void 0,
1098
+ videoOptions: q || M ? {
1099
+ maxDuration: q ? parseInt(q, 10) : void 0,
1100
+ redaction: M === "true" ? !0 : void 0
1075
1101
  } : void 0,
1076
- quests: L ? {
1077
- base: L,
1078
- up: tt ?? void 0,
1079
- down: et ?? void 0,
1080
- video: it ?? void 0,
1081
- apiKey: ot ?? void 0,
1082
- moduleUrl: at ?? void 0
1102
+ quests: O ? {
1103
+ base: O,
1104
+ up: nt ?? void 0,
1105
+ down: rt ?? void 0,
1106
+ video: st ?? void 0,
1107
+ apiKey: dt ?? void 0,
1108
+ moduleUrl: lt ?? void 0
1083
1109
  } : void 0
1084
1110
  };
1085
1111
  }
1086
- function te() {
1112
+ function se() {
1087
1113
  if (typeof document > "u") return;
1088
1114
  const e = () => {
1089
- const t = document.currentScript ?? document.querySelector("script[data-endpoint]"), i = Xt(), o = t ? Gt(t) : null, s = i ?? o;
1090
- s?.endpoint && new Yt(s);
1115
+ const t = document.currentScript ?? document.querySelector("script[data-endpoint]"), i = oe(), o = t ? ae(t) : null, n = i ?? o;
1116
+ n?.endpoint && new ie(n);
1091
1117
  };
1092
1118
  document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", e) : e();
1093
1119
  }
1094
1120
  export {
1095
- Yt as Q,
1096
- te as a,
1097
- Zt as c
1121
+ ie as Q,
1122
+ se as a,
1123
+ re as c
1098
1124
  };
1099
- //# sourceMappingURL=bootstrap-U4yiPm5-.js.map
1125
+ //# sourceMappingURL=bootstrap-rINL2pCt.js.map