@mhosaic/feedback 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,603 @@
1
- "use strict";var MhosaicFeedback=(()=>{var se=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var Ot=Object.prototype.hasOwnProperty;var Vt=(e,t,r)=>t in e?se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var qt=(e,t)=>{for(var r in t)se(e,r,{get:t[r],enumerable:!0})},Gt=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of jt(t))!Ot.call(e,a)&&a!==r&&se(e,a,{get:()=>t[a],enumerable:!(n=Ut(t,a))||n.enumerable});return e};var Xt=e=>Gt(se({},"__esModule",{value:!0}),e);var Se=(e,t,r)=>Vt(e,typeof t!="symbol"?t+"":t,r);var xo={};qt(xo,{createFeedback:()=>_o});var Jt=["description","feedback_type","severity","env","page_url","user_agent","capture_method"];function Zt(e){let t;try{t=new URL(e)}catch(r){throw new Error(`[mhosaic-feedback] \`endpoint\` is not a valid URL: ${e}`)}if(t.protocol!=="https:"&&!(t.protocol==="http:"&&(t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="[::1]")))throw new Error(`[mhosaic-feedback] \`endpoint\` must use https:// (got ${t.protocol}//${t.hostname}). http:// is only allowed for localhost in dev.`)}function We(e){var _,w;let t=((_=e.endpoint)!=null?_:"").replace(/\/+$/,"");if(!t)throw new Error('[mhosaic-feedback] `endpoint` is required (e.g. "https://feedback.example.com").');Zt(t);let r=(w=e.fetch)!=null?w:globalThis.fetch;async function n(m){var E,L,P;let u=m;if(e.beforeSend&&(u=await e.beforeSend(m)),u===!1)throw new Error("Submission cancelled by beforeSend");let l=new FormData;for(let A of Jt)l.append(A,String(u[A]));l.append("technical_context",JSON.stringify(u.technical_context)),u.screenshot&&l.append("screenshot",u.screenshot,"screenshot.png"),u.synthetic&&l.append("synthetic","true"),(E=u.user)!=null&&E.id&&l.append("user",JSON.stringify(u.user)),u.widget_version&&l.append("widget_version",u.widget_version);let y={Authorization:`Bearer ${e.apiKey}`};u.synthetic&&(y["X-Mhosaic-Capture-Source"]="error-tracking");let C=(L=e.getSignedIdentity)==null?void 0:L.call(e);C&&C.userHash&&C.exp&&((P=u.user)!=null&&P.id)&&(y["X-Mhosaic-User"]=String(u.user.id),y["X-Mhosaic-User-Hmac"]=C.userHash,y["X-Mhosaic-User-Exp"]=String(C.exp),C.email&&(y["X-Mhosaic-User-Email"]=C.email));let M=await r(`${t}/api/feedback/v1/reports/`,{method:"POST",headers:y,body:l});if(!M.ok){let A=await M.text().catch(()=>"");throw new Error(`Feedback submit failed: ${M.status} ${A}`)}return M.json()}function a(m){var y;let u={Authorization:`Bearer ${e.apiKey}`,"X-Mhosaic-User":m},l=(y=e.getSignedIdentity)==null?void 0:y.call(e);return l&&l.userHash&&l.exp&&(u["X-Mhosaic-User-Hmac"]=l.userHash,u["X-Mhosaic-User-Exp"]=String(l.exp),l.email&&(u["X-Mhosaic-User-Email"]=l.email)),u}async function i(m){let u=await r(`${t}/api/feedback/v1/reports/widget/mine/`,{method:"GET",headers:a(m)});if(u.status===404)return[];if(!u.ok){let l=await u.text().catch(()=>"");throw new Error(`listMine failed: ${u.status} ${l}`)}return u.json()}async function s(m){let u=await r(`${t}/api/feedback/v1/reports/widget/changelog/`,{method:"GET",headers:a(m)});if(u.status===404)return[];if(!u.ok){let l=await u.text().catch(()=>"");throw new Error(`listChangelog failed: ${u.status} ${l}`)}return u.json()}async function c(m,u){let l=await r(`${t}/api/feedback/v1/reports/widget/${m}/`,{method:"GET",headers:a(u)});if(!l.ok){let y=await l.text().catch(()=>"");throw new Error(`getReport failed: ${l.status} ${y}`)}return l.json()}async function f(m,u,l,y){let C=await r(`${t}/api/feedback/v1/reports/widget/${m}/comments/`,{method:"POST",headers:{...a(u),"Content-Type":"application/json"},body:JSON.stringify({body:l,...y!==void 0&&{client_nonce:y}})});if(!C.ok){let M=await C.text().catch(()=>"");throw new Error(`addComment failed: ${C.status} ${M}`)}return C.json()}async function d(m,u){let l=await r(`${t}/api/feedback/v1/reports/widget/${m}/`,{method:"PATCH",headers:{...a(u),"Content-Type":"application/json"},body:JSON.stringify({status:"closed"})});if(!l.ok){let y=await l.text().catch(()=>"");throw new Error(`closeAsResolved failed: ${l.status} ${y}`)}return l.json()}async function h(m,u){let l=await r(`${t}/api/feedback/v1/reports/widget/${m}/`,{method:"PATCH",headers:{...a(u),"Content-Type":"application/json"},body:JSON.stringify({status:"in_progress"})});if(!l.ok){let y=await l.text().catch(()=>"");throw new Error(`reopenUnresolved failed: ${l.status} ${y}`)}return l.json()}function p(m){var y,C,M;if(!m)return"";let u=new URLSearchParams;(y=m.status)==null||y.forEach(E=>u.append("status",E)),(C=m.type)==null||C.forEach(E=>u.append("type",E)),(M=m.severity)==null||M.forEach(E=>u.append("severity",E)),m.q&&u.set("q",m.q),m.mine&&u.set("mine","1"),m.ordering&&u.set("ordering",m.ordering),m.page&&m.page>1&&u.set("page",String(m.page));let l=u.toString();return l?`?${l}`:""}async function g(m,u){let l=await r(`${t}/api/feedback/v1/reports/widget/board/${p(u)}`,{method:"GET",headers:a(m)});if(l.status===404)return{count:0,next:null,previous:null,results:[]};if(!l.ok){let y=await l.text().catch(()=>"");throw new Error(`listBoard failed: ${l.status} ${y}`)}return l.json()}async function b(m,u){let l=await r(`${t}/api/feedback/v1/reports/widget/board/kpis/${p(u)}`,{method:"GET",headers:a(m)});if(l.status===404)return{total:0,by_status:{},resolution_rate:0,scope:"mine"};if(!l.ok){let y=await l.text().catch(()=>"");throw new Error(`fetchBoardKpis failed: ${l.status} ${y}`)}return l.json()}async function x(m,u){let l=await r(`${t}/api/feedback/v1/widget/visibility/`,{method:"POST",headers:{...a(m),"Content-Type":"application/json"},body:JSON.stringify({external_id:m,...u?{email:u}:{}})});if(!l.ok)throw new Error(`checkVisibility failed: ${l.status}`);return!!(await l.json()).show}return{submitReport:n,checkVisibility:x,listMine:i,listChangelog:s,getReport:c,addComment:f,closeAsResolved:d,reopenUnresolved:h,listBoard:g,fetchBoardKpis:b}}var Yt=/token|key|password|secret|auth|session|sig|credential|bearer|cookie/i,Qt=[/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/,/^(?:sk|pk)_proj_[A-Za-z0-9_-]{16,}$/,/^gh[pousr]_[A-Za-z0-9]{30,}$/,/^(?:sk|pk|rk|whsec)_(?:live|test)_[A-Za-z0-9]{16,}$/,/^AKIA[0-9A-Z]{12,}$/,/^xox[abprso]-[A-Za-z0-9-]{12,}$/,/^[a-f0-9]{40,}$/i,/^[A-Za-z0-9_-]{40,}$/];function er(e){return Qt.some(t=>t.test(e))}function Y(e){try{let t=/^https?:\/\//i.test(e),r=e.startsWith("/");if(!t&&!r)return e;let n=typeof window!="undefined"?window.location.origin:"http://localhost",a=new URL(e,n),i=new URLSearchParams;return a.searchParams.forEach((s,c)=>{Yt.test(c)||er(s)?i.set(c,"[redacted]"):i.set(c,s)}),a.search=i.toString(),a.hash=a.hash?"#[redacted]":"",a.toString()}catch(t){return e}}var tr=[/\b(?:sk|pk)_proj_[A-Za-z0-9_*-]+/g,/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,/\bBearer\s+[A-Za-z0-9._~+/=-]{16,}\b/g,/\bAuthorization\s*[:=]\s*["']?[A-Za-z0-9._~+/=-]{16,}["']?/gi,/\bgh[pousr]_[A-Za-z0-9]{30,}\b/g,/\b(?:sk|pk|rk|whsec)_(?:live|test)_[A-Za-z0-9]{16,}\b/g,/\bAKIA[0-9A-Z]{12,}\b/g,/\bxox[abprso]-[A-Za-z0-9-]{12,}\b/g,/\bAIza[0-9A-Za-z_-]{35}\b/g,/\bsk-(?:proj-|svcacct-)?[A-Za-z0-9_-]{20,}\b/g,/\bsk-ant-(?:api03-)?[A-Za-z0-9_-]{40,}\b/g,/\bAC[a-f0-9]{32}\b/g,/\bSK[a-f0-9]{32}\b/g];function j(e){let t=e;for(let r of tr)t=t.replace(r,"[redacted-token]");return t}function He(){var c;let e=navigator,t=(c=e.connection)==null?void 0:c.effectiveType,r=e.deviceMemory,n=document.referrer||void 0,a=n!==void 0?Y(n):void 0,i=Y(window.location.pathname+window.location.search),s;try{let f=new URL(i,window.location.origin);s=f.pathname+f.search}catch(f){s=window.location.pathname}return{viewport:{w:window.innerWidth,h:window.innerHeight,dpr:window.devicePixelRatio||1},screen:{w:window.screen.width,h:window.screen.height},platform:e.platform,language:e.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,timezoneOffset:new Date().getTimezoneOffset(),...t!==void 0&&{connection:t},online:e.onLine,...r!==void 0&&{deviceMemory:r},hardwareConcurrency:e.hardwareConcurrency,...a!==void 0&&{referrer:a},title:j(document.title||"").slice(0,200),pathname:s}}function rr(e){if(e==null)return String(e);if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(e instanceof Error)return`${e.name}: ${e.message}`;if(e instanceof Element)return`<${e.tagName.toLowerCase()}>`;try{return JSON.stringify(e,(t,r)=>typeof r=="bigint"?r.toString():r)}catch(t){try{return String(e)}catch(r){return"[unserializable]"}}}function Ne(e){let t=["log","info","warn","error","debug"],r={};for(let n of t){let a=console[n];typeof a=="function"&&(r[n]=a,console[n]=function(...s){try{let c=s.map(rr).join(" "),f=j(c).slice(0,2e3),d={level:n,message:f,ts:Date.now()};if(n==="error"){let h=new Error().stack;h&&(d.stack=h.split(`
1
+ "use strict";var MhosaicFeedback=(()=>{var _e=Object.defineProperty;var Ir=Object.getOwnPropertyDescriptor;var $r=Object.getOwnPropertyNames;var Dr=Object.prototype.hasOwnProperty;var Kr=(e,t,r)=>t in e?_e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var j=(e,t)=>()=>(e&&(t=e(e=0)),t);var st=(e,t)=>{for(var r in t)_e(e,r,{get:t[r],enumerable:!0})},Hr=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of $r(t))!Dr.call(e,n)&&n!==r&&_e(e,n,{get:()=>t[n],enumerable:!(a=Ir(t,n))||a.enumerable});return e};var Nr=e=>Hr(_e({},"__esModule",{value:!0}),e);var Ne=(e,t,r)=>Kr(e,typeof t!="symbol"?t+"":t,r);function te(e,t){for(var r in t)e[r]=t[r];return e}function Ve(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function y(e,t,r){var a,n,i,s={};for(i in t)i=="key"?a=t[i]:i=="ref"?n=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Ee.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return ke(e,s,a,n,null)}function ke(e,t,r,a,n){var i={type:e,props:t,key:r,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:n==null?++xt:n,__i:-1,__u:0};return n==null&&F.vnode!=null&&F.vnode(i),i}function U(e){return e.children}function Se(e,t){this.props=e,this.context=t}function ce(e,t){if(t==null)return e.__?ce(e.__,e.__i+1):null;for(var r;t<e.__k.length;t++)if((r=e.__k[t])!=null&&r.__e!=null)return r.__e;return typeof e.type=="function"?ce(e):null}function oo(e){if(e.__P&&e.__d){var t=e.__v,r=t.__e,a=[],n=[],i=te({},t);i.__v=t.__v+1,F.vnode&&F.vnode(i),Ge(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[r]:null,a,r==null?ce(t):r,!!(32&t.__u),n),i.__v=t.__v,i.__.__k[i.__i]=i,Et(a,i,n),t.__e=t.__=null,i.__e!=r&&Ct(i)}}function Ct(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Ct(e)}function vt(e){(!e.__d&&(e.__d=!0)&&re.push(e)&&!qe.__r++||ht!=F.debounceRendering)&&((ht=F.debounceRendering)||wt)(qe)}function qe(){try{for(var e,t=1;re.length;)re.length>t&&re.sort(kt),e=re.shift(),t=re.length,oo(e)}finally{re.length=qe.__r=0}}function Rt(e,t,r,a,n,i,s,l,u,c,b){var d,h,g,S,k,v,f,m=a&&a.__k||Re,p=t.length;for(u=ao(r,t,m,u,p),d=0;d<p;d++)(g=r.__k[d])!=null&&(h=g.__i!=-1&&m[g.__i]||Ce,g.__i=d,v=Ge(e,g,h,n,i,s,l,u,c,b),S=g.__e,g.ref&&h.ref!=g.ref&&(h.ref&&Ye(h.ref,null,g),b.push(g.ref,g.__c||S,g)),k==null&&S!=null&&(k=S),(f=!!(4&g.__u))||h.__k===g.__k?(u=qt(g,u,e,f),f&&h.__e&&(h.__e=null)):typeof g.type=="function"&&v!==void 0?u=v:S&&(u=S.nextSibling),g.__u&=-7);return r.__e=k,u}function ao(e,t,r,a,n){var i,s,l,u,c,b=r.length,d=b,h=0;for(e.__k=new Array(n),i=0;i<n;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=ke(null,s,null,null,null):Te(s)?s=e.__k[i]=ke(U,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=ke(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,u=i+h,s.__=e,s.__b=e.__b+1,l=null,(c=s.__i=no(s,r,u,d))!=-1&&(d--,(l=r[c])&&(l.__u|=2)),l==null||l.__v==null?(c==-1&&(n>b?h--:n<b&&h++),typeof s.type!="function"&&(s.__u|=4)):c!=u&&(c==u-1?h--:c==u+1?h++:(c>u?h--:h++,s.__u|=4))):e.__k[i]=null;if(d)for(i=0;i<b;i++)(l=r[i])!=null&&(2&l.__u)==0&&(l.__e==a&&(a=ce(l)),Pt(l,l));return a}function qt(e,t,r,a){var n,i;if(typeof e.type=="function"){for(n=e.__k,i=0;n&&i<n.length;i++)n[i]&&(n[i].__=e,t=qt(n[i],t,r,a));return t}e.__e!=t&&(a&&(t&&e.type&&!t.parentNode&&(t=ce(e)),r.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function no(e,t,r,a){var n,i,s,l=e.key,u=e.type,c=t[r],b=c!=null&&(2&c.__u)==0;if(c===null&&l==null||b&&l==c.key&&u==c.type)return r;if(a>(b?1:0)){for(n=r-1,i=r+1;n>=0||i<t.length;)if((c=t[s=n>=0?n--:i++])!=null&&(2&c.__u)==0&&l==c.key&&u==c.type)return s}return-1}function yt(e,t,r){t[0]=="-"?e.setProperty(t,r==null?"":r):e[t]=r==null?"":typeof r!="number"||ro.test(t)?r:r+"px"}function xe(e,t,r,a,n){var i,s;e:if(t=="style")if(typeof r=="string")e.style.cssText=r;else{if(typeof a=="string"&&(e.style.cssText=a=""),a)for(t in a)r&&t in r||yt(e.style,t,"");if(r)for(t in r)a&&r[t]==a[t]||yt(e.style,t,r[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(St,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=r,r?a?r[fe]=a[fe]:(r[fe]=Ue,e.addEventListener(t,i?We:Oe,i)):e.removeEventListener(t,i?We:Oe,i);else{if(n=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=r==null?"":r;break e}catch(l){}typeof r=="function"||(r==null||r===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&r==1?"":r))}}function _t(e){return function(t){if(this.l){var r=this.l[t.type+e];if(t[we]==null)t[we]=Ue++;else if(t[we]<r[fe])return;return r(F.event?F.event(t):t)}}}function Ge(e,t,r,a,n,i,s,l,u,c){var b,d,h,g,S,k,v,f,m,p,x,E,P,w,A,T=t.type;if(t.constructor!==void 0)return null;128&r.__u&&(u=!!(32&r.__u),i=[l=t.__e=r.__e]),(b=F.__b)&&b(t);e:if(typeof T=="function")try{if(f=t.props,m=T.prototype&&T.prototype.render,p=(b=T.contextType)&&a[b.__c],x=b?p?p.props.value:b.__:a,r.__c?v=(d=t.__c=r.__c).__=d.__E:(m?t.__c=d=new T(f,x):(t.__c=d=new Se(f,x),d.constructor=T,d.render=so),p&&p.sub(d),d.state||(d.state={}),d.__n=a,h=d.__d=!0,d.__h=[],d._sb=[]),m&&d.__s==null&&(d.__s=d.state),m&&T.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=te({},d.__s)),te(d.__s,T.getDerivedStateFromProps(f,d.__s))),g=d.props,S=d.state,d.__v=t,h)m&&T.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),m&&d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(m&&T.getDerivedStateFromProps==null&&f!==g&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(f,x),t.__v==r.__v||!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(f,d.__s,x)===!1){t.__v!=r.__v&&(d.props=f,d.state=d.__s,d.__d=!1),t.__e=r.__e,t.__k=r.__k,t.__k.some(function(M){M&&(M.__=t)}),Re.push.apply(d.__h,d._sb),d._sb=[],d.__h.length&&s.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(f,d.__s,x),m&&d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(g,S,k)})}if(d.context=x,d.props=f,d.__P=e,d.__e=!1,E=F.__r,P=0,m)d.state=d.__s,d.__d=!1,E&&E(t),b=d.render(d.props,d.state,d.context),Re.push.apply(d.__h,d._sb),d._sb=[];else do d.__d=!1,E&&E(t),b=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++P<25);d.state=d.__s,d.getChildContext!=null&&(a=te(te({},a),d.getChildContext())),m&&!h&&d.getSnapshotBeforeUpdate!=null&&(k=d.getSnapshotBeforeUpdate(g,S)),w=b!=null&&b.type===U&&b.key==null?Tt(b.props.children):b,l=Rt(e,Te(w)?w:[w],t,r,a,n,i,s,l,u,c),d.base=t.__e,t.__u&=-161,d.__h.length&&s.push(d),v&&(d.__E=d.__=null)}catch(M){if(t.__v=null,u||i!=null)if(M.then){for(t.__u|=u?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i[i.indexOf(l)]=null,t.__e=l}else{for(A=i.length;A--;)Ve(i[A]);je(t)}else t.__e=r.__e,t.__k=r.__k,M.then||je(t);F.__e(M,t,r)}else i==null&&t.__v==r.__v?(t.__k=r.__k,t.__e=r.__e):l=t.__e=io(r.__e,t,r,a,n,i,s,u,c);return(b=F.diffed)&&b(t),128&t.__u?void 0:l}function je(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(je))}function Et(e,t,r){for(var a=0;a<r.length;a++)Ye(r[a],r[++a],r[++a]);F.__c&&F.__c(t,e),e.some(function(n){try{e=n.__h,n.__h=[],e.some(function(i){i.call(n)})}catch(i){F.__e(i,n.__v)}})}function Tt(e){return typeof e!="object"||e==null||e.__b>0?e:Te(e)?e.map(Tt):te({},e)}function io(e,t,r,a,n,i,s,l,u){var c,b,d,h,g,S,k,v=r.props||Ce,f=t.props,m=t.type;if(m=="svg"?n="http://www.w3.org/2000/svg":m=="math"?n="http://www.w3.org/1998/Math/MathML":n||(n="http://www.w3.org/1999/xhtml"),i!=null){for(c=0;c<i.length;c++)if((g=i[c])&&"setAttribute"in g==!!m&&(m?g.localName==m:g.nodeType==3)){e=g,i[c]=null;break}}if(e==null){if(m==null)return document.createTextNode(f);e=document.createElementNS(n,m,f.is&&f),l&&(F.__m&&F.__m(t,i),l=!1),i=null}if(m==null)v===f||l&&e.data==f||(e.data=f);else{if(i=i&&Ee.call(e.childNodes),!l&&i!=null)for(v={},c=0;c<e.attributes.length;c++)v[(g=e.attributes[c]).name]=g.value;for(c in v)g=v[c],c=="dangerouslySetInnerHTML"?d=g:c=="children"||c in f||c=="value"&&"defaultValue"in f||c=="checked"&&"defaultChecked"in f||xe(e,c,null,g,n);for(c in f)g=f[c],c=="children"?h=g:c=="dangerouslySetInnerHTML"?b=g:c=="value"?S=g:c=="checked"?k=g:l&&typeof g!="function"||v[c]===g||xe(e,c,g,v[c],n);if(b)l||d&&(b.__html==d.__html||b.__html==e.innerHTML)||(e.innerHTML=b.__html),t.__k=[];else if(d&&(e.innerHTML=""),Rt(t.type=="template"?e.content:e,Te(h)?h:[h],t,r,a,m=="foreignObject"?"http://www.w3.org/1999/xhtml":n,i,s,i?i[0]:r.__k&&ce(r,0),l,u),i!=null)for(c=i.length;c--;)Ve(i[c]);l||(c="value",m=="progress"&&S==null?e.removeAttribute("value"):S!=null&&(S!==e[c]||m=="progress"&&!S||m=="option"&&S!=v[c])&&xe(e,c,S,v[c],n),c="checked",k!=null&&k!=e[c]&&xe(e,c,k,v[c],n))}return e}function Ye(e,t,r){try{if(typeof e=="function"){var a=typeof e.__u=="function";a&&e.__u(),a&&t==null||(e.__u=e(t))}else e.current=t}catch(n){F.__e(n,r)}}function Pt(e,t,r){var a,n;if(F.unmount&&F.unmount(e),(a=e.ref)&&(a.current&&a.current!=e.__e||Ye(a,null,t)),(a=e.__c)!=null){if(a.componentWillUnmount)try{a.componentWillUnmount()}catch(i){F.__e(i,t)}a.base=a.__P=null}if(a=e.__k)for(n=0;n<a.length;n++)a[n]&&Pt(a[n],t,r||typeof e.type!="function");r||Ve(e.__e),e.__c=e.__=e.__e=void 0}function so(e,t,r){return this.constructor(e,r)}function de(e,t,r){var a,n,i,s;t==document&&(t=document.documentElement),F.__&&F.__(e,t),n=(a=typeof r=="function")?null:r&&r.__k||t.__k,i=[],s=[],Ge(t,e=(!a&&r||t).__k=y(U,null,[e]),n||Ce,Ce,t.namespaceURI,!a&&r?[r]:n?null:t.firstChild?Ee.call(t.childNodes):null,i,!a&&r?r:n?n.__e:t.firstChild,a,s),Et(i,e,s)}var Ee,F,xt,eo,re,ht,wt,kt,Qe,we,fe,St,Ue,Oe,We,to,Ce,Re,ro,Te,Z=j(()=>{"use strict";Ce={},Re=[],ro=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Te=Array.isArray;Ee=Re.slice,F={__e:function(e,t,r,a){for(var n,i,s;t=t.__;)if((n=t.__c)&&!n.__)try{if((i=n.constructor)&&i.getDerivedStateFromError!=null&&(n.setState(i.getDerivedStateFromError(e)),s=n.__d),n.componentDidCatch!=null&&(n.componentDidCatch(e,a||{}),s=n.__d),s)return n.__E=n}catch(l){e=l}throw e}},xt=0,eo=function(e){return e!=null&&e.constructor===void 0},Se.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=te({},this.state),typeof e=="function"&&(e=e(te({},r),this.props)),e&&te(r,e),e!=null&&this.__v&&(t&&this._sb.push(t),vt(this))},Se.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),vt(this))},Se.prototype.render=U,re=[],wt=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,kt=function(e,t){return e.__v.__b-t.__v.__b},qe.__r=0,Qe=Math.random().toString(8),we="__d"+Qe,fe="__a"+Qe,St=/(PointerCapture)$|Capture$/i,Ue=0,Oe=_t(!1),We=_t(!0),to=0});function Me(e,t){H.__h&&H.__h(D,e,me||t),me=0;var r=D.__H||(D.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({}),r.__[e]}function q(e){return me=1,lo(Kt,e)}function lo(e,t,r){var a=Me(pe++,2);if(a.t=e,!a.__c&&(a.__=[r?r(t):Kt(void 0,t),function(l){var u=a.__N?a.__N[0]:a.__[0],c=a.t(u,l);u!==c&&(a.__N=[c,a.__[1]],a.__c.setState({}))}],a.__c=D,!D.__f)){var n=function(l,u,c){if(!a.__c.__H)return!0;var b=a.__c.__H.__.filter(function(h){return h.__c});if(b.every(function(h){return!h.__N}))return!i||i.call(this,l,u,c);var d=a.__c.props!==l;return b.some(function(h){if(h.__N){var g=h.__[0];h.__=h.__N,h.__N=void 0,g!==h.__[0]&&(d=!0)}}),i&&i.call(this,l,u,c)||d};D.__f=!0;var i=D.shouldComponentUpdate,s=D.componentWillUpdate;D.componentWillUpdate=function(l,u,c){if(this.__e){var b=i;i=void 0,n(l,u,c),i=b}s&&s.call(this,l,u,c)},D.shouldComponentUpdate=n}return a.__N||a.__}function $(e,t){var r=Me(pe++,3);!H.__s&&et(r.__H,t)&&(r.__=e,r.u=t,D.__H.__h.push(r))}function Ze(e,t){var r=Me(pe++,4);!H.__s&&et(r.__H,t)&&(r.__=e,r.u=t,D.__h.push(r))}function N(e){return me=5,X(function(){return{current:e}},[])}function X(e,t){var r=Me(pe++,7);return et(r.__H,t)&&(r.__=e(),r.__H=t,r.__h=e),r.__}function ne(e,t){return me=8,X(function(){return e},t)}function co(){for(var e;e=Dt.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Pe),t.__h.some(Je),t.__h=[]}catch(r){t.__h=[],H.__e(r,e.__v)}}}function po(e){var t,r=function(){clearTimeout(a),$t&&cancelAnimationFrame(t),setTimeout(e)},a=setTimeout(r,35);$t&&(t=requestAnimationFrame(r))}function Pe(e){var t=D,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),D=t}function Je(e){var t=D;e.__c=e.__(),D=t}function et(e,t){return!e||e.length!==t.length||t.some(function(r,a){return r!==e[a]})}function Kt(e,t){return typeof t=="function"?t(e):t}var pe,D,Xe,Mt,me,Dt,H,At,zt,Lt,Bt,Ft,It,$t,V=j(()=>{"use strict";Z();me=0,Dt=[],H=F,At=H.__b,zt=H.__r,Lt=H.diffed,Bt=H.__c,Ft=H.unmount,It=H.__;H.__b=function(e){D=null,At&&At(e)},H.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),It&&It(e,t)},H.__r=function(e){zt&&zt(e),pe=0;var t=(D=e.__c).__H;t&&(Xe===D?(t.__h=[],D.__h=[],t.__.some(function(r){r.__N&&(r.__=r.__N),r.u=r.__N=void 0})):(t.__h.some(Pe),t.__h.some(Je),t.__h=[],pe=0)),Xe=D},H.diffed=function(e){Lt&&Lt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Dt.push(t)!==1&&Mt===H.requestAnimationFrame||((Mt=H.requestAnimationFrame)||po)(co)),t.__H.__.some(function(r){r.u&&(r.__H=r.u),r.u=void 0})),Xe=D=null},H.__c=function(e,t){t.some(function(r){try{r.__h.some(Pe),r.__h=r.__h.filter(function(a){return!a.__||Je(a)})}catch(a){t.some(function(n){n.__h&&(n.__h=[])}),t=[],H.__e(a,r.__v)}}),Bt&&Bt(e,t)},H.unmount=function(e){Ft&&Ft(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.some(function(a){try{Pe(a)}catch(n){t=n}}),r.__H=void 0,t&&H.__e(t,r.__v))};$t=typeof requestAnimationFrame=="function"});function sr(e){return e==="en"?pa:da}var da,pa,lr=j(()=>{"use strict";da={"pastille.label":"Suivi des tests","pastille.loading":"Chargement\u2026","pastille.unavailable":"Statuts indisponibles","pastille.unknownPage":"Page inconnue","pastille.unknownPageHint":"Cette route n\u2019est pas encore au plan du site des tests.","panel.freshness":"Statuts g\xE9n\xE9r\xE9s le {date} \xB7 version {version} \xB7 env {env}","panel.noScenarios":"Aucun sc\xE9nario li\xE9 \xE0 cette page.","panel.openSitemap":"Voir le plan du site","panel.sitemapLink":"Plan du site","panel.scenarioCountOne":"{count} sc\xE9nario","panel.scenarioCountMany":"{count} sc\xE9narios","panel.laneAutomated":"Automatis\xE9","panel.laneDev":"D\xE9v","panel.laneClient":"Client","lane.notTested":"Non test\xE9","lane.validatedBy":"Valid\xE9 par {by}","lane.rejectedBy":"Rejet\xE9 par {by}","lane.stale":"Valid\xE9 en v{version}, version actuelle v{current}","lane.clientPending":"Non test\xE9 \u2014 plateforme requise","lane.bot":"Automatis\xE9 (bot)","lane.code":"D\xE9veloppeur (code)","lane.human":"Humain","laneState.ok":"\xC0 jour","laneState.issue":"Probl\xE8me","laneState.none":"Non fait / p\xE9rim\xE9","color.green":"Valid\xE9","color.yellow":"En attente","color.red":"En \xE9chec","color.gray":"Non couvert","automated.passing":"R\xE9ussi","automated.failing":"En \xE9chec","automated.flaky":"Instable","automated.neverRun":"Jamais ex\xE9cut\xE9","source.testgen":"g\xE9n\xE9r\xE9","source.testgenHint":"Sc\xE9nario g\xE9n\xE9r\xE9 automatiquement (testgen)","suite.cases":"{count} cas","case.covered":"auto","case.manual":"manuel","case.blocked":"bloqu\xE9","case.openQuestion":"question produit","grounding.verified":"attendu v\xE9rifi\xE9","grounding.confirmLive":"\xE0 confirmer en live","grounding.productQuestion":"d\xE9cision produit","modal.title":"Plan du site \u2014 suivi des tests","modal.close":"Fermer","modal.tabPages":"Pages","modal.tabScenarios":"Sc\xE9narios","modal.youAreHere":"vous \xEAtes ici","modal.search":"Filtrer les sc\xE9narios\u2026","modal.noMatch":"Aucun sc\xE9nario ne correspond au filtre.","modal.traversed":"Travers\xE9es","modal.appliesTo":"{count} pages","modal.kpiPagesCovered":"Pages avec \u2265 1 sc\xE9nario","modal.kpiScenariosPassing":"Sc\xE9narios passants","panel.noTests":"Aucun test ne couvre encore cette page.","panel.unknownPage":"Page inconnue du registre QA."},pa={"pastille.label":"Test tracking","pastille.loading":"Loading\u2026","pastille.unavailable":"Statuses unavailable","pastille.unknownPage":"Unknown page","pastille.unknownPageHint":"This route isn\u2019t in the test sitemap yet.","panel.freshness":"Statuses generated on {date} \xB7 version {version} \xB7 env {env}","panel.noScenarios":"No scenario linked to this page.","panel.openSitemap":"View sitemap","panel.sitemapLink":"Sitemap","panel.scenarioCountOne":"{count} scenario","panel.scenarioCountMany":"{count} scenarios","panel.laneAutomated":"Automated","panel.laneDev":"Dev","panel.laneClient":"Client","lane.notTested":"Not tested","lane.validatedBy":"Validated by {by}","lane.rejectedBy":"Rejected by {by}","lane.stale":"Validated in v{version}, current version v{current}","lane.clientPending":"Not tested \u2014 platform required","lane.bot":"Automated (bot)","lane.code":"Developer (code)","lane.human":"Human","laneState.ok":"Up to date","laneState.issue":"Issue","laneState.none":"Not done / stale","color.green":"Validated","color.yellow":"Pending","color.red":"Failing","color.gray":"Not covered","automated.passing":"Passing","automated.failing":"Failing","automated.flaky":"Flaky","automated.neverRun":"Never run","source.testgen":"generated","source.testgenHint":"Auto-generated scenario (testgen)","suite.cases":"{count} cases","case.covered":"auto","case.manual":"manual","case.blocked":"blocked","case.openQuestion":"product question","grounding.verified":"expected verified","grounding.confirmLive":"confirm live","grounding.productQuestion":"product decision","modal.title":"Sitemap \u2014 test tracking","modal.close":"Close","modal.tabPages":"Pages","modal.tabScenarios":"Scenarios","modal.youAreHere":"you are here","modal.search":"Filter scenarios\u2026","modal.noMatch":"No scenario matches the filter.","modal.traversed":"Traversed","modal.appliesTo":"{count} pages","modal.kpiPagesCovered":"Pages with \u2265 1 scenario","modal.kpiScenariosPassing":"Passing scenarios","panel.noTests":"No tests cover this page yet.","panel.unknownPage":"Page unknown to the QA registry."}});function rt(e){if(!e)return"/";let t=e.startsWith("/")?e:`/${e}`;return t=t.replace(/\/{2,}/g,"/"),t.length>1&&(t=t.replace(/\/+$/,"")),t.length>0?t:"/"}function ua(e,t){let r=t.length;for(;r>0;){let a=t[r-1];if(a!==void 0&&a.startsWith(":")&&a.endsWith("?"))r--;else break}return e.length<r||e.length>t.length?!1:e.every((a,n)=>{let i=t[n];return i!==void 0&&(i.startsWith(":")||i===a)})}function dr(e,t){let r=cr(rt(e)),a=null,n=-1;for(let i of t){let s=cr(i);if(!ua(r,s))continue;let u=s.filter(c=>!c.startsWith(":")).length*100+s.length;u>n&&(a=i,n=u)}return a}var cr,ot=j(()=>{"use strict";cr=e=>e.split("/").filter(Boolean)});var pr,ur=j(()=>{"use strict";pr=`
2
+ :host {
3
+ --mqa-z-index: 2147483639;
4
+ --mqa-z-panel: 2147483638;
5
+
6
+ /* Color tokens */
7
+ --mqa-green: #16a34a;
8
+ --mqa-yellow: #eab308;
9
+ --mqa-red: #dc2626;
10
+ --mqa-gray: #9ca3af;
11
+
12
+ /* Surface */
13
+ --mqa-bg: #ffffff;
14
+ --mqa-surface: #f9fafb;
15
+ --mqa-border: #e5e7eb;
16
+ --mqa-text: #111827;
17
+ --mqa-text-muted: #6b7280;
18
+ --mqa-primary: #3b82f6;
19
+ --mqa-shadow: 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.12);
20
+ --mqa-shadow-xl: 0 24px 56px rgba(0,0,0,0.18), 0 8px 20px rgba(0,0,0,0.10);
21
+
22
+ /* Font */
23
+ --mqa-font: system-ui, -apple-system, sans-serif;
24
+ --mqa-radius: 8px;
25
+
26
+ all: initial;
27
+ font-family: var(--mqa-font);
28
+ color: var(--mqa-text);
29
+ position: fixed;
30
+ z-index: var(--mqa-z-index);
31
+ }
32
+
33
+ @media (prefers-color-scheme: dark) {
34
+ :host {
35
+ --mqa-bg: #1e293b;
36
+ --mqa-surface: #0f172a;
37
+ --mqa-border: #334155;
38
+ --mqa-text: #f8fafc;
39
+ --mqa-text-muted: #94a3b8;
40
+ --mqa-shadow-xl: 0 24px 56px rgba(0,0,0,0.55), 0 8px 20px rgba(0,0,0,0.40);
41
+ }
42
+ }
43
+
44
+ /* \u2500\u2500 Semaphore modifier classes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
45
+
46
+ .qa--green { background: var(--mqa-green); }
47
+ .qa--yellow { background: var(--mqa-yellow); }
48
+ .qa--red { background: var(--mqa-red); }
49
+ .qa--gray { background: var(--mqa-gray); }
50
+
51
+ /* Priority modifiers (color only \u2014 components set sizing). */
52
+ .qa-prio--p0 { color: var(--mqa-red); }
53
+ .qa-prio--p1 { color: var(--mqa-yellow); }
54
+ .qa-prio--p2 { color: var(--mqa-green); }
55
+ .qa-prio--p3 { color: var(--mqa-gray); }
56
+
57
+ /* \u2500\u2500 Pastille (FAB circle) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
58
+
59
+ .qa-pastille {
60
+ position: fixed;
61
+ right: var(--mqa-right, 1.5rem);
62
+ bottom: var(--mqa-bottom, 1.5rem);
63
+ z-index: var(--mqa-z-index);
64
+ }
65
+
66
+ .qa-pastille__dot {
67
+ width: 48px;
68
+ height: 48px;
69
+ border-radius: 9999px;
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ cursor: pointer;
74
+ box-shadow: var(--mqa-shadow);
75
+ color: rgba(0, 0, 0, 0.5);
76
+ animation: qa-heartbeat 2.4s ease-in-out infinite;
77
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
78
+ border: none;
79
+ }
80
+
81
+ .qa-pastille__dot:hover {
82
+ transform: scale(1.12);
83
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
84
+ }
85
+
86
+ .qa-pastille__ecg {
87
+ width: 30px;
88
+ height: 15px;
89
+ }
90
+
91
+ /* Secondary size: half-scale pastille for the integrated second-FAB use. */
92
+ :host([data-mqa-size="sm"]) .qa-pastille__dot { width: 24px; height: 24px; }
93
+ :host([data-mqa-size="sm"]) .qa-pastille__ecg { width: 15px; height: 8px; }
94
+
95
+ .qa-pastille__panel {
96
+ position: absolute;
97
+ bottom: calc(100% + 0.5rem);
98
+ right: 0;
99
+ z-index: var(--mqa-z-panel);
100
+ }
101
+
102
+ /* Color overrides: on colored backgrounds the ECG trace needs a dark stroke. */
103
+ .qa-pastille__dot.qa--green,
104
+ .qa-pastille__dot.qa--yellow,
105
+ .qa-pastille__dot.qa--red {
106
+ color: rgba(0, 0, 0, 0.6);
107
+ }
108
+
109
+ .qa-pastille__dot.qa--gray {
110
+ background: rgba(156, 163, 175, 0.35);
111
+ color: rgba(0, 0, 0, 0.45);
112
+ }
113
+
114
+ @keyframes qa-heartbeat {
115
+ 0%, 100% { transform: scale(1); }
116
+ 8% { transform: scale(1.1); }
117
+ 16% { transform: scale(1); }
118
+ 24% { transform: scale(1.06); }
119
+ }
120
+
121
+ .qa-fade-enter-active,
122
+ .qa-fade-leave-active {
123
+ transition: opacity 0.15s ease, transform 0.15s ease;
124
+ }
125
+ .qa-fade-enter-from,
126
+ .qa-fade-leave-to {
127
+ opacity: 0;
128
+ transform: translateY(4px);
129
+ }
130
+
131
+ @media (prefers-reduced-motion: reduce) {
132
+ .qa-pastille__dot { animation: none; transition: none; }
133
+ }
134
+
135
+ /* \u2500\u2500 Test panel \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
136
+
137
+ .qa-panel {
138
+ background: var(--mqa-bg);
139
+ border-radius: var(--mqa-radius);
140
+ border: 1px solid var(--mqa-border);
141
+ box-shadow: var(--mqa-shadow-xl);
142
+ width: 340px;
143
+ max-height: 60vh;
144
+ overflow: hidden auto;
145
+ font-size: 0.8125rem;
146
+ color: var(--mqa-text);
147
+ }
148
+
149
+ .qa-panel__empty {
150
+ padding: 0.75rem;
151
+ opacity: 0.7;
152
+ }
153
+
154
+ .qa-panel__list,
155
+ .qa-panel__groups {
156
+ margin: 0;
157
+ padding: 0.25rem 0;
158
+ list-style: none;
159
+ }
160
+
161
+ .qa-panel__foot {
162
+ border-top: 1px solid var(--mqa-border);
163
+ display: flex;
164
+ align-items: center;
165
+ justify-content: space-between;
166
+ gap: 0.5rem;
167
+ padding: 0.5rem 0.75rem;
168
+ position: sticky;
169
+ bottom: 0;
170
+ background: var(--mqa-bg);
171
+ }
172
+
173
+ .qa-panel__count {
174
+ flex: 1;
175
+ min-width: 0;
176
+ overflow: hidden;
177
+ white-space: nowrap;
178
+ text-overflow: ellipsis;
179
+ font-size: 0.6875rem;
180
+ opacity: 0.65;
181
+ }
182
+
183
+ .qa-panel__link {
184
+ flex: none;
185
+ font-weight: 600;
186
+ cursor: pointer;
187
+ white-space: nowrap;
188
+ color: var(--mqa-primary);
189
+ background: none;
190
+ border: none;
191
+ font: inherit;
192
+ }
193
+
194
+ .qa-panel__link:hover { text-decoration: underline; }
195
+
196
+ /* \u2500\u2500 Suite groups \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
197
+
198
+ .qa-suite + .qa-suite { border-top: 1px solid var(--mqa-border); }
199
+
200
+ .qa-suite__head {
201
+ width: 100%;
202
+ display: flex;
203
+ align-items: center;
204
+ gap: 0.5rem;
205
+ padding: 0.5rem 0.75rem;
206
+ cursor: pointer;
207
+ text-align: left;
208
+ background: none;
209
+ border: none;
210
+ font: inherit;
211
+ color: inherit;
212
+ }
213
+
214
+ .qa-suite__head:hover { background: var(--mqa-surface); }
215
+
216
+ .qa-suite__chev {
217
+ flex: none;
218
+ font-size: 0.625rem;
219
+ opacity: 0.6;
220
+ transition: transform 0.12s ease;
221
+ }
222
+
223
+ .qa-suite__chev.is-open { transform: rotate(90deg); }
224
+
225
+ .qa-suite__key {
226
+ flex: none;
227
+ width: 1.25rem;
228
+ height: 1.25rem;
229
+ display: inline-flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+ font-size: 0.6875rem;
233
+ font-weight: 700;
234
+ background: var(--mqa-surface);
235
+ border-radius: 4px;
236
+ }
237
+
238
+ .qa-suite__label {
239
+ flex: 1;
240
+ min-width: 0;
241
+ font-weight: 600;
242
+ overflow: hidden;
243
+ text-overflow: ellipsis;
244
+ white-space: nowrap;
245
+ }
246
+
247
+ .qa-suite__count {
248
+ flex: none;
249
+ font-size: 0.6875rem;
250
+ opacity: 0.55;
251
+ }
252
+
253
+ .qa-suite__list {
254
+ background: var(--mqa-surface);
255
+ margin: 0;
256
+ padding: 0 0 0.25rem;
257
+ list-style: none;
258
+ }
259
+
260
+ /* \u2500\u2500 Scenario rows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
261
+
262
+ .qa-row {
263
+ display: flex;
264
+ align-items: center;
265
+ justify-content: space-between;
266
+ gap: 0.75rem;
267
+ padding: 0.5rem 0.75rem;
268
+ }
269
+
270
+ .qa-row + .qa-row { border-top: 1px solid var(--mqa-border); }
271
+
272
+ .qa-row__title {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 0.375rem;
276
+ min-width: 0;
277
+ }
278
+
279
+ .qa-row__name {
280
+ flex: 1;
281
+ min-width: 0;
282
+ font-weight: 600;
283
+ line-height: 1.25;
284
+ overflow: hidden;
285
+ text-overflow: ellipsis;
286
+ white-space: nowrap;
287
+ }
288
+
289
+ .qa-suite__list .qa-row { padding-left: 1.5rem; }
290
+
291
+ .qa-tag {
292
+ flex: none;
293
+ font-size: 0.625rem;
294
+ padding: 0 0.25rem;
295
+ text-transform: uppercase;
296
+ letter-spacing: 0.02em;
297
+ opacity: 0.8;
298
+ background: var(--mqa-surface);
299
+ border-radius: 9999px;
300
+ }
301
+
302
+ /* \u2500\u2500 Lane icons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
303
+
304
+ .qa-lanes {
305
+ display: inline-flex;
306
+ align-items: center;
307
+ gap: 0.3125rem;
308
+ flex: none;
309
+ padding: 0.1875rem 0.4375rem;
310
+ border-radius: 9999px;
311
+ background: rgba(17, 24, 39, 0.06);
312
+ }
313
+
314
+ .qa-lanes--sm { font-size: 0.875rem; }
315
+ .qa-lanes--md { font-size: 1rem; }
316
+
317
+ .qa-lanes__icon {
318
+ display: inline-flex;
319
+ align-items: center;
320
+ justify-content: center;
321
+ color: rgba(17, 24, 39, 0.4);
322
+ }
323
+
324
+ .qa-lanes__svg {
325
+ width: 1em;
326
+ height: 1em;
327
+ display: block;
328
+ }
329
+
330
+ .qa-lanes__icon.qa--green { color: var(--mqa-green); background: none; }
331
+ .qa-lanes__icon.qa--yellow { color: var(--mqa-yellow); background: none; }
332
+ .qa-lanes__icon.qa--gray { color: rgba(17, 24, 39, 0.4); background: none; }
333
+
334
+ /* \u2500\u2500 Sitemap modal backdrop \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
335
+
336
+ .qa-modal__backdrop {
337
+ background-color: rgba(17, 24, 39, 0.4);
338
+ backdrop-filter: blur(1px);
339
+ position: fixed;
340
+ inset: 0;
341
+ z-index: var(--mqa-z-index);
342
+ display: flex;
343
+ align-items: center;
344
+ justify-content: center;
345
+ padding: 1rem;
346
+ }
347
+
348
+ /* \u2500\u2500 Sitemap modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
349
+
350
+ .qa-modal {
351
+ background: var(--mqa-bg);
352
+ border-radius: var(--mqa-radius);
353
+ box-shadow: var(--mqa-shadow-xl);
354
+ border: 1px solid var(--mqa-border);
355
+ width: min(720px, 92vw);
356
+ max-height: 86vh;
357
+ display: flex;
358
+ flex-direction: column;
359
+ overflow: hidden;
360
+ color: var(--mqa-text);
361
+ }
362
+
363
+ .qa-modal__head {
364
+ background: var(--mqa-primary);
365
+ color: #ffffff;
366
+ display: flex;
367
+ align-items: center;
368
+ justify-content: space-between;
369
+ padding: 0.5rem 0.75rem;
370
+ }
371
+
372
+ .qa-modal__head h3 {
373
+ font-weight: 700;
374
+ font-size: 1rem;
375
+ margin: 0;
376
+ }
377
+
378
+ .qa-modal__close {
379
+ border: 1px solid rgba(255, 255, 255, 0.3);
380
+ background: transparent;
381
+ color: #ffffff;
382
+ width: 24px;
383
+ height: 24px;
384
+ padding: 0;
385
+ border-radius: var(--mqa-radius);
386
+ cursor: pointer;
387
+ display: grid;
388
+ place-items: center;
389
+ }
390
+
391
+ .qa-modal__close:hover { background: var(--mqa-red); }
392
+
393
+ .qa-modal__freshness {
394
+ background: var(--mqa-surface);
395
+ padding: 0.375rem 0.75rem;
396
+ font-size: 0.6875rem;
397
+ opacity: 0.8;
398
+ }
399
+
400
+ .qa-modal__body {
401
+ overflow: auto;
402
+ padding: 0.5rem 0;
403
+ }
404
+
405
+ /* \u2500\u2500 KPI strip \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
406
+
407
+ .qa-kpi {
408
+ display: flex;
409
+ gap: 1.5rem;
410
+ padding: 0.625rem 0.75rem;
411
+ }
412
+
413
+ .qa-kpi__item {
414
+ display: flex;
415
+ flex-direction: column;
416
+ }
417
+
418
+ .qa-kpi__value {
419
+ font-size: 1.25rem;
420
+ font-weight: 700;
421
+ line-height: 1;
422
+ }
423
+
424
+ .qa-kpi__label {
425
+ font-size: 0.6875rem;
426
+ opacity: 0.7;
427
+ }
428
+
429
+ /* \u2500\u2500 Tabs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
430
+
431
+ .qa-tabs {
432
+ border-bottom: 1px solid var(--mqa-border);
433
+ display: flex;
434
+ gap: 0.25rem;
435
+ padding: 0 0.5rem;
436
+ }
437
+
438
+ .qa-tabs__tab {
439
+ padding: 0.375rem 0.75rem;
440
+ font-weight: 600;
441
+ font-size: 0.8125rem;
442
+ border-bottom: 2px solid transparent;
443
+ cursor: pointer;
444
+ opacity: 0.6;
445
+ background: none;
446
+ border-left: none;
447
+ border-right: none;
448
+ border-top: none;
449
+ font: inherit;
450
+ color: inherit;
451
+ }
452
+
453
+ .qa-tabs__tab--active {
454
+ color: var(--mqa-primary);
455
+ border-bottom-color: var(--mqa-primary);
456
+ opacity: 1;
457
+ }
458
+
459
+ /* \u2500\u2500 Sitemap page tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
460
+
461
+ .qa-tree {
462
+ margin: 0;
463
+ padding: 0;
464
+ list-style: none;
465
+ font-size: 0.8125rem;
466
+ }
467
+
468
+ .qa-tree__row {
469
+ display: flex;
470
+ align-items: center;
471
+ gap: 0.375rem;
472
+ padding-top: 0.25rem;
473
+ padding-bottom: 0.25rem;
474
+ padding-right: 0.75rem;
475
+ }
476
+
477
+ .qa-tree__row--here { background: var(--mqa-surface); }
478
+
479
+ .qa-tree__caret {
480
+ width: 1rem;
481
+ text-align: center;
482
+ cursor: pointer;
483
+ opacity: 0.6;
484
+ font-size: 0.6875rem;
485
+ background: none;
486
+ border: none;
487
+ font: inherit;
488
+ color: inherit;
489
+ }
490
+
491
+ .qa-tree__caret--leaf { cursor: default; }
492
+
493
+ .qa-tree__title { flex: 1; }
494
+ .qa-tree__title--structural { font-style: italic; opacity: 0.75; }
495
+
496
+ .qa-tree__here {
497
+ color: var(--mqa-primary);
498
+ font-size: 0.625rem;
499
+ font-weight: 700;
500
+ text-transform: uppercase;
501
+ }
502
+
503
+ .qa-tree__count {
504
+ background: var(--mqa-surface);
505
+ border-radius: 9999px;
506
+ font-size: 0.6875rem;
507
+ padding: 0 0.375rem;
508
+ min-width: 1.25rem;
509
+ text-align: center;
510
+ }
511
+
512
+ /* \u2500\u2500 Scenarios tab \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
513
+
514
+ .qa-scenarios { padding: 0 0.75rem; }
515
+
516
+ .qa-scenarios__search {
517
+ border: 1px solid var(--mqa-border);
518
+ border-radius: var(--mqa-radius);
519
+ width: 100%;
520
+ height: 2rem;
521
+ padding: 0 0.75rem;
522
+ font-size: 0.8125rem;
523
+ margin-bottom: 0.5rem;
524
+ background: var(--mqa-bg);
525
+ color: var(--mqa-text);
526
+ font-family: inherit;
527
+ box-sizing: border-box;
528
+ }
529
+
530
+ .qa-scenarios__empty {
531
+ opacity: 0.7;
532
+ padding: 0.5rem 0;
533
+ }
534
+
535
+ .qa-scenarios__list {
536
+ margin: 0;
537
+ padding: 0;
538
+ list-style: none;
539
+ }
540
+
541
+ .qa-scenarios__item {
542
+ border-top: 1px solid var(--mqa-border);
543
+ padding: 0.5rem 0;
544
+ }
545
+
546
+ .qa-scenarios__line {
547
+ display: flex;
548
+ align-items: center;
549
+ gap: 0.375rem;
550
+ }
551
+
552
+ .qa-scenarios__title {
553
+ flex: 1;
554
+ font-weight: 600;
555
+ font-size: 0.8125rem;
556
+ }
557
+
558
+ .qa-scenarios__pages {
559
+ display: flex;
560
+ flex-wrap: wrap;
561
+ gap: 0.75rem;
562
+ font-size: 0.6875rem;
563
+ opacity: 0.7;
564
+ margin-top: 0.125rem;
565
+ padding-left: 1rem;
566
+ }
567
+
568
+ /* \u2500\u2500 Scenario dot (color indicator) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
569
+
570
+ .qa-dot {
571
+ width: 0.625rem;
572
+ height: 0.625rem;
573
+ border-radius: 9999px;
574
+ flex: none;
575
+ background: rgba(17, 24, 39, 0.6);
576
+ }
577
+
578
+ /* Override modifier background for dot \u2014 dot uses background not text color. */
579
+ .qa-dot.qa--green { background: var(--mqa-green); }
580
+ .qa-dot.qa--yellow { background: var(--mqa-yellow); }
581
+ .qa-dot.qa--red { background: var(--mqa-red); }
582
+ .qa-dot.qa--gray { background: var(--mqa-gray); }
583
+
584
+ /* \u2500\u2500 Suite key badge \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
585
+
586
+ .qa-suitekey {
587
+ flex: none;
588
+ font-size: 0.625rem;
589
+ font-weight: 700;
590
+ padding: 0 0.3125rem;
591
+ line-height: 1.4;
592
+ background: var(--mqa-surface);
593
+ border-radius: 4px;
594
+ }
595
+ `});function ge(e){return e.status==="passing"?"green":e.status==="failing"||e.status==="flaky"?"yellow":"gray"}function oe(e){return e.rejected?"yellow":e.validated?e.stale?"gray":"green":"gray"}function Be(e){return e.some(t=>t==="yellow")?"yellow":e.length>0&&e.every(t=>t==="green")?"green":"gray"}function Fe(e){if(!e)return"";let t=new Date(e);return Number.isNaN(t.getTime())?"":new Intl.DateTimeFormat("fr-CA",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(t)}function Ie(e){return e?e.length>19?`${e.slice(0,19)}\u2026`:e:""}var be,fr,mr,br,gr,$e=j(()=>{"use strict";be={green:"qa--green",yellow:"qa--yellow",red:"qa--red",gray:"qa--gray"},fr={green:"color.green",yellow:"color.yellow",red:"color.red",gray:"color.gray"},mr={P0:"qa-prio--p0",P1:"qa-prio--p1",P2:"qa-prio--p2",P3:"qa-prio--p3"},br={covered:"case.covered",manual:"case.manual",blocked:"case.blocked","open-question":"case.openQuestion"},gr={verified:"grounding.verified","confirm-live":"grounding.confirmLive","product-question":"grounding.productQuestion"}});function hr({color:e,state:t,strings:r,onOpenModal:a,onHover:n}){let i=r["pastille.label"],s=r[fr[e]];t==="no-tests"?s=r["panel.noTests"]:t==="unknown-page"&&(s=r["pastille.unknownPage"]);let l=`${i} \u2014 ${s}`;return y("div",{class:"qa-pastille"},y("button",{type:"button","data-testid":"qa-pastille",class:`qa-pastille__dot ${be[e]}`,"aria-label":l,title:l,onClick:a,onMouseEnter:n,onFocus:n},y("svg",{class:"qa-pastille__ecg",viewBox:"0 0 24 12","aria-hidden":"true"},y("polyline",{points:"1,6 7,6 9,2 12,10 15,4 17,6 23,6",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linejoin":"round","stroke-linecap":"round"}))))}var vr=j(()=>{"use strict";Z();$e()});function he({dev:e,bot:t,human:r,strings:a}){return y("span",{class:"qa-lanes","data-testid":"qa-lane-icons"},y("span",{class:`qa-lanes__icon qa-lane ${at[e]}`,title:a["lane.code"],"aria-label":a["lane.code"],"data-testid":"qa-lane-dev","data-state":e},y("svg",{class:"qa-lanes__svg",viewBox:"0 0 24 24","aria-hidden":"true"},y("path",{d:"M8 7l-5 5 5 5M16 7l5 5-5 5",fill:"none",stroke:"currentColor","stroke-width":"2.2","stroke-linecap":"round","stroke-linejoin":"round"}))),y("span",{class:`qa-lanes__icon qa-lane ${at[t]}`,title:a["lane.bot"],"aria-label":a["lane.bot"],"data-testid":"qa-lane-bot","data-state":t},y("svg",{class:"qa-lanes__svg",viewBox:"0 0 24 24","aria-hidden":"true",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},y("rect",{x:"4.5",y:"8.5",width:"15",height:"10.5",rx:"2.5"}),y("path",{d:"M12 4.5v4"}),y("circle",{cx:"12",cy:"3.4",r:"1.3",fill:"currentColor",stroke:"none"}),y("path",{d:"M2.5 12.5v3M21.5 12.5v3"}),y("circle",{cx:"9",cy:"13.5",r:"1.2",fill:"currentColor",stroke:"none"}),y("circle",{cx:"15",cy:"13.5",r:"1.2",fill:"currentColor",stroke:"none"}))),y("span",{class:`qa-lanes__icon qa-lane ${at[r]}`,title:a["lane.human"],"aria-label":a["lane.human"],"data-testid":"qa-lane-client","data-state":r},y("svg",{class:"qa-lanes__svg",viewBox:"0 0 24 24","aria-hidden":"true",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},y("circle",{cx:"12",cy:"8",r:"3.6"}),y("path",{d:"M5 20c0-3.6 3.1-6 7-6s7 2.4 7 6"}))))}var at,nt=j(()=>{"use strict";Z();at={green:"qa--green",yellow:"qa--yellow",gray:"qa--gray"}});function fa(e){return{dev:oe(e.dev),bot:ge(e.automated),human:oe(e.client)}}function ma(e){var a,n,i;let t=new Map;for(let s of e){let l=(n=(a=s.group)==null?void 0:a.key)!=null?n:"\xB7",u=(i=t.get(l))!=null?i:[];u.push(s),t.set(l,u)}return[...t.keys()].sort((s,l)=>s==="X"?1:l==="X"?-1:s.localeCompare(l)).map(s=>{var u,c,b;let l=t.get(s);return{key:s,label:(b=(c=(u=l[0])==null?void 0:u.group)==null?void 0:c.label)!=null?b:"",scenarios:l}})}function yr(e,t){return e.replace(/\{(\w+)\}/g,(r,a)=>{var n;return String((n=t[a])!=null?n:"")})}function _r({scenario:e,strings:t}){let r=fa(e),a=e.automated.provenance;return y("li",{class:"qa-row","data-testid":"qa-scenario-row"},y("span",{class:"qa-row__title"},e.priority?y("span",{class:`qa-tag ${mr[e.priority]}`,"data-testid":"qa-priority"},e.priority):null,y("span",{class:"qa-row__name"},e.title),e.source==="testgen"?y("span",{class:"qa-tag",title:t["source.testgenHint"]},t["source.testgen"]):null,e.caseStatus?y("span",{class:"qa-tag"},t[br[e.caseStatus]]):null,e.grounding?y("span",{class:"qa-tag"},t[gr[e.grounding]]):null,a?y("span",{class:"qa-tag","data-testid":"qa-provenance"},a):null),y(he,{dev:r.dev,bot:r.bot,human:r.human,strings:t}))}function xr({page:e,state:t,meta:r,strings:a}){var c;let[n,i]=q(new Set),s=b=>{i(d=>{let h=new Set(d);return h.has(b)?h.delete(b):h.add(b),h})},l=yr(a["panel.freshness"],{date:Fe(r.generated_at),version:Ie(r.app_version),env:r.environment}),u;if(t==="no-tests")u=y("p",{class:"qa-panel__empty"},a["panel.noTests"]);else if(t==="unknown-page")u=y("p",{class:"qa-panel__empty"},a["panel.unknownPage"]);else{let b=(c=e==null?void 0:e.scenarios)!=null?c:[],d=b.some(h=>h.group);if(b.length===0)u=y("p",{class:"qa-panel__empty"},a["panel.noScenarios"]);else if(!d)u=y("ul",{class:"qa-panel__list"},b.map(h=>y(_r,{key:h.id,scenario:h,strings:a})));else{let h=ma(b);u=y("ul",{class:"qa-panel__groups","data-testid":"qa-suite-groups"},h.map(g=>{let S=n.has(g.key),k={dev:Be(g.scenarios.map(v=>oe(v.dev))),bot:Be(g.scenarios.map(v=>ge(v.automated))),human:Be(g.scenarios.map(v=>oe(v.client)))};return y("li",{key:g.key,class:"qa-suite","data-testid":"qa-panel-group"},y("button",{type:"button",class:"qa-suite__head","aria-expanded":S,"data-testid":"qa-suite-group",onClick:()=>s(g.key)},y("span",{class:`qa-suite__chev ${S?"is-open":""}`,"aria-hidden":"true"},"\u25B8"),y("span",{class:"qa-suite__key"},g.key),y("span",{class:"qa-suite__label"},g.label),y("span",{class:"qa-suite__count"},yr(a["suite.cases"],{count:g.scenarios.length})),y(he,{dev:k.dev,bot:k.bot,human:k.human,strings:a})),S?y("ul",{class:"qa-suite__list"},g.scenarios.map(v=>y(_r,{key:v.id,scenario:v,strings:a}))):null)}))}}return y("section",{class:"qa-panel","data-testid":"qa-panel"},u,y("footer",{class:"qa-panel__foot"},y("span",{class:"qa-panel__count",title:l,"data-testid":"qa-panel-freshness"},l)))}var wr=j(()=>{"use strict";Z();V();nt();$e()});function ba(e){var n;let t=new Map;for(let i of e){let s=(n=t.get(i.parent_id))!=null?n:[];s.push(i),t.set(i.parent_id,s)}for(let i of t.values())i.sort((s,l)=>s.order-l.order);let r=[],a=(i,s)=>{var l,u;for(let c of(l=t.get(i))!=null?l:[]){let b=(u=t.get(c.id))!=null?u:[];r.push({node:c,depth:s,hasChildren:b.length>0}),b.length>0&&a(c.id,s+1)}};return a(null,0),r}function ga(e){var a,n,i;let t=new Map;for(let s of e.pages)for(let l of s.scenarios){let u=(a=l.external_key)!=null?a:l.id,c=(n=t.get(u))!=null?n:{scenario:l,primaries:new Set,traversed:new Set};for(let b of(i=l.pages)!=null?i:[])(b.role==="primary"?c.primaries:c.traversed).add(b.pattern);t.set(u,c)}let r=s=>s?Number(s.slice(1)):9;return[...t.values()].sort((s,l)=>{var b,d,h,g;let u=(d=(b=s.scenario.group)==null?void 0:b.key)!=null?d:"~",c=(g=(h=l.scenario.group)==null?void 0:h.key)!=null?g:"~";return u!==c?u.localeCompare(c):r(s.scenario.priority)-r(l.scenario.priority)||s.scenario.title.localeCompare(l.scenario.title)})}function kr(e,t){return e.replace(/\{(\w+)\}/g,(r,a)=>{var n;return String((n=t[a])!=null?n:"")})}function Sr(e){return`${Math.round(e)}%`}function Cr({artifact:e,currentPattern:t,strings:r,onClose:a}){let[n,i]=q("pages"),[s,l]=q("");$(()=>{let v=f=>{f.key==="Escape"&&a()};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[a]);let u=t?rt(t):null,c=X(()=>ba(e.sitemap),[e]),b=X(()=>ga(e),[e]),d=X(()=>{let v=new Map;for(let f of e.sitemap)v.set(f.path_pattern,f.title);return v},[e]),h=v=>{var f;return(f=d.get(v))!=null?f:v},g=s.trim().toLowerCase(),S=g?b.filter(v=>{var f,m;return v.scenario.title.toLowerCase().includes(g)||((m=(f=v.scenario.group)==null?void 0:f.label)!=null?m:"").toLowerCase().includes(g)}):b,k=kr(r["panel.freshness"],{date:Fe(e.generated_at),version:Ie(e.app_version),env:e.environment});return y("div",{class:"qa-modal__backdrop","data-testid":"qa-sitemap-modal",onClick:v=>{v.target===v.currentTarget&&a()}},y("div",{class:"qa-modal",role:"dialog","aria-modal":"true"},y("header",{class:"qa-modal__head"},y("h3",null,r["modal.title"]),y("button",{type:"button",class:"qa-modal__close",title:r["modal.close"],"aria-label":r["modal.close"],"data-testid":"qa-modal-close",onClick:a},"\xD7")),y("div",{class:"qa-modal__freshness"},k),y("div",{class:"qa-kpi","data-testid":"qa-kpi"},y("div",{class:"qa-kpi__item"},y("span",{class:"qa-kpi__value"},Sr(e.metric.pages_with_scenarios_pct)),y("span",{class:"qa-kpi__label"},r["modal.kpiPagesCovered"])),y("div",{class:"qa-kpi__item"},y("span",{class:"qa-kpi__value"},Sr(e.metric.scenarios_passing_pct)),y("span",{class:"qa-kpi__label"},r["modal.kpiScenariosPassing"]))),y("nav",{class:"qa-tabs"},y("button",{type:"button",class:`qa-tabs__tab ${n==="pages"?"qa-tabs__tab--active":""}`,"data-testid":"qa-tab-pages",onClick:()=>i("pages")},r["modal.tabPages"]),y("button",{type:"button",class:`qa-tabs__tab ${n==="scenarios"?"qa-tabs__tab--active":""}`,"data-testid":"qa-tab-scenarios",onClick:()=>i("scenarios")},r["modal.tabScenarios"])),y("div",{class:"qa-modal__body"},n==="pages"?y("ul",{class:"qa-tree"},c.map(v=>{let f=u!==null&&v.node.path_pattern===u;return y("li",{key:v.node.id,class:`qa-tree__row ${f?"qa-tree__row--here":""}`,"data-testid":f?"qa-tree-current":"qa-sitemap-node",style:{paddingLeft:`${.5+v.depth*1.1}rem`}},y("span",{class:`qa-dot ${be[v.node.color]}`,"aria-hidden":"true"}),y("span",{class:`qa-tree__title ${v.node.structural?"qa-tree__title--structural":""}`},v.node.title||v.node.path_pattern),f?y("span",{class:"qa-tree__here"},` ${v.node.path_pattern} `):null,f?y("span",{class:"qa-tree__here"},r["modal.youAreHere"]):null,y("span",{class:"qa-tree__count"},String(v.node.counts.scenarios)))})):y("div",{class:"qa-scenarios"},y("input",{type:"search",class:"qa-scenarios__search",placeholder:r["modal.search"],"data-testid":"qa-scenarios-search",value:s,onInput:v=>l(v.target.value)}),S.length===0?y("p",{class:"qa-scenarios__empty"},r["modal.noMatch"]):y("ul",{class:"qa-scenarios__list"},S.map(v=>{var x,E;let f=v.scenario,m={dev:oe(f.dev),bot:ge(f.automated),human:oe(f.client)},p=[...v.traversed].map(h);return y("li",{key:(x=f.external_key)!=null?x:f.id,class:"qa-scenarios__item","data-testid":"qa-scenario-row"},y("div",{class:"qa-scenarios__line"},y("span",{class:`qa-dot ${be[f.color]}`,"aria-hidden":"true"}),(E=f.group)!=null&&E.key?y("span",{class:"qa-suitekey"},f.group.key):null,y("span",{class:"qa-scenarios__title"},f.title),f.source==="testgen"?y("span",{class:"qa-tag"},r["source.testgen"]):null,y(he,{dev:m.dev,bot:m.bot,human:m.human,strings:r})),y("div",{class:"qa-scenarios__pages"},v.primaries.size?y("span",{class:"qa-scenarios__primary"},kr(r["modal.appliesTo"],{count:v.primaries.size})):null,p.length?y("span",{class:"qa-scenarios__traversed"},`${r["modal.traversed"]}: ${p.join(", ")}`):null))}))))))}var Rr=j(()=>{"use strict";Z();V();nt();ot();$e()});function ha(){if(De++,Ke)return;Ke=!0,ve=history.pushState,ye=history.replaceState;let e=()=>{window.dispatchEvent(new CustomEvent(it))};history.pushState=function(...r){let a=ve.apply(this,r);return e(),a},history.replaceState=function(...r){let a=ye.apply(this,r);return e(),a}}function va(){De>0&&De--,!(De>0||!Ke)&&(Ke=!1,ve&&(history.pushState=ve),ye&&(history.replaceState=ye),ve=null,ye=null)}function qr(e){return typeof e=="object"&&e!==null&&e.format===ya}function Tr(){Er||(Er=!0,typeof console!="undefined"&&console.warn("[mqa] QA Meter artifact has an unsupported `format` \u2014 refusing to mount."))}function xa(e){let t=new Set;for(let r of e.pages)r.page&&t.add(r.page.path_pattern);for(let r of e.sitemap)t.add(r.path_pattern);return[...t]}function ka(e,t){if(!e||!t)return wa;let r=e.pages.find(n=>n.page&&n.page.path_pattern===t);return r&&r.page?{state:"known",color:r.color,pattern:t,page:r}:e.sitemap.some(n=>n.path_pattern===t)?{state:"no-tests",color:"gray",pattern:t,page:null}:{state:"unknown-page",color:"gray",pattern:t,page:null}}function Pr(e){var p,x,E,P;let{source:t}=e,r=sr((p=e.locale)!=null?p:"fr"),a=typeof t=="object"?t:null;if(a&&!qr(a))return Tr(),_a;let n=a,i=!1,s=null;function l(){if(n||i)return;i=!0,s=(typeof t=="function"?t():typeof t=="string"?fetch(t).then(A=>A.json()):Promise.resolve(t)).then(A=>{qr(A)?(n=A,h()):Tr()}).catch(()=>{})}let u=document.createElement("div");u.setAttribute("data-mqa-host",""),u.setAttribute("data-mqa-size",(x=e.size)!=null?x:"md"),((E=e.position)==null?void 0:E.right)!==void 0&&u.style.setProperty("--mqa-right",`${e.position.right}px`),((P=e.position)==null?void 0:P.bottom)!==void 0&&u.style.setProperty("--mqa-bottom",`${e.position.bottom}px`),document.body.appendChild(u);let c=u.attachShadow({mode:"open"}),b=document.createElement("style");b.textContent=pr,c.appendChild(b);let d=document.createElement("div");c.appendChild(d);let h=()=>{};function g(){return e.getCurrentPage?e.getCurrentPage():n?dr(window.location.pathname,xa(n)):null}function S(){let[w,A]=q(0),T=ne(()=>A(Q=>Q+1),[]);h=T;let M=ka(n,g()),K=n?{generated_at:n.generated_at,app_version:n.app_version,environment:n.environment}:{generated_at:"",app_version:"",environment:""},O=ne(()=>{l()},[]),W=ne(()=>{l(),k=!0,T()},[]),z=ne(()=>{k=!1,T()},[]);return $(()=>{let Q=()=>T();return window.addEventListener("popstate",Q),window.addEventListener(it,Q),()=>{window.removeEventListener("popstate",Q),window.removeEventListener(it,Q)}},[]),y("div",{class:"qa-pastille-wrap",onMouseLeave:()=>{v=!1,T()}},v?y(xr,{page:M.page,state:M.state,meta:K,strings:r}):null,y(hr,{color:M.color,state:M.state,strings:r,onHover:()=>{v=!0,O(),T()},onOpenModal:W}),k&&n?y(Cr,{artifact:n,currentPattern:M.pattern,strings:r,onClose:z}):null)}let k=!1,v=!1;function f(){de(y(S,{}),d)}f(),ha();let m=!1;return{open(){m||(l(),k=!0,h())},close(){m||(k=!1,h())},dispose(){m||(m=!0,de(null,d),u.remove(),va())}}}var it,Ke,De,ve,ye,ya,Er,_a,wa,Mr=j(()=>{"use strict";Z();V();lr();ot();ur();vr();wr();Rr();it="mqa:locationchange",Ke=!1,De=0,ve=null,ye=null;ya=1;Er=!1;_a={open(){},close(){},dispose(){}};wa={state:"unknown-page",color:"gray",pattern:null,page:null}});var Ar={};st(Ar,{createQaMeter:()=>Sa});function Sa(e){return Pr(e)}var zr=j(()=>{"use strict";Mr()});var Pa={};st(Pa,{createFeedback:()=>Ta});var Qr=["description","feedback_type","severity","env","page_url","user_agent","capture_method"];function Or(e){let t;try{t=new URL(e)}catch(r){throw new Error(`[mhosaic-feedback] \`endpoint\` is not a valid URL: ${e}`)}if(t.protocol!=="https:"&&!(t.protocol==="http:"&&(t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="[::1]")))throw new Error(`[mhosaic-feedback] \`endpoint\` must use https:// (got ${t.protocol}//${t.hostname}). http:// is only allowed for localhost in dev.`)}function lt(e){var k,v;let t=((k=e.endpoint)!=null?k:"").replace(/\/+$/,"");if(!t)throw new Error('[mhosaic-feedback] `endpoint` is required (e.g. "https://feedback.example.com").');Or(t);let r=(v=e.fetch)!=null?v:globalThis.fetch;async function a(f){var w,A,T;let m=f;if(e.beforeSend&&(m=await e.beforeSend(f)),m===!1)throw new Error("Submission cancelled by beforeSend");let p=new FormData;for(let M of Qr)p.append(M,String(m[M]));p.append("technical_context",JSON.stringify(m.technical_context)),m.screenshot&&p.append("screenshot",m.screenshot,"screenshot.png"),m.synthetic&&p.append("synthetic","true"),(w=m.user)!=null&&w.id&&p.append("user",JSON.stringify(m.user)),m.widget_version&&p.append("widget_version",m.widget_version);let x={Authorization:`Bearer ${e.apiKey}`};m.synthetic&&(x["X-Mhosaic-Capture-Source"]="error-tracking");let E=(A=e.getSignedIdentity)==null?void 0:A.call(e);E&&E.userHash&&E.exp&&((T=m.user)!=null&&T.id)&&(x["X-Mhosaic-User"]=String(m.user.id),x["X-Mhosaic-User-Hmac"]=E.userHash,x["X-Mhosaic-User-Exp"]=String(E.exp),E.email&&(x["X-Mhosaic-User-Email"]=E.email));let P=await r(`${t}/api/feedback/v1/reports/`,{method:"POST",headers:x,body:p});if(!P.ok){let M=await P.text().catch(()=>"");throw new Error(`Feedback submit failed: ${P.status} ${M}`)}return P.json()}function n(f){var x;let m={Authorization:`Bearer ${e.apiKey}`,"X-Mhosaic-User":f},p=(x=e.getSignedIdentity)==null?void 0:x.call(e);return p&&p.userHash&&p.exp&&(m["X-Mhosaic-User-Hmac"]=p.userHash,m["X-Mhosaic-User-Exp"]=String(p.exp),p.email&&(m["X-Mhosaic-User-Email"]=p.email)),m}async function i(f){let m=await r(`${t}/api/feedback/v1/reports/widget/mine/`,{method:"GET",headers:n(f)});if(m.status===404)return[];if(!m.ok){let p=await m.text().catch(()=>"");throw new Error(`listMine failed: ${m.status} ${p}`)}return m.json()}async function s(f){let m=await r(`${t}/api/feedback/v1/reports/widget/changelog/`,{method:"GET",headers:n(f)});if(m.status===404)return[];if(!m.ok){let p=await m.text().catch(()=>"");throw new Error(`listChangelog failed: ${m.status} ${p}`)}return m.json()}async function l(f,m){let p=await r(`${t}/api/feedback/v1/reports/widget/${f}/`,{method:"GET",headers:n(m)});if(!p.ok){let x=await p.text().catch(()=>"");throw new Error(`getReport failed: ${p.status} ${x}`)}return p.json()}async function u(f,m,p,x){let E=await r(`${t}/api/feedback/v1/reports/widget/${f}/comments/`,{method:"POST",headers:{...n(m),"Content-Type":"application/json"},body:JSON.stringify({body:p,...x!==void 0&&{client_nonce:x}})});if(!E.ok){let P=await E.text().catch(()=>"");throw new Error(`addComment failed: ${E.status} ${P}`)}return E.json()}async function c(f,m){let p=await r(`${t}/api/feedback/v1/reports/widget/${f}/`,{method:"PATCH",headers:{...n(m),"Content-Type":"application/json"},body:JSON.stringify({status:"closed"})});if(!p.ok){let x=await p.text().catch(()=>"");throw new Error(`closeAsResolved failed: ${p.status} ${x}`)}return p.json()}async function b(f,m){let p=await r(`${t}/api/feedback/v1/reports/widget/${f}/`,{method:"PATCH",headers:{...n(m),"Content-Type":"application/json"},body:JSON.stringify({status:"in_progress"})});if(!p.ok){let x=await p.text().catch(()=>"");throw new Error(`reopenUnresolved failed: ${p.status} ${x}`)}return p.json()}function d(f){var x,E,P;if(!f)return"";let m=new URLSearchParams;(x=f.status)==null||x.forEach(w=>m.append("status",w)),(E=f.type)==null||E.forEach(w=>m.append("type",w)),(P=f.severity)==null||P.forEach(w=>m.append("severity",w)),f.q&&m.set("q",f.q),f.mine&&m.set("mine","1"),f.ordering&&m.set("ordering",f.ordering),f.page&&f.page>1&&m.set("page",String(f.page));let p=m.toString();return p?`?${p}`:""}async function h(f,m){let p=await r(`${t}/api/feedback/v1/reports/widget/board/${d(m)}`,{method:"GET",headers:n(f)});if(p.status===404)return{count:0,next:null,previous:null,results:[]};if(!p.ok){let x=await p.text().catch(()=>"");throw new Error(`listBoard failed: ${p.status} ${x}`)}return p.json()}async function g(f,m){let p=await r(`${t}/api/feedback/v1/reports/widget/board/kpis/${d(m)}`,{method:"GET",headers:n(f)});if(p.status===404)return{total:0,by_status:{},resolution_rate:0,scope:"mine"};if(!p.ok){let x=await p.text().catch(()=>"");throw new Error(`fetchBoardKpis failed: ${p.status} ${x}`)}return p.json()}async function S(f,m){let p=await r(`${t}/api/feedback/v1/widget/visibility/`,{method:"POST",headers:{...n(f),"Content-Type":"application/json"},body:JSON.stringify({external_id:f,...m?{email:m}:{}})});if(!p.ok)throw new Error(`checkVisibility failed: ${p.status}`);return!!(await p.json()).show}return{submitReport:a,checkVisibility:S,listMine:i,listChangelog:s,getReport:l,addComment:u,closeAsResolved:c,reopenUnresolved:b,listBoard:h,fetchBoardKpis:g}}var Wr=/token|key|password|secret|auth|session|sig|credential|bearer|cookie/i,jr=[/^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/,/^(?:sk|pk)_proj_[A-Za-z0-9_-]{16,}$/,/^gh[pousr]_[A-Za-z0-9]{30,}$/,/^(?:sk|pk|rk|whsec)_(?:live|test)_[A-Za-z0-9]{16,}$/,/^AKIA[0-9A-Z]{12,}$/,/^xox[abprso]-[A-Za-z0-9-]{12,}$/,/^[a-f0-9]{40,}$/i,/^[A-Za-z0-9_-]{40,}$/];function Ur(e){return jr.some(t=>t.test(e))}function ae(e){try{let t=/^https?:\/\//i.test(e),r=e.startsWith("/");if(!t&&!r)return e;let a=typeof window!="undefined"?window.location.origin:"http://localhost",n=new URL(e,a),i=new URLSearchParams;return n.searchParams.forEach((s,l)=>{Wr.test(l)||Ur(s)?i.set(l,"[redacted]"):i.set(l,s)}),n.search=i.toString(),n.hash=n.hash?"#[redacted]":"",n.toString()}catch(t){return e}}var Vr=[/\b(?:sk|pk)_proj_[A-Za-z0-9_*-]+/g,/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,/\bBearer\s+[A-Za-z0-9._~+/=-]{16,}\b/g,/\bAuthorization\s*[:=]\s*["']?[A-Za-z0-9._~+/=-]{16,}["']?/gi,/\bgh[pousr]_[A-Za-z0-9]{30,}\b/g,/\b(?:sk|pk|rk|whsec)_(?:live|test)_[A-Za-z0-9]{16,}\b/g,/\bAKIA[0-9A-Z]{12,}\b/g,/\bxox[abprso]-[A-Za-z0-9-]{12,}\b/g,/\bAIza[0-9A-Za-z_-]{35}\b/g,/\bsk-(?:proj-|svcacct-)?[A-Za-z0-9_-]{20,}\b/g,/\bsk-ant-(?:api03-)?[A-Za-z0-9_-]{40,}\b/g,/\bAC[a-f0-9]{32}\b/g,/\bSK[a-f0-9]{32}\b/g];function Y(e){let t=e;for(let r of Vr)t=t.replace(r,"[redacted-token]");return t}function ct(){var l;let e=navigator,t=(l=e.connection)==null?void 0:l.effectiveType,r=e.deviceMemory,a=document.referrer||void 0,n=a!==void 0?ae(a):void 0,i=ae(window.location.pathname+window.location.search),s;try{let u=new URL(i,window.location.origin);s=u.pathname+u.search}catch(u){s=window.location.pathname}return{viewport:{w:window.innerWidth,h:window.innerHeight,dpr:window.devicePixelRatio||1},screen:{w:window.screen.width,h:window.screen.height},platform:e.platform,language:e.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,timezoneOffset:new Date().getTimezoneOffset(),...t!==void 0&&{connection:t},online:e.onLine,...r!==void 0&&{deviceMemory:r},hardwareConcurrency:e.hardwareConcurrency,...n!==void 0&&{referrer:n},title:Y(document.title||"").slice(0,200),pathname:s}}function Gr(e){if(e==null)return String(e);if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);if(e instanceof Error)return`${e.name}: ${e.message}`;if(e instanceof Element)return`<${e.tagName.toLowerCase()}>`;try{return JSON.stringify(e,(t,r)=>typeof r=="bigint"?r.toString():r)}catch(t){try{return String(e)}catch(r){return"[unserializable]"}}}function dt(e){let t=["log","info","warn","error","debug"],r={};for(let a of t){let n=console[a];typeof n=="function"&&(r[a]=n,console[a]=function(...s){try{let l=s.map(Gr).join(" "),u=Y(l).slice(0,2e3),c={level:a,message:u,ts:Date.now()};if(a==="error"){let b=new Error().stack;b&&(c.stack=b.split(`
2
596
  `).slice(2,8).join(`
3
- `))}e.push(d)}catch(c){}a.apply(console,s)})}return()=>{for(let[n,a]of Object.entries(r))console[n]=a}}function Ue(e,t){if(typeof window=="undefined"||typeof window.fetch!="function")return()=>{};let r=window.fetch.bind(window);return window.fetch=async function(a,i){let s=performance.now(),c=typeof a=="string"?a:a instanceof URL?a.toString():a.url,f=((i==null?void 0:i.method)||(a instanceof Request?a.method:"GET")).toUpperCase();try{let d=await r(a,i);return e.push({url:t(c),method:f,status:d.status,durationMs:Math.round(performance.now()-s),ts:Date.now()}),d}catch(d){let h=d instanceof Error?d.message:String(d);throw e.push({url:t(c),method:f,status:0,durationMs:Math.round(performance.now()-s),ts:Date.now(),error:j(h)}),d}},()=>{window.fetch=r}}function je(e,t){if(typeof window=="undefined"||typeof window.XMLHttpRequest!="function")return()=>{};let r=window.XMLHttpRequest,n=r.prototype.open,a=r.prototype.send;return r.prototype.open=function(s,c){return this.__mfb={method:s.toUpperCase(),url:typeof c=="string"?c:c.toString(),start:performance.now()},n.apply(this,arguments)},r.prototype.send=function(s){return this.addEventListener("loadend",()=>{try{let c=this.__mfb;if(!c)return;e.push({url:t(c.url),method:c.method,status:this.status,durationMs:Math.round(performance.now()-c.start),ts:Date.now()})}catch(c){}}),a.call(this,s!=null?s:null)},()=>{r.prototype.open=n,r.prototype.send=a}}function Oe(e){if(typeof window=="undefined")return()=>{};let t=n=>{let a=n.error instanceof Error?n.error.stack:void 0,i=a!==void 0?j(a):void 0;e.push({message:j(n.message||"Unknown error"),...i!==void 0&&{stack:i},ts:Date.now(),source:"window.error"})},r=n=>{let a=n.reason,i=a instanceof Error?a.message:typeof a=="string"?a:(()=>{try{return JSON.stringify(a)}catch(f){return String(a)}})(),s=a instanceof Error?a.stack:void 0,c=s!==void 0?j(s):void 0;e.push({message:j(i),...c!==void 0&&{stack:c},ts:Date.now(),source:"unhandledrejection"})};return window.addEventListener("error",t),window.addEventListener("unhandledrejection",r),()=>{window.removeEventListener("error",t),window.removeEventListener("unhandledrejection",r)}}function Ve(e=1e3){let t=[],r=[],n=null;if(typeof PerformanceObserver!="undefined")try{n=new PerformanceObserver(a=>{for(let i of a.getEntries())if(i.entryType==="longtask")for(t.push({duration:i.duration,startTime:i.startTime});t.length>20;)t.shift();else if(i.entryType==="resource"){let s=i;if(s.duration>e)for(r.push({name:Y(s.name),duration:s.duration,initiatorType:s.initiatorType});r.length>20;)r.shift()}}),n.observe({entryTypes:["longtask","resource"]})}catch(a){}return{snapshot(){let a=typeof performance!="undefined"?performance.getEntriesByType("navigation")[0]:void 0,i=a?{type:a.type,duration:a.duration}:void 0;return{...i!==void 0&&{navigation:i},longTasks:t.slice(),slowResources:r.slice()}},dispose(){n==null||n.disconnect()}}}var te=class{constructor(t){Se(this,"max",t);Se(this,"items",[])}push(t){for(this.items.push(t);this.items.length>this.max;)this.items.shift()}snapshot(){return this.items.slice()}clear(){this.items.length=0}};function qe(e={}){var b;let{maxConsole:t=50,maxNetwork:r=50,maxErrors:n=20}=e,a=(b=e.sanitizeUrl)!=null?b:Y,i=new te(t),s=new te(r),c=new te(n),f=Ne(i),d=Ue(s,a),h=je(s,a),p=Oe(c),g=Ve();return{snapshot(){return{consoleLogs:i.snapshot(),networkRequests:s.snapshot(),errors:c.snapshot(),device:He(),capturedAt:Date.now()}},clear(){i.clear(),s.clear(),c.clear()},dispose(){f(),d(),h(),p(),g.dispose()}}}var or={"fab.label":"Send feedback","form.title":"Send feedback","form.description.label":"What happened?","form.description.placeholder":"Describe the issue or idea in one or two sentences.","form.type.label":"Type","form.severity.label":"Severity","form.submit":"Send","form.cancel":"Cancel","form.close":"Close","form.submitting":"Sending\u2026","form.success":"Thanks \u2014 your feedback was sent.","form.error":"Could not send. Please try again.","form.description.required":"Please describe the issue before sending.","form.screenshot.label":"Screenshot","form.screenshot.cta_click":"Click","form.screenshot.cta_rest":"drop, or paste an image","form.screenshot.formats":"PNG, JPEG or WebP \u2014 up to 10 MB","form.screenshot.remove":"Remove screenshot","form.screenshot.annotate":"Annotate","form.screenshot.error_type":"Unsupported file type. Use PNG, JPEG or WebP.","form.screenshot.error_size":"File too large (max {max} MB).","form.context.label":"Page","type.bug":"Bug","type.feature":"Feature request","type.question":"Question","type.praise":"Praise","type.typo":"Typo","severity.blocker":"Blocker","severity.high":"High","severity.medium":"Medium","severity.low":"Low","annotator.title":"Annotate screenshot","annotator.tool.rectangle":"Rectangle","annotator.tool.arrow":"Arrow","annotator.tool.freehand":"Freehand","annotator.tool.text":"Text","annotator.tool.highlight":"Highlight","annotator.tool.blur":"Blur (hide sensitive data)","annotator.text_prompt":"Enter text:","annotator.color_picker":"Custom color","annotator.undo":"Undo","annotator.redo":"Redo","annotator.clear":"Clear all","annotator.count_suffix":"annotations","annotator.loading":"Loading\u2026","annotator.apply":"Apply","annotator.applying":"Applying\u2026","tab.send":"Send","tab.mine":"My reports","tab.changelog":"This week","tab.board":"Board","board.kpi.total":"Total","board.kpi.new":"New","board.kpi.in_progress":"In progress","board.kpi.awaiting_validation":"Awaiting validation","board.kpi.closed":"Closed","board.kpi.rejected":"Rejected","board.kpi.resolution_rate":"Resolution rate","board.sort":"Sort","board.sort.recent":"Newest first","board.sort.oldest":"Oldest first","board.sort.updated":"Recently active","board.sort.severity":"Severity","board.sort.status":"Status","board.filter.status":"Status","board.filter.type":"Type","board.filter.severity":"Severity","board.filter.search.placeholder":"Search\u2026","board.filter.mine":"Mine only","board.filter.clear":"Clear filters","board.list.empty.title":"Nothing here yet","board.list.empty.description":"When reports land, they\u2019ll show up here.","board.list.loading":"Loading\u2026","board.list.error":"Couldn\u2019t load reports.","board.retry":"Try again","board.list.you":"you","board.list.count":"{n} of {total}","board.detail.empty":"Pick a report on the left to see its full thread.","board.detail.by":"By","board.detail.confirm_resolution":"Confirm resolution","board.detail.status_history":"History","board.scope.project":"Project reports","board.scope.mine":"Your reports","board.back":"Back","changelog.empty.title":"Nothing resolved yet","changelog.empty.body":"Once a report you sent is fixed it will appear here, grouped by week.","changelog.week_of":"Week of {date}","changelog.resolved_one":"{count} resolved","changelog.resolved_many":"{count} resolved","mine.empty.title":"No reports yet","mine.empty.body":"Once you send feedback you can follow the thread here.","mine.refresh":"Refresh","mine.loading":"Loading\u2026","mine.error":"Could not load your reports.","mine.replies_one":"1 reply","mine.replies_many":"{count} replies","mine.filter.empty":"No reports match this filter.","kpi.new":"New","kpi.in_progress":"In progress","kpi.awaiting_validation":"Awaiting you","kpi.resolution_rate":"Resolution rate","detail.back":"Back","detail.thread":"Conversation","detail.no_replies":"No replies yet \u2014 we\u2019ll let you know when an operator responds.","detail.compose_placeholder":"Add a follow-up reply\u2026","detail.compose_send":"Reply","detail.compose_sending":"Sending\u2026","detail.close_cta":"Mark as resolved","detail.close_busy":"Marking\u2026","detail.reopen_cta":"Still not fixed","detail.reopen_busy":"Reopening\u2026","detail.teammate_notice":"Viewing a teammate\u2019s report \u2014 replies are private to the submitter.","detail.load_failed.title":"Report not available","detail.load_failed.body":"It may have been deleted, or you no longer have access to it.","detail.load_failed.cta":"Back","detail.send_failed":"Couldn\u2019t send your reply. Try again.","detail.close_failed":"Couldn\u2019t mark as resolved. Try again.","detail.reopen_failed":"Couldn\u2019t reopen the report. Try again.","detail.history":"Status history","detail.context.submitted_at":"Submitted","detail.context.page":"Page","detail.context.capture.manual":"Manual capture","detail.context.capture.html2canvas":"Auto capture","detail.context.capture.display_media":"Screen share","detail.context.capture.none":"No screenshot","detail.author.staff":"Operator","detail.author.mcp":"Mhosaic Team","detail.author.system":"System","detail.tech.title":"What we received","detail.tech.errors_one":"error","detail.tech.errors_many":"errors","detail.tech.device":"Device","detail.tech.device.viewport":"Viewport","detail.tech.device.platform":"Platform","detail.tech.device.language":"Language","detail.tech.device.timezone":"Timezone","detail.tech.device.connection":"Connection","detail.tech.errors":"Runtime errors","detail.tech.console":"Console (last 20)","detail.tech.network":"Network (last 15)","status.new":"New","status.in_progress":"In progress","status.awaiting_validation":"Awaiting your validation","status.closed":"Closed","status.rejected":"Rejected","status.duplicate":"Duplicate","status.wontfix":"Won\u2019t fix"},nr={"fab.label":"Envoyer un commentaire","form.title":"Envoyer un commentaire","form.description.label":"Qu\u2019est-il arriv\xE9 ?","form.description.placeholder":"D\xE9crivez le probl\xE8me ou l\u2019id\xE9e en une ou deux phrases.","form.type.label":"Type","form.severity.label":"S\xE9v\xE9rit\xE9","form.submit":"Envoyer","form.cancel":"Annuler","form.close":"Fermer","form.submitting":"Envoi\u2026","form.success":"Merci \u2014 votre commentaire a \xE9t\xE9 envoy\xE9.","form.error":"\xC9chec d\u2019envoi. Veuillez r\xE9essayer.","form.description.required":"D\xE9crivez le probl\xE8me avant d\u2019envoyer.","form.screenshot.label":"Capture d\u2019\xE9cran","form.screenshot.cta_click":"Cliquez","form.screenshot.cta_rest":"d\xE9posez ou collez une image","form.screenshot.formats":"PNG, JPEG ou WebP \u2014 jusqu\u2019\xE0 10 Mo","form.screenshot.remove":"Retirer la capture","form.screenshot.annotate":"Annoter","form.screenshot.error_type":"Format non support\xE9. Utilisez PNG, JPEG ou WebP.","form.screenshot.error_size":"Fichier trop volumineux (max {max} Mo).","form.context.label":"Page","type.bug":"Bogue","type.feature":"Suggestion","type.question":"Question","type.praise":"Compliment","type.typo":"Coquille","severity.blocker":"Bloquant","severity.high":"\xC9lev\xE9e","severity.medium":"Moyenne","severity.low":"Faible","annotator.title":"Annoter la capture","annotator.tool.rectangle":"Rectangle","annotator.tool.arrow":"Fl\xE8che","annotator.tool.freehand":"Dessin libre","annotator.tool.text":"Texte","annotator.tool.highlight":"Surligner","annotator.tool.blur":"Flouter (donn\xE9es sensibles)","annotator.text_prompt":"Entrez le texte :","annotator.color_picker":"Couleur personnalis\xE9e","annotator.undo":"Annuler","annotator.redo":"Refaire","annotator.clear":"Tout effacer","annotator.count_suffix":"annotations","annotator.loading":"Chargement\u2026","annotator.apply":"Appliquer","annotator.applying":"Application\u2026","tab.send":"Envoyer","tab.mine":"Mes rapports","tab.changelog":"Cette semaine","tab.board":"Tableau","board.kpi.total":"Total","board.kpi.new":"Nouveau","board.kpi.in_progress":"En cours","board.kpi.awaiting_validation":"\xC0 valider","board.kpi.closed":"Ferm\xE9","board.kpi.rejected":"Refus\xE9","board.kpi.resolution_rate":"Taux de r\xE9solution","board.sort":"Trier","board.sort.recent":"Plus r\xE9cents","board.sort.oldest":"Plus anciens","board.sort.updated":"Activit\xE9 r\xE9cente","board.sort.severity":"S\xE9v\xE9rit\xE9","board.sort.status":"Statut","board.filter.status":"Statut","board.filter.type":"Type","board.filter.severity":"S\xE9v\xE9rit\xE9","board.filter.search.placeholder":"Rechercher\u2026","board.filter.mine":"Les miens","board.filter.clear":"Effacer les filtres","board.list.empty.title":"Rien \xE0 voir ici","board.list.empty.description":"Les rapports appara\xEEtront ici d\xE8s qu\u2019ils arrivent.","board.list.loading":"Chargement\u2026","board.list.error":"Impossible de charger les rapports.","board.retry":"R\xE9essayer","board.list.you":"vous","board.list.count":"{n} sur {total}","board.detail.empty":"S\xE9lectionnez un rapport \xE0 gauche pour voir le fil complet.","board.detail.by":"Par","board.detail.confirm_resolution":"Confirmer la r\xE9solution","board.detail.status_history":"Historique","board.scope.project":"Rapports du projet","board.scope.mine":"Vos rapports","board.back":"Retour","changelog.empty.title":"Rien de r\xE9solu pour l\u2019instant","changelog.empty.body":"Quand un rapport que vous avez envoy\xE9 est corrig\xE9, il appara\xEEtra ici, regroup\xE9 par semaine.","changelog.week_of":"Semaine du {date}","changelog.resolved_one":"{count} r\xE9solu","changelog.resolved_many":"{count} r\xE9solus","mine.empty.title":"Aucun rapport","mine.empty.body":"Apr\xE8s votre premier envoi vous pourrez suivre la conversation ici.","mine.refresh":"Actualiser","mine.loading":"Chargement\u2026","mine.error":"Impossible de charger vos rapports.","mine.replies_one":"1 r\xE9ponse","mine.replies_many":"{count} r\xE9ponses","mine.filter.empty":"Aucun rapport ne correspond \xE0 ce filtre.","kpi.new":"Nouveau","kpi.in_progress":"En cours","kpi.awaiting_validation":"\xC0 valider","kpi.resolution_rate":"Taux de r\xE9solution","detail.back":"Retour","detail.thread":"Conversation","detail.no_replies":"Pas encore de r\xE9ponse \u2014 vous serez notifi\xE9 d\xE8s qu\u2019un op\xE9rateur r\xE9pondra.","detail.compose_placeholder":"Ajouter une r\xE9ponse\u2026","detail.compose_send":"R\xE9pondre","detail.compose_sending":"Envoi\u2026","detail.close_cta":"Marquer comme r\xE9solu","detail.close_busy":"Validation\u2026","detail.reopen_cta":"Toujours pas r\xE9gl\xE9","detail.reopen_busy":"R\xE9ouverture\u2026","detail.teammate_notice":"Vous consultez le rapport d\u2019un co\xE9quipier \u2014 les r\xE9ponses sont priv\xE9es au soumetteur.","detail.load_failed.title":"Rapport indisponible","detail.load_failed.body":"Il a peut-\xEAtre \xE9t\xE9 supprim\xE9, ou vous n\u2019y avez plus acc\xE8s.","detail.load_failed.cta":"Retour","detail.send_failed":"Impossible d\u2019envoyer votre r\xE9ponse. R\xE9essayez.","detail.close_failed":"Impossible de marquer comme r\xE9solu. R\xE9essayez.","detail.reopen_failed":"Impossible de rouvrir le rapport. R\xE9essayez.","detail.history":"Historique du statut","detail.context.submitted_at":"Envoy\xE9","detail.context.page":"Page","detail.context.capture.manual":"Capture manuelle","detail.context.capture.html2canvas":"Capture automatique","detail.context.capture.display_media":"Partage d\u2019\xE9cran","detail.context.capture.none":"Sans capture","detail.author.staff":"Op\xE9rateur","detail.author.mcp":"\xC9quipe Mhosaic","detail.author.system":"Syst\xE8me","detail.tech.title":"Ce que nous avons re\xE7u","detail.tech.errors_one":"erreur","detail.tech.errors_many":"erreurs","detail.tech.device":"Appareil","detail.tech.device.viewport":"Fen\xEAtre","detail.tech.device.platform":"Plateforme","detail.tech.device.language":"Langue","detail.tech.device.timezone":"Fuseau horaire","detail.tech.device.connection":"Connexion","detail.tech.errors":"Erreurs d\u2019ex\xE9cution","detail.tech.console":"Console (20 derniers)","detail.tech.network":"R\xE9seau (15 derniers)","status.new":"Nouveau","status.in_progress":"En cours","status.awaiting_validation":"En attente de validation","status.closed":"Ferm\xE9","status.rejected":"Rejet\xE9","status.duplicate":"Doublon","status.wontfix":"Non corrig\xE9"},ar={fr:nr};function ir(e){var r;if(!e)return null;let t=e.toLowerCase().split(/[-_]/)[0];return(r=ar[t])!=null?r:null}function Ge(e,t={}){var n;let r=(n=ir(t.locale))!=null?n:{};return{...or,...r,...e}}var be,F,Qe,sr,Z,Xe,et,tt,Re,ce,ae,rt,Me,Ce,Ee,lr,ue={},fe=[],cr=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,he=Array.isArray;function J(e,t){for(var r in t)e[r]=t[r];return e}function Pe(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function ze(e,t,r){var n,a,i,s={};for(i in t)i=="key"?n=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?be.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return de(e,s,n,a,null)}function de(e,t,r,n,a){var i={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a==null?++Qe:a,__i:-1,__u:0};return a==null&&F.vnode!=null&&F.vnode(i),i}function N(e){return e.children}function pe(e,t){this.props=e,this.context=t}function re(e,t){if(t==null)return e.__?re(e.__,e.__i+1):null;for(var r;t<e.__k.length;t++)if((r=e.__k[t])!=null&&r.__e!=null)return r.__e;return typeof e.type=="function"?re(e):null}function dr(e){if(e.__P&&e.__d){var t=e.__v,r=t.__e,n=[],a=[],i=J({},t);i.__v=t.__v+1,F.vnode&&F.vnode(i),Be(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[r]:null,n,r==null?re(t):r,!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,it(n,i,a),t.__e=t.__=null,i.__e!=r&&ot(i)}}function ot(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),ot(e)}function Je(e){(!e.__d&&(e.__d=!0)&&Z.push(e)&&!me.__r++||Xe!=F.debounceRendering)&&((Xe=F.debounceRendering)||et)(me)}function me(){try{for(var e,t=1;Z.length;)Z.length>t&&Z.sort(tt),e=Z.shift(),t=Z.length,dr(e)}finally{Z.length=me.__r=0}}function nt(e,t,r,n,a,i,s,c,f,d,h){var p,g,b,x,_,w,m,u=n&&n.__k||fe,l=t.length;for(f=pr(r,t,u,f,l),p=0;p<l;p++)(b=r.__k[p])!=null&&(g=b.__i!=-1&&u[b.__i]||ue,b.__i=p,w=Be(e,b,g,a,i,s,c,f,d,h),x=b.__e,b.ref&&g.ref!=b.ref&&(g.ref&&Fe(g.ref,null,b),h.push(b.ref,b.__c||x,b)),_==null&&x!=null&&(_=x),(m=!!(4&b.__u))||g.__k===b.__k?(f=at(b,f,e,m),m&&g.__e&&(g.__e=null)):typeof b.type=="function"&&w!==void 0?f=w:x&&(f=x.nextSibling),b.__u&=-7);return r.__e=_,f}function pr(e,t,r,n,a){var i,s,c,f,d,h=r.length,p=h,g=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=de(null,s,null,null,null):he(s)?s=e.__k[i]=de(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=de(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,f=i+g,s.__=e,s.__b=e.__b+1,c=null,(d=s.__i=ur(s,r,f,p))!=-1&&(p--,(c=r[d])&&(c.__u|=2)),c==null||c.__v==null?(d==-1&&(a>h?g--:a<h&&g++),typeof s.type!="function"&&(s.__u|=4)):d!=f&&(d==f-1?g--:d==f+1?g++:(d>f?g--:g++,s.__u|=4))):e.__k[i]=null;if(p)for(i=0;i<h;i++)(c=r[i])!=null&&(2&c.__u)==0&&(c.__e==n&&(n=re(c)),lt(c,c));return n}function at(e,t,r,n){var a,i;if(typeof e.type=="function"){for(a=e.__k,i=0;a&&i<a.length;i++)a[i]&&(a[i].__=e,t=at(a[i],t,r,n));return t}e.__e!=t&&(n&&(t&&e.type&&!t.parentNode&&(t=re(e)),r.insertBefore(e.__e,t||null)),t=e.__e);do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function ur(e,t,r,n){var a,i,s,c=e.key,f=e.type,d=t[r],h=d!=null&&(2&d.__u)==0;if(d===null&&c==null||h&&c==d.key&&f==d.type)return r;if(n>(h?1:0)){for(a=r-1,i=r+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&c==d.key&&f==d.type)return s}return-1}function Ze(e,t,r){t[0]=="-"?e.setProperty(t,r==null?"":r):e[t]=r==null?"":typeof r!="number"||cr.test(t)?r:r+"px"}function le(e,t,r,n,a){var i,s;e:if(t=="style")if(typeof r=="string")e.style.cssText=r;else{if(typeof n=="string"&&(e.style.cssText=n=""),n)for(t in n)r&&t in r||Ze(e.style,t,"");if(r)for(t in r)n&&r[t]==n[t]||Ze(e.style,t,r[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(rt,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=r,r?n?r[ae]=n[ae]:(r[ae]=Me,e.addEventListener(t,i?Ee:Ce,i)):e.removeEventListener(t,i?Ee:Ce,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=r==null?"":r;break e}catch(c){}typeof r=="function"||(r==null||r===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&r==1?"":r))}}function Ye(e){return function(t){if(this.l){var r=this.l[t.type+e];if(t[ce]==null)t[ce]=Me++;else if(t[ce]<r[ae])return;return r(F.event?F.event(t):t)}}}function Be(e,t,r,n,a,i,s,c,f,d){var h,p,g,b,x,_,w,m,u,l,y,C,M,E,L,P=t.type;if(t.constructor!==void 0)return null;128&r.__u&&(f=!!(32&r.__u),i=[c=t.__e=r.__e]),(h=F.__b)&&h(t);e:if(typeof P=="function")try{if(m=t.props,u=P.prototype&&P.prototype.render,l=(h=P.contextType)&&n[h.__c],y=h?l?l.props.value:h.__:n,r.__c?w=(p=t.__c=r.__c).__=p.__E:(u?t.__c=p=new P(m,y):(t.__c=p=new pe(m,y),p.constructor=P,p.render=mr),l&&l.sub(p),p.state||(p.state={}),p.__n=n,g=p.__d=!0,p.__h=[],p._sb=[]),u&&p.__s==null&&(p.__s=p.state),u&&P.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=J({},p.__s)),J(p.__s,P.getDerivedStateFromProps(m,p.__s))),b=p.props,x=p.state,p.__v=t,g)u&&P.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),u&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(u&&P.getDerivedStateFromProps==null&&m!==b&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(m,y),t.__v==r.__v||!p.__e&&p.shouldComponentUpdate!=null&&p.shouldComponentUpdate(m,p.__s,y)===!1){t.__v!=r.__v&&(p.props=m,p.state=p.__s,p.__d=!1),t.__e=r.__e,t.__k=r.__k,t.__k.some(function(A){A&&(A.__=t)}),fe.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p);break e}p.componentWillUpdate!=null&&p.componentWillUpdate(m,p.__s,y),u&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(b,x,_)})}if(p.context=y,p.props=m,p.__P=e,p.__e=!1,C=F.__r,M=0,u)p.state=p.__s,p.__d=!1,C&&C(t),h=p.render(p.props,p.state,p.context),fe.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,C&&C(t),h=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++M<25);p.state=p.__s,p.getChildContext!=null&&(n=J(J({},n),p.getChildContext())),u&&!g&&p.getSnapshotBeforeUpdate!=null&&(_=p.getSnapshotBeforeUpdate(b,x)),E=h!=null&&h.type===N&&h.key==null?st(h.props.children):h,c=nt(e,he(E)?E:[E],t,r,n,a,i,s,c,f,d),p.base=t.__e,t.__u&=-161,p.__h.length&&s.push(p),w&&(p.__E=p.__=null)}catch(A){if(t.__v=null,f||i!=null)if(A.then){for(t.__u|=f?160:128;c&&c.nodeType==8&&c.nextSibling;)c=c.nextSibling;i[i.indexOf(c)]=null,t.__e=c}else{for(L=i.length;L--;)Pe(i[L]);Te(t)}else t.__e=r.__e,t.__k=r.__k,A.then||Te(t);F.__e(A,t,r)}else i==null&&t.__v==r.__v?(t.__k=r.__k,t.__e=r.__e):c=t.__e=fr(r.__e,t,r,n,a,i,s,f,d);return(h=F.diffed)&&h(t),128&t.__u?void 0:c}function Te(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Te))}function it(e,t,r){for(var n=0;n<r.length;n++)Fe(r[n],r[++n],r[++n]);F.__c&&F.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){F.__e(i,a.__v)}})}function st(e){return typeof e!="object"||e==null||e.__b>0?e:he(e)?e.map(st):J({},e)}function fr(e,t,r,n,a,i,s,c,f){var d,h,p,g,b,x,_,w=r.props||ue,m=t.props,u=t.type;if(u=="svg"?a="http://www.w3.org/2000/svg":u=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((b=i[d])&&"setAttribute"in b==!!u&&(u?b.localName==u:b.nodeType==3)){e=b,i[d]=null;break}}if(e==null){if(u==null)return document.createTextNode(m);e=document.createElementNS(a,u,m.is&&m),c&&(F.__m&&F.__m(t,i),c=!1),i=null}if(u==null)w===m||c&&e.data==m||(e.data=m);else{if(i=i&&be.call(e.childNodes),!c&&i!=null)for(w={},d=0;d<e.attributes.length;d++)w[(b=e.attributes[d]).name]=b.value;for(d in w)b=w[d],d=="dangerouslySetInnerHTML"?p=b:d=="children"||d in m||d=="value"&&"defaultValue"in m||d=="checked"&&"defaultChecked"in m||le(e,d,null,b,a);for(d in m)b=m[d],d=="children"?g=b:d=="dangerouslySetInnerHTML"?h=b:d=="value"?x=b:d=="checked"?_=b:c&&typeof b!="function"||w[d]===b||le(e,d,b,w[d],a);if(h)c||p&&(h.__html==p.__html||h.__html==e.innerHTML)||(e.innerHTML=h.__html),t.__k=[];else if(p&&(e.innerHTML=""),nt(t.type=="template"?e.content:e,he(g)?g:[g],t,r,n,u=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:r.__k&&re(r,0),c,f),i!=null)for(d=i.length;d--;)Pe(i[d]);c||(d="value",u=="progress"&&x==null?e.removeAttribute("value"):x!=null&&(x!==e[d]||u=="progress"&&!x||u=="option"&&x!=w[d])&&le(e,d,x,w[d],a),d="checked",_!=null&&_!=e[d]&&le(e,d,_,w[d],a))}return e}function Fe(e,t,r){try{if(typeof e=="function"){var n=typeof e.__u=="function";n&&e.__u(),n&&t==null||(e.__u=e(t))}else e.current=t}catch(a){F.__e(a,r)}}function lt(e,t,r){var n,a;if(F.unmount&&F.unmount(e),(n=e.ref)&&(n.current&&n.current!=e.__e||Fe(n,null,t)),(n=e.__c)!=null){if(n.componentWillUnmount)try{n.componentWillUnmount()}catch(i){F.__e(i,t)}n.base=n.__P=null}if(n=e.__k)for(a=0;a<n.length;a++)n[a]&&lt(n[a],t,r||typeof e.type!="function");r||Pe(e.__e),e.__c=e.__=e.__e=void 0}function mr(e,t,r){return this.constructor(e,r)}function Ae(e,t,r){var n,a,i,s;t==document&&(t=document.documentElement),F.__&&F.__(e,t),a=(n=typeof r=="function")?null:r&&r.__k||t.__k,i=[],s=[],Be(t,e=(!n&&r||t).__k=ze(N,null,[e]),a||ue,ue,t.namespaceURI,!n&&r?[r]:a?null:t.firstChild?be.call(t.childNodes):null,i,!n&&r?r:a?a.__e:t.firstChild,n,s),it(i,e,s)}be=fe.slice,F={__e:function(e,t,r,n){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,n||{}),s=a.__d),s)return a.__E=a}catch(c){e=c}throw e}},Qe=0,sr=function(e){return e!=null&&e.constructor===void 0},pe.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=J({},this.state),typeof e=="function"&&(e=e(J({},r),this.props)),e&&J(r,e),e!=null&&this.__v&&(t&&this._sb.push(t),Je(this))},pe.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Je(this))},pe.prototype.render=N,Z=[],et=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,tt=function(e,t){return e.__v.__b-t.__v.__b},me.__r=0,Re=Math.random().toString(8),ce="__d"+Re,ae="__a"+Re,rt=/(PointerCapture)$|Capture$/i,Me=0,Ce=Ye(!1),Ee=Ye(!0),lr=0;var oe,I,Le,ct,ie=0,gt=[],D=F,dt=D.__b,pt=D.__r,ut=D.diffed,ft=D.__c,mt=D.unmount,bt=D.__;function ve(e,t){D.__h&&D.__h(I,e,ie||t),ie=0;var r=I.__H||(I.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({}),r.__[e]}function R(e){return ie=1,br(yt,e)}function br(e,t,r){var n=ve(oe++,2);if(n.t=e,!n.__c&&(n.__=[r?r(t):yt(void 0,t),function(c){var f=n.__N?n.__N[0]:n.__[0],d=n.t(f,c);f!==d&&(n.__N=[d,n.__[1]],n.__c.setState({}))}],n.__c=I,!I.__f)){var a=function(c,f,d){if(!n.__c.__H)return!0;var h=n.__c.__H.__.filter(function(g){return g.__c});if(h.every(function(g){return!g.__N}))return!i||i.call(this,c,f,d);var p=n.__c.props!==c;return h.some(function(g){if(g.__N){var b=g.__[0];g.__=g.__N,g.__N=void 0,b!==g.__[0]&&(p=!0)}}),i&&i.call(this,c,f,d)||p};I.__f=!0;var i=I.shouldComponentUpdate,s=I.componentWillUpdate;I.componentWillUpdate=function(c,f,d){if(this.__e){var h=i;i=void 0,a(c,f,d),i=h}s&&s.call(this,c,f,d)},I.shouldComponentUpdate=a}return n.__N||n.__}function K(e,t){var r=ve(oe++,3);!D.__s&&De(r.__H,t)&&(r.__=e,r.u=t,I.__H.__h.push(r))}function $e(e,t){var r=ve(oe++,4);!D.__s&&De(r.__H,t)&&(r.__=e,r.u=t,I.__h.push(r))}function W(e){return ie=5,Q(function(){return{current:e}},[])}function Q(e,t){var r=ve(oe++,7);return De(r.__H,t)&&(r.__=e(),r.__H=t,r.__h=e),r.__}function vt(e,t){return ie=8,Q(function(){return e},t)}function hr(){for(var e;e=gt.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(ge),t.__h.some(Ie),t.__h=[]}catch(r){t.__h=[],D.__e(r,e.__v)}}}D.__b=function(e){I=null,dt&&dt(e)},D.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),bt&&bt(e,t)},D.__r=function(e){pt&&pt(e),oe=0;var t=(I=e.__c).__H;t&&(Le===I?(t.__h=[],I.__h=[],t.__.some(function(r){r.__N&&(r.__=r.__N),r.u=r.__N=void 0})):(t.__h.some(ge),t.__h.some(Ie),t.__h=[],oe=0)),Le=I},D.diffed=function(e){ut&&ut(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(gt.push(t)!==1&&ct===D.requestAnimationFrame||((ct=D.requestAnimationFrame)||gr)(hr)),t.__H.__.some(function(r){r.u&&(r.__H=r.u),r.u=void 0})),Le=I=null},D.__c=function(e,t){t.some(function(r){try{r.__h.some(ge),r.__h=r.__h.filter(function(n){return!n.__||Ie(n)})}catch(n){t.some(function(a){a.__h&&(a.__h=[])}),t=[],D.__e(n,r.__v)}}),ft&&ft(e,t)},D.unmount=function(e){mt&&mt(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.some(function(n){try{ge(n)}catch(a){t=a}}),r.__H=void 0,t&&D.__e(t,r.__v))};var ht=typeof requestAnimationFrame=="function";function gr(e){var t,r=function(){clearTimeout(n),ht&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(r,35);ht&&(t=requestAnimationFrame(r))}function ge(e){var t=I,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),I=t}function Ie(e){var t=I;e.__c=e.__(),I=t}function De(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function yt(e,t){return typeof t=="function"?t(e):t}var _t="mhosaic.boardView.";function xt(e){try{let t=localStorage.getItem(_t+e);if(!t)return{};let r=JSON.parse(t);return r&&typeof r=="object"?r:{}}catch(t){return{}}}function wt(e,t){try{localStorage.setItem(_t+e,JSON.stringify(t))}catch(r){}}var vr=0;function o(e,t,r,n,a,i){t||(t={});var s,c,f=t;if("ref"in f)for(c in f={},t)c=="ref"?s=t[c]:f[c]=t[c];var d={type:e,props:f,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--vr,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(c in s)f[c]===void 0&&(f[c]=s[c]);return F.vnode&&F.vnode(d),d}function kt({comment:e,strings:t}){let r=e.is_mine,n=!r&&e.author_source==="mcp",a=!r&&e.author_source==="system",i=n?"mcp":a?"system":"staff",s=i==="mcp"?"detail.author.mcp":i==="system"?"detail.author.system":"detail.author.staff",c=e.author_label||t[s];return o("div",{class:`comment-bubble ${r?"is-mine":"is-other"}`,children:[!r&&c&&o("div",{class:`comment-author comment-author--${i}`,children:c}),o("div",{class:"comment-body",children:e.body}),o("div",{class:"comment-time",children:yr(e.created_at)})]})}function yr(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"short",timeStyle:"short"})}catch(t){return e}}var _r=["image/png","image/jpeg","image/webp"];function St(e){return _r.includes(e.type)?e.size>10485760?{kind:"size",maxMb:10485760/(1024*1024)}:null:{kind:"type"}}function ne(e,t=80){if(e.length<=t)return e;let r=Math.floor((t-1)/2),n=t-1-r;return`${e.slice(0,r)}\u2026${e.slice(e.length-n)}`}function Ke(e){if(!e)return;let t;try{t=new URL(e)}catch(r){return}if(t.protocol==="https:"||t.protocol==="http:"&&(t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="[::1]"))return t.toString()}var xr=3e4;function ye({api:e,externalId:t,reportId:r,strings:n,onBack:a,canModerate:i=!0,variant:s="modal"}){var H,U,O;let[c,f]=R(null),[d,h]=R(null),[p,g]=R(""),[b,x]=R(!1),[_,w]=R(!1),[m,u]=R(!1),l=W(!0),y=async()=>{try{let T=await e.getReport(r,t);if(!l.current)return;f(T),h(null)}catch(T){if(typeof console!="undefined"&&console.warn("[mhosaic] getReport:",T),!l.current)return;h("load_failed")}};K(()=>{l.current=!0,y();let T=setInterval(()=>{y()},xr);return()=>{l.current=!1,clearInterval(T)}},[r,t]);let C=async()=>{if(!(!p.trim()||b)){x(!0);try{let T=`${r}:${Date.now()}`,X=await e.addComment(r,t,p.trim(),T);if(!l.current)return;g(""),f(V=>V&&{...V,comments:wr(V.comments,X)}),y()}catch(T){if(typeof console!="undefined"&&console.warn("[mhosaic] addComment:",T),!l.current)return;h(n["detail.send_failed"])}finally{l.current&&x(!1)}}},M=async()=>{if(!(_||m)){w(!0);try{let T=await e.closeAsResolved(r,t);if(!l.current)return;f(T)}catch(T){if(typeof console!="undefined"&&console.warn("[mhosaic] closeAsResolved:",T),!l.current)return;h(n["detail.close_failed"])}finally{l.current&&w(!1)}}},E=async()=>{if(!(_||m)){u(!0);try{let T=await e.reopenUnresolved(r,t);if(!l.current)return;f(T)}catch(T){if(typeof console!="undefined"&&console.warn("[mhosaic] reopenUnresolved:",T),!l.current)return;h(n["detail.reopen_failed"])}finally{l.current&&u(!1)}}};if(!c&&!d)return o("div",{class:"mine-loading",children:n["mine.loading"]});if(!c)return o("div",{class:"report-detail-empty-state",role:"alert",children:[o("p",{class:"report-detail-empty-state-title",children:n["detail.load_failed.title"]}),o("p",{class:"report-detail-empty-state-body",children:n["detail.load_failed.body"]}),o("button",{type:"button",class:"btn",onClick:a,children:["\u2190 ",n["detail.load_failed.cta"]]})]});let L=(H=c.is_mine)!=null?H:i,P=L&&c.status==="awaiting_validation",A=L;return o("div",{class:`report-detail variant-${s}`,children:[s==="modal"&&o("div",{class:"report-detail-header",children:[o("button",{type:"button",class:"btn",onClick:a,children:["\u2190 ",n["detail.back"]]}),o("span",{class:`pill pill-status pill-status--${c.status}`,children:(U=n[`status.${c.status}`])!=null?U:c.status})]}),s==="board"&&o("div",{class:"report-detail-header report-detail-header--board",children:[o("button",{type:"button",class:"btn btn--ghost report-detail-back",onClick:a,"aria-label":n["board.back"],children:["\u2190 ",n["board.back"]]}),o("span",{class:`pill pill-status pill-status--${c.status}`,children:(O=n[`status.${c.status}`])!=null?O:c.status})]}),o("div",{class:"report-detail-body",children:[o(kr,{detail:c,strings:n}),o("p",{class:"report-detail-description",children:c.description}),c.screenshot_url&&(()=>{let T=Ke(c.screenshot_url);return T?o("a",{class:"report-detail-screenshot",href:T,target:"_blank",rel:"noopener noreferrer",children:o("img",{src:c.screenshot_url,alt:"",loading:"lazy"})}):o("div",{class:"report-detail-screenshot",children:o("img",{src:c.screenshot_url,alt:"",loading:"lazy"})})})(),o("h3",{class:"report-detail-section",children:n["detail.thread"]}),c.comments.length===0?o("p",{class:"report-detail-empty",children:n["detail.no_replies"]}):o("ul",{class:"report-comments",children:c.comments.map(T=>o("li",{children:o(kt,{comment:T,strings:n})}))}),c.status_history&&c.status_history.length>0&&o(Br,{rows:c.status_history,strings:n}),c.technical_context&&o(Cr,{ctx:c.technical_context,strings:n}),A?o("div",{class:"report-compose",children:[o("textarea",{value:p,placeholder:n["detail.compose_placeholder"],onInput:T=>g(T.target.value),disabled:b}),o("div",{class:"report-compose-actions",children:[P&&o("button",{type:"button",class:"btn",onClick:M,disabled:_||m,children:_?n["detail.close_busy"]:n["detail.close_cta"]}),P&&o("button",{type:"button",class:"btn btn--ghost",onClick:E,disabled:_||m,children:m?n["detail.reopen_busy"]:n["detail.reopen_cta"]}),o("button",{type:"button",class:"btn btn--primary",onClick:C,disabled:!p.trim()||b,children:b?n["detail.compose_sending"]:n["detail.compose_send"]})]})]}):o("p",{class:"report-detail-teammate-notice",role:"note",children:n["detail.teammate_notice"]}),d&&o("div",{class:"error",children:d})]})]})}function wr(e,t){return e.some(r=>r.id===t.id)?e:[...e,t]}function kr({detail:e,strings:t}){var a;let r=`detail.context.capture.${e.capture_method}`,n=(a=t[r])!=null?a:e.capture_method;return o("div",{class:"report-detail-context",children:[o("div",{class:"report-detail-context-pills",children:[o("span",{class:"pill pill-type",children:t[`type.${e.feedback_type}`]}),o("span",{class:`pill pill-severity pill-severity--${e.severity}`,children:t[`severity.${e.severity}`]}),o("span",{class:"pill pill-capture",children:n})]}),o("div",{class:"report-detail-context-line",children:[o("span",{class:"report-detail-context-label",children:t["detail.context.submitted_at"]}),o("span",{children:Rt(e.created_at)})]}),e.page_url&&(()=>{let i=Ke(e.page_url);return o("div",{class:"report-detail-context-line",title:e.page_url,children:[o("span",{class:"report-detail-context-label",children:t["detail.context.page"]}),i?o("a",{class:"report-detail-context-url",href:i,target:"_blank",rel:"noopener noreferrer",children:ne(e.page_url,64)}):o("span",{class:"report-detail-context-url",children:ne(e.page_url,64)})]})})()]})}function Rt(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}catch(t){return e}}var Sr=20,Rr=15;function Cr({ctx:e,strings:t}){var d,h,p;let r=(d=e.errors)!=null?d:[],n=((h=e.consoleLogs)!=null?h:[]).slice(-Sr),a=((p=e.networkRequests)!=null?p:[]).slice(-Rr),i=e.device;if(!(!!i||r.length>0||n.length>0||a.length>0))return null;let c=r.length,f=c>0?`${t["detail.tech.title"]} \xB7 ${c} ${c===1?t["detail.tech.errors_one"]:t["detail.tech.errors_many"]}`:t["detail.tech.title"];return o("details",{class:"report-detail-tech",children:[o("summary",{children:f}),o("div",{class:"tech-body",children:[i&&o(Er,{device:i,strings:t}),r.length>0&&o(Tr,{errors:r,strings:t}),n.length>0&&o(Mr,{logs:n,strings:t}),a.length>0&&o(Pr,{rows:a,strings:t})]})]})}function Er({device:e,strings:t}){let r=[];if(e!=null&&e.viewport){let n=e.viewport.dpr?` @${e.viewport.dpr}x`:"";r.push({label:t["detail.tech.device.viewport"],value:`${e.viewport.w}\xD7${e.viewport.h}${n}`})}return e!=null&&e.platform&&r.push({label:t["detail.tech.device.platform"],value:e.platform}),e!=null&&e.language&&r.push({label:t["detail.tech.device.language"],value:e.language}),e!=null&&e.timezone&&r.push({label:t["detail.tech.device.timezone"],value:e.timezone}),e!=null&&e.connection&&r.push({label:t["detail.tech.device.connection"],value:e.connection}),r.length===0?null:o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.device"]}),o("dl",{class:"tech-device",children:r.map(n=>o(N,{children:[o("dt",{children:n.label}),o("dd",{children:n.value})]}))})]})}function Tr({errors:e,strings:t}){return o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.errors"]}),o("ul",{class:"tech-errors",children:e.map(r=>o("li",{children:[o("div",{class:"tech-errors-msg",children:r.message}),r.stack&&o("pre",{class:"tech-errors-stack",children:zr(r.stack)})]}))})]})}function Mr({logs:e,strings:t}){return o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.console"]}),o("ul",{class:"tech-console",children:e.map(r=>o("li",{class:`tech-console-row tech-console-row--${r.level}`,children:[o("span",{class:"tech-console-level",children:r.level}),o("span",{class:"tech-console-msg",children:r.message})]}))})]})}function Pr({rows:e,strings:t}){return o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.network"]}),o("ul",{class:"tech-network",children:e.map(r=>{let n=r.status>=400||r.status===0;return o("li",{class:`tech-network-row${n?" tech-network-row--fail":""}`,children:[o("span",{class:"tech-network-status",children:r.status||"\u2014"}),o("span",{class:"tech-network-method",children:r.method}),o("span",{class:"tech-network-url",title:r.url,children:ne(r.url,56)}),o("span",{class:"tech-network-time",children:[Math.round(r.durationMs),"ms"]})]})})})]})}function zr(e){let t=e.split(`
597
+ `))}e.push(c)}catch(l){}n.apply(console,s)})}return()=>{for(let[a,n]of Object.entries(r))console[a]=n}}function pt(e,t){if(typeof window=="undefined"||typeof window.fetch!="function")return()=>{};let r=window.fetch.bind(window);return window.fetch=async function(n,i){let s=performance.now(),l=typeof n=="string"?n:n instanceof URL?n.toString():n.url,u=((i==null?void 0:i.method)||(n instanceof Request?n.method:"GET")).toUpperCase();try{let c=await r(n,i);return e.push({url:t(l),method:u,status:c.status,durationMs:Math.round(performance.now()-s),ts:Date.now()}),c}catch(c){let b=c instanceof Error?c.message:String(c);throw e.push({url:t(l),method:u,status:0,durationMs:Math.round(performance.now()-s),ts:Date.now(),error:Y(b)}),c}},()=>{window.fetch=r}}function ut(e,t){if(typeof window=="undefined"||typeof window.XMLHttpRequest!="function")return()=>{};let r=window.XMLHttpRequest,a=r.prototype.open,n=r.prototype.send;return r.prototype.open=function(s,l){return this.__mfb={method:s.toUpperCase(),url:typeof l=="string"?l:l.toString(),start:performance.now()},a.apply(this,arguments)},r.prototype.send=function(s){return this.addEventListener("loadend",()=>{try{let l=this.__mfb;if(!l)return;e.push({url:t(l.url),method:l.method,status:this.status,durationMs:Math.round(performance.now()-l.start),ts:Date.now()})}catch(l){}}),n.call(this,s!=null?s:null)},()=>{r.prototype.open=a,r.prototype.send=n}}function ft(e){if(typeof window=="undefined")return()=>{};let t=a=>{let n=a.error instanceof Error?a.error.stack:void 0,i=n!==void 0?Y(n):void 0;e.push({message:Y(a.message||"Unknown error"),...i!==void 0&&{stack:i},ts:Date.now(),source:"window.error"})},r=a=>{let n=a.reason,i=n instanceof Error?n.message:typeof n=="string"?n:(()=>{try{return JSON.stringify(n)}catch(u){return String(n)}})(),s=n instanceof Error?n.stack:void 0,l=s!==void 0?Y(s):void 0;e.push({message:Y(i),...l!==void 0&&{stack:l},ts:Date.now(),source:"unhandledrejection"})};return window.addEventListener("error",t),window.addEventListener("unhandledrejection",r),()=>{window.removeEventListener("error",t),window.removeEventListener("unhandledrejection",r)}}function mt(e=1e3){let t=[],r=[],a=null;if(typeof PerformanceObserver!="undefined")try{a=new PerformanceObserver(n=>{for(let i of n.getEntries())if(i.entryType==="longtask")for(t.push({duration:i.duration,startTime:i.startTime});t.length>20;)t.shift();else if(i.entryType==="resource"){let s=i;if(s.duration>e)for(r.push({name:ae(s.name),duration:s.duration,initiatorType:s.initiatorType});r.length>20;)r.shift()}}),a.observe({entryTypes:["longtask","resource"]})}catch(n){}return{snapshot(){let n=typeof performance!="undefined"?performance.getEntriesByType("navigation")[0]:void 0,i=n?{type:n.type,duration:n.duration}:void 0;return{...i!==void 0&&{navigation:i},longTasks:t.slice(),slowResources:r.slice()}},dispose(){a==null||a.disconnect()}}}var le=class{constructor(t){Ne(this,"max",t);Ne(this,"items",[])}push(t){for(this.items.push(t);this.items.length>this.max;)this.items.shift()}snapshot(){return this.items.slice()}clear(){this.items.length=0}};function bt(e={}){var g;let{maxConsole:t=50,maxNetwork:r=50,maxErrors:a=20}=e,n=(g=e.sanitizeUrl)!=null?g:ae,i=new le(t),s=new le(r),l=new le(a),u=dt(i),c=pt(s,n),b=ut(s,n),d=ft(l),h=mt();return{snapshot(){return{consoleLogs:i.snapshot(),networkRequests:s.snapshot(),errors:l.snapshot(),device:ct(),capturedAt:Date.now()}},clear(){i.clear(),s.clear(),l.clear()},dispose(){u(),c(),b(),d(),h.dispose()}}}var Yr={"fab.label":"Send feedback","form.title":"Send feedback","form.description.label":"What happened?","form.description.placeholder":"Describe the issue or idea in one or two sentences.","form.type.label":"Type","form.severity.label":"Severity","form.submit":"Send","form.cancel":"Cancel","form.close":"Close","form.submitting":"Sending\u2026","form.success":"Thanks \u2014 your feedback was sent.","form.error":"Could not send. Please try again.","form.description.required":"Please describe the issue before sending.","form.screenshot.label":"Screenshot","form.screenshot.cta_click":"Click","form.screenshot.cta_rest":"drop, or paste an image","form.screenshot.formats":"PNG, JPEG or WebP \u2014 up to 10 MB","form.screenshot.remove":"Remove screenshot","form.screenshot.annotate":"Annotate","form.screenshot.error_type":"Unsupported file type. Use PNG, JPEG or WebP.","form.screenshot.error_size":"File too large (max {max} MB).","form.context.label":"Page","type.bug":"Bug","type.feature":"Feature request","type.question":"Question","type.praise":"Praise","type.typo":"Typo","severity.blocker":"Blocker","severity.high":"High","severity.medium":"Medium","severity.low":"Low","annotator.title":"Annotate screenshot","annotator.tool.rectangle":"Rectangle","annotator.tool.arrow":"Arrow","annotator.tool.freehand":"Freehand","annotator.tool.text":"Text","annotator.tool.highlight":"Highlight","annotator.tool.blur":"Blur (hide sensitive data)","annotator.text_prompt":"Enter text:","annotator.color_picker":"Custom color","annotator.undo":"Undo","annotator.redo":"Redo","annotator.clear":"Clear all","annotator.count_suffix":"annotations","annotator.loading":"Loading\u2026","annotator.apply":"Apply","annotator.applying":"Applying\u2026","tab.send":"Send","tab.mine":"My reports","tab.changelog":"This week","tab.board":"Board","board.kpi.total":"Total","board.kpi.new":"New","board.kpi.in_progress":"In progress","board.kpi.awaiting_validation":"Awaiting validation","board.kpi.closed":"Closed","board.kpi.rejected":"Rejected","board.kpi.resolution_rate":"Resolution rate","board.sort":"Sort","board.sort.recent":"Newest first","board.sort.oldest":"Oldest first","board.sort.updated":"Recently active","board.sort.severity":"Severity","board.sort.status":"Status","board.filter.status":"Status","board.filter.type":"Type","board.filter.severity":"Severity","board.filter.search.placeholder":"Search\u2026","board.filter.mine":"Mine only","board.filter.clear":"Clear filters","board.list.empty.title":"Nothing here yet","board.list.empty.description":"When reports land, they\u2019ll show up here.","board.list.loading":"Loading\u2026","board.list.error":"Couldn\u2019t load reports.","board.retry":"Try again","board.list.you":"you","board.list.count":"{n} of {total}","board.detail.empty":"Pick a report on the left to see its full thread.","board.detail.by":"By","board.detail.confirm_resolution":"Confirm resolution","board.detail.status_history":"History","board.scope.project":"Project reports","board.scope.mine":"Your reports","board.back":"Back","changelog.empty.title":"Nothing resolved yet","changelog.empty.body":"Once a report you sent is fixed it will appear here, grouped by week.","changelog.week_of":"Week of {date}","changelog.resolved_one":"{count} resolved","changelog.resolved_many":"{count} resolved","mine.empty.title":"No reports yet","mine.empty.body":"Once you send feedback you can follow the thread here.","mine.refresh":"Refresh","mine.loading":"Loading\u2026","mine.error":"Could not load your reports.","mine.replies_one":"1 reply","mine.replies_many":"{count} replies","mine.filter.empty":"No reports match this filter.","kpi.new":"New","kpi.in_progress":"In progress","kpi.awaiting_validation":"Awaiting you","kpi.resolution_rate":"Resolution rate","detail.back":"Back","detail.thread":"Conversation","detail.no_replies":"No replies yet \u2014 we\u2019ll let you know when an operator responds.","detail.compose_placeholder":"Add a follow-up reply\u2026","detail.compose_send":"Reply","detail.compose_sending":"Sending\u2026","detail.close_cta":"Mark as resolved","detail.close_busy":"Marking\u2026","detail.reopen_cta":"Still not fixed","detail.reopen_busy":"Reopening\u2026","detail.teammate_notice":"Viewing a teammate\u2019s report \u2014 replies are private to the submitter.","detail.load_failed.title":"Report not available","detail.load_failed.body":"It may have been deleted, or you no longer have access to it.","detail.load_failed.cta":"Back","detail.send_failed":"Couldn\u2019t send your reply. Try again.","detail.close_failed":"Couldn\u2019t mark as resolved. Try again.","detail.reopen_failed":"Couldn\u2019t reopen the report. Try again.","detail.history":"Status history","detail.context.submitted_at":"Submitted","detail.context.page":"Page","detail.context.capture.manual":"Manual capture","detail.context.capture.html2canvas":"Auto capture","detail.context.capture.display_media":"Screen share","detail.context.capture.none":"No screenshot","detail.author.staff":"Operator","detail.author.mcp":"Mhosaic Team","detail.author.system":"System","detail.tech.title":"What we received","detail.tech.errors_one":"error","detail.tech.errors_many":"errors","detail.tech.device":"Device","detail.tech.device.viewport":"Viewport","detail.tech.device.platform":"Platform","detail.tech.device.language":"Language","detail.tech.device.timezone":"Timezone","detail.tech.device.connection":"Connection","detail.tech.errors":"Runtime errors","detail.tech.console":"Console (last 20)","detail.tech.network":"Network (last 15)","status.new":"New","status.in_progress":"In progress","status.awaiting_validation":"Awaiting your validation","status.closed":"Closed","status.rejected":"Rejected","status.duplicate":"Duplicate","status.wontfix":"Won\u2019t fix"},Xr={"fab.label":"Envoyer un commentaire","form.title":"Envoyer un commentaire","form.description.label":"Qu\u2019est-il arriv\xE9 ?","form.description.placeholder":"D\xE9crivez le probl\xE8me ou l\u2019id\xE9e en une ou deux phrases.","form.type.label":"Type","form.severity.label":"S\xE9v\xE9rit\xE9","form.submit":"Envoyer","form.cancel":"Annuler","form.close":"Fermer","form.submitting":"Envoi\u2026","form.success":"Merci \u2014 votre commentaire a \xE9t\xE9 envoy\xE9.","form.error":"\xC9chec d\u2019envoi. Veuillez r\xE9essayer.","form.description.required":"D\xE9crivez le probl\xE8me avant d\u2019envoyer.","form.screenshot.label":"Capture d\u2019\xE9cran","form.screenshot.cta_click":"Cliquez","form.screenshot.cta_rest":"d\xE9posez ou collez une image","form.screenshot.formats":"PNG, JPEG ou WebP \u2014 jusqu\u2019\xE0 10 Mo","form.screenshot.remove":"Retirer la capture","form.screenshot.annotate":"Annoter","form.screenshot.error_type":"Format non support\xE9. Utilisez PNG, JPEG ou WebP.","form.screenshot.error_size":"Fichier trop volumineux (max {max} Mo).","form.context.label":"Page","type.bug":"Bogue","type.feature":"Suggestion","type.question":"Question","type.praise":"Compliment","type.typo":"Coquille","severity.blocker":"Bloquant","severity.high":"\xC9lev\xE9e","severity.medium":"Moyenne","severity.low":"Faible","annotator.title":"Annoter la capture","annotator.tool.rectangle":"Rectangle","annotator.tool.arrow":"Fl\xE8che","annotator.tool.freehand":"Dessin libre","annotator.tool.text":"Texte","annotator.tool.highlight":"Surligner","annotator.tool.blur":"Flouter (donn\xE9es sensibles)","annotator.text_prompt":"Entrez le texte :","annotator.color_picker":"Couleur personnalis\xE9e","annotator.undo":"Annuler","annotator.redo":"Refaire","annotator.clear":"Tout effacer","annotator.count_suffix":"annotations","annotator.loading":"Chargement\u2026","annotator.apply":"Appliquer","annotator.applying":"Application\u2026","tab.send":"Envoyer","tab.mine":"Mes rapports","tab.changelog":"Cette semaine","tab.board":"Tableau","board.kpi.total":"Total","board.kpi.new":"Nouveau","board.kpi.in_progress":"En cours","board.kpi.awaiting_validation":"\xC0 valider","board.kpi.closed":"Ferm\xE9","board.kpi.rejected":"Refus\xE9","board.kpi.resolution_rate":"Taux de r\xE9solution","board.sort":"Trier","board.sort.recent":"Plus r\xE9cents","board.sort.oldest":"Plus anciens","board.sort.updated":"Activit\xE9 r\xE9cente","board.sort.severity":"S\xE9v\xE9rit\xE9","board.sort.status":"Statut","board.filter.status":"Statut","board.filter.type":"Type","board.filter.severity":"S\xE9v\xE9rit\xE9","board.filter.search.placeholder":"Rechercher\u2026","board.filter.mine":"Les miens","board.filter.clear":"Effacer les filtres","board.list.empty.title":"Rien \xE0 voir ici","board.list.empty.description":"Les rapports appara\xEEtront ici d\xE8s qu\u2019ils arrivent.","board.list.loading":"Chargement\u2026","board.list.error":"Impossible de charger les rapports.","board.retry":"R\xE9essayer","board.list.you":"vous","board.list.count":"{n} sur {total}","board.detail.empty":"S\xE9lectionnez un rapport \xE0 gauche pour voir le fil complet.","board.detail.by":"Par","board.detail.confirm_resolution":"Confirmer la r\xE9solution","board.detail.status_history":"Historique","board.scope.project":"Rapports du projet","board.scope.mine":"Vos rapports","board.back":"Retour","changelog.empty.title":"Rien de r\xE9solu pour l\u2019instant","changelog.empty.body":"Quand un rapport que vous avez envoy\xE9 est corrig\xE9, il appara\xEEtra ici, regroup\xE9 par semaine.","changelog.week_of":"Semaine du {date}","changelog.resolved_one":"{count} r\xE9solu","changelog.resolved_many":"{count} r\xE9solus","mine.empty.title":"Aucun rapport","mine.empty.body":"Apr\xE8s votre premier envoi vous pourrez suivre la conversation ici.","mine.refresh":"Actualiser","mine.loading":"Chargement\u2026","mine.error":"Impossible de charger vos rapports.","mine.replies_one":"1 r\xE9ponse","mine.replies_many":"{count} r\xE9ponses","mine.filter.empty":"Aucun rapport ne correspond \xE0 ce filtre.","kpi.new":"Nouveau","kpi.in_progress":"En cours","kpi.awaiting_validation":"\xC0 valider","kpi.resolution_rate":"Taux de r\xE9solution","detail.back":"Retour","detail.thread":"Conversation","detail.no_replies":"Pas encore de r\xE9ponse \u2014 vous serez notifi\xE9 d\xE8s qu\u2019un op\xE9rateur r\xE9pondra.","detail.compose_placeholder":"Ajouter une r\xE9ponse\u2026","detail.compose_send":"R\xE9pondre","detail.compose_sending":"Envoi\u2026","detail.close_cta":"Marquer comme r\xE9solu","detail.close_busy":"Validation\u2026","detail.reopen_cta":"Toujours pas r\xE9gl\xE9","detail.reopen_busy":"R\xE9ouverture\u2026","detail.teammate_notice":"Vous consultez le rapport d\u2019un co\xE9quipier \u2014 les r\xE9ponses sont priv\xE9es au soumetteur.","detail.load_failed.title":"Rapport indisponible","detail.load_failed.body":"Il a peut-\xEAtre \xE9t\xE9 supprim\xE9, ou vous n\u2019y avez plus acc\xE8s.","detail.load_failed.cta":"Retour","detail.send_failed":"Impossible d\u2019envoyer votre r\xE9ponse. R\xE9essayez.","detail.close_failed":"Impossible de marquer comme r\xE9solu. R\xE9essayez.","detail.reopen_failed":"Impossible de rouvrir le rapport. R\xE9essayez.","detail.history":"Historique du statut","detail.context.submitted_at":"Envoy\xE9","detail.context.page":"Page","detail.context.capture.manual":"Capture manuelle","detail.context.capture.html2canvas":"Capture automatique","detail.context.capture.display_media":"Partage d\u2019\xE9cran","detail.context.capture.none":"Sans capture","detail.author.staff":"Op\xE9rateur","detail.author.mcp":"\xC9quipe Mhosaic","detail.author.system":"Syst\xE8me","detail.tech.title":"Ce que nous avons re\xE7u","detail.tech.errors_one":"erreur","detail.tech.errors_many":"erreurs","detail.tech.device":"Appareil","detail.tech.device.viewport":"Fen\xEAtre","detail.tech.device.platform":"Plateforme","detail.tech.device.language":"Langue","detail.tech.device.timezone":"Fuseau horaire","detail.tech.device.connection":"Connexion","detail.tech.errors":"Erreurs d\u2019ex\xE9cution","detail.tech.console":"Console (20 derniers)","detail.tech.network":"R\xE9seau (15 derniers)","status.new":"Nouveau","status.in_progress":"En cours","status.awaiting_validation":"En attente de validation","status.closed":"Ferm\xE9","status.rejected":"Rejet\xE9","status.duplicate":"Doublon","status.wontfix":"Non corrig\xE9"},Jr={fr:Xr};function Zr(e){var r;if(!e)return null;let t=e.toLowerCase().split(/[-_]/)[0];return(r=Jr[t])!=null?r:null}function gt(e,t={}){var a;let r=(a=Zr(t.locale))!=null?a:{};return{...Yr,...r,...e}}Z();V();V();var Ht="mhosaic.boardView.";function Nt(e){try{let t=localStorage.getItem(Ht+e);if(!t)return{};let r=JSON.parse(t);return r&&typeof r=="object"?r:{}}catch(t){return{}}}function Qt(e,t){try{localStorage.setItem(Ht+e,JSON.stringify(t))}catch(r){}}V();Z();Z();var uo=0;function o(e,t,r,a,n,i){t||(t={});var s,l,u=t;if("ref"in u)for(l in u={},t)l=="ref"?s=t[l]:u[l]=t[l];var c={type:e,props:u,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--uo,__i:-1,__u:0,__source:n,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)u[l]===void 0&&(u[l]=s[l]);return F.vnode&&F.vnode(c),c}function Ot({comment:e,strings:t}){let r=e.is_mine,a=!r&&e.author_source==="mcp",n=!r&&e.author_source==="system",i=a?"mcp":n?"system":"staff",s=i==="mcp"?"detail.author.mcp":i==="system"?"detail.author.system":"detail.author.staff",l=e.author_label||t[s];return o("div",{class:`comment-bubble ${r?"is-mine":"is-other"}`,children:[!r&&l&&o("div",{class:`comment-author comment-author--${i}`,children:l}),o("div",{class:"comment-body",children:e.body}),o("div",{class:"comment-time",children:fo(e.created_at)})]})}function fo(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"short",timeStyle:"short"})}catch(t){return e}}var mo=["image/png","image/jpeg","image/webp"];function Wt(e){return mo.includes(e.type)?e.size>10485760?{kind:"size",maxMb:10485760/(1024*1024)}:null:{kind:"type"}}function ue(e,t=80){if(e.length<=t)return e;let r=Math.floor((t-1)/2),a=t-1-r;return`${e.slice(0,r)}\u2026${e.slice(e.length-a)}`}function tt(e){if(!e)return;let t;try{t=new URL(e)}catch(r){return}if(t.protocol==="https:"||t.protocol==="http:"&&(t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="[::1]"))return t.toString()}var bo=3e4;function Ae({api:e,externalId:t,reportId:r,strings:a,onBack:n,canModerate:i=!0,variant:s="modal"}){var K,O,W;let[l,u]=q(null),[c,b]=q(null),[d,h]=q(""),[g,S]=q(!1),[k,v]=q(!1),[f,m]=q(!1),p=N(!0),x=async()=>{try{let z=await e.getReport(r,t);if(!p.current)return;u(z),b(null)}catch(z){if(typeof console!="undefined"&&console.warn("[mhosaic] getReport:",z),!p.current)return;b("load_failed")}};$(()=>{p.current=!0,x();let z=setInterval(()=>{x()},bo);return()=>{p.current=!1,clearInterval(z)}},[r,t]);let E=async()=>{if(!(!d.trim()||g)){S(!0);try{let z=`${r}:${Date.now()}`,Q=await e.addComment(r,t,d.trim(),z);if(!p.current)return;h(""),u(G=>G&&{...G,comments:go(G.comments,Q)}),x()}catch(z){if(typeof console!="undefined"&&console.warn("[mhosaic] addComment:",z),!p.current)return;b(a["detail.send_failed"])}finally{p.current&&S(!1)}}},P=async()=>{if(!(k||f)){v(!0);try{let z=await e.closeAsResolved(r,t);if(!p.current)return;u(z)}catch(z){if(typeof console!="undefined"&&console.warn("[mhosaic] closeAsResolved:",z),!p.current)return;b(a["detail.close_failed"])}finally{p.current&&v(!1)}}},w=async()=>{if(!(k||f)){m(!0);try{let z=await e.reopenUnresolved(r,t);if(!p.current)return;u(z)}catch(z){if(typeof console!="undefined"&&console.warn("[mhosaic] reopenUnresolved:",z),!p.current)return;b(a["detail.reopen_failed"])}finally{p.current&&m(!1)}}};if(!l&&!c)return o("div",{class:"mine-loading",children:a["mine.loading"]});if(!l)return o("div",{class:"report-detail-empty-state",role:"alert",children:[o("p",{class:"report-detail-empty-state-title",children:a["detail.load_failed.title"]}),o("p",{class:"report-detail-empty-state-body",children:a["detail.load_failed.body"]}),o("button",{type:"button",class:"btn",onClick:n,children:["\u2190 ",a["detail.load_failed.cta"]]})]});let A=(K=l.is_mine)!=null?K:i,T=A&&l.status==="awaiting_validation",M=A;return o("div",{class:`report-detail variant-${s}`,children:[s==="modal"&&o("div",{class:"report-detail-header",children:[o("button",{type:"button",class:"btn",onClick:n,children:["\u2190 ",a["detail.back"]]}),o("span",{class:`pill pill-status pill-status--${l.status}`,children:(O=a[`status.${l.status}`])!=null?O:l.status})]}),s==="board"&&o("div",{class:"report-detail-header report-detail-header--board",children:[o("button",{type:"button",class:"btn btn--ghost report-detail-back",onClick:n,"aria-label":a["board.back"],children:["\u2190 ",a["board.back"]]}),o("span",{class:`pill pill-status pill-status--${l.status}`,children:(W=a[`status.${l.status}`])!=null?W:l.status})]}),o("div",{class:"report-detail-body",children:[o(ho,{detail:l,strings:a}),o("p",{class:"report-detail-description",children:l.description}),l.screenshot_url&&(()=>{let z=tt(l.screenshot_url);return z?o("a",{class:"report-detail-screenshot",href:z,target:"_blank",rel:"noopener noreferrer",children:o("img",{src:l.screenshot_url,alt:"",loading:"lazy"})}):o("div",{class:"report-detail-screenshot",children:o("img",{src:l.screenshot_url,alt:"",loading:"lazy"})})})(),o("h3",{class:"report-detail-section",children:a["detail.thread"]}),l.comments.length===0?o("p",{class:"report-detail-empty",children:a["detail.no_replies"]}):o("ul",{class:"report-comments",children:l.comments.map(z=>o("li",{children:o(Ot,{comment:z,strings:a})}))}),l.status_history&&l.status_history.length>0&&o(Ro,{rows:l.status_history,strings:a}),l.technical_context&&o(_o,{ctx:l.technical_context,strings:a}),M?o("div",{class:"report-compose",children:[o("textarea",{value:d,placeholder:a["detail.compose_placeholder"],onInput:z=>h(z.target.value),disabled:g}),o("div",{class:"report-compose-actions",children:[T&&o("button",{type:"button",class:"btn",onClick:P,disabled:k||f,children:k?a["detail.close_busy"]:a["detail.close_cta"]}),T&&o("button",{type:"button",class:"btn btn--ghost",onClick:w,disabled:k||f,children:f?a["detail.reopen_busy"]:a["detail.reopen_cta"]}),o("button",{type:"button",class:"btn btn--primary",onClick:E,disabled:!d.trim()||g,children:g?a["detail.compose_sending"]:a["detail.compose_send"]})]})]}):o("p",{class:"report-detail-teammate-notice",role:"note",children:a["detail.teammate_notice"]}),c&&o("div",{class:"error",children:c})]})]})}function go(e,t){return e.some(r=>r.id===t.id)?e:[...e,t]}function ho({detail:e,strings:t}){var n;let r=`detail.context.capture.${e.capture_method}`,a=(n=t[r])!=null?n:e.capture_method;return o("div",{class:"report-detail-context",children:[o("div",{class:"report-detail-context-pills",children:[o("span",{class:"pill pill-type",children:t[`type.${e.feedback_type}`]}),o("span",{class:`pill pill-severity pill-severity--${e.severity}`,children:t[`severity.${e.severity}`]}),o("span",{class:"pill pill-capture",children:a})]}),o("div",{class:"report-detail-context-line",children:[o("span",{class:"report-detail-context-label",children:t["detail.context.submitted_at"]}),o("span",{children:jt(e.created_at)})]}),e.page_url&&(()=>{let i=tt(e.page_url);return o("div",{class:"report-detail-context-line",title:e.page_url,children:[o("span",{class:"report-detail-context-label",children:t["detail.context.page"]}),i?o("a",{class:"report-detail-context-url",href:i,target:"_blank",rel:"noopener noreferrer",children:ue(e.page_url,64)}):o("span",{class:"report-detail-context-url",children:ue(e.page_url,64)})]})})()]})}function jt(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}catch(t){return e}}var vo=20,yo=15;function _o({ctx:e,strings:t}){var c,b,d;let r=(c=e.errors)!=null?c:[],a=((b=e.consoleLogs)!=null?b:[]).slice(-vo),n=((d=e.networkRequests)!=null?d:[]).slice(-yo),i=e.device;if(!(!!i||r.length>0||a.length>0||n.length>0))return null;let l=r.length,u=l>0?`${t["detail.tech.title"]} \xB7 ${l} ${l===1?t["detail.tech.errors_one"]:t["detail.tech.errors_many"]}`:t["detail.tech.title"];return o("details",{class:"report-detail-tech",children:[o("summary",{children:u}),o("div",{class:"tech-body",children:[i&&o(xo,{device:i,strings:t}),r.length>0&&o(wo,{errors:r,strings:t}),a.length>0&&o(ko,{logs:a,strings:t}),n.length>0&&o(So,{rows:n,strings:t})]})]})}function xo({device:e,strings:t}){let r=[];if(e!=null&&e.viewport){let a=e.viewport.dpr?` @${e.viewport.dpr}x`:"";r.push({label:t["detail.tech.device.viewport"],value:`${e.viewport.w}\xD7${e.viewport.h}${a}`})}return e!=null&&e.platform&&r.push({label:t["detail.tech.device.platform"],value:e.platform}),e!=null&&e.language&&r.push({label:t["detail.tech.device.language"],value:e.language}),e!=null&&e.timezone&&r.push({label:t["detail.tech.device.timezone"],value:e.timezone}),e!=null&&e.connection&&r.push({label:t["detail.tech.device.connection"],value:e.connection}),r.length===0?null:o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.device"]}),o("dl",{class:"tech-device",children:r.map(a=>o(U,{children:[o("dt",{children:a.label}),o("dd",{children:a.value})]}))})]})}function wo({errors:e,strings:t}){return o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.errors"]}),o("ul",{class:"tech-errors",children:e.map(r=>o("li",{children:[o("div",{class:"tech-errors-msg",children:r.message}),r.stack&&o("pre",{class:"tech-errors-stack",children:Co(r.stack)})]}))})]})}function ko({logs:e,strings:t}){return o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.console"]}),o("ul",{class:"tech-console",children:e.map(r=>o("li",{class:`tech-console-row tech-console-row--${r.level}`,children:[o("span",{class:"tech-console-level",children:r.level}),o("span",{class:"tech-console-msg",children:r.message})]}))})]})}function So({rows:e,strings:t}){return o("div",{class:"tech-section",children:[o("h4",{children:t["detail.tech.network"]}),o("ul",{class:"tech-network",children:e.map(r=>{let a=r.status>=400||r.status===0;return o("li",{class:`tech-network-row${a?" tech-network-row--fail":""}`,children:[o("span",{class:"tech-network-status",children:r.status||"\u2014"}),o("span",{class:"tech-network-method",children:r.method}),o("span",{class:"tech-network-url",title:r.url,children:ue(r.url,56)}),o("span",{class:"tech-network-time",children:[Math.round(r.durationMs),"ms"]})]})})})]})}function Co(e){let t=e.split(`
4
598
  `);return t.length<=12?e:t.slice(0,12).join(`
5
599
  `)+`
6
- \u2026`}function Br({rows:e,strings:t}){return o("div",{class:"report-detail-history",children:[o("h3",{class:"report-detail-section",children:t["detail.history"]}),o("ol",{class:"status-history",children:e.map(r=>{var s,c;let n=(s=t[`status.${r.from_status}`])!=null?s:r.from_status,a=(c=t[`status.${r.to_status}`])!=null?c:r.to_status,i=r.changed_by_source==="mcp"?"detail.author.mcp":r.changed_by_source==="system"?"detail.author.system":"detail.author.staff";return o("li",{class:"status-history-row",children:[o("span",{class:"status-history-time",children:Rt(r.created_at)}),o("span",{class:"status-history-transition",children:[o("span",{class:`pill pill-status pill-status--${r.from_status}`,children:n}),o("span",{class:"status-history-arrow","aria-hidden":"true",children:"\u2192"}),o("span",{class:`pill pill-status pill-status--${r.to_status}`,children:a})]}),o("span",{class:`status-history-source status-history-source--${r.changed_by_source}`,children:t[i]})]})})})]})}var Fr=3e4,Ar=["recent","oldest","updated","severity","status"],Lr=["new","in_progress","awaiting_validation","closed","rejected"],Ir=["bug","feature","question","praise","typo"],$r=["blocker","high","medium","low"];function Et({api:e,externalId:t,strings:r}){let[n,a]=R(()=>xt(t));K(()=>{wt(t,n)},[t,Ct(n)]);let[i,s]=R(null),[c,f]=R(null),[d,h]=R(!0),[p,g]=R(null),[b,x]=R(null),[_,w]=R(0),[m,u]=R(0),l=Q(()=>{var M,E,L,P,A,H;return((E=(M=n.status)==null?void 0:M.length)!=null?E:0)+((P=(L=n.type)==null?void 0:L.length)!=null?P:0)+((H=(A=n.severity)==null?void 0:A.length)!=null?H:0)+(n.q?1:0)+(n.mine?1:0)},[n]);K(()=>{let M=!1,E=null,L=async()=>{try{let[P,A]=await Promise.all([e.listBoard(t,n),e.fetchBoardKpis(t,n)]);if(M)return;s(P),f(A),g(null)}catch(P){if(M)return;g(P instanceof Error?P.message:String(P))}finally{M||h(!1),M||(E=setTimeout(L,Fr))}};return h(!0),L(),()=>{M=!0,E&&clearTimeout(E)}},[e,t,Ct(n),m]);let y=Q(()=>{var M;return!b||!i?null:(M=i.results.find(E=>E.id===b))!=null?M:null},[b,i]),C=M=>{x(M.id),w(E=>E+1)};return o("div",{class:"board-view",children:[o(Dr,{strings:r,kpis:c}),o(Wr,{filters:n,onChange:a,activeCount:l,strings:r}),o("div",{class:"board-body",children:[o("div",{class:"board-list-wrap","aria-busy":d&&!i,children:[p&&o("div",{class:"board-error",role:"alert",children:[o("span",{children:r["board.list.error"]}),o("button",{type:"button",class:"btn btn--ghost",onClick:()=>{g(null),h(!0),u(M=>M+1)},children:r["board.retry"]})]}),!p&&d&&!i&&o(jr,{}),!p&&i&&i.results.length===0&&!d&&o(Ur,{strings:r}),!p&&i&&i.results.length>0&&o(Hr,{rows:i.results,selectedId:b,onPick:C,strings:r,total:i.count})]}),o("div",{class:`board-detail-wrap ${y?"has-selection":""}`,children:y?o(ye,{api:e,externalId:t,reportId:y.id,strings:r,onBack:()=>x(null),canModerate:y.is_mine,variant:"board"},_):o("div",{class:"board-detail-empty",children:[o(Gr,{}),o("p",{children:r["board.detail.empty"]})]})})]})]})}function Dr({strings:e,kpis:t}){let r=(t==null?void 0:t.scope)==="project"?e["board.scope.project"]:e["board.scope.mine"];return o("header",{class:"board-header",children:[o("div",{class:"board-header-title",children:[o("span",{class:"board-header-emoji","aria-hidden":"true",children:"\u{1F4CB}"}),o("div",{children:[o("h2",{class:"board-header-h",children:e["tab.board"]}),o("p",{class:"board-header-sub",children:t?`${t.total} \xB7 ${r}`:r})]})]}),o(Kr,{kpis:t,strings:e})]})}function Kr({kpis:e,strings:t}){var n,a,i,s,c,f;let r=[{key:"new",label:t["board.kpi.new"],value:String((a=(n=e==null?void 0:e.by_status)==null?void 0:n.new)!=null?a:0),tone:"tone-new"},{key:"in_progress",label:t["board.kpi.in_progress"],value:String((s=(i=e==null?void 0:e.by_status)==null?void 0:i.in_progress)!=null?s:0),tone:"tone-progress"},{key:"awaiting_validation",label:t["board.kpi.awaiting_validation"],value:String((f=(c=e==null?void 0:e.by_status)==null?void 0:c.awaiting_validation)!=null?f:0),tone:"tone-validation"},{key:"rate",label:t["board.kpi.resolution_rate"],value:e?`${Math.round((e.resolution_rate||0)*100)}%`:"\u2014",tone:"tone-rate"}];return o("div",{class:`board-kpi-strip ${e?"is-ready":"is-loading"}`,"aria-live":"polite",children:r.map(d=>o("div",{class:`board-kpi-card ${d.tone}`,children:[o("div",{class:"board-kpi-value",children:d.value}),o("div",{class:"board-kpi-label",children:d.label})]},d.key))})}function Wr({filters:e,onChange:t,activeCount:r,strings:n}){var p,g,b,x,_,w,m,u;let a=l=>{if(l===""){let{status:y,...C}=e;t(C)}else t({...e,status:[l]})},i=l=>{if(l===""){let{type:y,...C}=e;t(C)}else t({...e,type:[l]})},s=l=>{if(l===""){let{severity:y,...C}=e;t(C)}else t({...e,severity:[l]})},c=l=>t({...e,ordering:l}),f=l=>t({...e,q:l}),d=()=>{if(e.mine){let{mine:l,...y}=e;t(y)}else t({...e,mine:!0})},h=()=>t({});return o("div",{class:"board-filters",children:[o("select",{class:"board-filter-select","aria-label":n["board.sort"],value:(p=e.ordering)!=null?p:"recent",onChange:l=>c(l.target.value),children:Ar.map(l=>o("option",{value:l,children:n[`board.sort.${l}`]},l))}),o("select",{class:"board-filter-select","aria-label":n["board.filter.status"],value:(b=(g=e.status)==null?void 0:g[0])!=null?b:"",onChange:l=>a(l.target.value),children:[o("option",{value:"",children:n["board.filter.status"]}),Lr.map(l=>{var y;return o("option",{value:l,children:(y=n[`board.kpi.${l}`])!=null?y:l},l)})]}),o("select",{class:"board-filter-select","aria-label":n["board.filter.type"],value:(_=(x=e.type)==null?void 0:x[0])!=null?_:"",onChange:l=>i(l.target.value),children:[o("option",{value:"",children:n["board.filter.type"]}),Ir.map(l=>{var y;return o("option",{value:l,children:(y=n[`type.${l}`])!=null?y:l},l)})]}),o("select",{class:"board-filter-select","aria-label":n["board.filter.severity"],value:(m=(w=e.severity)==null?void 0:w[0])!=null?m:"",onChange:l=>s(l.target.value),children:[o("option",{value:"",children:n["board.filter.severity"]}),$r.map(l=>{var y;return o("option",{value:l,children:(y=n[`severity.${l}`])!=null?y:l},l)})]}),o("input",{type:"search",class:"board-filter-search",placeholder:n["board.filter.search.placeholder"],value:(u=e.q)!=null?u:"",onInput:l=>f(l.target.value)}),o("label",{class:"board-filter-toggle",children:[o("input",{type:"checkbox",checked:!!e.mine,onChange:d}),o("span",{children:n["board.filter.mine"]})]}),r>0&&o("button",{type:"button",class:"board-filter-clear",onClick:h,children:[o(Vr,{}),n["board.filter.clear"]]})]})}function Hr({rows:e,selectedId:t,onPick:r,strings:n,total:a}){return o(N,{children:[o("div",{class:"board-list-count",children:n["board.list.count"].replace("{n}",String(e.length)).replace("{total}",String(a))}),o("ul",{class:"board-list",role:"list",children:e.map(i=>o(Nr,{row:i,selected:i.id===t,onPick:r,strings:n},i.id))})]})}function Nr({row:e,selected:t,onPick:r,strings:n}){var i,s;let a=e.is_mine?n["board.list.you"]:e.author_label||"\u2014";return o("li",{children:o("button",{type:"button",class:`board-row ${t?"is-selected":""}`,onClick:()=>r(e),"aria-pressed":t,children:[o("div",{class:"board-row-badges",children:[o("span",{class:`badge status-${e.status}`,children:(i=n[`status.${e.status}`])!=null?i:e.status}),o("span",{class:`badge severity-${e.severity}`,children:(s=n[`severity.${e.severity}`])!=null?s:e.severity})]}),o("div",{class:"board-row-description",children:e.description}),o("div",{class:"board-row-meta",children:[o("span",{class:"board-row-author",children:a}),e.comment_count>0&&o("span",{class:"board-row-comments",children:[o(Or,{})," ",e.comment_count]}),o("span",{class:"board-row-time",children:Xr(e.created_at)})]})]})})}function Ur({strings:e}){return o("div",{class:"board-empty",children:[o(qr,{}),o("h3",{children:e["board.list.empty.title"]}),o("p",{children:e["board.list.empty.description"]})]})}function jr(){return o("ul",{class:"board-list board-list-skeleton","aria-hidden":"true",children:Array.from({length:5}).map((e,t)=>o("li",{children:o("div",{class:"board-row skeleton-row",children:[o("div",{class:"skeleton-line skeleton-badges"}),o("div",{class:"skeleton-line skeleton-text"}),o("div",{class:"skeleton-line skeleton-text short"})]})},t))})}function Or(){return o("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:o("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}function Vr(){return o("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[o("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),o("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function qr(){return o("svg",{width:"64",height:"64",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:[o("circle",{cx:"32",cy:"32",r:"28",stroke:"currentColor","stroke-opacity":"0.18","stroke-width":"2"}),o("path",{d:"M22 32h20M32 22v20",stroke:"currentColor","stroke-opacity":"0.35","stroke-width":"2","stroke-linecap":"round"})]})}function Gr(){return o("svg",{width:"80",height:"80",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:[o("rect",{x:"10",y:"12",width:"44",height:"36",rx:"4",stroke:"currentColor","stroke-opacity":"0.22","stroke-width":"2"}),o("line",{x1:"18",y1:"22",x2:"46",y2:"22",stroke:"currentColor","stroke-opacity":"0.22","stroke-width":"2","stroke-linecap":"round"}),o("line",{x1:"18",y1:"30",x2:"38",y2:"30",stroke:"currentColor","stroke-opacity":"0.18","stroke-width":"2","stroke-linecap":"round"}),o("line",{x1:"18",y1:"38",x2:"32",y2:"38",stroke:"currentColor","stroke-opacity":"0.14","stroke-width":"2","stroke-linecap":"round"})]})}function Ct(e){var t,r,n,a,i;return JSON.stringify({s:(t=e.status)==null?void 0:t.slice().sort(),t:(r=e.type)==null?void 0:r.slice().sort(),sv:(n=e.severity)==null?void 0:n.slice().sort(),q:(a=e.q)!=null?a:"",m:!!e.mine,o:(i=e.ordering)!=null?i:""})}function Xr(e){let t=new Date(e).getTime();if(Number.isNaN(t))return"";let r=Math.max(0,Date.now()-t),n=Math.floor(r/6e4);if(n<1)return"just now";if(n<60)return`${n}m`;let a=Math.floor(n/60);if(a<24)return`${a}h`;let i=Math.floor(a/24);return i<7?`${i}d`:`${Math.floor(i/7)}w`}function Jr(e){return`pill pill-status pill-status--${e}`}function Zr(e){return`pill pill-severity pill-severity--${e}`}function Yr(){return"pill pill-type"}function Qr(e){let t=Date.parse(e);if(!Number.isFinite(t))return"";let r=Math.max(1,Math.round((Date.now()-t)/1e3));if(r<60)return`${r}s`;let n=Math.round(r/60);if(n<60)return`${n}m`;let a=Math.round(n/60);return a<48?`${a}h`:`${Math.round(a/24)}d`}function eo(e,t){return e===1?t["mine.replies_one"]:t["mine.replies_many"].replace("{count}",String(e))}function _e({row:e,strings:t,onClick:r}){var a;let n=e.description.length>120?e.description.slice(0,117)+"\u2026":e.description;return o("button",{type:"button",class:"mine-row",onClick:r,children:[o("div",{class:"mine-row-pills",children:[o("span",{class:Jr(e.status),children:(a=t[`status.${e.status}`])!=null?a:e.status}),o("span",{class:Yr(),children:t[`type.${e.feedback_type}`]}),o("span",{class:Zr(e.severity),children:t[`severity.${e.severity}`]})]}),o("div",{class:"mine-row-preview",children:n}),o("div",{class:"mine-row-meta",children:[o("span",{children:Qr(e.updated_at||e.created_at)}),e.comment_count>0&&o("span",{children:["\xB7 ",eo(e.comment_count,t)]})]})]})}var to=3e4;function ro(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"";let r=(t.getUTCDay()+6)%7;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-r)).toISOString().slice(0,10)}function oo(e){let t=new Map;for(let r of e){let n=ro(r.resolved_at);if(!n)continue;let a=t.get(n);a?a.push(r):t.set(n,[r])}return Array.from(t.entries()).sort(([r],[n])=>r<n?1:-1).map(([r,n])=>({weekKey:r,label:no(r),rows:n}))}function no(e){try{return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(t){return e}}function Tt({api:e,externalId:t,strings:r,onSelect:n}){let[a,i]=R(null),[s,c]=R(null),[f,d]=R(!1),h=W(!0),p=async()=>{d(!0),c(null);try{let _=await e.listChangelog(t);if(!h.current)return;i(_)}catch(_){if(typeof console!="undefined"&&console.warn("[mhosaic] listChangelog:",_),!h.current)return;c(r["mine.error"])}finally{h.current&&d(!1)}};K(()=>{h.current=!0,p();let _=setInterval(()=>{p()},to);return()=>{h.current=!1,clearInterval(_)}},[t]);let g=Q(()=>a?oo(a):[],[a]),b=a===null&&!s,x=a!==null&&a.length===0;return o("div",{class:"mine-list",children:[o("div",{class:"mine-list-header",children:[o("h2",{children:r["tab.changelog"]}),o("button",{type:"button",class:"btn",onClick:()=>{p()},disabled:f,children:f?r["mine.loading"]:r["mine.refresh"]})]}),b&&o("div",{class:"mine-loading",children:r["mine.loading"]}),s&&o("div",{class:"error",children:s}),x&&o("div",{class:"mine-empty",children:[o("strong",{children:r["changelog.empty.title"]}),o("p",{children:r["changelog.empty.body"]})]}),g.length>0&&o("div",{class:"changelog-groups",children:g.map(_=>o("section",{class:"changelog-group",children:[o("header",{class:"changelog-group-header",children:[o("span",{class:"changelog-group-marker","aria-hidden":"true",children:"\u25CF"}),o("span",{class:"changelog-group-label",children:r["changelog.week_of"].replace("{date}",_.label)}),o("span",{class:"changelog-group-rule","aria-hidden":"true"}),o("span",{class:"changelog-group-count",children:r[_.rows.length===1?"changelog.resolved_one":"changelog.resolved_many"].replace("{count}",String(_.rows.length))})]}),o("ul",{class:"mine-rows",children:_.rows.map(w=>o("li",{children:o(_e,{row:w,strings:r,onClick:()=>n(w)})}))})]},_.weekKey))})]})}function ao(){return o("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:[o("path",{d:"m8 2 1.88 1.88"}),o("path",{d:"M14.12 3.88 16 2"}),o("path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"}),o("path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"}),o("path",{d:"M12 20v-9"}),o("path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5"}),o("path",{d:"M6 13H2"}),o("path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4"}),o("path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4"}),o("path",{d:"M22 13h-4"}),o("path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4"})]})}function Mt({label:e,onClick:t}){return o("button",{type:"button",class:"fab","aria-label":e,title:e,onClick:t,children:o(ao,{})})}var Pt=["#ef4444","#f59e0b","#10b981","#3b82f6","#ffffff"],io=.35;function zt(e,t,r){if(e.save(),e.strokeStyle=t.color,e.fillStyle=t.color,e.lineWidth=t.lineWidth,e.lineCap="round",e.lineJoin="round",t.kind==="rectangle")e.strokeRect(t.x,t.y,t.w,t.h);else if(t.kind==="arrow")so(e,t.x1,t.y1,t.x2,t.y2);else if(t.kind==="freehand"){if(t.points.length<2){e.restore();return}e.beginPath(),e.moveTo(t.points[0].x,t.points[0].y);for(let n=1;n<t.points.length;n++)e.lineTo(t.points[n].x,t.points[n].y);e.stroke()}else if(t.kind==="text"){e.font=`bold ${t.fontSize}px -apple-system, BlinkMacSystemFont, sans-serif`,e.textBaseline="top";let n=e.measureText(t.text),a=4,i=n.width+a*2,s=t.fontSize+a*2;e.fillStyle="rgba(0, 0, 0, 0.6)",e.fillRect(t.x-a,t.y-a,i,s),e.fillStyle=t.color,e.fillText(t.text,t.x,t.y)}else t.kind==="highlight"?(e.globalAlpha=io,e.fillRect(xe(t.x,t.w),xe(t.y,t.h),Math.abs(t.w),Math.abs(t.h))):t.kind==="blur"&&lo(e,t,r);e.restore()}function xe(e,t){return t<0?e+t:e}function so(e,t,r,n,a){let s=Math.atan2(a-r,n-t);e.beginPath(),e.moveTo(t,r),e.lineTo(n,a),e.stroke(),e.beginPath(),e.moveTo(n,a),e.lineTo(n-14*Math.cos(s-Math.PI/6),a-14*Math.sin(s-Math.PI/6)),e.lineTo(n-14*Math.cos(s+Math.PI/6),a-14*Math.sin(s+Math.PI/6)),e.closePath(),e.fill()}function lo(e,t,r){if(!r)return;let n=xe(t.x,t.w),a=xe(t.y,t.h),i=Math.abs(t.w),s=Math.abs(t.h);if(i<2||s<2)return;let c=Math.max(4,t.tile);for(let f=a;f<a+s;f+=c)for(let d=n;d<n+i;d+=c){let h=Math.min(c,n+i-d),p=Math.min(c,a+s-f);e.drawImage(r,d,f,h,p,d,f,h,p)}e.imageSmoothingEnabled=!1;for(let f=a;f<a+s;f+=c)for(let d=n;d<n+i;d+=c){let h=Math.min(c,n+i-d),p=Math.min(c,a+s-f);e.drawImage(r,d,f,1,1,d,f,h,p)}e.imageSmoothingEnabled=!0}var G={rect:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("rect",{x:"2",y:"3",width:"12",height:"10",fill:"none",stroke:"currentColor","stroke-width":"1.5"})}),arrow:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M2 8h11M9 4l4 4-4 4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),pencil:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M11.5 2.5l2 2L5 13H3v-2l8.5-8.5z",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linejoin":"round"})}),text:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M3 3h10M8 3v10M5 13h6",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})}),highlight:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[o("path",{d:"M3 13l3-3L11 5l-2-2-5 5-3 3v2h2zM10 4l2 2",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}),o("path",{d:"M2 14h12",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]}),blur:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[o("rect",{x:"2",y:"2",width:"4",height:"4",fill:"currentColor",opacity:"0.85"}),o("rect",{x:"7",y:"2",width:"3",height:"3",fill:"currentColor",opacity:"0.55"}),o("rect",{x:"11",y:"2",width:"3",height:"4",fill:"currentColor",opacity:"0.4"}),o("rect",{x:"2",y:"7",width:"3",height:"3",fill:"currentColor",opacity:"0.6"}),o("rect",{x:"6",y:"7",width:"3",height:"3",fill:"currentColor",opacity:"0.85"}),o("rect",{x:"10",y:"7",width:"4",height:"3",fill:"currentColor",opacity:"0.5"}),o("rect",{x:"2",y:"11",width:"4",height:"3",fill:"currentColor",opacity:"0.4"}),o("rect",{x:"7",y:"11",width:"3",height:"3",fill:"currentColor",opacity:"0.65"}),o("rect",{x:"11",y:"11",width:"3",height:"3",fill:"currentColor",opacity:"0.85"})]}),undo:o("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M4 7l3-3M4 7l3 3M4 7h6a3 3 0 0 1 0 6H7",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),redo:o("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M12 7l-3-3M12 7l-3 3M12 7H6a3 3 0 0 0 0 6h2",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),trash:o("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M3 4h10M6 4V2.5h4V4M5 4l.5 9h5L11 4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),close:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M4 4l8 8M12 4l-8 8",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})})};function Bt({imageBlob:e,strings:t,onSave:r,onCancel:n}){let a=W(null),i=W(null),s=W(null),[c,f]=R("rectangle"),[d,h]=R(Pt[0]),[p,g]=R([]),[b,x]=R([]),[_,w]=R([]),m=W(!1),[u,l]=R(null),[y,C]=R(!1),[M,E]=R(!1),L=W(1);function P(v){g(k=>(x(z=>[...z,k]),[...k,v])),w([])}function A(){g(v=>(x(k=>[...k,v]),[])),w([])}function H(){x(v=>{if(v.length===0)return v;let k=v[v.length-1];return g(z=>(w(B=>[z,...B]),k)),v.slice(0,-1)})}function U(){w(v=>{if(v.length===0)return v;let k=v[0];return g(z=>(x(B=>[...B,z]),k)),v.slice(1)})}$e(()=>{let v=k=>{k.key==="Escape"&&(k.stopPropagation(),n())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[n]),K(()=>{let v=k=>{if(!(k.metaKey||k.ctrlKey))return;let B=k.key.toLowerCase();B==="z"?(k.preventDefault(),k.stopPropagation(),k.shiftKey?U():H()):B==="y"&&(k.preventDefault(),k.stopPropagation(),U())};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[b,_,p]),K(()=>{let v=URL.createObjectURL(e),k=new Image;return k.onload=()=>{s.current=k,C(!0)},k.src=v,()=>URL.revokeObjectURL(v)},[e]),$e(()=>{if(!y||!a.current||!s.current||!i.current)return;let v=s.current,z=i.current.clientWidth-16,B=window.innerHeight*.65,q=Math.min(z/v.width,B/v.height,1);L.current=q;let ee=a.current;ee.width=v.width,ee.height=v.height,ee.style.width=`${v.width*q}px`,ee.style.height=`${v.height*q}px`,O()},[y]),K(()=>{O()},[p,u]);function O(){let v=a.current,k=s.current;if(!v||!k)return;let z=v.getContext("2d");if(z){z.clearRect(0,0,v.width,v.height),z.drawImage(k,0,0);for(let B of p)zt(z,B,k);u&&zt(z,u,k)}}function T(v){let z=a.current.getBoundingClientRect();return{x:(v.clientX-z.left)/L.current,y:(v.clientY-z.top)/L.current}}let X=v=>{if(!y)return;let{x:k,y:z}=T(v),B=a.current.width,q=Math.max(3,Math.round(B/400)),ee=Math.max(8,Math.round(B/80));if(c==="text"){let ke=window.prompt(t["annotator.text_prompt"]);ke&&ke.trim()&&P({kind:"text",x:k,y:z,text:ke.trim(),color:d,fontSize:Math.max(16,Math.round(B/50)),lineWidth:1});return}m.current=!0,c==="rectangle"?l({kind:"rectangle",x:k,y:z,w:0,h:0,color:d,lineWidth:q}):c==="arrow"?l({kind:"arrow",x1:k,y1:z,x2:k,y2:z,color:d,lineWidth:q}):c==="freehand"?l({kind:"freehand",points:[{x:k,y:z}],color:d,lineWidth:q}):c==="highlight"?l({kind:"highlight",x:k,y:z,w:0,h:0,color:d==="#ffffff"?"#fde047":d,lineWidth:1}):c==="blur"&&l({kind:"blur",x:k,y:z,w:0,h:0,color:"#000000",lineWidth:0,tile:ee})},V=v=>{if(!m.current)return;let{x:k,y:z}=T(v);l(B=>B&&(B.kind==="rectangle"||B.kind==="highlight"||B.kind==="blur"?{...B,w:k-B.x,h:z-B.y}:B.kind==="arrow"?{...B,x2:k,y2:z}:B.kind==="freehand"?{...B,points:[...B.points,{x:k,y:z}]}:B))},we=()=>{l(v=>(m.current&&v&&((v.kind==="rectangle"||v.kind==="highlight"||v.kind==="blur")&&Math.abs(v.w)<4&&Math.abs(v.h)<4||v.kind==="arrow"&&Math.hypot(v.x2-v.x1,v.y2-v.y1)<4||v.kind==="freehand"&&v.points.length<3||P(v)),null)),m.current=!1},S=async()=>{let v=a.current;if(v){E(!0);try{let k=await new Promise(z=>v.toBlob(z,"image/png",.92));k&&r(k)}finally{E(!1)}}},$=[{id:"rectangle",icon:G.rect,label:t["annotator.tool.rectangle"]},{id:"arrow",icon:G.arrow,label:t["annotator.tool.arrow"]},{id:"freehand",icon:G.pencil,label:t["annotator.tool.freehand"]},{id:"text",icon:G.text,label:t["annotator.tool.text"]},{id:"highlight",icon:G.highlight,label:t["annotator.tool.highlight"]},{id:"blur",icon:G.blur,label:t["annotator.tool.blur"]}];return o("div",{class:"annotator-backdrop",role:"presentation",onClick:v=>{v.target===v.currentTarget&&n()},children:o("div",{class:"annotator",role:"dialog","aria-modal":"true","aria-label":t["annotator.title"],children:[o("div",{class:"annotator-header",children:[o("span",{children:t["annotator.title"]}),o("button",{type:"button",class:"modal-close","aria-label":t["form.close"],onClick:n,children:G.close})]}),o("div",{class:"annotator-toolbar",children:[o("div",{class:"annotator-tools",children:$.map(v=>o("button",{type:"button",onClick:()=>f(v.id),title:v.label,"aria-label":v.label,"aria-pressed":c===v.id,class:`annotator-tool ${c===v.id?"is-active":""}`,children:v.icon},v.id))}),o("span",{class:"annotator-sep"}),o("div",{class:"annotator-colors",children:[Pt.map(v=>o("button",{type:"button",onClick:()=>h(v),"aria-label":v,"aria-pressed":d===v,class:`annotator-color ${d===v?"is-active":""}`,style:{backgroundColor:v}},v)),o("label",{class:"annotator-color annotator-color-picker",title:t["annotator.color_picker"],children:o("input",{type:"color",value:d,onInput:v=>h(v.target.value),"aria-label":t["annotator.color_picker"]})})]}),o("span",{class:"annotator-sep"}),o("button",{type:"button",class:"annotator-btn",onClick:H,disabled:b.length===0,title:t["annotator.undo"],children:[G.undo,o("span",{children:t["annotator.undo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:U,disabled:_.length===0,title:t["annotator.redo"],children:[G.redo,o("span",{children:t["annotator.redo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:A,disabled:p.length===0,children:[G.trash,o("span",{children:t["annotator.clear"]})]}),o("span",{class:"annotator-spacer"}),o("span",{class:"annotator-count",children:[p.length," ",t["annotator.count_suffix"]]})]}),o("div",{ref:i,class:"annotator-canvas-wrap",children:y?o("canvas",{ref:a,onMouseDown:X,onMouseMove:V,onMouseUp:we,onMouseLeave:we,class:"annotator-canvas"}):o("span",{class:"annotator-loading",children:t["annotator.loading"]})}),o("div",{class:"annotator-footer",children:[o("button",{type:"button",class:"btn",onClick:n,children:t["form.cancel"]}),o("button",{type:"button",class:"btn btn--primary",onClick:S,disabled:M||!y,children:M?t["annotator.applying"]:t["annotator.apply"]})]})]})})}var co=["bug","feature","question","praise","typo"],po=["blocker","high","medium","low"];function Ft({strings:e,onSubmit:t,onCancel:r,status:n,errorMessage:a}){let[i,s]=R(""),[c,f]=R("bug"),[d,h]=R("medium"),[p,g]=R(""),[b,x]=R(null),[_,w]=R(null),[m,u]=R(!1),[l,y]=R(!1),C=W(null),M=W(null),E=n==="submitting",L=E?e["form.submitting"]:e["form.submit"],P=typeof window!="undefined"?window.location.href:"";K(()=>()=>{_&&URL.revokeObjectURL(_)},[_]);let A=S=>{if(g(""),S instanceof File){let $=St(S);if($){g($.kind==="type"?e["form.screenshot.error_type"]:e["form.screenshot.error_size"].replace("{max}",String($.maxMb)));return}}_&&URL.revokeObjectURL(_),x(S),w(URL.createObjectURL(S))},H=()=>{_&&URL.revokeObjectURL(_),w(null),x(null),g(""),C.current&&(C.current.value="")},U=S=>{var v;let $=(v=S.target.files)==null?void 0:v[0];$&&A($)},O=S=>{S.preventDefault(),S.stopPropagation(),u(!0)},T=S=>{S.preventDefault(),S.stopPropagation(),S.currentTarget===S.target&&u(!1)},X=S=>{var v,k;S.preventDefault(),S.stopPropagation(),u(!1);let $=(k=(v=S.dataTransfer)==null?void 0:v.files)==null?void 0:k[0];$&&A($)};K(()=>{let S=M.current;if(!S)return;let $=v=>{var z;let k=(z=v.clipboardData)==null?void 0:z.items;if(k){for(let B of Array.from(k))if(B.kind==="file"&&B.type.startsWith("image/")){let q=B.getAsFile();if(q){v.preventDefault(),A(q);return}}}};return S.addEventListener("paste",$),()=>S.removeEventListener("paste",$)},[_]);let V=S=>{_&&URL.revokeObjectURL(_),x(S),w(URL.createObjectURL(S)),y(!1)};return o("form",{onSubmit:S=>{if(S.preventDefault(),!i.trim()){g(e["form.description.required"]);return}g("");let $={description:i.trim(),feedback_type:c,severity:d};b&&($.screenshot=b,$.capture_method="manual"),t($)},children:[o("h2",{children:e["form.title"]}),o("div",{class:"field",children:[o("label",{for:"mfb-desc",children:e["form.description.label"]}),o("textarea",{id:"mfb-desc",value:i,placeholder:e["form.description.placeholder"],onInput:S=>s(S.target.value)})]}),o("div",{class:"row",children:[o("div",{class:"field",children:[o("label",{for:"mfb-type",children:e["form.type.label"]}),o("select",{id:"mfb-type",value:c,onChange:S=>f(S.target.value),children:co.map(S=>o("option",{value:S,children:e[`type.${S}`]}))})]}),o("div",{class:"field",children:[o("label",{for:"mfb-sev",children:e["form.severity.label"]}),o("select",{id:"mfb-sev",value:d,onChange:S=>h(S.target.value),children:po.map(S=>o("option",{value:S,children:e[`severity.${S}`]}))})]})]}),o("div",{class:"field",children:[o("label",{children:e["form.screenshot.label"]}),o("input",{ref:C,type:"file",accept:"image/png,image/jpeg,image/webp",class:"mfb-sr-only",onChange:U,"aria-hidden":"true",tabIndex:-1}),_?o("div",{class:"screenshot-preview",children:[o("img",{src:_,alt:""}),o("div",{class:"screenshot-preview-actions",children:[o("button",{type:"button",class:"btn btn--primary screenshot-annotate",onClick:()=>y(!0),children:[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[o("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),o("path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]}),e["form.screenshot.annotate"]]}),o("button",{type:"button",class:"btn",onClick:H,children:[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:o("path",{d:"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6h14z"})}),e["form.screenshot.remove"]]})]})]}):o("div",{ref:M,class:`screenshot-dropzone ${m?"is-dragover":""}`,tabIndex:0,role:"button","aria-label":e["form.screenshot.label"],onClick:()=>{var S;return(S=C.current)==null?void 0:S.click()},onKeyDown:S=>{var $;(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),($=C.current)==null||$.click())},onDragOver:O,onDragLeave:T,onDrop:X,children:[o("svg",{class:"screenshot-icon",width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[o("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),o("polyline",{points:"17 8 12 3 7 8"}),o("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),o("div",{class:"screenshot-cta",children:[o("strong",{children:e["form.screenshot.cta_click"]}),", ",e["form.screenshot.cta_rest"]]}),o("div",{class:"screenshot-formats",children:e["form.screenshot.formats"]})]})]}),P&&o("div",{class:"page-context",title:P,children:[o("span",{class:"page-context-label",children:e["form.context.label"]}),o("span",{class:"page-context-url",children:ne(P,90)})]}),p&&o("div",{class:"error",children:p}),n==="error"&&a&&o("div",{class:"error",children:a}),n==="success"&&o("div",{class:"success",children:e["form.success"]}),o("div",{class:"actions",children:[o("button",{type:"button",class:"btn",onClick:r,disabled:E,children:e["form.cancel"]}),o("button",{type:"submit",class:"btn btn--primary",disabled:E,children:L})]}),l&&b&&o(Bt,{imageBlob:b,strings:e,onCancel:()=>y(!1),onSave:V})]})}function uo(e){let t={new:0,in_progress:0,awaiting_validation:0,resolved:0,total:0};for(let r of e)switch(t.total+=1,r.status){case"new":t.new+=1;break;case"in_progress":t.in_progress+=1;break;case"awaiting_validation":t.awaiting_validation+=1;break;case"closed":case"rejected":case"duplicate":case"wontfix":t.resolved+=1;break}return t}function fo(e){return e.total===0?null:Math.round((e.awaiting_validation+e.resolved)/e.total*100)}var mo={new:"new",in_progress:"in_progress",awaiting_validation:"awaiting_validation",closed:"resolved",rejected:"resolved",duplicate:"resolved",wontfix:"resolved"};function At(e,t){return t==="all"?e:e.filter(r=>mo[r.status]===t)}function Lt({rows:e,filter:t,onFilter:r,strings:n}){let a=uo(e),i=fo(a),s=[{key:"new",label:n["kpi.new"],value:String(a.new)},{key:"in_progress",label:n["kpi.in_progress"],value:String(a.in_progress)},{key:"awaiting_validation",label:n["kpi.awaiting_validation"],value:String(a.awaiting_validation)},{key:"resolved",label:n["kpi.resolution_rate"],value:i===null?"\u2014":`${i}%`}];return o("div",{class:"kpi-strip",role:"toolbar",children:s.map(c=>{let f=t===c.key,d=f?"all":c.key;return o("button",{type:"button",class:`kpi-cell kpi-cell--${c.key}${f?" is-active":""}`,onClick:()=>r(d),"aria-pressed":f,children:[o("span",{class:"kpi-value",children:c.value}),o("span",{class:"kpi-label",children:c.label})]})})})}var bo=3e4;function It({api:e,externalId:t,strings:r,onSelect:n}){var u;let[a,i]=R(null),[s,c]=R(null),[f,d]=R(!1),[h,p]=R("all"),g=W(!0),b=async()=>{d(!0),c(null);try{let l=await e.listMine(t);if(!g.current)return;i(l)}catch(l){if(typeof console!="undefined"&&console.warn("[mhosaic] listMine:",l),!g.current)return;c(r["mine.error"])}finally{g.current&&d(!1)}};K(()=>{g.current=!0,b();let l=setInterval(()=>{b()},bo);return()=>{g.current=!1,clearInterval(l)}},[t]);let x=a!==null&&a.length===0,_=a===null&&!s,w=a?At(a,h):null,m=!!a&&a.length>0&&((u=w==null?void 0:w.length)!=null?u:0)===0;return o("div",{class:"mine-list",children:[o("div",{class:"mine-list-header",children:[o("h2",{children:r["tab.mine"]}),o("button",{type:"button",class:"btn",onClick:()=>{b()},disabled:f,children:f?r["mine.loading"]:r["mine.refresh"]})]}),a&&a.length>0&&o(Lt,{rows:a,filter:h,onFilter:p,strings:r}),_&&o("div",{class:"mine-loading",children:r["mine.loading"]}),s&&o("div",{class:"error",children:s}),x&&o("div",{class:"mine-empty",children:[o("strong",{children:r["mine.empty.title"]}),o("p",{children:r["mine.empty.body"]})]}),m&&o("div",{class:"mine-empty",children:o("p",{children:r["mine.filter.empty"]})}),w&&w.length>0&&o("ul",{class:"mine-rows",children:w.map(l=>o("li",{children:o(_e,{row:l,strings:r,onClick:()=>n(l)})}))})]})}function $t({onDismiss:e,children:t,closeLabel:r="Close",expanded:n=!1}){let a=W(null),i=W(null);return K(()=>{var f;i.current=document.activeElement;let s=d=>{var p;if(d.key!=="Escape")return;let h=(p=a.current)==null?void 0:p.getRootNode();h instanceof ShadowRoot&&h.querySelector(".annotator-backdrop")||(d.stopPropagation(),e())};window.addEventListener("keydown",s);let c=(f=a.current)==null?void 0:f.querySelector("textarea, input, select, button");return c==null||c.focus(),()=>{window.removeEventListener("keydown",s);let d=i.current;d&&typeof d.focus=="function"&&d.focus()}},[e]),o("div",{class:`backdrop ${n?"is-expanded":""}`,role:"presentation",onClick:s=>{s.target===s.currentTarget&&e()},children:o("div",{ref:a,class:`modal ${n?"is-expanded":""}`,role:"dialog","aria-modal":"true",children:[o("button",{type:"button",class:"modal-close","aria-label":r,onClick:e,children:"\xD7"}),t]})})}var Dt=`
600
+ \u2026`}function Ro({rows:e,strings:t}){return o("div",{class:"report-detail-history",children:[o("h3",{class:"report-detail-section",children:t["detail.history"]}),o("ol",{class:"status-history",children:e.map(r=>{var s,l;let a=(s=t[`status.${r.from_status}`])!=null?s:r.from_status,n=(l=t[`status.${r.to_status}`])!=null?l:r.to_status,i=r.changed_by_source==="mcp"?"detail.author.mcp":r.changed_by_source==="system"?"detail.author.system":"detail.author.staff";return o("li",{class:"status-history-row",children:[o("span",{class:"status-history-time",children:jt(r.created_at)}),o("span",{class:"status-history-transition",children:[o("span",{class:`pill pill-status pill-status--${r.from_status}`,children:a}),o("span",{class:"status-history-arrow","aria-hidden":"true",children:"\u2192"}),o("span",{class:`pill pill-status pill-status--${r.to_status}`,children:n})]}),o("span",{class:`status-history-source status-history-source--${r.changed_by_source}`,children:t[i]})]})})})]})}var qo=3e4,Eo=["recent","oldest","updated","severity","status"],To=["new","in_progress","awaiting_validation","closed","rejected"],Po=["bug","feature","question","praise","typo"],Mo=["blocker","high","medium","low"];function Vt({api:e,externalId:t,strings:r}){let[a,n]=q(()=>Nt(t));$(()=>{Qt(t,a)},[t,Ut(a)]);let[i,s]=q(null),[l,u]=q(null),[c,b]=q(!0),[d,h]=q(null),[g,S]=q(null),[k,v]=q(0),[f,m]=q(0),p=X(()=>{var P,w,A,T,M,K;return((w=(P=a.status)==null?void 0:P.length)!=null?w:0)+((T=(A=a.type)==null?void 0:A.length)!=null?T:0)+((K=(M=a.severity)==null?void 0:M.length)!=null?K:0)+(a.q?1:0)+(a.mine?1:0)},[a]);$(()=>{let P=!1,w=null,A=async()=>{try{let[T,M]=await Promise.all([e.listBoard(t,a),e.fetchBoardKpis(t,a)]);if(P)return;s(T),u(M),h(null)}catch(T){if(P)return;h(T instanceof Error?T.message:String(T))}finally{P||b(!1),P||(w=setTimeout(A,qo))}};return b(!0),A(),()=>{P=!0,w&&clearTimeout(w)}},[e,t,Ut(a),f]);let x=X(()=>{var P;return!g||!i?null:(P=i.results.find(w=>w.id===g))!=null?P:null},[g,i]),E=P=>{S(P.id),v(w=>w+1)};return o("div",{class:"board-view",children:[o(Ao,{strings:r,kpis:l}),o(Lo,{filters:a,onChange:n,activeCount:p,strings:r}),o("div",{class:"board-body",children:[o("div",{class:"board-list-wrap","aria-busy":c&&!i,children:[d&&o("div",{class:"board-error",role:"alert",children:[o("span",{children:r["board.list.error"]}),o("button",{type:"button",class:"btn btn--ghost",onClick:()=>{h(null),b(!0),m(P=>P+1)},children:r["board.retry"]})]}),!d&&c&&!i&&o($o,{}),!d&&i&&i.results.length===0&&!c&&o(Io,{strings:r}),!d&&i&&i.results.length>0&&o(Bo,{rows:i.results,selectedId:g,onPick:E,strings:r,total:i.count})]}),o("div",{class:`board-detail-wrap ${x?"has-selection":""}`,children:x?o(Ae,{api:e,externalId:t,reportId:x.id,strings:r,onBack:()=>S(null),canModerate:x.is_mine,variant:"board"},k):o("div",{class:"board-detail-empty",children:[o(No,{}),o("p",{children:r["board.detail.empty"]})]})})]})]})}function Ao({strings:e,kpis:t}){let r=(t==null?void 0:t.scope)==="project"?e["board.scope.project"]:e["board.scope.mine"];return o("header",{class:"board-header",children:[o("div",{class:"board-header-title",children:[o("span",{class:"board-header-emoji","aria-hidden":"true",children:"\u{1F4CB}"}),o("div",{children:[o("h2",{class:"board-header-h",children:e["tab.board"]}),o("p",{class:"board-header-sub",children:t?`${t.total} \xB7 ${r}`:r})]})]}),o(zo,{kpis:t,strings:e})]})}function zo({kpis:e,strings:t}){var a,n,i,s,l,u;let r=[{key:"new",label:t["board.kpi.new"],value:String((n=(a=e==null?void 0:e.by_status)==null?void 0:a.new)!=null?n:0),tone:"tone-new"},{key:"in_progress",label:t["board.kpi.in_progress"],value:String((s=(i=e==null?void 0:e.by_status)==null?void 0:i.in_progress)!=null?s:0),tone:"tone-progress"},{key:"awaiting_validation",label:t["board.kpi.awaiting_validation"],value:String((u=(l=e==null?void 0:e.by_status)==null?void 0:l.awaiting_validation)!=null?u:0),tone:"tone-validation"},{key:"rate",label:t["board.kpi.resolution_rate"],value:e?`${Math.round((e.resolution_rate||0)*100)}%`:"\u2014",tone:"tone-rate"}];return o("div",{class:`board-kpi-strip ${e?"is-ready":"is-loading"}`,"aria-live":"polite",children:r.map(c=>o("div",{class:`board-kpi-card ${c.tone}`,children:[o("div",{class:"board-kpi-value",children:c.value}),o("div",{class:"board-kpi-label",children:c.label})]},c.key))})}function Lo({filters:e,onChange:t,activeCount:r,strings:a}){var d,h,g,S,k,v,f,m;let n=p=>{if(p===""){let{status:x,...E}=e;t(E)}else t({...e,status:[p]})},i=p=>{if(p===""){let{type:x,...E}=e;t(E)}else t({...e,type:[p]})},s=p=>{if(p===""){let{severity:x,...E}=e;t(E)}else t({...e,severity:[p]})},l=p=>t({...e,ordering:p}),u=p=>t({...e,q:p}),c=()=>{if(e.mine){let{mine:p,...x}=e;t(x)}else t({...e,mine:!0})},b=()=>t({});return o("div",{class:"board-filters",children:[o("select",{class:"board-filter-select","aria-label":a["board.sort"],value:(d=e.ordering)!=null?d:"recent",onChange:p=>l(p.target.value),children:Eo.map(p=>o("option",{value:p,children:a[`board.sort.${p}`]},p))}),o("select",{class:"board-filter-select","aria-label":a["board.filter.status"],value:(g=(h=e.status)==null?void 0:h[0])!=null?g:"",onChange:p=>n(p.target.value),children:[o("option",{value:"",children:a["board.filter.status"]}),To.map(p=>{var x;return o("option",{value:p,children:(x=a[`board.kpi.${p}`])!=null?x:p},p)})]}),o("select",{class:"board-filter-select","aria-label":a["board.filter.type"],value:(k=(S=e.type)==null?void 0:S[0])!=null?k:"",onChange:p=>i(p.target.value),children:[o("option",{value:"",children:a["board.filter.type"]}),Po.map(p=>{var x;return o("option",{value:p,children:(x=a[`type.${p}`])!=null?x:p},p)})]}),o("select",{class:"board-filter-select","aria-label":a["board.filter.severity"],value:(f=(v=e.severity)==null?void 0:v[0])!=null?f:"",onChange:p=>s(p.target.value),children:[o("option",{value:"",children:a["board.filter.severity"]}),Mo.map(p=>{var x;return o("option",{value:p,children:(x=a[`severity.${p}`])!=null?x:p},p)})]}),o("input",{type:"search",class:"board-filter-search",placeholder:a["board.filter.search.placeholder"],value:(m=e.q)!=null?m:"",onInput:p=>u(p.target.value)}),o("label",{class:"board-filter-toggle",children:[o("input",{type:"checkbox",checked:!!e.mine,onChange:c}),o("span",{children:a["board.filter.mine"]})]}),r>0&&o("button",{type:"button",class:"board-filter-clear",onClick:b,children:[o(Ko,{}),a["board.filter.clear"]]})]})}function Bo({rows:e,selectedId:t,onPick:r,strings:a,total:n}){return o(U,{children:[o("div",{class:"board-list-count",children:a["board.list.count"].replace("{n}",String(e.length)).replace("{total}",String(n))}),o("ul",{class:"board-list",role:"list",children:e.map(i=>o(Fo,{row:i,selected:i.id===t,onPick:r,strings:a},i.id))})]})}function Fo({row:e,selected:t,onPick:r,strings:a}){var i,s;let n=e.is_mine?a["board.list.you"]:e.author_label||"\u2014";return o("li",{children:o("button",{type:"button",class:`board-row ${t?"is-selected":""}`,onClick:()=>r(e),"aria-pressed":t,children:[o("div",{class:"board-row-badges",children:[o("span",{class:`badge status-${e.status}`,children:(i=a[`status.${e.status}`])!=null?i:e.status}),o("span",{class:`badge severity-${e.severity}`,children:(s=a[`severity.${e.severity}`])!=null?s:e.severity})]}),o("div",{class:"board-row-description",children:e.description}),o("div",{class:"board-row-meta",children:[o("span",{class:"board-row-author",children:n}),e.comment_count>0&&o("span",{class:"board-row-comments",children:[o(Do,{})," ",e.comment_count]}),o("span",{class:"board-row-time",children:Qo(e.created_at)})]})]})})}function Io({strings:e}){return o("div",{class:"board-empty",children:[o(Ho,{}),o("h3",{children:e["board.list.empty.title"]}),o("p",{children:e["board.list.empty.description"]})]})}function $o(){return o("ul",{class:"board-list board-list-skeleton","aria-hidden":"true",children:Array.from({length:5}).map((e,t)=>o("li",{children:o("div",{class:"board-row skeleton-row",children:[o("div",{class:"skeleton-line skeleton-badges"}),o("div",{class:"skeleton-line skeleton-text"}),o("div",{class:"skeleton-line skeleton-text short"})]})},t))})}function Do(){return o("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:o("path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"})})}function Ko(){return o("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[o("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),o("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function Ho(){return o("svg",{width:"64",height:"64",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:[o("circle",{cx:"32",cy:"32",r:"28",stroke:"currentColor","stroke-opacity":"0.18","stroke-width":"2"}),o("path",{d:"M22 32h20M32 22v20",stroke:"currentColor","stroke-opacity":"0.35","stroke-width":"2","stroke-linecap":"round"})]})}function No(){return o("svg",{width:"80",height:"80",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:[o("rect",{x:"10",y:"12",width:"44",height:"36",rx:"4",stroke:"currentColor","stroke-opacity":"0.22","stroke-width":"2"}),o("line",{x1:"18",y1:"22",x2:"46",y2:"22",stroke:"currentColor","stroke-opacity":"0.22","stroke-width":"2","stroke-linecap":"round"}),o("line",{x1:"18",y1:"30",x2:"38",y2:"30",stroke:"currentColor","stroke-opacity":"0.18","stroke-width":"2","stroke-linecap":"round"}),o("line",{x1:"18",y1:"38",x2:"32",y2:"38",stroke:"currentColor","stroke-opacity":"0.14","stroke-width":"2","stroke-linecap":"round"})]})}function Ut(e){var t,r,a,n,i;return JSON.stringify({s:(t=e.status)==null?void 0:t.slice().sort(),t:(r=e.type)==null?void 0:r.slice().sort(),sv:(a=e.severity)==null?void 0:a.slice().sort(),q:(n=e.q)!=null?n:"",m:!!e.mine,o:(i=e.ordering)!=null?i:""})}function Qo(e){let t=new Date(e).getTime();if(Number.isNaN(t))return"";let r=Math.max(0,Date.now()-t),a=Math.floor(r/6e4);if(a<1)return"just now";if(a<60)return`${a}m`;let n=Math.floor(a/60);if(n<24)return`${n}h`;let i=Math.floor(n/24);return i<7?`${i}d`:`${Math.floor(i/7)}w`}V();function Oo(e){return`pill pill-status pill-status--${e}`}function Wo(e){return`pill pill-severity pill-severity--${e}`}function jo(){return"pill pill-type"}function Uo(e){let t=Date.parse(e);if(!Number.isFinite(t))return"";let r=Math.max(1,Math.round((Date.now()-t)/1e3));if(r<60)return`${r}s`;let a=Math.round(r/60);if(a<60)return`${a}m`;let n=Math.round(a/60);return n<48?`${n}h`:`${Math.round(n/24)}d`}function Vo(e,t){return e===1?t["mine.replies_one"]:t["mine.replies_many"].replace("{count}",String(e))}function ze({row:e,strings:t,onClick:r}){var n;let a=e.description.length>120?e.description.slice(0,117)+"\u2026":e.description;return o("button",{type:"button",class:"mine-row",onClick:r,children:[o("div",{class:"mine-row-pills",children:[o("span",{class:Oo(e.status),children:(n=t[`status.${e.status}`])!=null?n:e.status}),o("span",{class:jo(),children:t[`type.${e.feedback_type}`]}),o("span",{class:Wo(e.severity),children:t[`severity.${e.severity}`]})]}),o("div",{class:"mine-row-preview",children:a}),o("div",{class:"mine-row-meta",children:[o("span",{children:Uo(e.updated_at||e.created_at)}),e.comment_count>0&&o("span",{children:["\xB7 ",Vo(e.comment_count,t)]})]})]})}var Go=3e4;function Yo(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return"";let r=(t.getUTCDay()+6)%7;return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-r)).toISOString().slice(0,10)}function Xo(e){let t=new Map;for(let r of e){let a=Yo(r.resolved_at);if(!a)continue;let n=t.get(a);n?n.push(r):t.set(a,[r])}return Array.from(t.entries()).sort(([r],[a])=>r<a?1:-1).map(([r,a])=>({weekKey:r,label:Jo(r),rows:a}))}function Jo(e){try{return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(t){return e}}function Gt({api:e,externalId:t,strings:r,onSelect:a}){let[n,i]=q(null),[s,l]=q(null),[u,c]=q(!1),b=N(!0),d=async()=>{c(!0),l(null);try{let k=await e.listChangelog(t);if(!b.current)return;i(k)}catch(k){if(typeof console!="undefined"&&console.warn("[mhosaic] listChangelog:",k),!b.current)return;l(r["mine.error"])}finally{b.current&&c(!1)}};$(()=>{b.current=!0,d();let k=setInterval(()=>{d()},Go);return()=>{b.current=!1,clearInterval(k)}},[t]);let h=X(()=>n?Xo(n):[],[n]),g=n===null&&!s,S=n!==null&&n.length===0;return o("div",{class:"mine-list",children:[o("div",{class:"mine-list-header",children:[o("h2",{children:r["tab.changelog"]}),o("button",{type:"button",class:"btn",onClick:()=>{d()},disabled:u,children:u?r["mine.loading"]:r["mine.refresh"]})]}),g&&o("div",{class:"mine-loading",children:r["mine.loading"]}),s&&o("div",{class:"error",children:s}),S&&o("div",{class:"mine-empty",children:[o("strong",{children:r["changelog.empty.title"]}),o("p",{children:r["changelog.empty.body"]})]}),h.length>0&&o("div",{class:"changelog-groups",children:h.map(k=>o("section",{class:"changelog-group",children:[o("header",{class:"changelog-group-header",children:[o("span",{class:"changelog-group-marker","aria-hidden":"true",children:"\u25CF"}),o("span",{class:"changelog-group-label",children:r["changelog.week_of"].replace("{date}",k.label)}),o("span",{class:"changelog-group-rule","aria-hidden":"true"}),o("span",{class:"changelog-group-count",children:r[k.rows.length===1?"changelog.resolved_one":"changelog.resolved_many"].replace("{count}",String(k.rows.length))})]}),o("ul",{class:"mine-rows",children:k.rows.map(v=>o("li",{children:o(ze,{row:v,strings:r,onClick:()=>a(v)})}))})]},k.weekKey))})]})}function Zo(){return o("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:[o("path",{d:"m8 2 1.88 1.88"}),o("path",{d:"M14.12 3.88 16 2"}),o("path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"}),o("path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"}),o("path",{d:"M12 20v-9"}),o("path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5"}),o("path",{d:"M6 13H2"}),o("path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4"}),o("path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4"}),o("path",{d:"M22 13h-4"}),o("path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4"})]})}function Yt({label:e,onClick:t}){return o("button",{type:"button",class:"fab","aria-label":e,title:e,onClick:t,children:o(Zo,{})})}V();V();var Xt=["#ef4444","#f59e0b","#10b981","#3b82f6","#ffffff"],ea=.35;function Jt(e,t,r){if(e.save(),e.strokeStyle=t.color,e.fillStyle=t.color,e.lineWidth=t.lineWidth,e.lineCap="round",e.lineJoin="round",t.kind==="rectangle")e.strokeRect(t.x,t.y,t.w,t.h);else if(t.kind==="arrow")ta(e,t.x1,t.y1,t.x2,t.y2);else if(t.kind==="freehand"){if(t.points.length<2){e.restore();return}e.beginPath(),e.moveTo(t.points[0].x,t.points[0].y);for(let a=1;a<t.points.length;a++)e.lineTo(t.points[a].x,t.points[a].y);e.stroke()}else if(t.kind==="text"){e.font=`bold ${t.fontSize}px -apple-system, BlinkMacSystemFont, sans-serif`,e.textBaseline="top";let a=e.measureText(t.text),n=4,i=a.width+n*2,s=t.fontSize+n*2;e.fillStyle="rgba(0, 0, 0, 0.6)",e.fillRect(t.x-n,t.y-n,i,s),e.fillStyle=t.color,e.fillText(t.text,t.x,t.y)}else t.kind==="highlight"?(e.globalAlpha=ea,e.fillRect(Le(t.x,t.w),Le(t.y,t.h),Math.abs(t.w),Math.abs(t.h))):t.kind==="blur"&&ra(e,t,r);e.restore()}function Le(e,t){return t<0?e+t:e}function ta(e,t,r,a,n){let s=Math.atan2(n-r,a-t);e.beginPath(),e.moveTo(t,r),e.lineTo(a,n),e.stroke(),e.beginPath(),e.moveTo(a,n),e.lineTo(a-14*Math.cos(s-Math.PI/6),n-14*Math.sin(s-Math.PI/6)),e.lineTo(a-14*Math.cos(s+Math.PI/6),n-14*Math.sin(s+Math.PI/6)),e.closePath(),e.fill()}function ra(e,t,r){if(!r)return;let a=Le(t.x,t.w),n=Le(t.y,t.h),i=Math.abs(t.w),s=Math.abs(t.h);if(i<2||s<2)return;let l=Math.max(4,t.tile);for(let u=n;u<n+s;u+=l)for(let c=a;c<a+i;c+=l){let b=Math.min(l,a+i-c),d=Math.min(l,n+s-u);e.drawImage(r,c,u,b,d,c,u,b,d)}e.imageSmoothingEnabled=!1;for(let u=n;u<n+s;u+=l)for(let c=a;c<a+i;c+=l){let b=Math.min(l,a+i-c),d=Math.min(l,n+s-u);e.drawImage(r,c,u,1,1,c,u,b,d)}e.imageSmoothingEnabled=!0}var ee={rect:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("rect",{x:"2",y:"3",width:"12",height:"10",fill:"none",stroke:"currentColor","stroke-width":"1.5"})}),arrow:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M2 8h11M9 4l4 4-4 4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),pencil:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M11.5 2.5l2 2L5 13H3v-2l8.5-8.5z",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linejoin":"round"})}),text:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M3 3h10M8 3v10M5 13h6",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})}),highlight:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[o("path",{d:"M3 13l3-3L11 5l-2-2-5 5-3 3v2h2zM10 4l2 2",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}),o("path",{d:"M2 14h12",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})]}),blur:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[o("rect",{x:"2",y:"2",width:"4",height:"4",fill:"currentColor",opacity:"0.85"}),o("rect",{x:"7",y:"2",width:"3",height:"3",fill:"currentColor",opacity:"0.55"}),o("rect",{x:"11",y:"2",width:"3",height:"4",fill:"currentColor",opacity:"0.4"}),o("rect",{x:"2",y:"7",width:"3",height:"3",fill:"currentColor",opacity:"0.6"}),o("rect",{x:"6",y:"7",width:"3",height:"3",fill:"currentColor",opacity:"0.85"}),o("rect",{x:"10",y:"7",width:"4",height:"3",fill:"currentColor",opacity:"0.5"}),o("rect",{x:"2",y:"11",width:"4",height:"3",fill:"currentColor",opacity:"0.4"}),o("rect",{x:"7",y:"11",width:"3",height:"3",fill:"currentColor",opacity:"0.65"}),o("rect",{x:"11",y:"11",width:"3",height:"3",fill:"currentColor",opacity:"0.85"})]}),undo:o("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M4 7l3-3M4 7l3 3M4 7h6a3 3 0 0 1 0 6H7",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),redo:o("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M12 7l-3-3M12 7l-3 3M12 7H6a3 3 0 0 0 0 6h2",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),trash:o("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M3 4h10M6 4V2.5h4V4M5 4l.5 9h5L11 4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})}),close:o("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:o("path",{d:"M4 4l8 8M12 4l-8 8",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})})};function Zt({imageBlob:e,strings:t,onSave:r,onCancel:a}){let n=N(null),i=N(null),s=N(null),[l,u]=q("rectangle"),[c,b]=q(Xt[0]),[d,h]=q([]),[g,S]=q([]),[k,v]=q([]),f=N(!1),[m,p]=q(null),[x,E]=q(!1),[P,w]=q(!1),A=N(1);function T(_){h(R=>(S(L=>[...L,R]),[...R,_])),v([])}function M(){h(_=>(S(R=>[...R,_]),[])),v([])}function K(){S(_=>{if(_.length===0)return _;let R=_[_.length-1];return h(L=>(v(B=>[L,...B]),R)),_.slice(0,-1)})}function O(){v(_=>{if(_.length===0)return _;let R=_[0];return h(L=>(S(B=>[...B,L]),R)),_.slice(1)})}Ze(()=>{let _=R=>{R.key==="Escape"&&(R.stopPropagation(),a())};return window.addEventListener("keydown",_),()=>window.removeEventListener("keydown",_)},[a]),$(()=>{let _=R=>{if(!(R.metaKey||R.ctrlKey))return;let B=R.key.toLowerCase();B==="z"?(R.preventDefault(),R.stopPropagation(),R.shiftKey?O():K()):B==="y"&&(R.preventDefault(),R.stopPropagation(),O())};return window.addEventListener("keydown",_),()=>window.removeEventListener("keydown",_)},[g,k,d]),$(()=>{let _=URL.createObjectURL(e),R=new Image;return R.onload=()=>{s.current=R,E(!0)},R.src=_,()=>URL.revokeObjectURL(_)},[e]),Ze(()=>{if(!x||!n.current||!s.current||!i.current)return;let _=s.current,L=i.current.clientWidth-16,B=window.innerHeight*.65,J=Math.min(L/_.width,B/_.height,1);A.current=J;let se=n.current;se.width=_.width,se.height=_.height,se.style.width=`${_.width*J}px`,se.style.height=`${_.height*J}px`,W()},[x]),$(()=>{W()},[d,m]);function W(){let _=n.current,R=s.current;if(!_||!R)return;let L=_.getContext("2d");if(L){L.clearRect(0,0,_.width,_.height),L.drawImage(R,0,0);for(let B of d)Jt(L,B,R);m&&Jt(L,m,R)}}function z(_){let L=n.current.getBoundingClientRect();return{x:(_.clientX-L.left)/A.current,y:(_.clientY-L.top)/A.current}}let Q=_=>{if(!x)return;let{x:R,y:L}=z(_),B=n.current.width,J=Math.max(3,Math.round(B/400)),se=Math.max(8,Math.round(B/80));if(l==="text"){let He=window.prompt(t["annotator.text_prompt"]);He&&He.trim()&&T({kind:"text",x:R,y:L,text:He.trim(),color:c,fontSize:Math.max(16,Math.round(B/50)),lineWidth:1});return}f.current=!0,l==="rectangle"?p({kind:"rectangle",x:R,y:L,w:0,h:0,color:c,lineWidth:J}):l==="arrow"?p({kind:"arrow",x1:R,y1:L,x2:R,y2:L,color:c,lineWidth:J}):l==="freehand"?p({kind:"freehand",points:[{x:R,y:L}],color:c,lineWidth:J}):l==="highlight"?p({kind:"highlight",x:R,y:L,w:0,h:0,color:c==="#ffffff"?"#fde047":c,lineWidth:1}):l==="blur"&&p({kind:"blur",x:R,y:L,w:0,h:0,color:"#000000",lineWidth:0,tile:se})},G=_=>{if(!f.current)return;let{x:R,y:L}=z(_);p(B=>B&&(B.kind==="rectangle"||B.kind==="highlight"||B.kind==="blur"?{...B,w:R-B.x,h:L-B.y}:B.kind==="arrow"?{...B,x2:R,y2:L}:B.kind==="freehand"?{...B,points:[...B.points,{x:R,y:L}]}:B))},ie=()=>{p(_=>(f.current&&_&&((_.kind==="rectangle"||_.kind==="highlight"||_.kind==="blur")&&Math.abs(_.w)<4&&Math.abs(_.h)<4||_.kind==="arrow"&&Math.hypot(_.x2-_.x1,_.y2-_.y1)<4||_.kind==="freehand"&&_.points.length<3||T(_)),null)),f.current=!1},C=async()=>{let _=n.current;if(_){w(!0);try{let R=await new Promise(L=>_.toBlob(L,"image/png",.92));R&&r(R)}finally{w(!1)}}},I=[{id:"rectangle",icon:ee.rect,label:t["annotator.tool.rectangle"]},{id:"arrow",icon:ee.arrow,label:t["annotator.tool.arrow"]},{id:"freehand",icon:ee.pencil,label:t["annotator.tool.freehand"]},{id:"text",icon:ee.text,label:t["annotator.tool.text"]},{id:"highlight",icon:ee.highlight,label:t["annotator.tool.highlight"]},{id:"blur",icon:ee.blur,label:t["annotator.tool.blur"]}];return o("div",{class:"annotator-backdrop",role:"presentation",onClick:_=>{_.target===_.currentTarget&&a()},children:o("div",{class:"annotator",role:"dialog","aria-modal":"true","aria-label":t["annotator.title"],children:[o("div",{class:"annotator-header",children:[o("span",{children:t["annotator.title"]}),o("button",{type:"button",class:"modal-close","aria-label":t["form.close"],onClick:a,children:ee.close})]}),o("div",{class:"annotator-toolbar",children:[o("div",{class:"annotator-tools",children:I.map(_=>o("button",{type:"button",onClick:()=>u(_.id),title:_.label,"aria-label":_.label,"aria-pressed":l===_.id,class:`annotator-tool ${l===_.id?"is-active":""}`,children:_.icon},_.id))}),o("span",{class:"annotator-sep"}),o("div",{class:"annotator-colors",children:[Xt.map(_=>o("button",{type:"button",onClick:()=>b(_),"aria-label":_,"aria-pressed":c===_,class:`annotator-color ${c===_?"is-active":""}`,style:{backgroundColor:_}},_)),o("label",{class:"annotator-color annotator-color-picker",title:t["annotator.color_picker"],children:o("input",{type:"color",value:c,onInput:_=>b(_.target.value),"aria-label":t["annotator.color_picker"]})})]}),o("span",{class:"annotator-sep"}),o("button",{type:"button",class:"annotator-btn",onClick:K,disabled:g.length===0,title:t["annotator.undo"],children:[ee.undo,o("span",{children:t["annotator.undo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:O,disabled:k.length===0,title:t["annotator.redo"],children:[ee.redo,o("span",{children:t["annotator.redo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:M,disabled:d.length===0,children:[ee.trash,o("span",{children:t["annotator.clear"]})]}),o("span",{class:"annotator-spacer"}),o("span",{class:"annotator-count",children:[d.length," ",t["annotator.count_suffix"]]})]}),o("div",{ref:i,class:"annotator-canvas-wrap",children:x?o("canvas",{ref:n,onMouseDown:Q,onMouseMove:G,onMouseUp:ie,onMouseLeave:ie,class:"annotator-canvas"}):o("span",{class:"annotator-loading",children:t["annotator.loading"]})}),o("div",{class:"annotator-footer",children:[o("button",{type:"button",class:"btn",onClick:a,children:t["form.cancel"]}),o("button",{type:"button",class:"btn btn--primary",onClick:C,disabled:P||!x,children:P?t["annotator.applying"]:t["annotator.apply"]})]})]})})}var oa=["bug","feature","question","praise","typo"],aa=["blocker","high","medium","low"];function er({strings:e,onSubmit:t,onCancel:r,status:a,errorMessage:n}){let[i,s]=q(""),[l,u]=q("bug"),[c,b]=q("medium"),[d,h]=q(""),[g,S]=q(null),[k,v]=q(null),[f,m]=q(!1),[p,x]=q(!1),E=N(null),P=N(null),w=a==="submitting",A=w?e["form.submitting"]:e["form.submit"],T=typeof window!="undefined"?window.location.href:"";$(()=>()=>{k&&URL.revokeObjectURL(k)},[k]);let M=C=>{if(h(""),C instanceof File){let I=Wt(C);if(I){h(I.kind==="type"?e["form.screenshot.error_type"]:e["form.screenshot.error_size"].replace("{max}",String(I.maxMb)));return}}k&&URL.revokeObjectURL(k),S(C),v(URL.createObjectURL(C))},K=()=>{k&&URL.revokeObjectURL(k),v(null),S(null),h(""),E.current&&(E.current.value="")},O=C=>{var _;let I=(_=C.target.files)==null?void 0:_[0];I&&M(I)},W=C=>{C.preventDefault(),C.stopPropagation(),m(!0)},z=C=>{C.preventDefault(),C.stopPropagation(),C.currentTarget===C.target&&m(!1)},Q=C=>{var _,R;C.preventDefault(),C.stopPropagation(),m(!1);let I=(R=(_=C.dataTransfer)==null?void 0:_.files)==null?void 0:R[0];I&&M(I)};$(()=>{let C=P.current;if(!C)return;let I=_=>{var L;let R=(L=_.clipboardData)==null?void 0:L.items;if(R){for(let B of Array.from(R))if(B.kind==="file"&&B.type.startsWith("image/")){let J=B.getAsFile();if(J){_.preventDefault(),M(J);return}}}};return C.addEventListener("paste",I),()=>C.removeEventListener("paste",I)},[k]);let G=C=>{k&&URL.revokeObjectURL(k),S(C),v(URL.createObjectURL(C)),x(!1)};return o("form",{onSubmit:C=>{if(C.preventDefault(),!i.trim()){h(e["form.description.required"]);return}h("");let I={description:i.trim(),feedback_type:l,severity:c};g&&(I.screenshot=g,I.capture_method="manual"),t(I)},children:[o("h2",{children:e["form.title"]}),o("div",{class:"field",children:[o("label",{for:"mfb-desc",children:e["form.description.label"]}),o("textarea",{id:"mfb-desc",value:i,placeholder:e["form.description.placeholder"],onInput:C=>s(C.target.value)})]}),o("div",{class:"row",children:[o("div",{class:"field",children:[o("label",{for:"mfb-type",children:e["form.type.label"]}),o("select",{id:"mfb-type",value:l,onChange:C=>u(C.target.value),children:oa.map(C=>o("option",{value:C,children:e[`type.${C}`]}))})]}),o("div",{class:"field",children:[o("label",{for:"mfb-sev",children:e["form.severity.label"]}),o("select",{id:"mfb-sev",value:c,onChange:C=>b(C.target.value),children:aa.map(C=>o("option",{value:C,children:e[`severity.${C}`]}))})]})]}),o("div",{class:"field",children:[o("label",{children:e["form.screenshot.label"]}),o("input",{ref:E,type:"file",accept:"image/png,image/jpeg,image/webp",class:"mfb-sr-only",onChange:O,"aria-hidden":"true",tabIndex:-1}),k?o("div",{class:"screenshot-preview",children:[o("img",{src:k,alt:""}),o("div",{class:"screenshot-preview-actions",children:[o("button",{type:"button",class:"btn btn--primary screenshot-annotate",onClick:()=>x(!0),children:[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[o("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),o("path",{d:"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]}),e["form.screenshot.annotate"]]}),o("button",{type:"button",class:"btn",onClick:K,children:[o("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:o("path",{d:"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6h14z"})}),e["form.screenshot.remove"]]})]})]}):o("div",{ref:P,class:`screenshot-dropzone ${f?"is-dragover":""}`,tabIndex:0,role:"button","aria-label":e["form.screenshot.label"],onClick:()=>{var C;return(C=E.current)==null?void 0:C.click()},onKeyDown:C=>{var I;(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),(I=E.current)==null||I.click())},onDragOver:W,onDragLeave:z,onDrop:Q,children:[o("svg",{class:"screenshot-icon",width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:[o("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),o("polyline",{points:"17 8 12 3 7 8"}),o("line",{x1:"12",y1:"3",x2:"12",y2:"15"})]}),o("div",{class:"screenshot-cta",children:[o("strong",{children:e["form.screenshot.cta_click"]}),", ",e["form.screenshot.cta_rest"]]}),o("div",{class:"screenshot-formats",children:e["form.screenshot.formats"]})]})]}),T&&o("div",{class:"page-context",title:T,children:[o("span",{class:"page-context-label",children:e["form.context.label"]}),o("span",{class:"page-context-url",children:ue(T,90)})]}),d&&o("div",{class:"error",children:d}),a==="error"&&n&&o("div",{class:"error",children:n}),a==="success"&&o("div",{class:"success",children:e["form.success"]}),o("div",{class:"actions",children:[o("button",{type:"button",class:"btn",onClick:r,disabled:w,children:e["form.cancel"]}),o("button",{type:"submit",class:"btn btn--primary",disabled:w,children:A})]}),p&&g&&o(Zt,{imageBlob:g,strings:e,onCancel:()=>x(!1),onSave:G})]})}V();function na(e){let t={new:0,in_progress:0,awaiting_validation:0,resolved:0,total:0};for(let r of e)switch(t.total+=1,r.status){case"new":t.new+=1;break;case"in_progress":t.in_progress+=1;break;case"awaiting_validation":t.awaiting_validation+=1;break;case"closed":case"rejected":case"duplicate":case"wontfix":t.resolved+=1;break}return t}function ia(e){return e.total===0?null:Math.round((e.awaiting_validation+e.resolved)/e.total*100)}var sa={new:"new",in_progress:"in_progress",awaiting_validation:"awaiting_validation",closed:"resolved",rejected:"resolved",duplicate:"resolved",wontfix:"resolved"};function tr(e,t){return t==="all"?e:e.filter(r=>sa[r.status]===t)}function rr({rows:e,filter:t,onFilter:r,strings:a}){let n=na(e),i=ia(n),s=[{key:"new",label:a["kpi.new"],value:String(n.new)},{key:"in_progress",label:a["kpi.in_progress"],value:String(n.in_progress)},{key:"awaiting_validation",label:a["kpi.awaiting_validation"],value:String(n.awaiting_validation)},{key:"resolved",label:a["kpi.resolution_rate"],value:i===null?"\u2014":`${i}%`}];return o("div",{class:"kpi-strip",role:"toolbar",children:s.map(l=>{let u=t===l.key,c=u?"all":l.key;return o("button",{type:"button",class:`kpi-cell kpi-cell--${l.key}${u?" is-active":""}`,onClick:()=>r(c),"aria-pressed":u,children:[o("span",{class:"kpi-value",children:l.value}),o("span",{class:"kpi-label",children:l.label})]})})})}var la=3e4;function or({api:e,externalId:t,strings:r,onSelect:a}){var m;let[n,i]=q(null),[s,l]=q(null),[u,c]=q(!1),[b,d]=q("all"),h=N(!0),g=async()=>{c(!0),l(null);try{let p=await e.listMine(t);if(!h.current)return;i(p)}catch(p){if(typeof console!="undefined"&&console.warn("[mhosaic] listMine:",p),!h.current)return;l(r["mine.error"])}finally{h.current&&c(!1)}};$(()=>{h.current=!0,g();let p=setInterval(()=>{g()},la);return()=>{h.current=!1,clearInterval(p)}},[t]);let S=n!==null&&n.length===0,k=n===null&&!s,v=n?tr(n,b):null,f=!!n&&n.length>0&&((m=v==null?void 0:v.length)!=null?m:0)===0;return o("div",{class:"mine-list",children:[o("div",{class:"mine-list-header",children:[o("h2",{children:r["tab.mine"]}),o("button",{type:"button",class:"btn",onClick:()=>{g()},disabled:u,children:u?r["mine.loading"]:r["mine.refresh"]})]}),n&&n.length>0&&o(rr,{rows:n,filter:b,onFilter:d,strings:r}),k&&o("div",{class:"mine-loading",children:r["mine.loading"]}),s&&o("div",{class:"error",children:s}),S&&o("div",{class:"mine-empty",children:[o("strong",{children:r["mine.empty.title"]}),o("p",{children:r["mine.empty.body"]})]}),f&&o("div",{class:"mine-empty",children:o("p",{children:r["mine.filter.empty"]})}),v&&v.length>0&&o("ul",{class:"mine-rows",children:v.map(p=>o("li",{children:o(ze,{row:p,strings:r,onClick:()=>a(p)})}))})]})}V();function ar({onDismiss:e,children:t,closeLabel:r="Close",expanded:a=!1}){let n=N(null),i=N(null);return $(()=>{var u;i.current=document.activeElement;let s=c=>{var d;if(c.key!=="Escape")return;let b=(d=n.current)==null?void 0:d.getRootNode();b instanceof ShadowRoot&&b.querySelector(".annotator-backdrop")||(c.stopPropagation(),e())};window.addEventListener("keydown",s);let l=(u=n.current)==null?void 0:u.querySelector("textarea, input, select, button");return l==null||l.focus(),()=>{window.removeEventListener("keydown",s);let c=i.current;c&&typeof c.focus=="function"&&c.focus()}},[e]),o("div",{class:`backdrop ${a?"is-expanded":""}`,role:"presentation",onClick:s=>{s.target===s.currentTarget&&e()},children:o("div",{ref:n,class:`modal ${a?"is-expanded":""}`,role:"dialog","aria-modal":"true",children:[o("button",{type:"button",class:"modal-close","aria-label":r,onClick:e,children:"\xD7"}),t]})})}var nr=`
7
601
  :host {
8
602
  --mfb-accent: #3b82f6;
9
603
  --mfb-accent-contrast: #ffffff;
@@ -1690,7 +2284,7 @@
1690
2284
  @media (prefers-reduced-motion: reduce) {
1691
2285
  .skeleton-line { animation: none; }
1692
2286
  }
1693
- `;function ho(e,t,r){return!(!e.showFAB||e.getExternalId!==void 0&&!t||e.requiresVisibilityCheck&&!r)}function Kt(e){let t=e.host.attachShadow({mode:"open"}),r=document.createElement("style");r.textContent=Dt,t.appendChild(r);let n=document.createElement("div");t.appendChild(n);let a={open:!1,status:"idle",tab:"send"},i=null;function s(d){a=d,Ae(ze(f,{state:d}),n)}function c(d){let{selectedReportId:h,...p}=d;return p}function f({state:d}){var w;let h=vt(async m=>{s({...a,status:"submitting"});try{await e.onSubmit(m),s({...a,status:"success"}),i!==null&&clearTimeout(i),i=setTimeout(()=>{i=null,s({...a,open:!1,status:"idle",tab:e.api?"mine":"send"})},1200)}catch(u){typeof console!="undefined"&&console.warn("[mhosaic] submit:",u),s({...a,status:"error",error:e.strings["form.error"]})}},[]),p=(w=e.getExternalId)==null?void 0:w.call(e),[g,b]=R(!e.requiresVisibilityCheck);K(()=>{if(!e.requiresVisibilityCheck){b(!0);return}if(!p||!e.checkVisibility){b(!1);return}let m=!1;return e.checkVisibility(p).then(u=>{m||b(u)}).catch(()=>{m||b(!1)}),()=>{m=!0}},[p]);let x=ho(e,p,g),_=!!(e.api&&p);return o(N,{children:[x&&o(Mt,{label:e.strings["fab.label"],onClick:()=>s({...a,open:!0})}),d.open&&o($t,{onDismiss:()=>s(c({...a,open:!1,status:"idle"})),closeLabel:e.strings["form.close"],expanded:d.tab==="board",children:[_&&o("div",{class:"tab-strip",role:"tablist",children:[o("button",{type:"button",role:"tab","aria-selected":d.tab==="send",class:`tab-button ${d.tab==="send"?"is-active":""}`,onClick:()=>s(c({...a,tab:"send"})),children:e.strings["tab.send"]}),o("button",{type:"button",role:"tab","aria-selected":d.tab==="mine",class:`tab-button ${d.tab==="mine"?"is-active":""}`,onClick:()=>s(c({...a,tab:"mine"})),children:e.strings["tab.mine"]}),o("button",{type:"button",role:"tab","aria-selected":d.tab==="changelog",class:`tab-button ${d.tab==="changelog"?"is-active":""}`,onClick:()=>s(c({...a,tab:"changelog"})),children:e.strings["tab.changelog"]}),o("button",{type:"button",role:"tab","aria-selected":d.tab==="board",class:`tab-button tab-button--board ${d.tab==="board"?"is-active":""}`,onClick:()=>s(c({...a,tab:"board"})),children:e.strings["tab.board"]})]}),d.tab==="send"&&o(Ft,{strings:e.strings,onSubmit:h,onCancel:()=>s({...a,open:!1,status:"idle"}),status:d.status,...d.error!==void 0&&{errorMessage:d.error}}),d.tab==="mine"&&e.api&&p&&!d.selectedReportId&&o(It,{api:e.api,externalId:p,strings:e.strings,onSelect:m=>s({...a,selectedReportId:m.id})}),(d.tab==="mine"||d.tab==="changelog")&&e.api&&p&&d.selectedReportId&&o(ye,{api:e.api,externalId:p,reportId:d.selectedReportId,strings:e.strings,onBack:()=>s(c({...a}))}),d.tab==="changelog"&&e.api&&p&&!d.selectedReportId&&o(Tt,{api:e.api,externalId:p,strings:e.strings,onSelect:m=>s({...a,selectedReportId:m.id})}),d.tab==="board"&&e.api&&p&&o(Et,{api:e.api,externalId:p,strings:e.strings})]})]})}return s(a),{open(){s({...a,open:!0})},close(){s({...a,open:!1,status:"idle"})},dispose(){i!==null&&(clearTimeout(i),i=null),Ae(null,n),e.host.innerHTML=""},notifyIdentityChanged(){s({...a})}}}function Wt(e){var b,x,_,w,m,u;let t=(b=e.env)!=null?b:"prod",r=(x=e.locale)!=null?x:typeof navigator!="undefined"?navigator.language:void 0,n=Ge((_=e.translations)!=null?_:{},r!==void 0?{locale:r}:{}),a=qe({...e.sanitizeUrl!==void 0&&{sanitizeUrl:e.sanitizeUrl}}),i=e.user,s=(w=e.metadata)!=null?w:{},c=We({apiKey:e.apiKey,endpoint:e.endpoint,...e.fetchImpl!==void 0&&{fetch:e.fetchImpl},...e.beforeSend!==void 0&&{beforeSend:e.beforeSend},getSignedIdentity:()=>!i||!i.userHash||!i.exp||!i.email?null:{userHash:i.userHash,exp:i.exp,email:i.email}}),f=[],d=document.createElement("div");if(d.className="mhosaic-feedback",e.attachTo){let l=typeof e.attachTo=="string"?document.querySelector(e.attachTo):e.attachTo;l==null||l.appendChild(d)}else document.body.appendChild(d);async function h(l){var P,A,H,U,O;let y=l.synthetic?void 0:l.screenshot,C=a.snapshot();if(i){let{userHash:T,exp:X,...V}=i;C.user=V}s&&Object.keys(s).length>0&&(C.metadata={...s});let M=y?(P=l.capture_method)!=null?P:"manual":"none",E={description:l.description,feedback_type:(A=l.feedback_type)!=null?A:"bug",severity:(H=l.severity)!=null?H:"medium",env:t,page_url:window.location.href,user_agent:navigator.userAgent,capture_method:M,technical_context:C};E.widget_version="0.20.0",y&&(E.screenshot=y),l.synthetic&&(E.synthetic=!0),(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""&&(E.user={id:String(i.id),...i.email!==void 0&&{email:i.email},...i.name!==void 0&&{name:i.name}});let L=E;for(let T of f)L=await T(L);try{let T=await c.submitReport(L);return(U=e.onSubmitSuccess)==null||U.call(e,T),a.clear(),T}catch(T){let X=T instanceof Error?T:new Error(String(T));throw(O=e.onError)==null||O.call(e,X),X}}let p=Kt({host:d,strings:n,showFAB:(m=e.showFAB)!=null?m:!0,onSubmit:async l=>{await h(l)},api:c,getExternalId:()=>(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""?String(i.id):void 0,requiresVisibilityCheck:(u=e.requiresVisibilityCheck)!=null?u:!1,checkVisibility:l=>c.checkVisibility(l,i==null?void 0:i.email)}),g={show(){p.open()},hide(){p.close()},open(l){p.open()},async submit(l){return h({description:l.description,...l.feedback_type!==void 0&&{feedback_type:l.feedback_type},...l.severity!==void 0&&{severity:l.severity},...l.synthetic!==void 0&&{synthetic:l.synthetic},...l.screenshot!==void 0&&{screenshot:l.screenshot}})},identify(l){i=l,p.notifyIdentityChanged()},setMetadata(l){s={...s,...l}},shutdown(){p.dispose(),a.dispose(),d.remove();let l=window;l.mhosaicFeedback===g&&delete l.mhosaicFeedback},_registerTransformer(l){f.push(l)}};return window.mhosaicFeedback=g,g}var go={enabled:!0,perFingerprintCooldownMs:3e5,sampleRate:1,maxDescriptionLen:200,globalRatePerMinute:30,maxDistinctFingerprints:200};function Ht(e){var t;if(e instanceof Error)return{name:e.name||"Error",message:String((t=e.message)!=null?t:""),...e.stack&&{stack:String(e.stack)}};if(typeof e=="string")return{name:"Error",message:e};if(e&&typeof e=="object"){let r=e;return{name:typeof r.name=="string"&&r.name||"Error",message:typeof r.message=="string"&&r.message||(()=>{try{return JSON.stringify(e)}catch(n){return String(e)}})(),...typeof r.stack=="string"&&{stack:r.stack}}}return{name:"Error",message:String(e)}}function vo(e,t){var a;let r=((a=e.stack)!=null?a:"").split(`
2287
+ `;function ca(e,t,r){return!(!e.showFAB||e.getExternalId!==void 0&&!t||e.requiresVisibilityCheck&&!r)}function ir(e){let t=e.host.attachShadow({mode:"open"}),r=document.createElement("style");r.textContent=nr,t.appendChild(r);let a=document.createElement("div");t.appendChild(a);let n={open:!1,status:"idle",tab:"send"},i=null;function s(c){n=c,de(y(u,{state:c}),a)}function l(c){let{selectedReportId:b,...d}=c;return d}function u({state:c}){var v;let b=ne(async f=>{s({...n,status:"submitting"});try{await e.onSubmit(f),s({...n,status:"success"}),i!==null&&clearTimeout(i),i=setTimeout(()=>{i=null,s({...n,open:!1,status:"idle",tab:e.api?"mine":"send"})},1200)}catch(m){typeof console!="undefined"&&console.warn("[mhosaic] submit:",m),s({...n,status:"error",error:e.strings["form.error"]})}},[]),d=(v=e.getExternalId)==null?void 0:v.call(e),[h,g]=q(!e.requiresVisibilityCheck);$(()=>{if(!e.requiresVisibilityCheck){g(!0);return}if(!d||!e.checkVisibility){g(!1);return}let f=!1;return e.checkVisibility(d).then(m=>{f||g(m)}).catch(()=>{f||g(!1)}),()=>{f=!0}},[d]);let S=ca(e,d,h),k=!!(e.api&&d);return o(U,{children:[S&&o(Yt,{label:e.strings["fab.label"],onClick:()=>s({...n,open:!0})}),c.open&&o(ar,{onDismiss:()=>s(l({...n,open:!1,status:"idle"})),closeLabel:e.strings["form.close"],expanded:c.tab==="board",children:[k&&o("div",{class:"tab-strip",role:"tablist",children:[o("button",{type:"button",role:"tab","aria-selected":c.tab==="send",class:`tab-button ${c.tab==="send"?"is-active":""}`,onClick:()=>s(l({...n,tab:"send"})),children:e.strings["tab.send"]}),o("button",{type:"button",role:"tab","aria-selected":c.tab==="mine",class:`tab-button ${c.tab==="mine"?"is-active":""}`,onClick:()=>s(l({...n,tab:"mine"})),children:e.strings["tab.mine"]}),o("button",{type:"button",role:"tab","aria-selected":c.tab==="changelog",class:`tab-button ${c.tab==="changelog"?"is-active":""}`,onClick:()=>s(l({...n,tab:"changelog"})),children:e.strings["tab.changelog"]}),o("button",{type:"button",role:"tab","aria-selected":c.tab==="board",class:`tab-button tab-button--board ${c.tab==="board"?"is-active":""}`,onClick:()=>s(l({...n,tab:"board"})),children:e.strings["tab.board"]})]}),c.tab==="send"&&o(er,{strings:e.strings,onSubmit:b,onCancel:()=>s({...n,open:!1,status:"idle"}),status:c.status,...c.error!==void 0&&{errorMessage:c.error}}),c.tab==="mine"&&e.api&&d&&!c.selectedReportId&&o(or,{api:e.api,externalId:d,strings:e.strings,onSelect:f=>s({...n,selectedReportId:f.id})}),(c.tab==="mine"||c.tab==="changelog")&&e.api&&d&&c.selectedReportId&&o(Ae,{api:e.api,externalId:d,reportId:c.selectedReportId,strings:e.strings,onBack:()=>s(l({...n}))}),c.tab==="changelog"&&e.api&&d&&!c.selectedReportId&&o(Gt,{api:e.api,externalId:d,strings:e.strings,onSelect:f=>s({...n,selectedReportId:f.id})}),c.tab==="board"&&e.api&&d&&o(Vt,{api:e.api,externalId:d,strings:e.strings})]})]})}return s(n),{open(){s({...n,open:!0})},close(){s({...n,open:!1,status:"idle"})},dispose(){i!==null&&(clearTimeout(i),i=null),de(null,a),e.host.innerHTML=""},notifyIdentityChanged(){s({...n})}}}function Ca(){return{right:24+24/2,bottom:84}}function Lr(e){var k,v,f,m,p,x,E,P;let t=(k=e.env)!=null?k:"prod",r=(v=e.locale)!=null?v:typeof navigator!="undefined"?navigator.language:void 0,a=gt((f=e.translations)!=null?f:{},r!==void 0?{locale:r}:{}),n=bt({...e.sanitizeUrl!==void 0&&{sanitizeUrl:e.sanitizeUrl}}),i=e.user,s=(m=e.metadata)!=null?m:{},l=lt({apiKey:e.apiKey,endpoint:e.endpoint,...e.fetchImpl!==void 0&&{fetch:e.fetchImpl},...e.beforeSend!==void 0&&{beforeSend:e.beforeSend},getSignedIdentity:()=>!i||!i.userHash||!i.exp||!i.email?null:{userHash:i.userHash,exp:i.exp,email:i.email}}),u=[],c=document.createElement("div");if(c.className="mhosaic-feedback",e.attachTo){let w=typeof e.attachTo=="string"?document.querySelector(e.attachTo):e.attachTo;w==null||w.appendChild(c)}else document.body.appendChild(c);async function b(w){var W,z,Q,G,ie;let A=w.synthetic?void 0:w.screenshot,T=n.snapshot();if(i){let{userHash:C,exp:I,..._}=i;T.user=_}s&&Object.keys(s).length>0&&(T.metadata={...s});let M=A?(W=w.capture_method)!=null?W:"manual":"none",K={description:w.description,feedback_type:(z=w.feedback_type)!=null?z:"bug",severity:(Q=w.severity)!=null?Q:"medium",env:t,page_url:window.location.href,user_agent:navigator.userAgent,capture_method:M,technical_context:T};K.widget_version="0.21.0",A&&(K.screenshot=A),w.synthetic&&(K.synthetic=!0),(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""&&(K.user={id:String(i.id),...i.email!==void 0&&{email:i.email},...i.name!==void 0&&{name:i.name}});let O=K;for(let C of u)O=await C(O);try{let C=await l.submitReport(O);return(G=e.onSubmitSuccess)==null||G.call(e,C),n.clear(),C}catch(C){let I=C instanceof Error?C:new Error(String(C));throw(ie=e.onError)==null||ie.call(e,I),I}}let d=ir({host:c,strings:a,showFAB:(p=e.showFAB)!=null?p:!0,onSubmit:async w=>{await b(w)},api:l,getExternalId:()=>(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""?String(i.id):void 0,requiresVisibilityCheck:(x=e.requiresVisibilityCheck)!=null?x:!1,checkVisibility:w=>l.checkVisibility(w,i==null?void 0:i.email)}),h,g=!1;if((E=e.qaMeter)!=null&&E.source){let w=e.qaMeter,A=(P=w.locale)!=null?P:String(r!=null?r:"").toLowerCase().startsWith("fr")?"fr":"en";Promise.resolve().then(()=>(zr(),Ar)).then(({createQaMeter:T})=>{var M,K;g||(h=T({source:w.source,size:(M=w.size)!=null?M:"sm",position:(K=w.position)!=null?K:Ca(),locale:A,...w.getCurrentPage&&{getCurrentPage:w.getCurrentPage}}))})}let S={show(){d.open()},hide(){d.close()},open(w){d.open()},async submit(w){return b({description:w.description,...w.feedback_type!==void 0&&{feedback_type:w.feedback_type},...w.severity!==void 0&&{severity:w.severity},...w.synthetic!==void 0&&{synthetic:w.synthetic},...w.screenshot!==void 0&&{screenshot:w.screenshot}})},identify(w){i=w,d.notifyIdentityChanged()},setMetadata(w){s={...s,...w}},shutdown(){g=!0,h==null||h.dispose(),d.dispose(),n.dispose(),c.remove();let w=window;w.mhosaicFeedback===S&&delete w.mhosaicFeedback},_registerTransformer(w){u.push(w)}};return window.mhosaicFeedback=S,S}var Ra={enabled:!0,perFingerprintCooldownMs:3e5,sampleRate:1,maxDescriptionLen:200,globalRatePerMinute:30,maxDistinctFingerprints:200};function Br(e){var t;if(e instanceof Error)return{name:e.name||"Error",message:String((t=e.message)!=null?t:""),...e.stack&&{stack:String(e.stack)}};if(typeof e=="string")return{name:"Error",message:e};if(e&&typeof e=="object"){let r=e;return{name:typeof r.name=="string"&&r.name||"Error",message:typeof r.message=="string"&&r.message||(()=>{try{return JSON.stringify(e)}catch(a){return String(e)}})(),...typeof r.stack=="string"&&{stack:r.stack}}}return{name:"Error",message:String(e)}}function qa(e,t){var n;let r=((n=e.stack)!=null?n:"").split(`
1694
2288
  `).slice(0,4).join(`
1695
- `),n=e.message.slice(0,30);return`${e.name}:${n}|${t}|${r}`}function yo(e,t){return e.length<=t?e:e.slice(0,Math.max(0,t-1))+"\u2026"}function Nt(e,t={}){let r={...go,...t};if(!r.enabled||typeof window=="undefined")return e;let n=e;if(n._errorTrackingArmed)return e;n._errorTrackingArmed=!0;let a=new Set,i=new Map,s=[];function c(g,b){if(r.globalRatePerMinute>0){let m=b-6e4;for(;s.length>0&&s[0]<m;)s.shift();if(s.length>=r.globalRatePerMinute)return!1}if(r.maxDistinctFingerprints>0&&!i.has(g)&&i.size>=r.maxDistinctFingerprints)return!1;if(r.perFingerprintCooldownMs<=0)return s.push(b),!0;let x=i.get(g);if(x!==void 0&&b-x<r.perFingerprintCooldownMs)return!1;let _=256,w=192;if(i.size>_){let m=b-r.perFingerprintCooldownMs*2;for(let[u,l]of i)l<m&&i.delete(u);if(i.size>_){let u=i.size-w,l=0;for(let y of i.keys()){if(l>=u)break;i.delete(y),l++}}}return s.push(b),!0}async function f(g){if(r.sampleRate<1&&Math.random()>=r.sampleRate)return;let b=vo(g,window.location.pathname);if(a.has(b))return;let x=Date.now();if(!c(b,x))return;i.set(b,x);let _=yo(g.message?`${g.name}: ${g.message}`:g.name,r.maxDescriptionLen);a.add(b);try{await n.submit({description:_,feedback_type:"bug",severity:"high",synthetic:!0})}catch(w){}finally{a.delete(b)}}function d(g){var x;let b=(x=g.error)!=null?x:{name:"Error",message:g.message,stack:`at ${g.filename}:${g.lineno}:${g.colno}`};f(Ht(b))}function h(g){f(Ht(g.reason))}window.addEventListener("error",d),window.addEventListener("unhandledrejection",h);let p=n.shutdown.bind(n);return n.shutdown=()=>{window.removeEventListener("error",d),window.removeEventListener("unhandledrejection",h),i.clear(),p()},e}function _o(e){let{errorTracking:t,...r}=e,n=Wt(r);return t!==!1&&Nt(n,typeof t=="object"?t:void 0),n}return Xt(xo);})();
2289
+ `),a=e.message.slice(0,30);return`${e.name}:${a}|${t}|${r}`}function Ea(e,t){return e.length<=t?e:e.slice(0,Math.max(0,t-1))+"\u2026"}function Fr(e,t={}){let r={...Ra,...t};if(!r.enabled||typeof window=="undefined")return e;let a=e;if(a._errorTrackingArmed)return e;a._errorTrackingArmed=!0;let n=new Set,i=new Map,s=[];function l(h,g){if(r.globalRatePerMinute>0){let f=g-6e4;for(;s.length>0&&s[0]<f;)s.shift();if(s.length>=r.globalRatePerMinute)return!1}if(r.maxDistinctFingerprints>0&&!i.has(h)&&i.size>=r.maxDistinctFingerprints)return!1;if(r.perFingerprintCooldownMs<=0)return s.push(g),!0;let S=i.get(h);if(S!==void 0&&g-S<r.perFingerprintCooldownMs)return!1;let k=256,v=192;if(i.size>k){let f=g-r.perFingerprintCooldownMs*2;for(let[m,p]of i)p<f&&i.delete(m);if(i.size>k){let m=i.size-v,p=0;for(let x of i.keys()){if(p>=m)break;i.delete(x),p++}}}return s.push(g),!0}async function u(h){if(r.sampleRate<1&&Math.random()>=r.sampleRate)return;let g=qa(h,window.location.pathname);if(n.has(g))return;let S=Date.now();if(!l(g,S))return;i.set(g,S);let k=Ea(h.message?`${h.name}: ${h.message}`:h.name,r.maxDescriptionLen);n.add(g);try{await a.submit({description:k,feedback_type:"bug",severity:"high",synthetic:!0})}catch(v){}finally{n.delete(g)}}function c(h){var S;let g=(S=h.error)!=null?S:{name:"Error",message:h.message,stack:`at ${h.filename}:${h.lineno}:${h.colno}`};u(Br(g))}function b(h){u(Br(h.reason))}window.addEventListener("error",c),window.addEventListener("unhandledrejection",b);let d=a.shutdown.bind(a);return a.shutdown=()=>{window.removeEventListener("error",c),window.removeEventListener("unhandledrejection",b),i.clear(),d()},e}function Ta(e){let{errorTracking:t,...r}=e,a=Lr(r);return t!==!1&&Fr(a,typeof t=="object"?t:void 0),a}return Nr(Pa);})();
1696
2290
  //# sourceMappingURL=widget.min.js.map