1(async function () { 2 const scriptElement = document.currentScript; 3 const uuid = scriptElement.getAttribute('data-uuid'); 4 const size = scriptElement.getAttribute('data-size') || '78px'; 5 const position = 6 scriptElement.getAttribute('data-position') || 'bottom-right'; 7 const domain = 8 scriptElement.getAttribute('data-domain') || window.location.origin; 9 10 const getWidgetIframe = () => { 11 const iframe = document.createElement('iframe'); 12 iframe.src = domain + '/voice/embed/' + uuid; 13 iframe.setAttribute('allow', 'microphone'); 14 iframe.style.border = 'none'; 15 iframe.style.position = 'fixed'; 16 iframe.style.zIndex = '999999'; 17 iframe.style.width = size; 18 iframe.style.height = size; 19 20 iframe.style.top = position.startsWith('top') ? '0' : 'auto'; 21 iframe.style.bottom = position.startsWith('bottom') ? '0' : 'auto'; 22 iframe.style.left = position.endsWith('left') 23 ? '0' 24 : position.endsWith('center') 25 ? '50%' 26 : 'auto'; 27 iframe.style.right = position.endsWith('right') ? '0' : 'auto'; 28 if (position.endsWith('center')) { 29 iframe.style.transform = 'translateX(-50%)'; 30 } 31 32 return iframe; 33 }; 34 35 const widgetIframe = getWidgetIframe(); 36 document.body.appendChild(widgetIframe); 37})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.