jat-feedback 1.6.3 → 1.6.4
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.
- package/dist/jat-feedback.js +2 -2
- package/dist/jat-feedback.mjs +2 -4
- package/package.json +1 -1
package/dist/jat-feedback.js
CHANGED
|
@@ -29,7 +29,7 @@ var Tv=Object.defineProperty;var jl=pe=>{throw TypeError(pe)};var Nv=(pe,he,Se)=
|
|
|
29
29
|
z-index: 2147483646;
|
|
30
30
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
31
31
|
pointer-events: none;
|
|
32
|
-
`,document.body.appendChild(e),e}function Ra(e){if(!ir||!Gt)return;const t=e.target;if(t===Gt||t.id==="jat-feedback-picker-tooltip")return;const n=t.getBoundingClientRect();Gt.style.top=`${n.top}px`,Gt.style.left=`${n.left}px`,Gt.style.width=`${n.width}px`,Gt.style.height=`${n.height}px`}function ja(e){var o;if(!ir)return;e.preventDefault(),e.stopPropagation();const t=e.target,n=t.getBoundingClientRect(),r=Bo;La();const s={tagName:t.tagName,className:typeof t.className=="string"?t.className:"",id:t.id,textContent:((o=t.textContent)==null?void 0:o.substring(0,100))||"",attributes:Array.from(t.attributes).reduce((i,l)=>(i[l.name]=l.value,i),{}),xpath:Ta(t),selector:kf(t),boundingRect:{x:n.x,y:n.y,width:n.width,height:n.height,top:n.top,left:n.left,bottom:n.bottom,right:n.right},screenshot:null,timestamp:new Date().toISOString(),url:window.location.href};r==null||r(s)}function Ia(e){e.key==="Escape"&&La()}function Ma(e){ir||(ir=!0,Bo=e,Na=document.body.style.cursor,document.body.style.cursor="crosshair",Gt=Sf(),Zs=$f(),document.addEventListener("mousemove",Ra,!0),document.addEventListener("click",ja,!0),document.addEventListener("keydown",Ia,!0))}function La(){ir&&(ir=!1,Bo=null,document.body.style.cursor=Na,Gt&&(Gt.remove(),Gt=null),Zs&&(Zs.remove(),Zs=null),document.removeEventListener("mousemove",Ra,!0),document.removeEventListener("click",ja,!0),document.removeEventListener("keydown",Ia,!0))}function Cf(){return ir}const Da=["#ef4444","#eab308","#22c55e","#3b82f6","#ffffff","#111827"],Pa=3;let Oa=!1;function qa(e){Oa=e}function Af(){return Oa}let Tf=1;function cs(){return Tf++}function Nf(e,t){const{start:n,end:r,color:s,strokeWidth:o}=t;e.strokeStyle=s,e.lineWidth=o,e.lineCap="round",e.lineJoin="round",e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(r.x,r.y),e.stroke();const i=Math.atan2(r.y-n.y,r.x-n.x),l=14,c=Math.PI/7;e.beginPath(),e.moveTo(r.x,r.y),e.lineTo(r.x-l*Math.cos(i-c),r.y-l*Math.sin(i-c)),e.moveTo(r.x,r.y),e.lineTo(r.x-l*Math.cos(i+c),r.y-l*Math.sin(i+c)),e.stroke()}function Rf(e,t){const{start:n,end:r,color:s,strokeWidth:o}=t;e.strokeStyle=s,e.lineWidth=o,e.lineJoin="round";const i=Math.min(n.x,r.x),l=Math.min(n.y,r.y),c=Math.abs(r.x-n.x),u=Math.abs(r.y-n.y);e.strokeRect(i,l,c,u)}function jf(e,t){const{start:n,end:r,color:s,strokeWidth:o}=t;e.strokeStyle=s,e.lineWidth=o;const i=(n.x+r.x)/2,l=(n.y+r.y)/2,c=Math.abs(r.x-n.x)/2,u=Math.abs(r.y-n.y)/2;c<1||u<1||(e.beginPath(),e.ellipse(i,l,c,u,0,0,Math.PI*2),e.stroke())}function If(e,t){const{points:n,color:r,strokeWidth:s}=t;if(!(n.length<2)){e.strokeStyle=r,e.lineWidth=s,e.lineCap="round",e.lineJoin="round",e.beginPath(),e.moveTo(n[0].x,n[0].y);for(let o=1;o<n.length;o++)e.lineTo(n[o].x,n[o].y);e.stroke()}}function Mf(e,t){const{position:n,content:r,color:s,fontSize:o}=t;r&&(e.font=`bold ${o}px sans-serif`,e.textBaseline="top",e.strokeStyle="#000000",e.lineWidth=2,e.lineJoin="round",e.strokeText(r,n.x,n.y),e.fillStyle=s,e.fillText(r,n.x,n.y))}function Fa(e,t){switch(e.save(),t.type){case"arrow":Nf(e,t);break;case"rectangle":Rf(e,t);break;case"ellipse":jf(e,t);break;case"freehand":If(e,t);break;case"text":Mf(e,t);break}e.restore()}function za(e,t){for(const n of t)Fa(e,n)}function Lf(e,t,n,r){return new Promise((s,o)=>{const i=new Image;i.onload=()=>{const l=document.createElement("canvas");l.width=n,l.height=r;const c=l.getContext("2d");if(!c){o(new Error("Canvas context unavailable"));return}c.drawImage(i,0,0,n,r),za(c,t),s(l.toDataURL("image/jpeg",.85))},i.onerror=()=>o(new Error("Failed to load image")),i.src=e})}async function Ba(e,t){const n=`${e.replace(/\/$/,"")}/api/feedback/report`,r=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),s=await r.json();return r.ok?{ok:!0,id:s.id}:{ok:!1,error:s.error||`HTTP ${r.status}`}}async function Df(e){try{const t=`${e.replace(/\/$/,"")}/api/feedback/reports`,n=await fetch(t,{method:"GET",credentials:"include"});if(!n.ok){const s=await n.json().catch(()=>({error:`HTTP ${n.status}`}));return{reports:[],error:s.error||`HTTP ${n.status}`}}return{reports:(await n.json()).reports||[]}}catch(t){return{reports:[],error:t instanceof Error?t.message:"Failed to fetch"}}}async function Pf(e,t,n,r,s){try{const o=`${e.replace(/\/$/,"")}/api/feedback/reports/${t}/respond`,i={response:n};r&&(i.reason=r),s!=null&&s.screenshots&&s.screenshots.length>0&&(i.screenshots=s.screenshots),s!=null&&s.elements&&s.elements.length>0&&(i.elements=s.elements);const l=await fetch(o,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)}),c=await l.json();return l.ok?{ok:!0}:{ok:!1,error:c.error||`HTTP ${l.status}`}}catch(o){return{ok:!1,error:o instanceof Error?o.message:"Failed to respond"}}}const Ua="jat-feedback-queue",Of=50,qf=3e4;let fs=null;function Ha(){try{const e=localStorage.getItem(Ua);return e?JSON.parse(e):[]}catch{return[]}}function Va(e){try{localStorage.setItem(Ua,JSON.stringify(e))}catch{}}function Wa(e,t){const n=Ha();for(n.push({report:t,endpoint:e,queuedAt:new Date().toISOString(),attempts:0});n.length>Of;)n.shift();Va(n)}async function Ya(){const e=Ha();if(e.length===0)return;const t=[];for(const n of e)try{(await Ba(n.endpoint,n.report)).ok||(n.attempts++,t.push(n))}catch{n.attempts++,t.push(n)}Va(t)}function Ff(){fs||(Ya(),fs=setInterval(Ya,qf))}function zf(){fs&&(clearInterval(fs),fs=null)}var Bf=sr('<svg width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M15 5L5 15M5 5L15 15" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>'),Uf=sr('<svg width="22" height="22" viewBox="0 0 24 24" fill="none"><path d="M12 2C6.48 2 2 6.48 2 12C2 13.85 2.5 15.55 3.36 17L2 22L7 20.64C8.45 21.5 10.15 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8 10H8.01M12 10H12.01M16 10H16.01" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>'),Hf=j("<button><!></button>");const Vf={hash:"svelte-joatup",code:".jat-fb-btn.svelte-joatup {width:52px;height:52px;border-radius:50%;border:none;background:var(--jat-btn-color, #3b82f6);color:white;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0, 0, 0, 0.25);transition:transform 0.2s, box-shadow 0.2s, background 0.2s;}.jat-fb-btn.svelte-joatup:hover {transform:scale(1.08);box-shadow:0 6px 20px rgba(0, 0, 0, 0.3);}.jat-fb-btn.svelte-joatup:active {transform:scale(0.95);}.jat-fb-btn.open.svelte-joatup {background:#6b7280;}"};function Xa(e,t){vn(t,!0),jn(e,Vf);let n=V(t,"onmousedown",7),r=V(t,"open",7,!1);var s={get onmousedown(){return n()},set onmousedown(f){n(f),U()},get open(){return r()},set open(f=!1){r(f),U()}},o=Hf();let i;var l=x(o);{var c=f=>{var d=Bf();$(f,d)},u=f=>{var d=Uf();$(f,d)};B(l,f=>{r()?f(c):f(u,!1)})}return w(o),F(()=>{i=We(o,1,"jat-fb-btn svelte-joatup",null,i,{open:r()}),de(o,"aria-label",r()?"Close feedback":"Send feedback"),de(o,"title",r()?"Close feedback":"Send feedback")}),X("mousedown",o,function(...f){var d;(d=n())==null||d.apply(this,f)}),$(e,o),pn(s)}rs(["mousedown"]),In(Xa,{onmousedown:{},open:{}},[],[],{mode:"open"});const Ka="[modern-screenshot]",Mr=typeof window<"u",Wf=Mr&&"Worker"in window,Uo=Mr?(Rl=window.navigator)==null?void 0:Rl.userAgent:"",Ga=Uo.includes("Chrome"),Qs=Uo.includes("AppleWebKit")&&!Ga,Ho=Uo.includes("Firefox"),Yf=e=>e&&"__CONTEXT__"in e,Xf=e=>e.constructor.name==="CSSFontFaceRule",Kf=e=>e.constructor.name==="CSSImportRule",Gf=e=>e.constructor.name==="CSSLayerBlockRule",Jt=e=>e.nodeType===1,us=e=>typeof e.className=="object",Ja=e=>e.tagName==="image",Jf=e=>e.tagName==="use",ds=e=>Jt(e)&&typeof e.style<"u"&&!us(e),Zf=e=>e.nodeType===8,Qf=e=>e.nodeType===3,Lr=e=>e.tagName==="IMG",eo=e=>e.tagName==="VIDEO",eu=e=>e.tagName==="CANVAS",tu=e=>e.tagName==="TEXTAREA",nu=e=>e.tagName==="INPUT",ru=e=>e.tagName==="STYLE",su=e=>e.tagName==="SCRIPT",ou=e=>e.tagName==="SELECT",iu=e=>e.tagName==="SLOT",au=e=>e.tagName==="IFRAME",lu=(...e)=>console.warn(Ka,...e);function cu(e){var n;const t=(n=e==null?void 0:e.createElement)==null?void 0:n.call(e,"canvas");return t&&(t.height=t.width=1),!!t&&"toDataURL"in t&&!!t.toDataURL("image/webp").includes("image/webp")}const Vo=e=>e.startsWith("data:");function Za(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(Mr&&e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!Mr)return e;const n=to().implementation.createHTMLDocument(),r=n.createElement("base"),s=n.createElement("a");return n.head.appendChild(r),n.body.appendChild(s),t&&(r.href=t),s.href=e,s.href}function to(e){return(e&&Jt(e)?e==null?void 0:e.ownerDocument:e)??window.document}const no="http://www.w3.org/2000/svg";function fu(e,t,n){const r=to(n).createElementNS(no,"svg");return r.setAttributeNS(null,"width",e.toString()),r.setAttributeNS(null,"height",t.toString()),r.setAttributeNS(null,"viewBox",`0 0 ${e} ${t}`),r}function uu(e,t){let n=new XMLSerializer().serializeToString(e);return t&&(n=n.replace(/[\u0000-\u0008\v\f\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/gu,"")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`}function du(e,t){return new Promise((n,r)=>{const s=new FileReader;s.onload=()=>n(s.result),s.onerror=()=>r(s.error),s.onabort=()=>r(new Error(`Failed read blob to ${t}`)),s.readAsDataURL(e)})}const vu=e=>du(e,"dataUrl");function Dr(e,t){const n=to(t).createElement("img");return n.decoding="sync",n.loading="eager",n.src=e,n}function vs(e,t){return new Promise(n=>{const{timeout:r,ownerDocument:s,onError:o,onWarn:i}=t??{},l=typeof e=="string"?Dr(e,to(s)):e;let c=null,u=null;function f(){n(l),c&&clearTimeout(c),u==null||u()}if(r&&(c=setTimeout(f,r)),eo(l)){const d=l.currentSrc||l.src;if(!d)return l.poster?vs(l.poster,t).then(n):f();if(l.readyState>=2)return f();const v=f,h=b=>{i==null||i("Failed video load",d,b),o==null||o(b),f()};u=()=>{l.removeEventListener("loadeddata",v),l.removeEventListener("error",h)},l.addEventListener("loadeddata",v,{once:!0}),l.addEventListener("error",h,{once:!0})}else{const d=Ja(l)?l.href.baseVal:l.currentSrc||l.src;if(!d)return f();const v=async()=>{if(Lr(l)&&"decode"in l)try{await l.decode()}catch(b){i==null||i("Failed to decode image, trying to render anyway",l.dataset.originalSrc||d,b)}f()},h=b=>{i==null||i("Failed image load",l.dataset.originalSrc||d,b),f()};if(Lr(l)&&l.complete)return v();u=()=>{l.removeEventListener("load",v),l.removeEventListener("error",h)},l.addEventListener("load",v,{once:!0}),l.addEventListener("error",h,{once:!0})}})}async function pu(e,t){ds(e)&&(Lr(e)||eo(e)?await vs(e,t):await Promise.all(["img","video"].flatMap(n=>Array.from(e.querySelectorAll(n)).map(r=>vs(r,t)))))}const Qa=(function(){let t=0;const n=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${n()}${t}`)})();function el(e){return e==null?void 0:e.split(",").map(t=>t.trim().replace(/"|'/g,"").toLowerCase()).filter(Boolean)}let tl=0;function hu(e){const t=`${Ka}[#${tl}]`;return tl++,{time:n=>e&&console.time(`${t} ${n}`),timeEnd:n=>e&&console.timeEnd(`${t} ${n}`),warn:(...n)=>e&&lu(...n)}}function gu(e){return{cache:e?"no-cache":"force-cache"}}async function nl(e,t){return Yf(e)?e:mu(e,{...t,autoDestruct:!0})}async function mu(e,t){var h,b;const{scale:n=1,workerUrl:r,workerNumber:s=1}=t||{},o=!!(t!=null&&t.debug),i=(t==null?void 0:t.features)??!0,l=e.ownerDocument??(Mr?window.document:void 0),c=((h=e.ownerDocument)==null?void 0:h.defaultView)??(Mr?window:void 0),u=new Map,f={width:0,height:0,quality:1,type:"image/png",scale:n,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:o,fetch:{requestInit:gu((b=t==null?void 0:t.fetch)==null?void 0:b.bypassingCache),placeholderImage:"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",bypassingCache:!1,...t==null?void 0:t.fetch},fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:s,onCloneEachNode:null,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1,...t,__CONTEXT__:!0,log:hu(o),node:e,ownerDocument:l,ownerWindow:c,dpi:n===1?null:96*n,svgStyleElement:rl(l),svgDefsElement:l==null?void 0:l.createElementNS(no,"defs"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...Array.from({length:Wf&&r&&s?s:0})].map(()=>{try{const _=new Worker(r);return _.onmessage=async p=>{var k,M,L,z;const{url:m,result:T}=p.data;T?(M=(k=u.get(m))==null?void 0:k.resolve)==null||M.call(k,T):(z=(L=u.get(m))==null?void 0:L.reject)==null||z.call(L,new Error(`Error receiving message from worker: ${m}`))},_.onmessageerror=p=>{var T,k;const{url:m}=p.data;(k=(T=u.get(m))==null?void 0:T.reject)==null||k.call(T,new Error(`Error receiving message from worker: ${m}`))},_}catch(_){return f.log.warn("Failed to new Worker",_),null}}).filter(Boolean),fontFamilies:new Map,fontCssTexts:new Map,acceptOfImage:`${[cu(l)&&"image/webp","image/svg+xml","image/*","*/*"].filter(Boolean).join(",")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:i,isEnable:_=>_==="restoreScrollPosition"?typeof i=="boolean"?!1:i[_]??!1:typeof i=="boolean"?i:i[_]??!0,shadowRoots:[]};f.log.time("wait until load"),await pu(e,{timeout:f.timeout,onWarn:f.log.warn}),f.log.timeEnd("wait until load");const{width:d,height:v}=bu(e,f);return f.width=d,f.height=v,f}function rl(e){if(!e)return;const t=e.createElement("style"),n=t.ownerDocument.createTextNode(`
|
|
32
|
+
`,document.body.appendChild(e),e}function Ra(e){if(!ir||!Gt)return;const t=e.target;if(t===Gt||t.id==="jat-feedback-picker-tooltip")return;const n=t.getBoundingClientRect();Gt.style.top=`${n.top}px`,Gt.style.left=`${n.left}px`,Gt.style.width=`${n.width}px`,Gt.style.height=`${n.height}px`}function ja(e){var o;if(!ir)return;e.preventDefault(),e.stopPropagation();const t=e.target,n=t.getBoundingClientRect(),r=Bo;La();const s={tagName:t.tagName,className:typeof t.className=="string"?t.className:"",id:t.id,textContent:((o=t.textContent)==null?void 0:o.substring(0,100))||"",attributes:Array.from(t.attributes).reduce((i,l)=>(i[l.name]=l.value,i),{}),xpath:Ta(t),selector:kf(t),boundingRect:{x:n.x,y:n.y,width:n.width,height:n.height,top:n.top,left:n.left,bottom:n.bottom,right:n.right},screenshot:null,timestamp:new Date().toISOString(),url:window.location.href};r==null||r(s)}function Ia(e){e.key==="Escape"&&La()}function Ma(e){ir||(ir=!0,Bo=e,Na=document.body.style.cursor,document.body.style.cursor="crosshair",Gt=Sf(),Zs=$f(),document.addEventListener("mousemove",Ra,!0),document.addEventListener("click",ja,!0),document.addEventListener("keydown",Ia,!0))}function La(){ir&&(ir=!1,Bo=null,document.body.style.cursor=Na,Gt&&(Gt.remove(),Gt=null),Zs&&(Zs.remove(),Zs=null),document.removeEventListener("mousemove",Ra,!0),document.removeEventListener("click",ja,!0),document.removeEventListener("keydown",Ia,!0))}function Cf(){return ir}const Da=["#ef4444","#eab308","#22c55e","#3b82f6","#ffffff","#111827"],Pa=3;let Oa=!1;function qa(e){Oa=e}function Af(){return Oa}let Tf=1;function cs(){return Tf++}function Nf(e,t){const{start:n,end:r,color:s,strokeWidth:o}=t;e.strokeStyle=s,e.lineWidth=o,e.lineCap="round",e.lineJoin="round",e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(r.x,r.y),e.stroke();const i=Math.atan2(r.y-n.y,r.x-n.x),l=14,c=Math.PI/7;e.beginPath(),e.moveTo(r.x,r.y),e.lineTo(r.x-l*Math.cos(i-c),r.y-l*Math.sin(i-c)),e.moveTo(r.x,r.y),e.lineTo(r.x-l*Math.cos(i+c),r.y-l*Math.sin(i+c)),e.stroke()}function Rf(e,t){const{start:n,end:r,color:s,strokeWidth:o}=t;e.strokeStyle=s,e.lineWidth=o,e.lineJoin="round";const i=Math.min(n.x,r.x),l=Math.min(n.y,r.y),c=Math.abs(r.x-n.x),u=Math.abs(r.y-n.y);e.strokeRect(i,l,c,u)}function jf(e,t){const{start:n,end:r,color:s,strokeWidth:o}=t;e.strokeStyle=s,e.lineWidth=o;const i=(n.x+r.x)/2,l=(n.y+r.y)/2,c=Math.abs(r.x-n.x)/2,u=Math.abs(r.y-n.y)/2;c<1||u<1||(e.beginPath(),e.ellipse(i,l,c,u,0,0,Math.PI*2),e.stroke())}function If(e,t){const{points:n,color:r,strokeWidth:s}=t;if(!(n.length<2)){e.strokeStyle=r,e.lineWidth=s,e.lineCap="round",e.lineJoin="round",e.beginPath(),e.moveTo(n[0].x,n[0].y);for(let o=1;o<n.length;o++)e.lineTo(n[o].x,n[o].y);e.stroke()}}function Mf(e,t){const{position:n,content:r,color:s,fontSize:o}=t;r&&(e.font=`bold ${o}px sans-serif`,e.textBaseline="top",e.strokeStyle="#000000",e.lineWidth=2,e.lineJoin="round",e.strokeText(r,n.x,n.y),e.fillStyle=s,e.fillText(r,n.x,n.y))}function Fa(e,t){switch(e.save(),t.type){case"arrow":Nf(e,t);break;case"rectangle":Rf(e,t);break;case"ellipse":jf(e,t);break;case"freehand":If(e,t);break;case"text":Mf(e,t);break}e.restore()}function za(e,t){for(const n of t)Fa(e,n)}function Lf(e,t,n,r){return new Promise((s,o)=>{const i=new Image;i.onload=()=>{const l=document.createElement("canvas");l.width=n,l.height=r;const c=l.getContext("2d");if(!c){o(new Error("Canvas context unavailable"));return}c.drawImage(i,0,0,n,r),za(c,t),s(l.toDataURL("image/jpeg",.85))},i.onerror=()=>o(new Error("Failed to load image")),i.src=e})}async function Ba(e,t){const n=`${e.replace(/\/$/,"")}/api/feedback/report`,r=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),s=await r.json();return r.ok?{ok:!0,id:s.id}:{ok:!1,error:s.error||`HTTP ${r.status}`}}async function Df(e){try{const t=`${e.replace(/\/$/,"")}/api/feedback/reports`,n=await fetch(t,{method:"GET"});if(!n.ok){const s=await n.json().catch(()=>({error:`HTTP ${n.status}`}));return{reports:[],error:s.error||`HTTP ${n.status}`}}return{reports:(await n.json()).reports||[]}}catch(t){return{reports:[],error:t instanceof Error?t.message:"Failed to fetch"}}}async function Pf(e,t,n,r,s){try{const o=`${e.replace(/\/$/,"")}/api/feedback/reports/${t}/respond`,i={response:n};r&&(i.reason=r),s!=null&&s.screenshots&&s.screenshots.length>0&&(i.screenshots=s.screenshots),s!=null&&s.elements&&s.elements.length>0&&(i.elements=s.elements);const l=await fetch(o,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)}),c=await l.json();return l.ok?{ok:!0}:{ok:!1,error:c.error||`HTTP ${l.status}`}}catch(o){return{ok:!1,error:o instanceof Error?o.message:"Failed to respond"}}}const Ua="jat-feedback-queue",Of=50,qf=3e4;let fs=null;function Ha(){try{const e=localStorage.getItem(Ua);return e?JSON.parse(e):[]}catch{return[]}}function Va(e){try{localStorage.setItem(Ua,JSON.stringify(e))}catch{}}function Wa(e,t){const n=Ha();for(n.push({report:t,endpoint:e,queuedAt:new Date().toISOString(),attempts:0});n.length>Of;)n.shift();Va(n)}async function Ya(){const e=Ha();if(e.length===0)return;const t=[];for(const n of e)try{(await Ba(n.endpoint,n.report)).ok||(n.attempts++,t.push(n))}catch{n.attempts++,t.push(n)}Va(t)}function Ff(){fs||(Ya(),fs=setInterval(Ya,qf))}function zf(){fs&&(clearInterval(fs),fs=null)}var Bf=sr('<svg width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M15 5L5 15M5 5L15 15" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>'),Uf=sr('<svg width="22" height="22" viewBox="0 0 24 24" fill="none"><path d="M12 2C6.48 2 2 6.48 2 12C2 13.85 2.5 15.55 3.36 17L2 22L7 20.64C8.45 21.5 10.15 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2Z" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path><path d="M8 10H8.01M12 10H12.01M16 10H16.01" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>'),Hf=j("<button><!></button>");const Vf={hash:"svelte-joatup",code:".jat-fb-btn.svelte-joatup {width:52px;height:52px;border-radius:50%;border:none;background:var(--jat-btn-color, #3b82f6);color:white;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0, 0, 0, 0.25);transition:transform 0.2s, box-shadow 0.2s, background 0.2s;}.jat-fb-btn.svelte-joatup:hover {transform:scale(1.08);box-shadow:0 6px 20px rgba(0, 0, 0, 0.3);}.jat-fb-btn.svelte-joatup:active {transform:scale(0.95);}.jat-fb-btn.open.svelte-joatup {background:#6b7280;}"};function Xa(e,t){vn(t,!0),jn(e,Vf);let n=V(t,"onmousedown",7),r=V(t,"open",7,!1);var s={get onmousedown(){return n()},set onmousedown(f){n(f),U()},get open(){return r()},set open(f=!1){r(f),U()}},o=Hf();let i;var l=x(o);{var c=f=>{var d=Bf();$(f,d)},u=f=>{var d=Uf();$(f,d)};B(l,f=>{r()?f(c):f(u,!1)})}return w(o),F(()=>{i=We(o,1,"jat-fb-btn svelte-joatup",null,i,{open:r()}),de(o,"aria-label",r()?"Close feedback":"Send feedback"),de(o,"title",r()?"Close feedback":"Send feedback")}),X("mousedown",o,function(...f){var d;(d=n())==null||d.apply(this,f)}),$(e,o),pn(s)}rs(["mousedown"]),In(Xa,{onmousedown:{},open:{}},[],[],{mode:"open"});const Ka="[modern-screenshot]",Mr=typeof window<"u",Wf=Mr&&"Worker"in window,Uo=Mr?(Rl=window.navigator)==null?void 0:Rl.userAgent:"",Ga=Uo.includes("Chrome"),Qs=Uo.includes("AppleWebKit")&&!Ga,Ho=Uo.includes("Firefox"),Yf=e=>e&&"__CONTEXT__"in e,Xf=e=>e.constructor.name==="CSSFontFaceRule",Kf=e=>e.constructor.name==="CSSImportRule",Gf=e=>e.constructor.name==="CSSLayerBlockRule",Jt=e=>e.nodeType===1,us=e=>typeof e.className=="object",Ja=e=>e.tagName==="image",Jf=e=>e.tagName==="use",ds=e=>Jt(e)&&typeof e.style<"u"&&!us(e),Zf=e=>e.nodeType===8,Qf=e=>e.nodeType===3,Lr=e=>e.tagName==="IMG",eo=e=>e.tagName==="VIDEO",eu=e=>e.tagName==="CANVAS",tu=e=>e.tagName==="TEXTAREA",nu=e=>e.tagName==="INPUT",ru=e=>e.tagName==="STYLE",su=e=>e.tagName==="SCRIPT",ou=e=>e.tagName==="SELECT",iu=e=>e.tagName==="SLOT",au=e=>e.tagName==="IFRAME",lu=(...e)=>console.warn(Ka,...e);function cu(e){var n;const t=(n=e==null?void 0:e.createElement)==null?void 0:n.call(e,"canvas");return t&&(t.height=t.width=1),!!t&&"toDataURL"in t&&!!t.toDataURL("image/webp").includes("image/webp")}const Vo=e=>e.startsWith("data:");function Za(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(Mr&&e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!Mr)return e;const n=to().implementation.createHTMLDocument(),r=n.createElement("base"),s=n.createElement("a");return n.head.appendChild(r),n.body.appendChild(s),t&&(r.href=t),s.href=e,s.href}function to(e){return(e&&Jt(e)?e==null?void 0:e.ownerDocument:e)??window.document}const no="http://www.w3.org/2000/svg";function fu(e,t,n){const r=to(n).createElementNS(no,"svg");return r.setAttributeNS(null,"width",e.toString()),r.setAttributeNS(null,"height",t.toString()),r.setAttributeNS(null,"viewBox",`0 0 ${e} ${t}`),r}function uu(e,t){let n=new XMLSerializer().serializeToString(e);return t&&(n=n.replace(/[\u0000-\u0008\v\f\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/gu,"")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(n)}`}function du(e,t){return new Promise((n,r)=>{const s=new FileReader;s.onload=()=>n(s.result),s.onerror=()=>r(s.error),s.onabort=()=>r(new Error(`Failed read blob to ${t}`)),s.readAsDataURL(e)})}const vu=e=>du(e,"dataUrl");function Dr(e,t){const n=to(t).createElement("img");return n.decoding="sync",n.loading="eager",n.src=e,n}function vs(e,t){return new Promise(n=>{const{timeout:r,ownerDocument:s,onError:o,onWarn:i}=t??{},l=typeof e=="string"?Dr(e,to(s)):e;let c=null,u=null;function f(){n(l),c&&clearTimeout(c),u==null||u()}if(r&&(c=setTimeout(f,r)),eo(l)){const d=l.currentSrc||l.src;if(!d)return l.poster?vs(l.poster,t).then(n):f();if(l.readyState>=2)return f();const v=f,h=b=>{i==null||i("Failed video load",d,b),o==null||o(b),f()};u=()=>{l.removeEventListener("loadeddata",v),l.removeEventListener("error",h)},l.addEventListener("loadeddata",v,{once:!0}),l.addEventListener("error",h,{once:!0})}else{const d=Ja(l)?l.href.baseVal:l.currentSrc||l.src;if(!d)return f();const v=async()=>{if(Lr(l)&&"decode"in l)try{await l.decode()}catch(b){i==null||i("Failed to decode image, trying to render anyway",l.dataset.originalSrc||d,b)}f()},h=b=>{i==null||i("Failed image load",l.dataset.originalSrc||d,b),f()};if(Lr(l)&&l.complete)return v();u=()=>{l.removeEventListener("load",v),l.removeEventListener("error",h)},l.addEventListener("load",v,{once:!0}),l.addEventListener("error",h,{once:!0})}})}async function pu(e,t){ds(e)&&(Lr(e)||eo(e)?await vs(e,t):await Promise.all(["img","video"].flatMap(n=>Array.from(e.querySelectorAll(n)).map(r=>vs(r,t)))))}const Qa=(function(){let t=0;const n=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${n()}${t}`)})();function el(e){return e==null?void 0:e.split(",").map(t=>t.trim().replace(/"|'/g,"").toLowerCase()).filter(Boolean)}let tl=0;function hu(e){const t=`${Ka}[#${tl}]`;return tl++,{time:n=>e&&console.time(`${t} ${n}`),timeEnd:n=>e&&console.timeEnd(`${t} ${n}`),warn:(...n)=>e&&lu(...n)}}function gu(e){return{cache:e?"no-cache":"force-cache"}}async function nl(e,t){return Yf(e)?e:mu(e,{...t,autoDestruct:!0})}async function mu(e,t){var h,b;const{scale:n=1,workerUrl:r,workerNumber:s=1}=t||{},o=!!(t!=null&&t.debug),i=(t==null?void 0:t.features)??!0,l=e.ownerDocument??(Mr?window.document:void 0),c=((h=e.ownerDocument)==null?void 0:h.defaultView)??(Mr?window:void 0),u=new Map,f={width:0,height:0,quality:1,type:"image/png",scale:n,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:o,fetch:{requestInit:gu((b=t==null?void 0:t.fetch)==null?void 0:b.bypassingCache),placeholderImage:"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",bypassingCache:!1,...t==null?void 0:t.fetch},fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:s,onCloneEachNode:null,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1,...t,__CONTEXT__:!0,log:hu(o),node:e,ownerDocument:l,ownerWindow:c,dpi:n===1?null:96*n,svgStyleElement:rl(l),svgDefsElement:l==null?void 0:l.createElementNS(no,"defs"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...Array.from({length:Wf&&r&&s?s:0})].map(()=>{try{const _=new Worker(r);return _.onmessage=async p=>{var k,M,L,z;const{url:m,result:T}=p.data;T?(M=(k=u.get(m))==null?void 0:k.resolve)==null||M.call(k,T):(z=(L=u.get(m))==null?void 0:L.reject)==null||z.call(L,new Error(`Error receiving message from worker: ${m}`))},_.onmessageerror=p=>{var T,k;const{url:m}=p.data;(k=(T=u.get(m))==null?void 0:T.reject)==null||k.call(T,new Error(`Error receiving message from worker: ${m}`))},_}catch(_){return f.log.warn("Failed to new Worker",_),null}}).filter(Boolean),fontFamilies:new Map,fontCssTexts:new Map,acceptOfImage:`${[cu(l)&&"image/webp","image/svg+xml","image/*","*/*"].filter(Boolean).join(",")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:i,isEnable:_=>_==="restoreScrollPosition"?typeof i=="boolean"?!1:i[_]??!1:typeof i=="boolean"?i:i[_]??!0,shadowRoots:[]};f.log.time("wait until load"),await pu(e,{timeout:f.timeout,onWarn:f.log.warn}),f.log.timeEnd("wait until load");const{width:d,height:v}=bu(e,f);return f.width=d,f.height=v,f}function rl(e){if(!e)return;const t=e.createElement("style"),n=t.ownerDocument.createTextNode(`
|
|
33
33
|
.______background-clip--text {
|
|
34
34
|
background-clip: text;
|
|
35
35
|
-webkit-background-clip: text;
|
|
@@ -72,7 +72,7 @@ var Tv=Object.defineProperty;var jl=pe=>{throw TypeError(pe)};var Nv=(pe,he,Se)=
|
|
|
72
72
|
animation: svelte-nv4d5v-spin 0.6s linear infinite;}
|
|
73
73
|
@keyframes svelte-nv4d5v-spin {
|
|
74
74
|
to { transform: rotate(360deg); }
|
|
75
|
-
}.panel-version.svelte-nv4d5v {font-size:10px;color:#4b5563;margin-right:auto;align-self:flex-end;padding-bottom:6px;}`};function Sl(e,t){vn(t,!0),jn(e,kv);const n="1.6.
|
|
75
|
+
}.panel-version.svelte-nv4d5v {font-size:10px;color:#4b5563;margin-right:auto;align-self:flex-end;padding-bottom:6px;}`};function Sl(e,t){vn(t,!0),jn(e,kv);const n="1.6.4";let r=V(t,"endpoint",7),s=V(t,"project",7),o=V(t,"isOpen",7,!1),i=V(t,"userId",7,""),l=V(t,"userEmail",7,""),c=V(t,"userName",7,""),u=V(t,"userRole",7,""),f=V(t,"orgId",7,""),d=V(t,"orgName",7,""),v=V(t,"onclose",7),h=V(t,"ongrip",7),b=D("new"),_=D(qe([])),p=D(!1),m=D(""),T=Wt(()=>a(_).filter(R=>R.status==="completed").length);async function k(){y(p,!0),y(m,"");const R=await Df(r());y(_,R.reports,!0),R.error&&y(m,R.error,!0),y(p,!1)}Os(()=>{r()&&k()});let M=D(""),L=D(""),z=D("bug"),J=D("medium"),P=D(qe([])),re=D(qe([])),le=D(qe([])),_e=D(!1),$e=D(!1),Fe=D(!1),Ce=D(null),Ee=D(""),Ye=D(void 0),qt=!1;Os(()=>{o()&&!qt&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{var R;(R=a(Ye))==null||R.focus()})}),a(b)==="new"&&a(P).length===0&&setTimeout(()=>{Qu().then(R=>{y(P,[...a(P),R],!0)}).catch(()=>{})},300)),qt=o()});let ht=D(""),Re=D("success"),I=D(!1);function ie(R,Z){y(ht,R,!0),y(Re,Z,!0),y(I,!0),setTimeout(()=>{y(I,!1)},3e3)}async function Xe(){y($e,!0);try{const R=await _l();y(Ee,R,!0),y(Ce,a(P).length,!0)}catch(R){console.error("[jat-feedback] Screenshot failed:",R),ie("Screenshot failed: "+(R instanceof Error?R.message:"unknown error"),"error")}finally{y($e,!1)}}function rn(R){y(P,a(P).filter((Z,ge)=>ge!==R),!0)}function Ft(R){y(Ee,a(P)[R],!0),y(Ce,R,!0)}function zt(R){a(Ce)!==null&&(a(Ce)>=a(P).length?(y(P,[...a(P),R],!0),ie(`Screenshot captured (${a(P).length})`,"success")):(y(P,a(P).map((Z,ge)=>ge===a(Ce)?R:Z),!0),ie("Screenshot updated","success"))),y(Ce,null),y(Ee,"")}function gt(){a(Ce)!==null&&a(Ce)>=a(P).length&&(y(P,[...a(P),a(Ee)],!0),ie(`Screenshot captured (${a(P).length})`,"success")),y(Ce,null),y(Ee,"")}function Bt(){y(Fe,!0),Ma(R=>{y(re,[...a(re),R],!0),y(Fe,!1),ie(`Element captured: <${R.tagName.toLowerCase()}>`,"success")})}function ot(){y(le,xf(),!0)}async function xn(R){if(R.preventDefault(),!a(M).trim())return;y(_e,!0),ot();const Z={};(i()||l()||c()||u())&&(Z.reporter={},i()&&(Z.reporter.userId=i()),l()&&(Z.reporter.email=l()),c()&&(Z.reporter.name=c()),u()&&(Z.reporter.role=u())),(f()||d())&&(Z.organization={},f()&&(Z.organization.id=f()),d()&&(Z.organization.name=d()));const ge={title:a(M).trim(),description:a(L).trim(),type:a(z),priority:a(J),project:s()||"",page_url:window.location.href,user_agent:navigator.userAgent,console_logs:a(le).length>0?a(le):null,selected_elements:a(re).length>0?a(re):null,screenshots:a(P).length>0?a(P):null,metadata:Object.keys(Z).length>0?Z:null};try{const Te=await Ba(r(),ge);Te.ok?(ie(`Report submitted (${Te.id})`,"success"),kn(),setTimeout(()=>{k(),y(b,"requests")},1200)):(Wa(r(),ge),ie("Queued for retry (endpoint unreachable)","error"))}catch{Wa(r(),ge),ie("Queued for retry (endpoint unreachable)","error")}finally{y(_e,!1)}}function kn(){y(M,""),y(L,""),y(z,"bug"),y(J,"medium"),y(P,[],!0),y(re,[],!0),y(le,[],!0)}Os(()=>{ot()});const Ln=[{value:"bug",label:"Bug"},{value:"enhancement",label:"Enhancement"},{value:"other",label:"Other"}],C=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"critical",label:"Critical"}];function ae(){return a(P).length+a(re).length}var Ae={get endpoint(){return r()},set endpoint(R){r(R),U()},get project(){return s()},set project(R){s(R),U()},get isOpen(){return o()},set isOpen(R=!1){o(R),U()},get userId(){return i()},set userId(R=""){i(R),U()},get userEmail(){return l()},set userEmail(R=""){l(R),U()},get userName(){return c()},set userName(R=""){c(R),U()},get userRole(){return u()},set userRole(R=""){u(R),U()},get orgId(){return f()},set orgId(R=""){f(R),U()},get orgName(){return d()},set orgName(R=""){d(R),U()},get onclose(){return v()},set onclose(R){v(R),U()},get ongrip(){return h()},set ongrip(R){h(R),U()}},sn=xv(),mt=ft(sn),ze=x(mt),En=x(ze);{var ys=R=>{var Z=av();X("mousedown",Z,function(...ge){var Te;(Te=h())==null||Te.apply(this,ge)}),$(R,Z)};B(En,R=>{h()&&R(ys)})}var E=S(En,2),N=x(E);let O;var A=S(N,2);let Ke;var At=S(x(A),2);{var Ut=R=>{var Z=lv(),ge=x(Z,!0);w(Z),F(()=>Y(ge,a(T))),$(R,Z)};B(At,R=>{a(T)>0&&R(Ut)})}w(A),w(E);var Dn=S(E,2);w(ze);var Hr=S(ze,2);{var Tt=R=>{var Z=yv(),ge=x(Z),Te=S(x(ge),2);Ea(Te),as(Te,q=>y(Ye,q),()=>a(Ye)),w(ge);var On=S(ge,2),vr=S(x(On),2);Hi(vr),w(On);var qn=S(On,2),ws=x(qn),pr=S(x(ws),2);Ve(pr,21,()=>Ln,dt,(q,Q)=>{var fe=cv(),Ie=x(fe,!0);w(fe);var ue={};F(()=>{Y(Ie,a(Q).label),ue!==(ue=a(Q).value)&&(fe.value=(fe.__value=a(Q).value)??"")}),$(q,fe)}),w(pr),w(ws);var ao=S(ws,2),Vr=S(x(ao),2);Ve(Vr,21,()=>C,dt,(q,Q)=>{var fe=fv(),Ie=x(fe,!0);w(fe);var ue={};F(()=>{Y(Ie,a(Q).label),ue!==(ue=a(Q).value)&&(fe.value=(fe.__value=a(Q).value)??"")}),$(q,fe)}),w(Vr),w(ao),w(qn);var Wr=S(qn,2),xs=x(Wr),Fn=x(xs),Jo=x(Fn);{var lo=q=>{var Q=uv();Rs(),$(q,Q)},ks=q=>{var Q=vv(),fe=S(ft(Q),2);{var Ie=ue=>{var Be=dv(),Ht=x(Be,!0);w(Be),F(()=>Y(Ht,a(P).length)),$(ue,Be)};B(fe,ue=>{a(P).length>0&&ue(Ie)})}$(q,Q)};B(Jo,q=>{a($e)?q(lo):q(ks,!1)})}w(Fn);var Yr=S(Fn,2),Zo=S(x(Yr),2);{var Qo=q=>{var Q=va("Click an element...");$(q,Q)},ei=q=>{var Q=hv(),fe=S(ft(Q));{var Ie=ue=>{var Be=pv(),Ht=x(Be,!0);w(Be),F(()=>Y(Ht,a(re).length)),$(ue,Be)};B(fe,ue=>{a(re).length>0&&ue(Ie)})}$(q,Q)};B(Zo,q=>{a(Fe)?q(Qo):q(ei,!1)})}w(Yr),w(xs);var ti=S(xs,2);yl(ti,{get screenshots(){return a(P)},get capturing(){return a($e)},oncapture:Xe,onremove:rn,onedit:Ft}),w(Wr);var te=S(Wr,2);{var se=q=>{var Q=mv();Ve(Q,21,()=>a(re),dt,(fe,Ie,ue)=>{var Be=gv(),Ht=x(Be),Xr=x(Ht);w(Ht);var gr=S(Ht,2),we=x(gr,!0);w(gr);var Ze=S(gr,2);w(Be),F((at,_t)=>{Y(Xr,`<${at??""}>`),Y(we,_t)},[()=>a(Ie).tagName.toLowerCase(),()=>{var at;return((at=a(Ie).textContent)==null?void 0:at.substring(0,40))||a(Ie).selector}]),X("click",Ze,()=>{y(re,a(re).filter((at,_t)=>_t!==ue),!0)}),$(fe,Be)}),w(Q),$(q,Q)};B(te,q=>{a(re).length>0&&q(se)})}var me=S(te,2);xl(me,{get logs(){return a(le)}});var Ge=S(me,2);{var an=q=>{var Q=bv(),fe=x(Q);w(Q),F((Ie,ue)=>Y(fe,`${Ie??""} attachment${ue??""} will be included`),[ae,()=>ae()>1?"s":""]),$(q,Q)},bt=Wt(()=>ae()>0);B(Ge,q=>{a(bt)&&q(an)})}var je=S(Ge,2),be=x(je),Je=x(be);w(be);var ce=S(be,2),it=S(ce,2),hr=x(it);{var ve=q=>{var Q=_v();Rs(),$(q,Q)},zn=q=>{var Q=va("Submit");$(q,Q)};B(hr,q=>{a(_e)?q(ve):q(zn,!1)})}w(it),w(je),w(Z),F(q=>{Te.disabled=a(_e),vr.disabled=a(_e),pr.disabled=a(_e),Vr.disabled=a(_e),Fn.disabled=a($e),Yr.disabled=a(Fe),Y(Je,`v${n}`),ce.disabled=a(_e),it.disabled=q},[()=>a(_e)||!a(M).trim()]),fa("submit",Z,xn),Ys(Te,()=>a(M),q=>y(M,q)),Ys(vr,()=>a(L),q=>y(L,q)),ka(pr,()=>a(z),q=>y(z,q)),ka(Vr,()=>a(J),q=>y(J,q)),X("click",Fn,Xe),X("click",Yr,Bt),X("click",ce,function(...q){var Q;(Q=v())==null||Q.apply(this,q)}),Ws(3,Z,()=>ro,()=>({duration:200})),$(R,Z)};B(Hr,R=>{a(b)==="new"&&R(Tt)})}var on=S(Hr,2);{var Pn=R=>{var Z=wv(),ge=x(Z);El(ge,{get endpoint(){return r()},get loading(){return a(p)},get error(){return a(m)},onreload:k,get reports(){return a(_)},set reports(Te){y(_,Te,!0)}}),w(Z),Ws(3,Z,()=>ro,()=>({duration:200})),$(R,Z)};B(on,R=>{a(b)==="requests"&&R(Pn)})}var Ko=S(on,2);kl(Ko,{get message(){return a(ht)},get type(){return a(Re)},get visible(){return a(I)}}),w(mt);var Go=S(mt,2);{var io=R=>{wl(R,{get imageDataUrl(){return a(Ee)},onsave:zt,oncancel:gt})};B(Go,R=>{a(Ce)!==null&&R(io)})}return F(()=>{O=We(N,1,"tab svelte-nv4d5v",null,O,{active:a(b)==="new"}),Ke=We(A,1,"tab svelte-nv4d5v",null,Ke,{active:a(b)==="requests"})}),X("click",N,()=>y(b,"new")),X("click",A,()=>y(b,"requests")),X("click",Dn,function(...R){var Z;(Z=v())==null||Z.apply(this,R)}),$(e,sn),pn(Ae)}rs(["mousedown","click"]),In(Sl,{endpoint:{},project:{},isOpen:{},userId:{},userEmail:{},userName:{},userRole:{},orgId:{},orgName:{},onclose:{},ongrip:{}},[],[],{mode:"open"});var Ev=j("<div><!></div>"),Sv=j('<div class="jat-feedback-panel svelte-qpyrvv"><div class="no-endpoint svelte-qpyrvv"><p class="svelte-qpyrvv">No endpoint configured.</p> <p class="svelte-qpyrvv">Add the <code class="svelte-qpyrvv">endpoint</code> attribute:</p> <code class="example svelte-qpyrvv"><jat-feedback endpoint="http://localhost:3333"></code></div></div>'),$v=j('<div class="jat-feedback-root svelte-qpyrvv"><!> <!></div>');const Cv={hash:"svelte-qpyrvv",code:`.jat-feedback-root.svelte-qpyrvv {position:fixed;z-index:2147483647;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;}.jat-feedback-panel.svelte-qpyrvv {position:absolute;
|
|
76
76
|
animation: svelte-qpyrvv-panel-in 0.2s ease;}.jat-feedback-panel.hidden.svelte-qpyrvv {display:none;}.jat-feedback-panel.dragging.svelte-qpyrvv {pointer-events:none;opacity:0.9;}.no-endpoint.svelte-qpyrvv {width:320px;background:#111827;border:1px solid #374151;border-radius:12px;padding:20px;color:#d1d5db;font-size:13px;box-shadow:0 20px 60px rgba(0,0,0,0.4);}.no-endpoint.svelte-qpyrvv p:where(.svelte-qpyrvv) {margin:0 0 8px;}.no-endpoint.svelte-qpyrvv code:where(.svelte-qpyrvv) {font-family:'SF Mono', 'Fira Code', monospace;font-size:11px;color:#93c5fd;}.no-endpoint.svelte-qpyrvv code.example:where(.svelte-qpyrvv) {display:block;background:#1f2937;padding:8px 10px;border-radius:4px;margin-top:4px;}
|
|
77
77
|
@keyframes svelte-qpyrvv-panel-in {
|
|
78
78
|
from { opacity: 0; transform: translateY(8px) scale(0.96); }
|
package/dist/jat-feedback.mjs
CHANGED
|
@@ -3663,8 +3663,7 @@ async function rl(e, t) {
|
|
|
3663
3663
|
async function Pf(e) {
|
|
3664
3664
|
try {
|
|
3665
3665
|
const t = `${e.replace(/\/$/, "")}/api/feedback/reports`, n = await fetch(t, {
|
|
3666
|
-
method: "GET"
|
|
3667
|
-
credentials: "include"
|
|
3666
|
+
method: "GET"
|
|
3668
3667
|
});
|
|
3669
3668
|
if (!n.ok) {
|
|
3670
3669
|
const s = await n.json().catch(() => ({ error: `HTTP ${n.status}` }));
|
|
@@ -3681,7 +3680,6 @@ async function Of(e, t, n, r, s) {
|
|
|
3681
3680
|
r && (i.reason = r), s != null && s.screenshots && s.screenshots.length > 0 && (i.screenshots = s.screenshots), s != null && s.elements && s.elements.length > 0 && (i.elements = s.elements);
|
|
3682
3681
|
const a = await fetch(o, {
|
|
3683
3682
|
method: "PATCH",
|
|
3684
|
-
credentials: "include",
|
|
3685
3683
|
headers: { "Content-Type": "application/json" },
|
|
3686
3684
|
body: JSON.stringify(i)
|
|
3687
3685
|
}), c = await a.json();
|
|
@@ -5846,7 +5844,7 @@ const Ev = {
|
|
|
5846
5844
|
};
|
|
5847
5845
|
function jl(e, t) {
|
|
5848
5846
|
xn(t, !0), Fn(e, Ev);
|
|
5849
|
-
const n = "1.6.
|
|
5847
|
+
const n = "1.6.4";
|
|
5850
5848
|
let r = V(t, "endpoint", 7), s = V(t, "project", 7), o = V(t, "isOpen", 7, !1), i = V(t, "userId", 7, ""), a = V(t, "userEmail", 7, ""), c = V(t, "userName", 7, ""), u = V(t, "userRole", 7, ""), f = V(t, "orgId", 7, ""), d = V(t, "orgName", 7, ""), v = V(t, "onclose", 7), h = V(t, "ongrip", 7), b = /* @__PURE__ */ D("new"), _ = /* @__PURE__ */ D(Le([])), p = /* @__PURE__ */ D(!1), m = /* @__PURE__ */ D(""), T = /* @__PURE__ */ Zt(() => l(_).filter((R) => R.status === "completed").length);
|
|
5851
5849
|
async function k() {
|
|
5852
5850
|
y(p, !0), y(m, "");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jat-feedback",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"description": "Embeddable feedback widget for bug reports and feature requests. Captures screenshots, console logs, and user context as a web component.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/jat-feedback.js",
|