@qaiddev/thumbs-embed 1.7.0 → 1.9.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.
Files changed (37) hide show
  1. package/README.md +77 -33
  2. package/dist/bootstrap.d.ts +4 -2
  3. package/dist/chunks/{annotate-CMq95aXG.js → annotate-D-o8xCV9.js} +23 -17
  4. package/dist/chunks/annotate-D-o8xCV9.js.map +1 -0
  5. package/dist/chunks/dom-DvdtcUS8.js +17 -0
  6. package/dist/chunks/dom-DvdtcUS8.js.map +1 -0
  7. package/dist/chunks/{loader-CYM1rxDH.js → loader-XbJ2b8KE.js} +229 -167
  8. package/dist/chunks/loader-XbJ2b8KE.js.map +1 -0
  9. package/dist/chunks/modal-XxYobTKE.js +213 -0
  10. package/dist/chunks/modal-XxYobTKE.js.map +1 -0
  11. package/dist/chunks/{recording-BVFd_ryf.js → recording-Dx8AX-BC.js} +103 -98
  12. package/dist/chunks/recording-Dx8AX-BC.js.map +1 -0
  13. package/dist/chunks/{screenshot-BkOCLuS2.js → screenshot-DYOKg2bS.js} +2 -2
  14. package/dist/chunks/{screenshot-BkOCLuS2.js.map → screenshot-DYOKg2bS.js.map} +1 -1
  15. package/dist/chunks/{targeting-1pK6nJI9.js → targeting-Dz6z1BYl.js} +2 -2
  16. package/dist/chunks/{targeting-1pK6nJI9.js.map → targeting-Dz6z1BYl.js.map} +1 -1
  17. package/dist/chunks/{video-BOYqf2Im.js → video-Bd_29-rK.js} +76 -71
  18. package/dist/chunks/video-Bd_29-rK.js.map +1 -0
  19. package/dist/embed.d.ts +11 -0
  20. package/dist/icons.d.ts +2 -0
  21. package/dist/index.js +599 -448
  22. package/dist/index.js.map +1 -1
  23. package/dist/loader.js +1 -1
  24. package/dist/modal.d.ts +14 -4
  25. package/dist/qaid.umd.cjs +14 -38
  26. package/dist/qaid.umd.cjs.map +1 -1
  27. package/dist/recording.d.ts +6 -0
  28. package/dist/screenshot.d.ts +1 -1
  29. package/dist/types.d.ts +14 -2
  30. package/dist/video-capture.d.ts +6 -0
  31. package/package.json +1 -1
  32. package/dist/chunks/annotate-CMq95aXG.js.map +0 -1
  33. package/dist/chunks/loader-CYM1rxDH.js.map +0 -1
  34. package/dist/chunks/modal-Br5x7m6f.js +0 -150
  35. package/dist/chunks/modal-Br5x7m6f.js.map +0 -1
  36. package/dist/chunks/recording-BVFd_ryf.js.map +0 -1
  37. package/dist/chunks/video-BOYqf2Im.js.map +0 -1
@@ -1,20 +1,20 @@
1
- import { i as pt, F as bt, T as mt, a as gt, R as vt } from "./annotate-CMq95aXG.js";
2
- const yt = "button{cursor:pointer}.qaid-buttons{display:flex;gap:.5rem}.qaid-buttons.qaid-vertical{flex-direction:column}.qaid-buttons.qaid-auto-container{position:fixed;z-index:50}.qaid-buttons.qaid-auto-container.qaid-bottom-right{bottom:1rem;right:1rem}.qaid-buttons.qaid-auto-container.qaid-bottom-left{bottom:1rem;left:1rem}.qaid-buttons.qaid-auto-container.qaid-top-right{top:1rem;right:1rem}.qaid-buttons.qaid-auto-container.qaid-top-left{top:1rem;left:1rem}.qaid-buttons.qaid-incognito{opacity:0;transition:opacity .2s ease-in-out}.qaid-buttons.qaid-incognito:hover{opacity:1}.qaid-buttons.qaid-dismissed{display:none!important}.qaid-dismiss-btn{width:20px;height:20px;padding:0;border:none;border-radius:50%;background:#0006;color:#fff;display:flex;align-items:center;justify-content:center;align-self:center;opacity:0;transition:opacity .15s,background .15s;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none}.qaid-dismiss-btn:hover{background:#0009}.qaid-buttons:hover .qaid-dismiss-btn{opacity:1}button.qaid-btn-structural{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-appearance:none;appearance:none}.qaid-icon{width:24px;height:24px}.qaid-btn-structural:not(:has(svg)),.qaid-btn:not(:has(svg)){font-size:var(--qaid-icon-size, 24px);line-height:1}.qaid-emoji-icon{font-size:var(--qaid-icon-size, 24px);line-height:1}.qaid-buttons,.qaid-buttons *,.qaid-modal-container,.qaid-modal-container *{cursor:pointer!important}.qaid-tooltip-wrapper{position:relative}.qaid-tooltip-text{position:fixed;padding:.5rem .75rem;background:#1f2937;color:#fff;font-size:1rem;font-weight:600;border-radius:.5rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s;z-index:99999}.qaid-tooltip-text.qaid-tooltip-visible{opacity:1}.qaid-targeting-overlay{position:fixed;inset:0;z-index:40;pointer-events:none}.qaid-capture-layer{position:fixed;inset:0;pointer-events:none;z-index:9999}@keyframes qaid-slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.qaid-vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.3) 70%,rgba(0,0,0,.6) 100%);z-index:41}.qaid-crosshair-h,.qaid-crosshair-v{position:fixed;pointer-events:none;z-index:42}.qaid-crosshair-h{left:0;right:0;height:1px;background:color-mix(in srgb,var(--qaid-negative) 60%,transparent)}.qaid-crosshair-v{top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--qaid-negative) 60%,transparent)}.qaid-type-up .qaid-crosshair-h,.qaid-type-up .qaid-crosshair-v{background:color-mix(in srgb,var(--qaid-positive) 60%,transparent)}.qaid-highlight-box{position:fixed;top:0;left:0;pointer-events:none;z-index:41;display:none;border:3px solid color-mix(in srgb,var(--qaid-negative) 80%,transparent);border-radius:2px;background:color-mix(in srgb,var(--qaid-negative) 8%,transparent);will-change:transform,width,height}.qaid-type-up .qaid-highlight-box{border-color:color-mix(in srgb,var(--qaid-positive) 80%,transparent);background:color-mix(in srgb,var(--qaid-positive) 8%,transparent)}.qaid-scope{position:fixed;width:80px;height:80px;pointer-events:none;z-index:43;transform:translate(-50%,-50%)}.qaid-scope-ring{position:absolute;inset:10px;border:2px solid color-mix(in srgb,var(--qaid-negative) 80%,transparent);border-radius:50%}.qaid-type-up .qaid-scope-ring{border-color:color-mix(in srgb,var(--qaid-positive) 80%,transparent)}.qaid-scope-ring-inner{position:absolute;inset:20px;border:1px solid color-mix(in srgb,var(--qaid-negative) 50%,transparent);border-radius:50%}.qaid-type-up .qaid-scope-ring-inner{border-color:color-mix(in srgb,var(--qaid-positive) 50%,transparent)}.qaid-scope-dot{position:absolute;top:50%;left:50%;width:4px;height:4px;background:var(--qaid-negative);border-radius:50%;transform:translate(-50%,-50%)}.qaid-type-up .qaid-scope-dot{background:var(--qaid-positive)}.qaid-selected-marker{position:fixed;border:3px solid var(--qaid-marker, #6366f1);border-radius:50%;pointer-events:none;z-index:44;animation:qaid-markerPulse 1.5s ease-in-out infinite}@keyframes qaid-markerPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}.qaid-backdrop{position:fixed;inset:0;z-index:45;background:#0000004d}.qaid-modal-container{position:fixed;z-index:50;display:flex;flex-direction:column;align-items:flex-start;max-height:calc(100vh - 32px);font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-modal-container.qaid-above{flex-direction:column-reverse}.qaid-modal-arrow{width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;position:relative;align-self:flex-start}.qaid-modal-container.qaid-below .qaid-modal-arrow{border-bottom:12px solid light-dark(#ffffff,#1f2937)}.qaid-modal-container.qaid-above .qaid-modal-arrow{border-top:12px solid light-dark(#ffffff,#1f2937)}.qaid-modal-box{color-scheme:inherit;background:light-dark(#ffffff,#1f2937);border-radius:1rem;padding:1.5rem;box-shadow:0 25px 50px -12px light-dark(rgba(0,0,0,.25),rgba(0,0,0,.5));width:var(--qaid-modal-width, 400px);max-width:calc(100vw - 32px);max-height:calc(100vh - 60px);overflow-y:auto}.qaid-modal-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}button.qaid-type-toggle{border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;flex-shrink:0;-webkit-appearance:none;appearance:none}button.qaid-type-toggle:hover{transform:scale(1.1)}button.qaid-type-toggle:not(.qaid-type-toggle-custom){width:2.5rem;height:2.5rem;border-radius:50%}button.qaid-type-toggle:not(.qaid-type-toggle-custom) svg{width:1.25rem;height:1.25rem}button.qaid-type-toggle.qaid-type-up{background:var(--qaid-positive);color:#fff}button.qaid-type-toggle.qaid-type-down{background:var(--qaid-negative);color:#fff}.qaid-type-static{width:2.5rem;height:2.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--qaid-marker, #6366f1);color:var(--qaid-marker-text, white)}.qaid-type-static svg{width:1.25rem;height:1.25rem}.qaid-modal-header-text{flex:1;min-width:0}.qaid-modal-title{font-size:1.125rem;font-weight:700;margin:0 0 .25rem;color:light-dark(#1f2937,#f9fafb)}.qaid-modal-subtitle{color:light-dark(#6b7280,#9ca3af);margin:0;font-size:.875rem}.qaid-textarea{width:100%;height:6rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:1rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box;background:light-dark(#ffffff,#111827);color:light-dark(#1f2937,#f9fafb)}.qaid-textarea:focus{outline:none;border-color:var(--qaid-marker);box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 20%,transparent)}.qaid-btn-row{display:flex;gap:.5rem;justify-content:flex-end}button.qaid-btn-submit{padding:.5rem 1rem;background:var(--qaid-marker);color:var(--qaid-marker-text, white);border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s,filter .2s;-webkit-appearance:none;appearance:none}button.qaid-btn-submit:hover{filter:brightness(.85)}button.qaid-btn-submit:focus{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 30%,transparent)}.qaid-bottom-sheet{position:fixed;bottom:0;left:0;right:0;z-index:50;animation:qaid-slideUpSheet .3s ease-out;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-bottom-sheet-content{background:light-dark(#ffffff,#1f2937);border-radius:1rem 1rem 0 0;padding:1.5rem;padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}.qaid-bottom-sheet-handle{width:36px;height:4px;background:light-dark(rgba(0,0,0,.2),rgba(255,255,255,.2));border-radius:2px;margin:0 auto 1rem}@keyframes qaid-slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}button.qaid-btn-record:hover{background:#dc2626;color:#fff}.qaid-recording-indicator{position:fixed;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:light-dark(#1f2937,#374151);color:#fff;border-radius:9999px;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:.875rem;font-weight:500;box-shadow:0 4px 12px #0000004d;z-index:99999;animation:qaid-slideDown .2s ease-out}.qaid-recording-dot{width:10px;height:10px;background:#dc2626;border-radius:50%;animation:qaid-dotPulse 1.5s ease-in-out infinite}@keyframes qaid-dotPulse{0%,to{opacity:1}50%{opacity:.3}}.qaid-recording-time{font-variant-numeric:tabular-nums;min-width:2.5rem;text-align:center}button.qaid-recording-stop{padding:.25rem .75rem;background:#dc2626;color:#fff;border:none;border-radius:9999px;font-size:.75rem;font-weight:600;cursor:pointer;transition:background-color .2s;-webkit-appearance:none;appearance:none}button.qaid-recording-stop:hover{background:#b91c1c}.qaid-video-preview{position:fixed;inset:0 0 auto;height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:#0009;z-index:99998;animation:qaid-fadeIn .2s ease-out}@keyframes qaid-fadeIn{0%{opacity:0}to{opacity:1}}.qaid-video-preview-box{color-scheme:inherit;background:light-dark(#ffffff,#1f2937);border-radius:1rem;padding:1.5rem;box-shadow:0 25px 50px -12px #00000080;width:560px;max-width:100%;max-height:100%;overflow-y:auto;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px)}.qaid-video-preview-box h3{font-size:1.125rem;font-weight:700;margin:0 0 1rem;color:light-dark(#1f2937,#f9fafb)}.qaid-video-preview-box video{width:100%;max-height:50vh;max-height:50dvh;object-fit:contain;border-radius:.5rem;background:#000;margin-bottom:1rem}.qaid-video-preview-box textarea{width:100%;height:4rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:.875rem;resize:vertical;margin-bottom:1rem;box-sizing:border-box;background:light-dark(#ffffff,#111827);color:light-dark(#1f2937,#f9fafb)}.qaid-video-preview-box textarea:focus{outline:none;border-color:var(--qaid-marker);box-shadow:0 0 0 3px color-mix(in srgb,var(--qaid-marker) 20%,transparent)}.qaid-video-preview-actions{display:flex;gap:.5rem;justify-content:flex-end}button.qaid-video-btn{padding:.5rem 1rem;border:none;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s,filter .2s;-webkit-appearance:none;appearance:none}button.qaid-video-btn-cancel{background:light-dark(#f3f4f6,#374151);color:light-dark(#374151,#d1d5db)}button.qaid-video-btn-cancel:hover{background:light-dark(#e5e7eb,#4b5563)}button.qaid-video-btn-rerecord{background:light-dark(#fef3c7,#78350f);color:light-dark(#92400e,#fde68a)}button.qaid-video-btn-rerecord:hover{filter:brightness(.9)}button.qaid-video-btn-send{background:var(--qaid-marker);color:var(--qaid-marker-text, white)}button.qaid-video-btn-send:hover{filter:brightness(.85)}button.qaid-video-btn-send:disabled{opacity:.5;cursor:not-allowed}.qaid-video-sending{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:light-dark(#6b7280,#9ca3af)}.qaid-annotate{position:fixed;inset:0;z-index:2147483000;display:flex;flex-direction:column;gap:.75rem;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));box-sizing:border-box;background:#000000d9;font-family:var(--qaid-font-family, system-ui, -apple-system, sans-serif);font-size:var(--qaid-font-size, 16px);animation:qaid-fadeIn .2s ease-out}.qaid-annotate-title{margin:0;font-size:1rem;font-weight:700;text-align:center;color:#f9fafb}.qaid-annotate-desc{margin:0;font-size:.8125rem;line-height:1.4;text-align:center;color:#f9fafbbf}.qaid-annotate-stage{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto}.qaid-annotate-canvas{max-width:100%;max-height:100%;object-fit:contain;background:light-dark(#ffffff,#111827);border-radius:.5rem;box-shadow:0 10px 30px #00000080;touch-action:none;cursor:crosshair}.qaid-annotate-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:center;padding:.5rem .75rem;background:light-dark(#ffffff,#1f2937);border-radius:.75rem;box-shadow:0 10px 30px light-dark(rgba(0,0,0,.25),rgba(0,0,0,.5))}.qaid-annotate-tools,.qaid-annotate-actions{display:flex;gap:.375rem;align-items:center}button.qaid-annotate-tool,button.qaid-annotate-action{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-width:44px;min-height:44px;padding:0 .75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;background:light-dark(#f9fafb,#111827);color:light-dark(#1f2937,#f9fafb);font-family:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;-webkit-appearance:none;appearance:none;transition:background-color .15s,color .15s,border-color .15s,filter .15s}button.qaid-annotate-tool svg,button.qaid-annotate-action svg{width:20px;height:20px}.qaid-annotate-colors{display:flex;gap:.25rem;align-items:center}button.qaid-annotate-swatch{width:28px;height:28px;min-width:28px;padding:0;border-radius:9999px;border:2px solid light-dark(#d1d5db,#4b5563);background:var(--qaid-swatch, #000);cursor:pointer;-webkit-appearance:none;appearance:none;transition:transform .1s,box-shadow .15s,border-color .15s}button.qaid-annotate-swatch:hover{transform:scale(1.12)}button.qaid-annotate-swatch[aria-pressed=true]{border-color:light-dark(#111827,#f9fafb);box-shadow:0 0 0 2px var(--qaid-swatch)}@media(forced-colors:active){button.qaid-annotate-swatch[aria-pressed=true]{outline:2px solid Highlight;outline-offset:1px}}button.qaid-annotate-tool:hover,button.qaid-annotate-action:hover{background:light-dark(#eef2ff,#312e81)}button.qaid-annotate-tool[aria-pressed=true],button.qaid-annotate-done{background:var(--qaid-marker, #6366f1);color:var(--qaid-marker-text, #fff);border-color:var(--qaid-marker, #6366f1)}button.qaid-annotate-done:hover{filter:brightness(.9);background:var(--qaid-marker, #6366f1)}button.qaid-annotate-action:disabled{opacity:.45;cursor:not-allowed}@media(forced-colors:active){button.qaid-annotate-tool[aria-pressed=true],button.qaid-annotate-done{border:2px solid Highlight}.qaid-annotate-canvas{border:1px solid CanvasText}}button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible{outline:2px solid var(--qaid-marker, #6366f1);outline-offset:2px}.qaid-textarea:focus-visible,button.qaid-btn-submit:focus-visible,.qaid-video-preview-box textarea:focus-visible{outline:2px solid var(--qaid-marker, #6366f1);outline-offset:2px}.qaid-buttons.qaid-incognito:focus-within{opacity:1}.qaid-buttons:focus-within .qaid-dismiss-btn,.qaid-dismiss-btn:focus-visible{opacity:1}.qaid-dismiss-btn{min-width:24px;min-height:24px}button.qaid-recording-stop{min-height:24px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,.qaid-textarea:focus,button.qaid-btn-submit:focus,.qaid-video-preview-box textarea:focus{outline:2px solid CanvasText;outline-offset:2px}.qaid-selected-marker,.qaid-highlight-box{border-color:Highlight}}.qaid-confirm{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:.5rem 0}.qaid-confirm-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:9999px;color:#fff;background:var(--qaid-success, #22c55e);margin-bottom:.25rem;animation:qaid-confirm-pop .28s cubic-bezier(.34,1.56,.64,1)}.qaid-confirm-icon .qaid-icon{width:24px;height:24px}.qaid-confirm-title{margin:0;font-size:1rem;font-weight:600;color:var(--qaid-text, #111827)}.qaid-confirm-title:focus-visible{outline:2px solid var(--qaid-primary, #6366f1);outline-offset:3px;border-radius:4px}.qaid-confirm-message{margin:0;font-size:.875rem;color:var(--qaid-text-muted, #6b7280)}.qaid-confirm .qaid-confirm-close{margin-top:.5rem;min-width:96px}@keyframes qaid-confirm-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.qaid-confirm-icon{animation:none}}", wt = "body.qaid-targeting,body.qaid-targeting *{cursor:none!important}";
1
+ import { i as At, F as Tt, T as It, a as Et, R as zt } from "./annotate-D-o8xCV9.js";
2
+ const Dt = "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}:where(button.qaid-btn-structural)>svg:where(:not(.qaid-icon):not([width])){width:var(--qaid-icon-size, 24px);height:var(--qaid-icon-size, 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:var(--qaid-font-size, 16px);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, #6365f1);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, #6365f1);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:calc(var(--qaid-font-size, 16px) * 1.125);font-weight:700;margin:0 0 .25rem;color:light-dark(#1f2937,#f9fafb)}.qaid-modal-subtitle{color:light-dark(#6b7280,#9ca3af);margin:0;font-size:calc(var(--qaid-font-size, 16px) * .875)}.qaid-textarea{width:100%;height:6rem;padding:.75rem;border:1px solid light-dark(#d1d5db,#374151);border-radius:.5rem;font-family:inherit;font-size:var(--qaid-font-size, 16px);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:calc(var(--qaid-font-size, 16px) * .875);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:calc(var(--qaid-font-size, 16px) * .875);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:calc(var(--qaid-font-size, 16px) * .75);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:calc(var(--qaid-font-size, 16px) * 1.125);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:calc(var(--qaid-font-size, 16px) * .875);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-error{margin:0 0 .75rem;font-size:calc(var(--qaid-font-size, 16px) * .875);font-weight:500;color:light-dark(#b91c1c,#fca5a5)}.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:calc(var(--qaid-font-size, 16px) * .875);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:calc(var(--qaid-font-size, 16px) * .875);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:var(--qaid-font-size, 16px);font-weight:700;text-align:center;color:#f9fafb}.qaid-annotate-desc{margin:0;font-size:calc(var(--qaid-font-size, 16px) * .8125);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:calc(var(--qaid-font-size, 16px) * .8125);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, #6365f1);color:var(--qaid-marker-text, #fff);border-color:var(--qaid-marker, #6365f1)}button.qaid-annotate-done:hover{filter:brightness(.9);background:var(--qaid-marker, #6365f1)}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, #6365f1);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, #6365f1);outline-offset:2px}.qaid-buttons.qaid-incognito:focus-within{opacity:1}.qaid-buttons:focus-within .qaid-dismiss-btn,.qaid-dismiss-btn:focus-visible{opacity:1}.qaid-dismiss-btn{min-width:24px;min-height:24px}button.qaid-recording-stop{min-height:24px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){button:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible,[role=button]:focus-visible,.qaid-textarea:focus,button.qaid-btn-submit:focus,.qaid-video-preview-box textarea:focus{outline:2px solid CanvasText;outline-offset:2px}.qaid-selected-marker,.qaid-highlight-box{border-color:Highlight}}.qaid-confirm{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;padding:.5rem 0}.qaid-confirm-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:9999px;color:#fff;background:var(--qaid-success, #22c55e);margin-bottom:.25rem;animation:qaid-confirm-pop .28s cubic-bezier(.34,1.56,.64,1)}.qaid-confirm-icon .qaid-icon{width:24px;height:24px}.qaid-confirm-error .qaid-confirm-icon{background:var(--qaid-error, #dc2626)}.qaid-confirm-title{margin:0;font-size:var(--qaid-font-size, 16px);font-weight:600;color:var(--qaid-text, light-dark(#111827, #f9fafb))}.qaid-confirm-title:focus-visible{outline:2px solid var(--qaid-primary, #6365f1);outline-offset:3px;border-radius:4px}.qaid-confirm-message{margin:0;font-size:calc(var(--qaid-font-size, 16px) * .875);color:var(--qaid-text-muted, light-dark(#6b7280, #9ca3af))}.qaid-confirm .qaid-confirm-close{margin-top:.5rem;min-width:96px}@keyframes qaid-confirm-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.qaid-confirm-icon{animation:none}}", Ht = "body.qaid-targeting,body.qaid-targeting *{cursor:none!important}";
3
3
  let b = 0;
4
- const qt = "button.qaid-btn{width:var(--qaid-btn-size);height:var(--qaid-btn-size);border-radius:50%;border:none;background:#f3f4f6;color:#374151;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);transition:background-color .2s,color .2s,transform .2s;-webkit-appearance:none;appearance:none;--qaid-hover-up-bg:var(--qaid-positive);--qaid-hover-up-color:#fff;--qaid-hover-down-bg:var(--qaid-negative);--qaid-hover-down-color:#fff}button.qaid-btn:hover{transform:scale(1.05)}button.qaid-btn-up:hover{background:var(--qaid-hover-up-bg);color:var(--qaid-hover-up-color)}button.qaid-btn-down:hover{background:var(--qaid-hover-down-bg);color:var(--qaid-hover-down-color)}button.qaid-btn-feedback:hover{background:var(--qaid-marker,#6366f1);color:var(--qaid-marker-text,#fff)}button.qaid-btn svg{width:var(--qaid-icon-size);height:var(--qaid-icon-size)}", xt = {
4
+ const Lt = "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,#6365f1);color:var(--qaid-marker-text,#fff)}button.qaid-btn svg{width:var(--qaid-icon-size);height:var(--qaid-icon-size)}", Mt = {
5
5
  small: 36,
6
6
  medium: 48,
7
7
  large: 64
8
- }, kt = {
8
+ }, Bt = {
9
9
  small: 18,
10
10
  medium: 24,
11
11
  large: 32
12
12
  };
13
- function Ct(e, t, i) {
13
+ function Ot(e, t, i) {
14
14
  const [o, r, n] = [e, t, i].map((a) => (a = a / 255, a <= 0.03928 ? a / 12.92 : Math.pow((a + 0.055) / 1.055, 2.4)));
15
15
  return 0.2126 * o + 0.7152 * r + 0.0722 * n;
16
16
  }
17
- function St(e) {
17
+ function Rt(e) {
18
18
  if (e.startsWith("#")) {
19
19
  const i = e.slice(1), o = i.length === 3 ? i.split("").map((n) => n + n).join("") : i, r = parseInt(o, 16);
20
20
  return {
@@ -30,21 +30,21 @@ function St(e) {
30
30
  b: parseInt(t[3])
31
31
  } : null;
32
32
  }
33
- function At(e) {
34
- const t = St(e);
35
- return t && Ct(t.r, t.g, t.b) > 0.4 ? "black" : "white";
33
+ function Pt(e) {
34
+ const t = Rt(e);
35
+ return t && Ot(t.r, t.g, t.b) > 0.4 ? "black" : "white";
36
36
  }
37
- function Tt(e = {}) {
37
+ function Ft(e = {}) {
38
38
  const {
39
39
  positiveColor: t = "rgb(0, 200, 83)",
40
40
  negativeColor: i = "rgb(255, 0, 0)",
41
- markerColor: o = "#6366f1",
41
+ markerColor: o = "#6365f1",
42
42
  buttonSize: r = "medium",
43
43
  modalWidth: n = 400,
44
44
  backdropOpacity: a = 0.3,
45
45
  fontFamily: l = "system-ui, -apple-system, sans-serif",
46
46
  fontSize: c = 16
47
- } = e, d = xt[r], s = kt[r], u = At(o);
47
+ } = e, d = Mt[r], s = Bt[r], u = Pt(o);
48
48
  return {
49
49
  "--qaid-positive": t,
50
50
  "--qaid-negative": i,
@@ -58,22 +58,22 @@ function Tt(e = {}) {
58
58
  "--qaid-font-size": `${c}px`
59
59
  };
60
60
  }
61
- function Et(e, t) {
61
+ function Ut(e, t) {
62
62
  for (const [i, o] of Object.entries(t))
63
63
  e.style.setProperty(i, o);
64
64
  }
65
- function U() {
66
- return yt + qt;
65
+ function Q() {
66
+ return Dt + Lt;
67
67
  }
68
- function It() {
68
+ function Vt() {
69
69
  if (b++, b > 1) return;
70
70
  const e = document.createElement("style");
71
- e.id = "qaid-styles", e.textContent = wt, document.head.appendChild(e);
71
+ e.id = "qaid-styles", e.textContent = Ht, document.head.appendChild(e);
72
72
  }
73
- function Dt() {
73
+ function _t() {
74
74
  b <= 0 || (b--, b === 0 && document.getElementById("qaid-styles")?.remove());
75
75
  }
76
- const V = "data-qaid-a11y-live", Ht = "position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;", zt = [
76
+ const W = "data-qaid-a11y-live", $t = "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;", Kt = [
77
77
  "a[href]",
78
78
  "button",
79
79
  "input",
@@ -81,25 +81,25 @@ const V = "data-qaid-a11y-live", Ht = "position:absolute;width:1px;height:1px;ma
81
81
  "select",
82
82
  "[tabindex]"
83
83
  ].join(",");
84
- function Lt(e) {
84
+ function Nt(e) {
85
85
  return e.ownerDocument || document;
86
86
  }
87
- function Mt(e, t) {
87
+ function jt(e, t) {
88
88
  const i = t ? "assertive" : "polite", o = e.querySelector(
89
- `[${V}="${i}"]`
89
+ `[${W}="${i}"]`
90
90
  );
91
91
  if (o) return o;
92
- const n = Lt(e).createElement("div");
93
- return n.setAttribute(V, i), n.setAttribute("role", t ? "alert" : "status"), n.setAttribute("aria-live", t ? "assertive" : "polite"), n.setAttribute("aria-atomic", "true"), n.style.cssText = Ht, e.appendChild(n), n;
92
+ const n = Nt(e).createElement("div");
93
+ return n.setAttribute(W, i), n.setAttribute("role", t ? "alert" : "status"), n.setAttribute("aria-live", t ? "assertive" : "polite"), n.setAttribute("aria-atomic", "true"), n.style.cssText = $t, e.appendChild(n), n;
94
94
  }
95
- function Bt(e, t, i = {}) {
96
- const o = Mt(e, !!i.assertive);
95
+ function Qt(e, t, i = {}) {
96
+ const o = jt(e, !!i.assertive);
97
97
  o.textContent = "", o.textContent = t;
98
98
  }
99
- function Ot(e) {
99
+ function Wt(e) {
100
100
  return e.hasAttribute("disabled") ? !0 : e.disabled === !0;
101
101
  }
102
- function Rt(e) {
102
+ function Yt(e) {
103
103
  let t = e;
104
104
  for (; t; ) {
105
105
  if (t.hasAttribute("hidden")) return !0;
@@ -110,52 +110,52 @@ function Rt(e) {
110
110
  }
111
111
  return !1;
112
112
  }
113
- function _(e) {
113
+ function Y(e) {
114
114
  return Array.from(
115
- e.querySelectorAll(zt)
116
- ).filter((i) => !(i.getAttribute("tabindex") === "-1" || i instanceof HTMLInputElement && i.type === "hidden" || i instanceof HTMLAnchorElement && !i.getAttribute("href") || Ot(i) || Rt(i)));
115
+ e.querySelectorAll(Kt)
116
+ ).filter((i) => !(i.getAttribute("tabindex") === "-1" || i instanceof HTMLInputElement && i.type === "hidden" || i instanceof HTMLAnchorElement && !i.getAttribute("href") || Wt(i) || Yt(i)));
117
117
  }
118
- function j(e) {
118
+ function tt(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 Pt(e) {
124
+ function Xt(e) {
125
125
  const t = e.ownerDocument || document;
126
126
  let i = !1;
127
127
  const o = (n) => {
128
128
  if (n.key !== "Tab") return;
129
- const a = _(e);
129
+ const a = Y(e);
130
130
  if (a.length === 0) {
131
131
  n.preventDefault(), e.focus();
132
132
  return;
133
133
  }
134
- const l = a[0], c = a[a.length - 1], d = j(t), s = d ? a.indexOf(d) !== -1 : !1;
134
+ const l = a[0], c = a[a.length - 1], d = tt(t), s = d ? a.indexOf(d) !== -1 : !1;
135
135
  n.shiftKey ? (!s || d === l) && (n.preventDefault(), c.focus()) : (!s || d === c) && (n.preventDefault(), l.focus());
136
136
  };
137
137
  e.addEventListener("keydown", o);
138
- const r = _(e);
138
+ const r = Y(e);
139
139
  return r.length > 0 ? r[0].focus() : (e.hasAttribute("tabindex") || (e.setAttribute("tabindex", "-1"), i = !0), e.focus()), {
140
140
  release() {
141
141
  e.removeEventListener("keydown", o), i && (e.removeAttribute("tabindex"), i = !1);
142
142
  }
143
143
  };
144
144
  }
145
- function Ft() {
146
- return j(document);
145
+ function Jt() {
146
+ return tt(document);
147
147
  }
148
- function Ut(e) {
148
+ function Gt(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 Vt(e, t = {}) {
155
+ function Zt(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 _t(e, t) {
158
+ function te(e, t) {
159
159
  let i = e;
160
160
  for (; i && i !== t; ) {
161
161
  const o = i.parentNode;
@@ -169,11 +169,11 @@ function _t(e, t) {
169
169
  }
170
170
  return null;
171
171
  }
172
- function Kt(e) {
172
+ function ee(e) {
173
173
  const i = (e.ownerDocument || document).body;
174
174
  if (!i) return () => {
175
175
  };
176
- const o = _t(e, i), r = [];
176
+ const o = te(e, i), r = [];
177
177
  return Array.from(i.children).forEach((n) => {
178
178
  if (!(n instanceof HTMLElement) || o && n === o) return;
179
179
  const a = n.inert === !0, l = n.getAttribute("aria-hidden");
@@ -185,14 +185,14 @@ function Kt(e) {
185
185
  }
186
186
  };
187
187
  }
188
- const Q = {
188
+ const et = {
189
189
  width: 400,
190
190
  height: 280,
191
191
  arrowHeight: 12,
192
192
  gap: 8,
193
193
  viewportPadding: 16
194
194
  };
195
- function Nt(e, t, i, o, r) {
195
+ function ie(e, t, i, o, r) {
196
196
  const n = e.y, a = t - (e.y + e.height);
197
197
  if (a >= i + o)
198
198
  return {
@@ -211,22 +211,22 @@ function Nt(e, t, i, o, r) {
211
211
  t - i - r
212
212
  ) : c = Math.max(r, e.y - i - o), { top: c, position: l };
213
213
  }
214
- function $t(e, t, i, o) {
214
+ function oe(e, t, i, o) {
215
215
  let n = e.x + e.width / 2 - i / 2;
216
216
  return n = Math.max(o, Math.min(n, t - i - o)), n;
217
217
  }
218
- function jt(e, t, i, o = 24, r = 24) {
218
+ function ae(e, t, i, o = 24, r = 24) {
219
219
  const a = e.clickX - t - r / 2;
220
220
  return Math.max(o, Math.min(a, i - o - r / 2));
221
221
  }
222
- function Qt(e, t, i, o = Q) {
223
- const r = o.height + o.arrowHeight, n = Nt(
222
+ function ne(e, t, i, o = et) {
223
+ const r = o.height + o.arrowHeight, n = ie(
224
224
  e,
225
225
  i,
226
226
  r,
227
227
  o.gap,
228
228
  o.viewportPadding
229
- ), a = $t(
229
+ ), a = oe(
230
230
  e,
231
231
  t,
232
232
  o.width,
@@ -238,15 +238,15 @@ function Qt(e, t, i, o = Q) {
238
238
  position: n.position
239
239
  };
240
240
  }
241
- function Wt(e, t, i, o = {}) {
241
+ function re(e, t, i, o = {}) {
242
242
  const r = o.gap ?? 8;
243
243
  let n = e.bottom + r;
244
244
  n + t.height > i.height - r && (n = e.top - t.height - r);
245
245
  let a = e.left;
246
246
  return a < r ? a = r : a + t.width > i.width - r && (a = i.width - t.width - r), n < r ? n = r : n + t.height > i.height - r && (n = i.height - t.height - r), { top: n, left: a };
247
247
  }
248
- function ue(e, t, i, o = Q) {
249
- const r = Qt(e, t, i, o), n = jt(
248
+ function Ce(e, t, i, o = et) {
249
+ const r = ne(e, t, i, o), n = ae(
250
250
  e,
251
251
  r.left,
252
252
  o.width
@@ -256,15 +256,15 @@ function ue(e, t, i, o = Q) {
256
256
  arrow: { left: n }
257
257
  };
258
258
  }
259
- const Yt = 20;
260
- function Xt(e) {
259
+ const se = 20;
260
+ function de(e) {
261
261
  const t = [], i = console.error, o = console.warn, r = console.log, n = (a, l) => {
262
262
  const c = {
263
263
  message: l.map((d) => String(d)).join(" "),
264
264
  timestamp: Date.now(),
265
265
  level: a
266
266
  };
267
- t.length >= Yt && t.shift(), t.push(c), e && e(c);
267
+ t.length >= se && t.shift(), t.push(c), e && e(c);
268
268
  };
269
269
  return console.error = function(...a) {
270
270
  n("error", a), i.apply(console, a);
@@ -279,7 +279,7 @@ function Xt(e) {
279
279
  }
280
280
  };
281
281
  }
282
- const Gt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Jt = (e) => (
282
+ const le = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", ce = (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 Gt = "https://unpkg.com/@qaiddev/quests-embed@1/dist/qaid-quests.js", Jt =
287
287
  e
288
288
  )
289
289
  );
290
- let Zt = Jt, p = null, x = null;
291
- function te(e) {
292
- return p && x === e || (x = e, p = Promise.resolve(Zt(e)).then((t) => {
290
+ let ue = ce, p = null, k = null;
291
+ function he(e) {
292
+ return p && k === e || (k = e, p = Promise.resolve(ue(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 p = null, x = null, t;
298
+ throw p = null, k = null, t;
299
299
  })), p;
300
300
  }
301
- async function ee(e) {
302
- const t = await te(e.moduleUrl), i = e.base.replace(/\/+$/, ""), o = e.feedbackId != null ? { feedbackId: e.feedbackId } : void 0;
301
+ async function fe(e) {
302
+ const t = await he(e.moduleUrl), i = e.base.replace(/\/+$/, ""), o = e.feedbackId != null ? { feedbackId: e.feedbackId } : void 0;
303
303
  return new t.QaidQuests({
304
304
  endpoint: `${i}/responses`,
305
305
  configUrl: `${i}/${encodeURIComponent(e.questId)}/definition`,
@@ -308,7 +308,7 @@ async function ee(e) {
308
308
  onClose: e.onClose
309
309
  });
310
310
  }
311
- const K = "qaid_visitor_id", N = "qaid_hide_feedback", ie = [
311
+ const X = "qaid_visitor_id", J = "qaid_hide_feedback", pe = [
312
312
  "#ef4444",
313
313
  "#f59e0b",
314
314
  "#22c55e",
@@ -316,34 +316,46 @@ const K = "qaid_visitor_id", N = "qaid_hide_feedback", ie = [
316
316
  "#111827",
317
317
  "#ffffff"
318
318
  ];
319
- function oe() {
319
+ function be() {
320
320
  return typeof window.matchMedia == "function" && window.matchMedia("(pointer: coarse)").matches;
321
321
  }
322
- function k(e) {
323
- return e ? `${N}_${e}` : N;
322
+ function S(e) {
323
+ return e ? `${J}_${e}` : J;
324
324
  }
325
- function ae(e) {
325
+ function me(e) {
326
326
  try {
327
- return localStorage.getItem(k(e)) === "1";
327
+ return localStorage.getItem(S(e)) === "1";
328
328
  } catch {
329
329
  return !1;
330
330
  }
331
331
  }
332
- function $(e, t = !0) {
332
+ function G(e, t = !0) {
333
333
  try {
334
- t ? localStorage.setItem(k(e), "1") : localStorage.removeItem(k(e));
334
+ t ? localStorage.setItem(S(e), "1") : localStorage.removeItem(S(e));
335
335
  } catch {
336
336
  }
337
337
  }
338
- function ne() {
338
+ function Z() {
339
+ const e = typeof crypto < "u" ? crypto : void 0;
340
+ if (e && typeof e.randomUUID == "function") return e.randomUUID();
341
+ const t = new Uint8Array(16);
342
+ if (e && typeof e.getRandomValues == "function")
343
+ e.getRandomValues(t);
344
+ else
345
+ for (let o = 0; o < t.length; o++) t[o] = Math.floor(Math.random() * 256);
346
+ t[6] = t[6] & 15 | 64, t[8] = t[8] & 63 | 128;
347
+ const i = Array.from(t, (o) => o.toString(16).padStart(2, "0")).join("");
348
+ return `${i.slice(0, 8)}-${i.slice(8, 12)}-${i.slice(12, 16)}-${i.slice(16, 20)}-${i.slice(20)}`;
349
+ }
350
+ function ge() {
339
351
  try {
340
- let e = localStorage.getItem(K);
341
- return e || (e = crypto.randomUUID(), localStorage.setItem(K, e)), e;
352
+ let e = localStorage.getItem(X);
353
+ return e || (e = Z(), localStorage.setItem(X, e)), e;
342
354
  } catch {
343
- return crypto.randomUUID();
355
+ return Z();
344
356
  }
345
357
  }
346
- class re {
358
+ class ve {
347
359
  config;
348
360
  state = "IDLE";
349
361
  feedbackData = {
@@ -432,7 +444,7 @@ class re {
432
444
  colors: {
433
445
  positive: t.colors?.positive ?? "rgb(0, 200, 83)",
434
446
  negative: t.colors?.negative ?? "rgb(255, 0, 0)",
435
- marker: t.colors?.marker ?? "#6366f1"
447
+ marker: t.colors?.marker ?? "#6365f1"
436
448
  },
437
449
  buttonSize: t.buttonSize ?? "medium",
438
450
  text: {
@@ -449,7 +461,9 @@ class re {
449
461
  feedbackLabel: t.text?.feedbackLabel ?? "Send feedback",
450
462
  confirmationTitle: t.text?.confirmationTitle ?? "Thank you!",
451
463
  confirmationMessage: t.text?.confirmationMessage ?? "Your feedback has been received.",
452
- confirmationClose: t.text?.confirmationClose ?? "Close"
464
+ confirmationClose: t.text?.confirmationClose ?? "Close",
465
+ errorTitle: t.text?.errorTitle ?? "Message not sent",
466
+ errorMessage: t.text?.errorMessage ?? "Something went wrong, so we did not get your message. Please try again later."
453
467
  },
454
468
  hideConfirmation: t.hideConfirmation ?? !1,
455
469
  modalWidth: t.modalWidth ?? 400,
@@ -458,8 +472,8 @@ class re {
458
472
  fontSize: t.fontSize ?? 16,
459
473
  captureScreenshot: t.captureScreenshot ?? !1,
460
474
  annotate: t.annotate ?? !0,
461
- annotationColor: t.annotationColor ?? t.colors?.marker ?? "#6366f1",
462
- annotationPalette: t.annotationPalette ?? ie,
475
+ annotationColor: t.annotationColor ?? t.colors?.marker ?? "#6365f1",
476
+ annotationPalette: t.annotationPalette ?? pe,
463
477
  screenshotMethod: t.screenshotMethod ?? "permission",
464
478
  screenshotOptions: {
465
479
  quality: t.screenshotOptions?.quality ?? 0.8,
@@ -486,12 +500,12 @@ class re {
486
500
  video: t.quests?.video ?? "",
487
501
  // Quest service reuses the feedback API key unless overridden.
488
502
  apiKey: t.quests?.apiKey ?? t.apiKey ?? "",
489
- moduleUrl: t.quests?.moduleUrl ?? Gt
503
+ moduleUrl: t.quests?.moduleUrl ?? le
490
504
  }
491
- }, this.boundKeyDown = this.handleKeyDown.bind(this), this.boundResize = this.handleResize.bind(this), this.visitorId = ne(), this.init();
505
+ }, this.boundKeyDown = this.handleKeyDown.bind(this), this.boundResize = this.handleResize.bind(this), this.visitorId = ge(), this.init();
492
506
  }
493
507
  applyVars(t) {
494
- Et(t, this.cssVars);
508
+ Ut(t, this.cssVars);
495
509
  }
496
510
  /**
497
511
  * Announce a message via the shared visually-hidden live regions.
@@ -501,7 +515,7 @@ class re {
501
515
  */
502
516
  announceMsg(t, i = !1) {
503
517
  const o = this.overlayShadowRoot ?? this.shadowRoot;
504
- o && Bt(o, t, { assertive: i });
518
+ o && Qt(o, t, { assertive: i });
505
519
  }
506
520
  /**
507
521
  * Turn a transient surface into an accessible modal dialog: save the
@@ -509,16 +523,16 @@ class re {
509
523
  * background. Paired with closeDialogA11y() on every close path.
510
524
  */
511
525
  openDialogA11y(t, i) {
512
- this.dialogTrigger = Ft(), Vt(t, i), this.dialogTrap = Pt(t), this.dialogRestoreInert = Kt(t);
526
+ this.dialogTrigger = Jt(), Zt(t, i), this.dialogTrap = Xt(t), this.dialogRestoreInert = ee(t);
513
527
  }
514
528
  closeDialogA11y() {
515
- this.dialogTrap?.release(), this.dialogTrap = null, this.dialogRestoreInert && (this.dialogRestoreInert(), this.dialogRestoreInert = null), Ut(this.dialogTrigger), this.dialogTrigger = null;
529
+ this.dialogTrap?.release(), this.dialogTrap = null, this.dialogRestoreInert && (this.dialogRestoreInert(), this.dialogRestoreInert = null), Gt(this.dialogTrigger), this.dialogTrigger = null;
516
530
  }
517
531
  clearActiveThumb() {
518
532
  this.activeThumbBtn && (this.activeThumbBtn.setAttribute("aria-pressed", "false"), this.activeThumbBtn = null);
519
533
  }
520
534
  init() {
521
- It(), this.cssVars = Tt({
535
+ Vt(), this.cssVars = Ft({
522
536
  positiveColor: this.config.colors.positive,
523
537
  negativeColor: this.config.colors.negative,
524
538
  markerColor: this.config.colors.marker,
@@ -527,7 +541,7 @@ class re {
527
541
  backdropOpacity: this.config.backdropOpacity,
528
542
  fontFamily: this.config.fontFamily,
529
543
  fontSize: this.config.fontSize
530
- }), !this.config.hideDismiss && ae(this.config.apiKey) && (this._startDismissed = !0), this.checkMobile(), window.addEventListener("resize", this.boundResize), this.createEmbed(), this.consoleCapture = Xt((t) => {
544
+ }), !this.config.hideDismiss && me(this.config.apiKey) && (this._startDismissed = !0), this.checkMobile(), window.addEventListener("resize", this.boundResize), this.createEmbed(), this.consoleCapture = de((t) => {
531
545
  this.feedbackData.consoleErrors = this.consoleCapture?.errors ?? [];
532
546
  }), this.feedbackData.consoleErrors = this.consoleCapture.errors, this.observeDom(), (this.config.captureVideo && this.videoSupported() || this.config.captureScreenshot) && this.schedulePrewarm(() => {
533
547
  this.config.captureVideo && this.videoSupported() && this.prewarmVideo(), this.config.captureScreenshot && this.prewarmScreenshot();
@@ -540,13 +554,13 @@ class re {
540
554
  * swallowed — a failed preload just falls back to an on-demand load.
541
555
  */
542
556
  prewarmVideo() {
543
- this.videoPrewarmed || (this.videoPrewarmed = !0, import("./recording-BVFd_ryf.js").catch(() => {
544
- }), import("./video-BOYqf2Im.js").catch(() => {
557
+ this.videoPrewarmed || (this.videoPrewarmed = !0, import("./recording-Dx8AX-BC.js").catch(() => {
558
+ }), import("./video-Bd_29-rK.js").catch(() => {
545
559
  }));
546
560
  }
547
561
  prewarmScreenshot() {
548
- this.screenshotPrewarmed || (this.screenshotPrewarmed = !0, (this.shouldCaptureViaDom() ? import("./screenshot-dom-CME7tYRE.js") : import("./screenshot-BkOCLuS2.js")).catch(() => {
549
- }), this.config.annotate && import("./annotate-CMq95aXG.js").then((t) => t.d).catch(() => {
562
+ this.screenshotPrewarmed || (this.screenshotPrewarmed = !0, (this.shouldCaptureViaDom() ? import("./screenshot-dom-CME7tYRE.js") : import("./screenshot-DYOKg2bS.js")).catch(() => {
563
+ }), this.config.annotate && import("./annotate-D-o8xCV9.js").then((t) => t.d).catch(() => {
550
564
  }));
551
565
  }
552
566
  /** Run fn when the main thread is idle; cancelled by destroy(). */
@@ -575,7 +589,7 @@ class re {
575
589
  }), this.domObserver.observe(document.body, { childList: !0 });
576
590
  }
577
591
  checkMobile() {
578
- this.isMobile = pt();
592
+ this.isMobile = At();
579
593
  }
580
594
  handleResize() {
581
595
  this.checkMobile();
@@ -585,7 +599,7 @@ class re {
585
599
  let t = null;
586
600
  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" });
587
601
  const i = document.createElement("style");
588
- if (i.textContent = U(), this.shadowRoot.appendChild(i), this.config.css) {
602
+ if (i.textContent = Q(), this.shadowRoot.appendChild(i), this.config.css) {
589
603
  const d = document.createElement("style");
590
604
  d.textContent = this.config.css, this.shadowRoot.appendChild(d);
591
605
  }
@@ -609,20 +623,20 @@ class re {
609
623
  const d = document.createElement("div");
610
624
  d.className = "qaid-tooltip-wrapper";
611
625
  const s = document.createElement("button");
612
- s.type = "button", s.className = r ? `${n} qaid-btn-feedback` : "qaid-btn qaid-btn-feedback", s.setAttribute("aria-label", this.config.text.feedbackLabel), s.innerHTML = this.config.feedbackIcon || bt, s.addEventListener("click", (u) => this.handleThumbClick("neutral", u.currentTarget, u)), s.addEventListener("mouseenter", () => {
626
+ 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 || Tt, s.addEventListener("click", (u) => this.handleThumbClick("neutral", u.currentTarget, u)), s.addEventListener("mouseenter", () => {
613
627
  this.prewarmTargeting(), this.showTooltip(s);
614
628
  }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s), this.buttonsContainer.appendChild(d);
615
629
  } else if (!this.config.hideThumbs) {
616
630
  const d = document.createElement("div");
617
631
  d.className = "qaid-tooltip-wrapper";
618
632
  const s = document.createElement("button");
619
- s.type = "button", s.className = r ? `${n} qaid-btn-up` : "qaid-btn qaid-btn-up", s.setAttribute("aria-label", this.config.text.positiveLabel), s.innerHTML = this.config.positiveIcon || mt, s.addEventListener("click", (f) => this.handleThumbClick("up", f.currentTarget, f)), s.addEventListener("mouseenter", () => {
633
+ 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 || It, s.addEventListener("click", (f) => this.handleThumbClick("up", f.currentTarget, f)), s.addEventListener("mouseenter", () => {
620
634
  this.prewarmTargeting(), this.showTooltip(s);
621
635
  }), s.addEventListener("mouseleave", () => this.hideTooltip()), d.appendChild(s);
622
636
  const u = document.createElement("div");
623
637
  u.className = "qaid-tooltip-wrapper";
624
638
  const h = document.createElement("button");
625
- h.type = "button", h.className = r ? `${n} qaid-btn-down` : "qaid-btn qaid-btn-down", h.setAttribute("aria-label", this.config.text.negativeLabel), h.innerHTML = this.config.negativeIcon || gt, h.addEventListener("click", (f) => this.handleThumbClick("down", f.currentTarget, f)), h.addEventListener("mouseenter", () => {
639
+ 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 || Et, h.addEventListener("click", (f) => this.handleThumbClick("down", f.currentTarget, f)), h.addEventListener("mouseenter", () => {
626
640
  this.prewarmTargeting(), this.showTooltip(h);
627
641
  }), h.addEventListener("mouseleave", () => this.hideTooltip()), u.appendChild(h), this.buttonsContainer.appendChild(d), this.buttonsContainer.appendChild(u);
628
642
  }
@@ -630,7 +644,7 @@ class re {
630
644
  const d = document.createElement("div");
631
645
  d.className = "qaid-tooltip-wrapper";
632
646
  const s = document.createElement("button");
633
- s.type = "button", s.className = r ? `${n} qaid-btn-record` : "qaid-btn qaid-btn-record", s.setAttribute("aria-label", this.config.text.recordLabel), s.innerHTML = this.config.recordIcon || vt, s.addEventListener("click", () => {
647
+ 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 || zt, s.addEventListener("click", () => {
634
648
  this.ensureRecording().then(
635
649
  (h) => this.config.videoOptions.redaction ? h.startPicking() : h.startRecording()
636
650
  );
@@ -654,7 +668,7 @@ class re {
654
668
  if (this.overlayShadowRoot) return this.overlayShadowRoot;
655
669
  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" });
656
670
  const t = document.createElement("style");
657
- if (t.textContent = U(), this.overlayShadowRoot.appendChild(t), this.config.css) {
671
+ if (t.textContent = Q(), this.overlayShadowRoot.appendChild(t), this.config.css) {
658
672
  const i = document.createElement("style");
659
673
  i.textContent = this.config.css, this.overlayShadowRoot.appendChild(i);
660
674
  }
@@ -664,7 +678,7 @@ class re {
664
678
  showTooltip(t) {
665
679
  const i = this.tooltipElement;
666
680
  i.style.visibility = "hidden", i.classList.add("qaid-tooltip-visible");
667
- const o = t.getBoundingClientRect(), r = i.getBoundingClientRect(), { top: n, left: a } = Wt(
681
+ const o = t.getBoundingClientRect(), r = i.getBoundingClientRect(), { top: n, left: a } = re(
668
682
  o,
669
683
  r,
670
684
  { width: window.innerWidth, height: window.innerHeight }
@@ -675,10 +689,10 @@ class re {
675
689
  this.tooltipElement.classList.remove("qaid-tooltip-visible");
676
690
  }
677
691
  handleDismiss() {
678
- this.buttonsContainer.classList.add("qaid-dismissed"), $(this.config.apiKey, !0);
692
+ this.buttonsContainer.classList.add("qaid-dismissed"), G(this.config.apiKey, !0);
679
693
  }
680
694
  handleThumbClick(t, i, o) {
681
- if (this.buttonsContainer?.classList.contains("qaid-incognito") && (this.buttonsContainer.classList.remove("qaid-incognito"), $(this.config.apiKey, !1)), this.prewarmModal(), this.config.skipTargeting || this.config.feedbackMode === "annotate")
695
+ if (this.buttonsContainer?.classList.contains("qaid-incognito") && (this.buttonsContainer.classList.remove("qaid-incognito"), G(this.config.apiKey, !1)), this.prewarmModal(), this.config.skipTargeting || this.config.feedbackMode === "annotate")
682
696
  this.submitDirectFeedback(t, i);
683
697
  else {
684
698
  this.activeThumbBtn = i, i.setAttribute("aria-pressed", "true");
@@ -711,7 +725,7 @@ class re {
711
725
  * instead of the permission-based Screen Capture API. Explicit "dom" wins;
712
726
  * otherwise DOM is used on touch devices to avoid the getDisplayMedia prompt. */
713
727
  shouldCaptureViaDom() {
714
- return this.config.screenshotMethod === "dom" || oe();
728
+ return this.config.screenshotMethod === "dom" || be();
715
729
  }
716
730
  /**
717
731
  * Open the full-screen annotation editor over the captured screenshot,
@@ -724,7 +738,7 @@ class re {
724
738
  const i = this.ensureOverlayHost(), o = this.overlayShadowHost, r = o.style.pointerEvents;
725
739
  o.style.pointerEvents = "auto";
726
740
  try {
727
- const { openAnnotationEditor: n } = await import("./annotate-CMq95aXG.js").then((a) => a.d);
741
+ const { openAnnotationEditor: n } = await import("./annotate-D-o8xCV9.js").then((a) => a.d);
728
742
  return await n({
729
743
  dataUrl: t,
730
744
  root: i,
@@ -750,7 +764,7 @@ class re {
750
764
  const { captureDomScreenshot: a } = await import("./screenshot-dom-CME7tYRE.js");
751
765
  t = await a(this.config.screenshotOptions);
752
766
  } else {
753
- const { captureScreenshot: a } = await import("./screenshot-BkOCLuS2.js");
767
+ const { captureScreenshot: a } = await import("./screenshot-DYOKg2bS.js");
754
768
  t = await a(this.config.screenshotOptions);
755
769
  }
756
770
  t && this.announceMsg("Screenshot captured");
@@ -828,7 +842,7 @@ class re {
828
842
  const o = this.questIdFor(t);
829
843
  if (!o) return !1;
830
844
  try {
831
- return this.activeQuest?.destroy(), this.activeQuest = await ee({
845
+ return this.activeQuest?.destroy(), this.activeQuest = await fe({
832
846
  questId: o,
833
847
  base: this.config.quests.base,
834
848
  apiKey: this.config.quests.apiKey || void 0,
@@ -857,7 +871,7 @@ class re {
857
871
  */
858
872
  async ensureModal() {
859
873
  if (!this.modal) {
860
- const { ModalController: t } = await import("./modal-Br5x7m6f.js");
874
+ const { ModalController: t } = await import("./modal-XxYobTKE.js");
861
875
  this.modal = new t(this.makeModalHost());
862
876
  }
863
877
  return this.modal;
@@ -903,7 +917,7 @@ class re {
903
917
  }
904
918
  /** Warm the modal chunk while the user is targeting, so it opens instantly. */
905
919
  prewarmModal() {
906
- this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-Br5x7m6f.js").catch(() => {
920
+ this.modalPrewarmed || (this.modalPrewarmed = !0, import("./modal-XxYobTKE.js").catch(() => {
907
921
  }));
908
922
  }
909
923
  /**
@@ -913,7 +927,7 @@ class re {
913
927
  */
914
928
  async ensureTargeting() {
915
929
  if (!this.targeting) {
916
- const { TargetingController: t } = await import("./targeting-1pK6nJI9.js");
930
+ const { TargetingController: t } = await import("./targeting-Dz6z1BYl.js");
917
931
  this.targeting = new t(this.makeTargetingHost());
918
932
  }
919
933
  return this.targeting;
@@ -958,7 +972,7 @@ class re {
958
972
  }
959
973
  /** Warm the targeting chunk on thumb-button hover, before the click. */
960
974
  prewarmTargeting() {
961
- this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-1pK6nJI9.js").catch(() => {
975
+ this.targetingPrewarmed || this.config.skipTargeting || (this.targetingPrewarmed = !0, import("./targeting-Dz6z1BYl.js").catch(() => {
962
976
  }));
963
977
  }
964
978
  // ==================== Video Recording ====================
@@ -977,7 +991,7 @@ class re {
977
991
  */
978
992
  async ensureRecording() {
979
993
  if (!this.recording) {
980
- const { RecordingController: t } = await import("./recording-BVFd_ryf.js");
994
+ const { RecordingController: t } = await import("./recording-Dx8AX-BC.js");
981
995
  this.recording = new t(this.makeRecordingHost());
982
996
  }
983
997
  return this.recording;
@@ -1033,13 +1047,13 @@ class re {
1033
1047
  const t = window;
1034
1048
  this.prewarmIsTimeout ? clearTimeout(this.prewarmHandle) : t.cancelIdleCallback?.(this.prewarmHandle), this.prewarmHandle = null;
1035
1049
  }
1036
- this.recording?.destroy(), this.recording = null, this.modal?.destroy(), this.modal = null, this.activeQuest?.destroy(), this.activeQuest = null, this.consoleCapture && (this.consoleCapture.restore(), this.consoleCapture = null), window.removeEventListener("resize", this.boundResize), document.removeEventListener("keydown", this.boundKeyDown), document.body.classList.remove("qaid-targeting", "qaid-type-up"), document.body.style.removeProperty("--qaid-positive"), document.body.style.removeProperty("--qaid-negative"), this.shadowHost && (this.shadowHost.remove(), this.shadowHost = null, this.shadowRoot = null), this.overlayShadowHost && (this.overlayShadowHost.remove(), this.overlayShadowHost = null, this.overlayShadowRoot = null), this.buttonsContainer = null, this.dismissBtn = null, this.tooltipElement = null, Dt();
1050
+ 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, _t();
1037
1051
  }
1038
1052
  }
1039
- function W(e) {
1053
+ function it(e) {
1040
1054
  return document.querySelector(e)?.textContent?.trim() ?? "";
1041
1055
  }
1042
- function se() {
1056
+ function ye() {
1043
1057
  const e = document.querySelector(
1044
1058
  'script[type="application/json"][data-feedback-config]'
1045
1059
  );
@@ -1048,31 +1062,72 @@ function se() {
1048
1062
  if (!t) return null;
1049
1063
  try {
1050
1064
  const i = JSON.parse(t);
1051
- return i.cssSelector && !i.css && (i.css = W(i.cssSelector), delete i.cssSelector), i;
1065
+ return i.cssSelector && !i.css && (i.css = it(i.cssSelector), delete i.cssSelector), i;
1052
1066
  } catch {
1053
1067
  return null;
1054
1068
  }
1055
1069
  }
1056
- function de(e) {
1070
+ function ot(e, t, i) {
1071
+ console.warn(`[thumbs-embed] Ignoring ${e}="${t}": expected ${i}.`);
1072
+ }
1073
+ function qe(e) {
1074
+ const t = [];
1075
+ let i = 0, o = "";
1076
+ for (const r of e)
1077
+ r === "(" && i++, r === ")" && (i = Math.max(0, i - 1)), r === "," && i === 0 ? (t.push(o.trim()), o = "") : o += r;
1078
+ return t.push(o.trim()), t;
1079
+ }
1080
+ function xe(e, t) {
1081
+ if (t === null) return;
1082
+ const i = t.trim();
1083
+ let o = null;
1084
+ if (i.startsWith("[") || i.startsWith("{"))
1085
+ try {
1086
+ o = JSON.parse(i);
1087
+ } catch {
1088
+ o = null;
1089
+ }
1090
+ else
1091
+ o = qe(i);
1092
+ if (Array.isArray(o) && o.length > 0 && o.every((r) => typeof r == "string" && r.trim() !== ""))
1093
+ return o.map((r) => r.trim());
1094
+ ot(e, t, "a JSON array of colours or a comma-separated list");
1095
+ }
1096
+ function m(e, t) {
1097
+ if (t !== null) {
1098
+ if (t.trim() === "") {
1099
+ ot(e, t, "a non-empty label");
1100
+ return;
1101
+ }
1102
+ return t;
1103
+ }
1104
+ }
1105
+ function we(e) {
1057
1106
  const t = e.getAttribute("data-endpoint");
1058
1107
  if (!t) return null;
1059
- const i = e.getAttribute("data-position"), o = e.getAttribute("data-zindex"), r = e.getAttribute("data-positive-color"), n = e.getAttribute("data-negative-color"), a = e.getAttribute("data-marker-color"), l = e.getAttribute("data-container"), c = e.getAttribute("data-button-class"), d = e.getAttribute("data-skip-targeting"), s = e.getAttribute("data-hide-confirmation"), u = e.getAttribute("data-single-button"), h = e.getAttribute("data-feedback-mode"), f = e.getAttribute("data-incognito"), Y = e.getAttribute("data-button-size"), m = e.getAttribute("data-offset-x"), g = e.getAttribute("data-offset-y"), C = e.getAttribute("data-modal-width"), S = e.getAttribute("data-backdrop-opacity"), X = e.getAttribute("data-font-family"), A = e.getAttribute("data-font-size"), T = e.getAttribute("data-tooltip"), E = e.getAttribute("data-modal-title"), I = e.getAttribute("data-confirmation-title"), D = e.getAttribute("data-confirmation-message"), H = e.getAttribute("data-confirmation-close"), z = e.getAttribute("data-modal-subtitle"), L = e.getAttribute("data-placeholder"), M = e.getAttribute("data-submit-button"), B = e.getAttribute("data-skip-button"), G = e.getAttribute("data-positive-icon"), J = e.getAttribute("data-negative-icon"), Z = e.getAttribute("data-feedback-icon"), O = e.getAttribute("data-feedback-label"), tt = e.getAttribute("data-api-key"), et = e.getAttribute("data-capture-screenshot"), it = e.getAttribute("data-annotate"), ot = e.getAttribute("data-annotation-color"), v = e.getAttribute("data-screenshot-quality"), y = e.getAttribute("data-screenshot-max-width"), w = e.getAttribute("data-screenshot-max-height"), at = e.getAttribute("data-capture-video"), R = e.getAttribute("data-video-redaction"), nt = e.getAttribute("data-hide-thumbs"), rt = e.getAttribute("data-hide-dismiss"), q = e.getAttribute("data-video-max-duration"), st = e.getAttribute("data-screenshot-method"), dt = e.getAttribute("data-direction"), P = e.getAttribute("data-css-selector"), F = e.getAttribute("data-quest-base"), lt = e.getAttribute("data-quest-up"), ct = e.getAttribute("data-quest-down"), ut = e.getAttribute("data-quest-video"), ht = e.getAttribute("data-quest-api-key"), ft = e.getAttribute("data-quest-module-url");
1108
+ const i = e.getAttribute("data-position"), o = e.getAttribute("data-zindex"), r = e.getAttribute("data-positive-color"), n = e.getAttribute("data-negative-color"), a = e.getAttribute("data-marker-color"), l = e.getAttribute("data-container"), c = e.getAttribute("data-button-class"), d = e.getAttribute("data-skip-targeting"), s = e.getAttribute("data-hide-confirmation"), u = e.getAttribute("data-single-button"), h = e.getAttribute("data-feedback-mode"), f = e.getAttribute("data-incognito"), at = e.getAttribute("data-button-size"), g = e.getAttribute("data-offset-x"), v = e.getAttribute("data-offset-y"), C = e.getAttribute("data-modal-width"), A = e.getAttribute("data-backdrop-opacity"), nt = e.getAttribute("data-font-family"), T = e.getAttribute("data-font-size"), I = e.getAttribute("data-tooltip"), E = e.getAttribute("data-modal-title"), z = e.getAttribute("data-confirmation-title"), D = e.getAttribute("data-confirmation-message"), H = e.getAttribute("data-confirmation-close"), L = e.getAttribute("data-error-title"), M = e.getAttribute("data-error-message"), B = e.getAttribute("data-modal-subtitle"), O = e.getAttribute("data-placeholder"), R = e.getAttribute("data-submit-button"), P = e.getAttribute("data-skip-button"), rt = e.getAttribute("data-positive-icon"), st = e.getAttribute("data-negative-icon"), dt = e.getAttribute("data-feedback-icon"), F = e.getAttribute("data-feedback-label"), lt = e.getAttribute("data-api-key"), ct = e.getAttribute("data-capture-screenshot"), ut = e.getAttribute("data-annotate"), ht = e.getAttribute("data-annotation-color"), y = e.getAttribute("data-screenshot-quality"), q = e.getAttribute("data-screenshot-max-width"), x = e.getAttribute("data-screenshot-max-height"), ft = e.getAttribute("data-capture-video"), U = e.getAttribute("data-video-redaction"), pt = e.getAttribute("data-hide-thumbs"), bt = e.getAttribute("data-hide-dismiss"), w = e.getAttribute("data-video-max-duration"), mt = e.getAttribute("data-screenshot-method"), gt = e.getAttribute("data-direction"), V = e.getAttribute("data-css-selector"), vt = e.getAttribute("data-css"), _ = m("data-positive-label", e.getAttribute("data-positive-label")), $ = m("data-negative-label", e.getAttribute("data-negative-label")), K = m("data-record-label", e.getAttribute("data-record-label")), N = m("data-dismiss-label", e.getAttribute("data-dismiss-label")), yt = xe(
1109
+ "data-annotation-palette",
1110
+ e.getAttribute("data-annotation-palette")
1111
+ ), qt = e.getAttribute("data-record-icon"), j = e.getAttribute("data-quest-base"), xt = e.getAttribute("data-quest-up"), wt = e.getAttribute("data-quest-down"), kt = e.getAttribute("data-quest-video"), St = e.getAttribute("data-quest-api-key"), Ct = e.getAttribute("data-quest-module-url");
1060
1112
  return {
1061
1113
  endpoint: t,
1062
- css: P ? W(P) : void 0,
1063
- apiKey: tt ?? void 0,
1064
- captureScreenshot: et === "true" ? !0 : void 0,
1114
+ // Inline CSS wins over a selector, as `css` wins over `cssSelector` in
1115
+ // the JSON block.
1116
+ css: vt || (V ? it(V) : void 0),
1117
+ apiKey: lt ?? void 0,
1118
+ captureScreenshot: ct === "true" ? !0 : void 0,
1065
1119
  // Annotation is on by default; only an explicit "false" disables it.
1066
- annotate: it === "false" ? !1 : void 0,
1067
- annotationColor: ot ?? void 0,
1068
- screenshotOptions: v || y || w ? {
1069
- quality: v ? parseFloat(v) : void 0,
1070
- maxWidth: y ? parseInt(y, 10) : void 0,
1071
- maxHeight: w ? parseInt(w, 10) : void 0
1120
+ annotate: ut === "false" ? !1 : void 0,
1121
+ annotationColor: ht ?? void 0,
1122
+ annotationPalette: yt,
1123
+ screenshotOptions: y || q || x ? {
1124
+ quality: y ? parseFloat(y) : void 0,
1125
+ maxWidth: q ? parseInt(q, 10) : void 0,
1126
+ maxHeight: x ? parseInt(x, 10) : void 0
1072
1127
  } : void 0,
1073
1128
  container: l ?? void 0,
1074
1129
  buttonClass: c ?? void 0,
1075
- direction: dt ?? void 0,
1130
+ direction: gt ?? void 0,
1076
1131
  position: i ?? void 0,
1077
1132
  zIndex: o ? parseInt(o, 10) : void 0,
1078
1133
  skipTargeting: d === "true" ? !0 : void 0,
@@ -1080,64 +1135,71 @@ function de(e) {
1080
1135
  singleButton: u === "true" ? !0 : void 0,
1081
1136
  feedbackMode: h ?? void 0,
1082
1137
  incognito: f === "true" ? !0 : void 0,
1083
- buttonSize: Y ?? void 0,
1084
- offset: m || g ? {
1085
- x: m ? parseInt(m, 10) : void 0,
1086
- y: g ? parseInt(g, 10) : void 0
1138
+ buttonSize: at ?? void 0,
1139
+ offset: g || v ? {
1140
+ x: g ? parseInt(g, 10) : void 0,
1141
+ y: v ? parseInt(v, 10) : void 0
1087
1142
  } : void 0,
1088
1143
  modalWidth: C ? parseInt(C, 10) : void 0,
1089
- backdropOpacity: S ? parseFloat(S) : void 0,
1090
- fontFamily: X ?? void 0,
1091
- fontSize: A ? parseInt(A, 10) : void 0,
1144
+ backdropOpacity: A ? parseFloat(A) : void 0,
1145
+ fontFamily: nt ?? void 0,
1146
+ fontSize: T ? parseInt(T, 10) : void 0,
1092
1147
  colors: {
1093
1148
  positive: r ?? void 0,
1094
1149
  negative: n ?? void 0,
1095
1150
  marker: a ?? void 0
1096
1151
  },
1097
- text: T || E || z || L || M || B || O || I || D || H ? {
1098
- tooltip: T ?? void 0,
1152
+ text: I || E || B || O || R || P || F || z || D || H || L || M || _ || $ || K || N ? {
1153
+ tooltip: I ?? void 0,
1099
1154
  modalTitle: E ?? void 0,
1100
- modalSubtitle: z ?? void 0,
1101
- placeholder: L ?? void 0,
1102
- submitButton: M ?? void 0,
1103
- skipButton: B ?? void 0,
1104
- feedbackLabel: O ?? void 0,
1105
- confirmationTitle: I ?? void 0,
1155
+ modalSubtitle: B ?? void 0,
1156
+ placeholder: O ?? void 0,
1157
+ submitButton: R ?? void 0,
1158
+ skipButton: P ?? void 0,
1159
+ feedbackLabel: F ?? void 0,
1160
+ confirmationTitle: z ?? void 0,
1106
1161
  confirmationMessage: D ?? void 0,
1107
- confirmationClose: H ?? void 0
1162
+ confirmationClose: H ?? void 0,
1163
+ errorTitle: L ?? void 0,
1164
+ errorMessage: M ?? void 0,
1165
+ positiveLabel: _,
1166
+ negativeLabel: $,
1167
+ recordLabel: K,
1168
+ dismissLabel: N
1108
1169
  } : void 0,
1109
- positiveIcon: G ?? void 0,
1110
- negativeIcon: J ?? void 0,
1111
- feedbackIcon: Z ?? void 0,
1112
- screenshotMethod: st ?? void 0,
1113
- captureVideo: at === "true" ? !0 : void 0,
1114
- hideThumbs: nt === "true" ? !0 : void 0,
1115
- hideDismiss: rt === "true" ? !0 : void 0,
1116
- videoOptions: q || R ? {
1117
- maxDuration: q ? parseInt(q, 10) : void 0,
1118
- redaction: R === "true" ? !0 : void 0
1170
+ positiveIcon: rt ?? void 0,
1171
+ recordIcon: qt ?? void 0,
1172
+ negativeIcon: st ?? void 0,
1173
+ feedbackIcon: dt ?? void 0,
1174
+ screenshotMethod: mt ?? void 0,
1175
+ captureVideo: ft === "true" ? !0 : void 0,
1176
+ hideThumbs: pt === "true" ? !0 : void 0,
1177
+ hideDismiss: bt === "true" ? !0 : void 0,
1178
+ videoOptions: w || U ? {
1179
+ maxDuration: w ? parseInt(w, 10) : void 0,
1180
+ redaction: U === "true" ? !0 : void 0
1119
1181
  } : void 0,
1120
- quests: F ? {
1121
- base: F,
1122
- up: lt ?? void 0,
1123
- down: ct ?? void 0,
1124
- video: ut ?? void 0,
1125
- apiKey: ht ?? void 0,
1126
- moduleUrl: ft ?? void 0
1182
+ quests: j ? {
1183
+ base: j,
1184
+ up: xt ?? void 0,
1185
+ down: wt ?? void 0,
1186
+ video: kt ?? void 0,
1187
+ apiKey: St ?? void 0,
1188
+ moduleUrl: Ct ?? void 0
1127
1189
  } : void 0
1128
1190
  };
1129
1191
  }
1130
- function le() {
1192
+ function ke() {
1131
1193
  if (typeof document > "u") return;
1132
1194
  const e = () => {
1133
- const t = document.currentScript ?? document.querySelector("script[data-endpoint]"), i = se(), o = t ? de(t) : null, r = i ?? o;
1134
- r?.endpoint && new re(r);
1195
+ const t = document.currentScript ?? document.querySelector("script[data-endpoint]"), i = ye() ?? (t ? we(t) : null);
1196
+ i?.endpoint && new ve(i);
1135
1197
  };
1136
1198
  document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", e) : e();
1137
1199
  }
1138
- le();
1200
+ ke();
1139
1201
  export {
1140
- re as Q,
1141
- ue as c
1202
+ ve as Q,
1203
+ Ce as c
1142
1204
  };
1143
- //# sourceMappingURL=loader-CYM1rxDH.js.map
1205
+ //# sourceMappingURL=loader-XbJ2b8KE.js.map