@qaiddev/thumbs-embed 1.5.1 → 1.6.1

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-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 = {
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, 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
+ return 0.2126 * o + 0.7152 * r + 0.0722 * n;
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((n) => n + n).join("") : i, r = parseInt(o, 16);
20
20
  return {
21
- r: s >> 16 & 255,
22
- g: s >> 8 & 255,
23
- b: s & 255
21
+ r: r >> 16 & 255,
22
+ g: r >> 8 & 255,
23
+ b: r & 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",
43
- modalWidth: a = 400,
44
- backdropOpacity: n = 0.3,
42
+ buttonSize: r = "medium",
43
+ modalWidth: n = 400,
44
+ backdropOpacity: a = 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[r], s = yt[r], 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`,
55
- "--qaid-modal-width": `${a}px`,
56
- "--qaid-backdrop-opacity": String(n),
54
+ "--qaid-icon-size": `${s}px`,
55
+ "--qaid-modal-width": `${n}px`,
56
+ "--qaid-backdrop-opacity": String(a),
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 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;
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
- const o = (a) => {
128
- if (a.key !== "Tab") return;
129
- const n = O(e);
130
- if (n.length === 0) {
131
- a.preventDefault(), e.focus();
127
+ const o = (n) => {
128
+ if (n.key !== "Tab") return;
129
+ const a = F(e);
130
+ if (a.length === 0) {
131
+ n.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 = a[0], c = a[a.length - 1], d = K(t), s = d ? a.indexOf(d) !== -1 : !1;
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 s = O(e);
139
- return s.length > 0 ? s[0].focus() : (e.hasAttribute("tabindex") || (e.setAttribute("tabindex", "-1"), i = !0), e.focus()), {
138
+ const r = F(e);
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 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,117 +169,117 @@ 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 = [];
177
- return Array.from(i.children).forEach((a) => {
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 }));
176
+ const o = Pt(e, i), r = [];
177
+ return Array.from(i.children).forEach((n) => {
178
+ if (!(n instanceof HTMLElement) || o && n === o) return;
179
+ const a = n.inert === !0, l = n.getAttribute("aria-hidden");
180
+ a && l === "true" || (n.inert = !0, n.setAttribute("aria-hidden", "true"), r.push({ el: n, prevInert: a, 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 (; r.length; ) {
183
+ const a = r.pop();
184
+ a.el.inert = a.prevInert, a.prevAriaHidden === null ? a.el.removeAttribute("aria-hidden") : a.el.setAttribute("aria-hidden", a.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, r) {
196
+ const n = e.y, a = t - (e.y + e.height);
197
+ if (a >= i + o)
198
198
  return {
199
199
  top: e.y + e.height + o,
200
200
  position: "below"
201
201
  };
202
- if (a >= i + o)
202
+ if (n >= i + o)
203
203
  return {
204
204
  top: e.y - i - o,
205
205
  position: "above"
206
206
  };
207
- const l = n > a ? "below" : "above";
207
+ const l = a > n ? "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 - r
212
+ ) : c = Math.max(r, e.y - i - o), { top: c, position: l };
213
213
  }
214
- function Bt(e, t, i, o) {
215
- let a = e.x + e.width / 2 - i / 2;
216
- return a = Math.max(o, Math.min(a, t - i - o)), a;
214
+ function Vt(e, t, i, o) {
215
+ let n = e.x + e.width / 2 - i / 2;
216
+ return n = Math.max(o, Math.min(n, t - i - o)), n;
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, r = 24) {
219
+ const a = e.clickX - t - r / 2;
220
+ return Math.max(o, Math.min(a, i - o - r / 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 r = o.height + o.arrowHeight, n = Ut(
224
224
  e,
225
225
  i,
226
- s,
226
+ r,
227
227
  o.gap,
228
228
  o.viewportPadding
229
- ), n = Bt(
229
+ ), a = Vt(
230
230
  e,
231
231
  t,
232
232
  o.width,
233
233
  o.viewportPadding
234
234
  );
235
235
  return {
236
- top: a.top,
237
- left: n,
238
- position: a.position
236
+ top: n.top,
237
+ left: a,
238
+ position: n.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 r = o.gap ?? 8;
243
+ let n = e.bottom + r;
244
+ n + t.height > i.height - r && (n = e.top - t.height - r);
245
+ let a = e.left;
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 Zt(e, t, i, o = V) {
249
- const s = Rt(e, t, i, o), a = Ot(
248
+ function se(e, t, i, o = N) {
249
+ const r = Kt(e, t, i, o), n = _t(
250
250
  e,
251
- s.left,
251
+ r.left,
252
252
  o.width
253
253
  );
254
254
  return {
255
- modal: s,
256
- arrow: { left: a }
255
+ modal: r,
256
+ arrow: { left: n }
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, 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
- level: n
265
+ level: a
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(...a) {
270
+ n("error", a), i.apply(console, a);
271
+ }, console.warn = function(...a) {
272
+ n("warn", a), o.apply(console, a);
273
+ }, console.log = function(...a) {
274
+ n("log", a), r.apply(console, a);
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 = r;
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-DhRZ6-tW.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-NeITyYNe.js").then((t) => t.d).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 r = !!this.config.buttonClass, n = r ? `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 = 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", () => {
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 = 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", () => {
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 = 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", () => {
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 = 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", () => {
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(), r = i.getBoundingClientRect(), { top: n, left: a } = Nt(
644
664
  o,
645
- s,
665
+ r,
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 = `${n}px`, i.style.left = `${a}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;
662
- this.keyboardActivation = !1, this.ensureTargeting().then((a) => {
663
- this.destroyed || (s ? a.startKeyboard(t) : a.startPointer(t, o));
681
+ const r = this.keyboardActivation;
682
+ this.keyboardActivation = !1, this.ensureTargeting().then((n) => {
683
+ this.destroyed || (r ? n.startKeyboard(t) : n.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,49 @@ 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, r = 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);
704
- return await a({
723
+ const { openAnnotationEditor: n } = await import("./annotate-NeITyYNe.js").then((a) => a.d);
724
+ return await n({
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: (a) => this.applyVars(a),
731
+ announce: (a, l) => this.announceMsg(a, l),
732
+ openDialog: (a, l) => this.openDialogA11y(a, l),
712
733
  closeDialog: () => this.closeDialogA11y()
713
734
  });
735
+ } catch (n) {
736
+ return console.error("Annotation editor failed to open:", n), null;
714
737
  } finally {
715
- o.style.pointerEvents = s;
738
+ o.style.pointerEvents = r;
716
739
  }
717
740
  }
718
741
  async submitFeedback() {
719
742
  let t = null;
720
- if (this.config.captureScreenshot) {
721
- if (this.shouldCaptureViaDom()) {
722
- const { captureDomScreenshot: n } = await import("./screenshot-dom-CME7tYRE.js");
723
- t = await n(this.config.screenshotOptions);
724
- } else {
725
- const { captureScreenshot: n } = await import("./screenshot-BkOCLuS2.js");
726
- t = await n(this.config.screenshotOptions);
743
+ if (this.config.captureScreenshot || this.config.feedbackMode === "annotate")
744
+ try {
745
+ if (this.shouldCaptureViaDom()) {
746
+ const { captureDomScreenshot: a } = await import("./screenshot-dom-CME7tYRE.js");
747
+ t = await a(this.config.screenshotOptions);
748
+ } else {
749
+ const { captureScreenshot: a } = await import("./screenshot-BkOCLuS2.js");
750
+ t = await a(this.config.screenshotOptions);
751
+ }
752
+ t && this.announceMsg("Screenshot captured");
753
+ } catch (a) {
754
+ console.error("Screenshot capture failed:", a), t = null;
727
755
  }
728
- t && this.announceMsg("Screenshot captured");
729
- }
730
756
  t && this.config.annotate && (t = await this.openAnnotationEditor(t) ?? t);
731
- const i = this.feedbackData.elementSelector ? {
757
+ const o = this.feedbackData.elementSelector ? {
732
758
  x: this.selectedBounds.x,
733
759
  y: this.selectedBounds.y,
734
760
  width: this.selectedBounds.width,
735
761
  height: this.selectedBounds.height
736
- } : null, o = {
762
+ } : null, r = {
737
763
  feedbackType: this.feedbackData.feedbackType,
738
764
  pageUrl: window.location.href,
739
765
  apiKey: this.config.apiKey || void 0,
@@ -749,30 +775,35 @@ class Yt {
749
775
  screenshot: t,
750
776
  visitorId: this.visitorId,
751
777
  // Include element bounds and user agent for server-side screenshot fallback
752
- elementBounds: i,
778
+ elementBounds: o,
753
779
  userAgent: navigator.userAgent
754
780
  };
755
781
  try {
756
- const n = await fetch(this.config.endpoint, {
782
+ const a = await fetch(this.config.endpoint, {
757
783
  method: "POST",
758
784
  headers: { "Content-Type": "application/json" },
759
- body: JSON.stringify(o)
785
+ body: JSON.stringify(r)
760
786
  });
761
- if (n.ok) {
762
- const l = await n.json();
787
+ if (a.ok) {
788
+ const l = await a.json();
763
789
  this.feedbackId = l.id, this.announceMsg("Feedback sent");
764
790
  }
765
- } catch (n) {
766
- console.error("Failed to submit feedback:", n), this.announceMsg("Failed to send feedback", !0);
791
+ } catch (a) {
792
+ console.error("Failed to submit feedback:", a), this.announceMsg("Failed to send feedback", !0);
767
793
  }
768
- const s = this.feedbackData.feedbackType;
769
- if (s && await this.tryLaunchQuest(s, this.feedbackId)) {
794
+ const n = this.feedbackData.feedbackType;
795
+ if (n && n !== "neutral" && await this.tryLaunchQuest(n, this.feedbackId)) {
770
796
  this.resetFeedbackUi();
771
797
  return;
772
798
  }
773
799
  this.state = "MODAL_OPEN";
774
- const a = await this.ensureModal();
775
- this.destroyed || (a.open(), this.overlayShadowHost && (this.overlayShadowHost.style.pointerEvents = "auto"));
800
+ try {
801
+ const a = await this.ensureModal();
802
+ if (this.destroyed) return;
803
+ a.open(), this.overlayShadowHost && (this.overlayShadowHost.style.pointerEvents = "auto");
804
+ } catch (a) {
805
+ console.error("Failed to open the feedback modal:", a), this.announceMsg("Thank you for your feedback!", !0), this.resetFeedbackUi();
806
+ }
776
807
  }
777
808
  /**
778
809
  * Quest id linked to `type`, or "" when quest launching is disabled
@@ -793,7 +824,7 @@ class Yt {
793
824
  const o = this.questIdFor(t);
794
825
  if (!o) return !1;
795
826
  try {
796
- return this.activeQuest?.destroy(), this.activeQuest = await Nt({
827
+ return this.activeQuest?.destroy(), this.activeQuest = await Gt({
797
828
  questId: o,
798
829
  base: this.config.quests.base,
799
830
  apiKey: this.config.quests.apiKey || void 0,
@@ -803,8 +834,8 @@ class Yt {
803
834
  this.activeQuest = null;
804
835
  }
805
836
  }), !0;
806
- } catch (s) {
807
- return console.error("Failed to launch quest:", s), this.activeQuest = null, !1;
837
+ } catch (r) {
838
+ return console.error("Failed to launch quest:", r), this.activeQuest = null, !1;
808
839
  }
809
840
  }
810
841
  /**
@@ -822,7 +853,7 @@ class Yt {
822
853
  */
823
854
  async ensureModal() {
824
855
  if (!this.modal) {
825
- const { ModalController: t } = await import("./modal-BX5wqy4s.js");
856
+ const { ModalController: t } = await import("./modal-C8Ca7E5j.js");
826
857
  this.modal = new t(this.makeModalHost());
827
858
  }
828
859
  return this.modal;
@@ -868,7 +899,7 @@ class Yt {
868
899
  }
869
900
  /** Warm the modal chunk while the user is targeting, so it opens instantly. */
870
901
  prewarmModal() {
871
- this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-BX5wqy4s.js").catch(() => {
902
+ this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-C8Ca7E5j.js").catch(() => {
872
903
  }));
873
904
  }
874
905
  /**
@@ -878,7 +909,7 @@ class Yt {
878
909
  */
879
910
  async ensureTargeting() {
880
911
  if (!this.targeting) {
881
- const { TargetingController: t } = await import("./targeting-DwdDr9Cm.js");
912
+ const { TargetingController: t } = await import("./targeting-BEQU2Ogo.js");
882
913
  this.targeting = new t(this.makeTargetingHost());
883
914
  }
884
915
  return this.targeting;
@@ -923,7 +954,7 @@ class Yt {
923
954
  }
924
955
  /** Warm the targeting chunk on thumb-button hover, before the click. */
925
956
  prewarmTargeting() {
926
- this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-DwdDr9Cm.js").catch(() => {
957
+ this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-BEQU2Ogo.js").catch(() => {
927
958
  }));
928
959
  }
929
960
  // ==================== Video Recording ====================
@@ -942,7 +973,7 @@ class Yt {
942
973
  */
943
974
  async ensureRecording() {
944
975
  if (!this.recording) {
945
- const { RecordingController: t } = await import("./recording--IwOtRL2.js");
976
+ const { RecordingController: t } = await import("./recording-DhRZ6-tW.js");
946
977
  this.recording = new t(this.makeRecordingHost());
947
978
  }
948
979
  return this.recording;
@@ -998,13 +1029,13 @@ class Yt {
998
1029
  const t = window;
999
1030
  this.prewarmIsTimeout ? clearTimeout(this.prewarmHandle) : t.cancelIdleCallback?.(this.prewarmHandle), this.prewarmHandle = null;
1000
1031
  }
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();
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();
1002
1033
  }
1003
1034
  }
1004
- function K(e) {
1035
+ function $(e) {
1005
1036
  return document.querySelector(e)?.textContent?.trim() ?? "";
1006
1037
  }
1007
- function Xt() {
1038
+ function oe() {
1008
1039
  const e = document.querySelector(
1009
1040
  'script[type="application/json"][data-feedback-config]'
1010
1041
  );
@@ -1013,87 +1044,92 @@ function Xt() {
1013
1044
  if (!t) return null;
1014
1045
  try {
1015
1046
  const i = JSON.parse(t);
1016
- return i.cssSelector && !i.css && (i.css = K(i.cssSelector), delete i.cssSelector), i;
1047
+ return i.cssSelector && !i.css && (i.css = $(i.cssSelector), delete i.cssSelector), i;
1017
1048
  } catch {
1018
1049
  return null;
1019
1050
  }
1020
1051
  }
1021
- function Gt(e) {
1052
+ function ae(e) {
1022
1053
  const t = e.getAttribute("data-endpoint");
1023
1054
  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");
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");
1025
1056
  return {
1026
1057
  endpoint: t,
1027
- css: z ? K(z) : void 0,
1028
- apiKey: j ?? void 0,
1029
- captureScreenshot: Q === "true" ? !0 : void 0,
1058
+ css: B ? $(B) : void 0,
1059
+ apiKey: X ?? void 0,
1060
+ captureScreenshot: G === "true" ? !0 : void 0,
1030
1061
  // 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
1062
+ annotate: J === "false" ? !1 : void 0,
1063
+ annotationColor: Z ?? void 0,
1064
+ screenshotOptions: v || y || w ? {
1065
+ quality: v ? parseFloat(v) : void 0,
1066
+ maxWidth: y ? parseInt(y, 10) : void 0,
1067
+ maxHeight: w ? parseInt(w, 10) : void 0
1036
1068
  } : void 0,
1037
1069
  container: l ?? void 0,
1038
1070
  buttonClass: c ?? void 0,
1039
- direction: Z ?? void 0,
1071
+ direction: at ?? void 0,
1040
1072
  position: i ?? void 0,
1041
1073
  zIndex: o ? parseInt(o, 10) : void 0,
1042
1074
  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
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
+ offset: m || g ? {
1080
+ x: m ? parseInt(m, 10) : void 0,
1081
+ y: g ? parseInt(g, 10) : void 0
1048
1082
  } : 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,
1083
+ modalWidth: S ? parseInt(S, 10) : void 0,
1084
+ backdropOpacity: C ? parseFloat(C) : void 0,
1085
+ fontFamily: j ?? void 0,
1086
+ fontSize: A ? parseInt(A, 10) : void 0,
1053
1087
  colors: {
1054
- positive: s ?? void 0,
1055
- negative: a ?? void 0,
1056
- marker: n ?? void 0
1088
+ positive: r ?? void 0,
1089
+ negative: n ?? void 0,
1090
+ marker: a ?? void 0
1057
1091
  },
1058
- text: C || A || T || D || I || E ? {
1059
- tooltip: C ?? void 0,
1060
- modalTitle: A ?? void 0,
1061
- modalSubtitle: T ?? void 0,
1092
+ text: T || E || I || D || H || z || L ? {
1093
+ tooltip: T ?? void 0,
1094
+ modalTitle: E ?? void 0,
1095
+ modalSubtitle: I ?? void 0,
1062
1096
  placeholder: D ?? void 0,
1063
- submitButton: I ?? void 0,
1064
- skipButton: E ?? void 0
1097
+ submitButton: H ?? void 0,
1098
+ skipButton: z ?? void 0,
1099
+ feedbackLabel: L ?? void 0
1065
1100
  } : 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
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
+ maxDuration: q ? parseInt(q, 10) : void 0,
1110
+ redaction: M === "true" ? !0 : void 0
1075
1111
  } : 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
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
1083
1119
  } : void 0
1084
1120
  };
1085
1121
  }
1086
- function te() {
1122
+ function ne() {
1087
1123
  if (typeof document > "u") return;
1088
1124
  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);
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);
1091
1127
  };
1092
1128
  document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", e) : e();
1093
1129
  }
1130
+ ne();
1094
1131
  export {
1095
- Yt as Q,
1096
- te as a,
1097
- Zt as c
1132
+ ie as Q,
1133
+ se as c
1098
1134
  };
1099
- //# sourceMappingURL=bootstrap-U4yiPm5-.js.map
1135
+ //# sourceMappingURL=loader-DnJ3MHkt.js.map