@mhosaic/feedback 0.30.0 → 0.31.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.
- package/dist/{chunk-5F36UFXG.mjs → chunk-AA24TFKX.mjs} +5 -3
- package/dist/chunk-AA24TFKX.mjs.map +1 -0
- package/dist/embed.min.js +2 -2
- package/dist/embed.min.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/react.mjs +1 -1
- package/dist/widget.min.js +2 -2
- package/dist/widget.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-5F36UFXG.mjs.map +0 -1
package/dist/embed.min.js
CHANGED
|
@@ -618,7 +618,7 @@
|
|
|
618
618
|
`))}e.push(c)}catch(l){}n.apply(console,s)})}return()=>{for(let[a,n]of Object.entries(r))console[a]=n}}function Nt(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,p=((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:p,status:c.status,durationMs:Math.round(performance.now()-s),ts:Date.now()}),c}catch(c){let m=c instanceof Error?c.message:String(c);throw e.push({url:t(l),method:p,status:0,durationMs:Math.round(performance.now()-s),ts:Date.now(),error:ae(m)}),c}},()=>{window.fetch=r}}function Ot(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 Kt(e){if(typeof window=="undefined")return()=>{};let t=a=>{let n=a.error instanceof Error?a.error.stack:void 0,i=n!==void 0?ae(n):void 0;e.push({message:ae(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(p){return String(n)}})(),s=n instanceof Error?n.stack:void 0,l=s!==void 0?ae(s):void 0;e.push({message:ae(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 jt(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:be(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 ve=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 Qt(e={}){var g;let{maxConsole:t=50,maxNetwork:r=50,maxErrors:a=20}=e,n=(g=e.sanitizeUrl)!=null?g:be,i=new ve(t),s=new ve(r),l=new ve(a),p=Ht(i),c=Nt(s,n),m=Ot(s,n),d=Kt(l),f=jt();return{snapshot(){return{consoleLogs:i.snapshot(),networkRequests:s.snapshot(),errors:l.snapshot(),device:$t(),capturedAt:Date.now()}},clear(){i.clear(),s.clear(),l.clear()},dispose(){p(),c(),m(),d(),f.dispose()}}}var Oo={"fab.label":"Send feedback","page.badge.aria":"Feedback \u2014 {n} open on this page","page.badge.aria.one":"Feedback \u2014 1 open on this page","page.strip.text":"{n} open reports on this page","page.strip.text.one":"1 open report on this page","page.strip.view":"View","page.peek.title":"On this page","page.peek.viewAll":"View all {n}","page.peek.viewAll.one":"View 1 open report","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.success.seq":"Thanks \u2014 report #{seq} was sent. \u2713","form.discard.title":"Unsaved changes","form.discard.body":"Discard your feedback?","form.discard.keep":"Keep editing","form.discard.confirm":"Discard","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.screenshot.error_count":"Too many screenshots (max {max}).","form.context.label":"Page","form.capture.notice":"Console, network activity and errors are captured automatically to help us debug.","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.scope.thisPage":"This page","board.scope.allPages":"All pages","board.scope.onThisPage":"on this page","board.list.count.page":"{n} of {total} \xB7 this page","board.list.empty.page.title":"No feedback on this page yet.","board.list.empty.page.description":"Be the first to report something here \u2014 or browse the whole project.","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.jump.placeholder":"#","mine.jump.go":"Open","mine.jump.aria":"Open a report by number","mine.jump.not_found":"No report with that number.","error.rate_limited":"Too many requests \u2014 retry in {seconds}s.","error.rate_limited_generic":"Too many requests \u2014 try again in a moment.","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.attach_add":"Add image","detail.attach_remove":"Remove","detail.attachment_alt":"Attached image","detail.copy_link":"Copy link","detail.copied":"Link copied","detail.edit":"Edit","detail.edit_save":"Save","detail.edit_cancel":"Cancel","detail.edit_saving":"Saving\u2026","detail.edit_failed":"Could not save your changes.","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"},Ko={"fab.label":"Envoyer un commentaire","page.badge.aria":"Retours \u2014 {n} ouverts sur cette page","page.badge.aria.one":"Retours \u2014 1 ouvert sur cette page","page.strip.text":"{n} retours ouverts sur cette page","page.strip.text.one":"1 retour ouvert sur cette page","page.strip.view":"Voir","page.peek.title":"Sur cette page","page.peek.viewAll":"Voir les {n}","page.peek.viewAll.one":"Voir 1 retour ouvert","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.success.seq":"Merci \u2014 rapport n\xB0{seq} envoy\xE9. \u2713","form.discard.title":"Modifications non enregistr\xE9es","form.discard.body":"Abandonner votre commentaire ?","form.discard.keep":"Continuer la saisie","form.discard.confirm":"Abandonner","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.screenshot.error_count":"Trop de captures d\u2019\xE9cran (max {max}).","form.context.label":"Page","form.capture.notice":"La console, l\u2019activit\xE9 r\xE9seau et les erreurs sont captur\xE9es automatiquement pour faciliter le diagnostic.","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.scope.thisPage":"Cette page","board.scope.allPages":"Toutes les pages","board.scope.onThisPage":"sur cette page","board.list.count.page":"{n} sur {total} \xB7 cette page","board.list.empty.page.title":"Aucun retour sur cette page pour l\u2019instant.","board.list.empty.page.description":"Soyez le premier \xE0 signaler quelque chose ici \u2014 ou parcourez tout le projet.","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.jump.placeholder":"#","mine.jump.go":"Ouvrir","mine.jump.aria":"Ouvrir un rapport par num\xE9ro","mine.jump.not_found":"Aucun rapport avec ce num\xE9ro.","error.rate_limited":"Trop de requ\xEAtes \u2014 r\xE9essaie dans {seconds} s.","error.rate_limited_generic":"Trop de requ\xEAtes \u2014 r\xE9essaie dans un instant.","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.attach_add":"Ajouter une image","detail.attach_remove":"Retirer","detail.attachment_alt":"Image jointe","detail.copy_link":"Copier le lien","detail.copied":"Lien copi\xE9","detail.edit":"Modifier","detail.edit_save":"Enregistrer","detail.edit_cancel":"Annuler","detail.edit_saving":"Enregistrement\u2026","detail.edit_failed":"Impossible d\u2019enregistrer vos modifications.","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"},jo={fr:Ko};function Qo(e){var r;if(!e)return null;let t=e.toLowerCase().split(/[-_]/)[0];return(r=jo[t])!=null?r:null}function Wt(e,t={}){var a;let r=(a=Qo(t.locale))!=null?a:{};return{...Oo,...r,...e}}ie();Z();function se(e){var r;let t=(r=e.getCurrentPage)==null?void 0:r.call(e);return t||(typeof window!="undefined"?window.location.pathname:"/")}var ht="mfb:locationchange",hr=!1;function oa(){if(!(hr||typeof history=="undefined")){hr=!0;for(let e of["pushState","replaceState"]){let t=history[e];history[e]=function(...r){let a=t.apply(this,r);return window.dispatchEvent(new Event(ht)),a}}}}function We(e){return oa(),window.addEventListener("popstate",e),window.addEventListener(ht,e),()=>{window.removeEventListener("popstate",e),window.removeEventListener(ht,e)}}Z();var vr="mhosaic.boardView.";function yr(e){try{let t=localStorage.getItem(vr+e);if(!t)return{};let r=JSON.parse(t);return r&&typeof r=="object"?r:{}}catch(t){return{}}}function _r(e,t){try{localStorage.setItem(vr+e,JSON.stringify(t))}catch(r){}}function fe(e,t){let r=!1,a=!1,n=0,i=null,s=typeof document!="undefined"?document:null,l=()=>Math.min(t*2**n,t*10),p=async()=>{if(r)return;if(s!=null&&s.hidden){a=!0;return}let m=!1;try{m=await e()}catch(d){m=!1}r||(n=m?0:n+1,i=setTimeout(()=>{p()},l()))},c=()=>{r||!a||s!=null&&s.hidden||(a=!1,p())};return s==null||s.addEventListener("visibilitychange",c),p(),{stop(){r=!0,i&&clearTimeout(i),s==null||s.removeEventListener("visibilitychange",c)}}}function we(e,t){return e instanceof Ce?e.retryAfterSeconds>0?t["error.rate_limited"].replace("{seconds}",String(e.retryAfterSeconds)):t["error.rate_limited_generic"]:null}Z();ie();ie();var aa=0;function o(e,t,r,a,n,i){t||(t={});var s,l,p=t;if("ref"in p)for(l in p={},t)l=="ref"?s=t[l]:p[l]=t[l];var c={type:e,props:p,key:r,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--aa,__i:-1,__u:0,__source:n,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)p[l]===void 0&&(p[l]=s[l]);return K.vnode&&K.vnode(c),c}var xr=/#(\d+)/g;function Ue(e,t){let r=e!=null?e:"";if(!r||!t)return[r];let a=[],n=0;xr.lastIndex=0;let i;for(;(i=xr.exec(r))!==null;){i.index>n&&a.push(r.slice(n,i.index));let s=Number(i[1]);a.push(o("button",{type:"button",class:"seq-link",onClick:()=>t(s),"aria-label":`Open report #${s}`,children:["#",s]})),n=i.index+i[0].length}return n<r.length&&a.push(r.slice(n)),a.length?a:[r]}function wr({comment:e,strings:t,onOpenSeq:r}){var m;let a=e.is_mine,n=!a&&e.author_source==="mcp",i=!a&&e.author_source==="system",s=n?"mcp":i?"system":"staff",l=s==="mcp"?"detail.author.mcp":s==="system"?"detail.author.system":"detail.author.staff",p=e.author_label||t[l],c=((m=e.attachments)!=null?m:[]).filter(d=>d.url);return o("div",{class:`comment-bubble ${a?"is-mine":"is-other"}`,children:[!a&&p&&o("div",{class:`comment-author comment-author--${s}`,children:p}),e.body&&o("div",{class:"comment-body",children:Ue(e.body,r)}),c.length>0&&o("div",{class:"comment-attachments",children:c.map(d=>o("a",{class:"comment-attachment",href:d.url,target:"_blank",rel:"noopener noreferrer",children:o("img",{src:d.url,alt:t["detail.attachment_alt"],loading:"lazy"})},d.id))}),o("div",{class:"comment-time",children:na(e.created_at)})]})}function na(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"short",timeStyle:"short"})}catch(t){return e}}var ia=["image/png","image/jpeg","image/webp"];function Ve(e){return ia.includes(e.type)?e.size>10485760?{kind:"size",maxMb:10485760/(1024*1024)}:null:{kind:"type"}}function ke(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 vt(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 sa=3e4;function Ge({api:e,externalId:t,reportId:r,strings:a,onBack:n,canModerate:i=!0,variant:s="modal",onOpenSeq:l,buildPermalink:p}){var Tt,At,Mt,Lt,zt;let[c,m]=P(null),[d,f]=P(null),[g,k]=P(!1),[C,h]=P(!1),[w,R]=P(""),[x,v]=P(!1),[b,q]=P(!1),[_,F]=P(""),[E,B]=P(!1),[D,I]=P(!1),[N,M]=P(!1),[$,L]=P([]),[O,Q]=P(""),W=V(null),u=V(!0),S=V($);S.current=$,H(()=>()=>S.current.forEach(A=>URL.revokeObjectURL(A.preview)),[]);let T=A=>{Q("");let U=5-$.length,oe=A.slice(0,Math.max(0,U));for(let J of oe){let ne=Ve(J);if(ne){Q(ne.kind==="type"?a["form.screenshot.error_type"]:a["form.screenshot.error_size"].replace("{max}",String(ne.maxMb)));return}}if(oe.length){let J=oe.map(ne=>({blob:ne,preview:URL.createObjectURL(ne)}));L(ne=>[...ne,...J])}A.length>oe.length&&Q(a["form.screenshot.error_count"].replace("{max}",String(5)))},z=A=>{var J;let U=A.target,oe=Array.from((J=U.files)!=null?J:[]);oe.length&&T(oe),U.value=""},j=A=>{let U=$[A];U&&URL.revokeObjectURL(U.preview),L(oe=>oe.filter((J,ne)=>ne!==A)),Q("")},Y=async()=>{try{let A=await e.getReport(r,t);return u.current&&(m(A),f(null)),!0}catch(A){if(typeof console!="undefined"&&console.warn("[mhosaic] getReport:",A),!u.current)return!1;let U=we(A,a);return f(U!=null?U:"load_failed"),!1}};H(()=>{u.current=!0;let A=fe(Y,sa);return()=>{u.current=!1,A.stop()}},[r,t]);let pe=async()=>{if(!(!_.trim()&&$.length===0||E)){B(!0);try{let A=`${r}:${Date.now()}`,U=$.map(J=>J.blob),oe=await e.addComment(r,t,_.trim(),A,U.length?U:void 0);if(!u.current)return;F(""),$.forEach(J=>URL.revokeObjectURL(J.preview)),L([]),Q(""),m(J=>J&&{...J,comments:la(J.comments,oe)}),Y()}catch(A){if(typeof console!="undefined"&&console.warn("[mhosaic] addComment:",A),!u.current)return;f(a["detail.send_failed"])}finally{u.current&&B(!1)}}},xo=async()=>{if(!(!p||!c))try{if(await navigator.clipboard.writeText(p(c.id)),!u.current)return;k(!0),setTimeout(()=>{u.current&&k(!1)},2e3)}catch(A){}},wo=()=>{c&&(R(c.description),q(!1),h(!0))},ko=()=>{h(!1),q(!1)},So=async()=>{if(!c||x)return;let A=w.trim();if(A){v(!0),q(!1);try{let U=await e.editDescription(r,t,A);if(!u.current)return;m(U),h(!1)}catch(U){if(typeof console!="undefined"&&console.warn("[mhosaic] editDescription:",U),!u.current)return;q(!0)}finally{u.current&&v(!1)}}},Co=async()=>{if(!(D||N)){I(!0);try{let A=await e.closeAsResolved(r,t);if(!u.current)return;m(A)}catch(A){if(typeof console!="undefined"&&console.warn("[mhosaic] closeAsResolved:",A),!u.current)return;f(a["detail.close_failed"])}finally{u.current&&I(!1)}}},Ro=async()=>{if(!(D||N)){M(!0);try{let A=await e.reopenUnresolved(r,t);if(!u.current)return;m(A)}catch(A){if(typeof console!="undefined"&&console.warn("[mhosaic] reopenUnresolved:",A),!u.current)return;f(a["detail.reopen_failed"])}finally{u.current&&M(!1)}}};if(!c&&!d)return o("div",{class:"mine-loading",children:a["mine.loading"]});if(!c)return d&&d!=="load_failed"?o("div",{class:"report-detail-empty-state",role:"alert",children:[o("p",{class:"report-detail-empty-state-body",children:d}),o("button",{type:"button",class:"btn",onClick:()=>{Y()},children:a["board.retry"]}),o("button",{type:"button",class:"btn",onClick:n,children:["\u2190 ",a["detail.load_failed.cta"]]})]}):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 qt=(Tt=c.is_mine)!=null?Tt:i,Pt=(At=c.can_moderate)!=null?At:qt,Et=Pt&&c.status==="awaiting_validation",qo=Pt;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--${c.status}`,children:(Mt=a[`status.${c.status}`])!=null?Mt: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:n,"aria-label":a["board.back"],children:["\u2190 ",a["board.back"]]}),o("span",{class:`pill pill-status pill-status--${c.status}`,children:(Lt=a[`status.${c.status}`])!=null?Lt:c.status})]}),o("div",{class:"report-detail-body",children:[o(ca,{detail:c,strings:a}),C?o("div",{class:"report-detail-edit",children:[o("textarea",{class:"report-detail-edit-input",value:w,onInput:A=>{R(A.target.value),q(!1)},disabled:x}),b&&o("p",{class:"error",role:"alert",children:a["detail.edit_failed"]}),o("div",{class:"report-detail-edit-actions",children:[o("button",{type:"button",class:"btn btn--ghost",onClick:ko,disabled:x,children:a["detail.edit_cancel"]}),o("button",{type:"button",class:"btn btn--primary",onClick:So,disabled:x||!w.trim(),children:x?a["detail.edit_saving"]:a["detail.edit_save"]})]})]}):o("div",{class:"report-detail-description-row",children:[o("p",{class:"report-detail-description",children:Ue(c.description,l)}),qt&&o("button",{type:"button",class:"btn btn--ghost report-detail-edit",onClick:wo,children:a["detail.edit"]})]}),p&&o("div",{class:"report-detail-permalink",children:o("button",{type:"button",class:"btn btn--ghost report-detail-copy-link",onClick:xo,children:g?a["detail.copied"]:a["detail.copy_link"]})}),((zt=c.screenshots)!=null&&zt.length?c.screenshots.map(A=>A.url):[c.screenshot_url]).filter(A=>!!A).map(A=>{let U=vt(A);return U?o("a",{class:"report-detail-screenshot",href:U,target:"_blank",rel:"noopener noreferrer",children:o("img",{src:A,alt:"",loading:"lazy"})}):o("div",{class:"report-detail-screenshot",children:o("img",{src:A,alt:"",loading:"lazy"})})}),o("h3",{class:"report-detail-section",children:a["detail.thread"]}),c.comments.length===0?o("p",{class:"report-detail-empty",children:a["detail.no_replies"]}):o("ul",{class:"report-comments",children:c.comments.map(A=>o("li",{children:o(wr,{comment:A,strings:a,...l&&{onOpenSeq:l}})}))}),c.status_history&&c.status_history.length>0&&o(va,{rows:c.status_history,strings:a}),c.technical_context&&o(ua,{ctx:c.technical_context,strings:a}),qo?o("div",{class:"report-compose",children:[o("textarea",{value:_,placeholder:a["detail.compose_placeholder"],onInput:A=>F(A.target.value),disabled:E}),$.length>0&&o("div",{class:"compose-attachments",children:$.map((A,U)=>o("div",{class:"compose-attachment",children:[o("img",{src:A.preview,alt:a["detail.attachment_alt"]}),o("button",{type:"button",class:"compose-attachment-remove","aria-label":a["detail.attach_remove"],onClick:()=>j(U),disabled:E,children:"\xD7"})]},A.preview))}),O&&o("p",{class:"compose-attach-error",role:"alert",children:O}),o("input",{ref:W,type:"file",accept:"image/png,image/jpeg,image/webp",multiple:!0,class:"compose-attach-input",onChange:z,hidden:!0}),o("div",{class:"report-compose-actions",children:[o("button",{type:"button",class:"btn btn--ghost compose-attach-btn",onClick:()=>{var A;return(A=W.current)==null?void 0:A.click()},disabled:E||$.length>=5,children:a["detail.attach_add"]}),Et&&o("button",{type:"button",class:"btn",onClick:Co,disabled:D||N,children:D?a["detail.close_busy"]:a["detail.close_cta"]}),Et&&o("button",{type:"button",class:"btn btn--ghost",onClick:Ro,disabled:D||N,children:N?a["detail.reopen_busy"]:a["detail.reopen_cta"]}),o("button",{type:"button",class:"btn btn--primary",onClick:pe,disabled:!_.trim()&&$.length===0||E,children:E?a["detail.compose_sending"]:a["detail.compose_send"]})]})]}):o("p",{class:"report-detail-teammate-notice",role:"note",children:a["detail.teammate_notice"]}),d&&o("div",{class:"error",children:d})]})]})}function la(e,t){return e.some(r=>r.id===t.id)?e:[...e,t]}function ca({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:kr(e.created_at)})]}),e.page_url&&(()=>{let i=vt(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:ke(e.page_url,64)}):o("span",{class:"report-detail-context-url",children:ke(e.page_url,64)})]})})()]})}function kr(e){try{return new Date(e).toLocaleString(void 0,{dateStyle:"medium",timeStyle:"short"})}catch(t){return e}}var da=20,pa=15;function ua({ctx:e,strings:t}){var c,m,d;let r=(c=e.errors)!=null?c:[],a=((m=e.consoleLogs)!=null?m:[]).slice(-da),n=((d=e.networkRequests)!=null?d:[]).slice(-pa),i=e.device;if(!(!!i||r.length>0||a.length>0||n.length>0))return null;let l=r.length,p=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:p}),o("div",{class:"tech-body",children:[i&&o(fa,{device:i,strings:t}),r.length>0&&o(ma,{errors:r,strings:t}),a.length>0&&o(ba,{logs:a,strings:t}),n.length>0&&o(ga,{rows:n,strings:t})]})]})}function fa({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(ee,{children:[o("dt",{children:a.label}),o("dd",{children:a.value})]}))})]})}function ma({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:ha(r.stack)})]}))})]})}function ba({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 ga({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:ke(r.url,56)}),o("span",{class:"tech-network-time",children:[Math.round(r.durationMs),"ms"]})]})})})]})}function ha(e){let t=e.split(`
|
|
619
619
|
`);return t.length<=12?e:t.slice(0,12).join(`
|
|
620
620
|
`)+`
|
|
621
|
-
\u2026`}function va({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:kr(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 ya=3e4,_a=300,xa=["recent","oldest","updated","severity","status"],wa=["new","in_progress","awaiting_validation","closed","rejected"],ka=["bug","feature","question","praise","typo"],Sa=["blocker","high","medium","low"];function Cr({api:e,externalId:t,strings:r,getCurrentPage:a,initialSelectedId:n}){var M,$;let[i,s]=P(()=>yr(t)),[l,p]=P(!0);H(()=>{_r(t,i)},[t,Sr(i)]);let[c,m]=P(null),[d,f]=P(null),[g,k]=P(!0),[C,h]=P(null),[w,R]=P(n!=null?n:null),[x,v]=P(0),[b,q]=P(0),[_,F]=P((M=i.q)!=null?M:""),E=Fa(_,_a);H(()=>{s(L=>{var O;if(((O=L.q)!=null?O:"")===E)return L;if(E===""){let{q:Q,...W}=L;return W}return{...L,q:E}})},[E]),H(()=>{var L;F((L=i.q)!=null?L:"")},[i.q]);let B=re(()=>{var L,O,Q,W,u,S;return((O=(L=i.status)==null?void 0:L.length)!=null?O:0)+((W=(Q=i.type)==null?void 0:Q.length)!=null?W:0)+((S=(u=i.severity)==null?void 0:u.length)!=null?S:0)+(i.q?1:0)+(i.mine?1:0)},[i]);H(()=>{if(l)return We(()=>q(L=>L+1))},[l]);let D=re(()=>{var O;let L=!!((O=i.q)!=null&&O.trim());return l&&!L?{...i,pagePath:se(a!==void 0?{getCurrentPage:a}:{})}:i},[Sr(i),l,b]);H(()=>{let L=!1;k(!0);let O=fe(async()=>{var Q;try{let[W,u]=await Promise.all([e.listBoard(t,D),e.fetchBoardKpis(t,D)]);return L||(m(W),f(u),h(null)),!0}catch(W){return L||h((Q=we(W,r))!=null?Q:r["board.list.error"]),!1}finally{L||k(!1)}},ya);return()=>{L=!0,O.stop()}},[e,t,JSON.stringify(D)]);let I=re(()=>{var L;return!w||!c?null:(L=c.results.find(O=>O.id===w))!=null?L:null},[w,c]),N=L=>{R(L.id),v(O=>O+1)};return o("div",{class:"board-view",children:[o(Ca,{strings:r,kpis:d,thisPage:l}),o(qa,{filters:i,onChange:s,searchDraft:_,onSearchDraftChange:F,activeCount:B,strings:r,thisPage:l,onToggleThisPage:()=>p(L=>!L)}),o("div",{class:"board-body",children:[o("div",{class:"board-list-wrap","aria-busy":g&&!c,children:[C&&o("div",{class:"board-error",role:"alert",children:[o("span",{children:C}),o("button",{type:"button",class:"btn btn--ghost",onClick:()=>{h(null),k(!0),q(L=>L+1)},children:r["board.retry"]})]}),!C&&g&&!c&&o(Aa,{}),!C&&c&&c.results.length===0&&!g&&o(Ta,{strings:r,thisPage:l,onAllPages:()=>p(!1)}),!C&&c&&c.results.length>0&&o(Pa,{rows:c.results,selectedId:w,onPick:N,strings:r,total:c.count,thisPage:l})]}),o("div",{class:`board-detail-wrap ${I?"has-selection":""}`,children:I?o(Ge,{api:e,externalId:t,reportId:I.id,strings:r,onBack:()=>R(null),canModerate:($=I.can_moderate)!=null?$:I.is_mine,variant:"board",onOpenSeq:L=>{e.getReportBySeq(L,t).then(O=>{R(O.id),v(Q=>Q+1)}).catch(()=>{})}},x):o("div",{class:"board-detail-empty",children:[o(Ba,{}),o("p",{children:r["board.detail.empty"]})]})})]})]})}function Ca({strings:e,kpis:t,thisPage:r}){let a=r?e["board.scope.onThisPage"]:(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 ${a}`:a})]})]}),o(Ra,{kpis:t,strings:e})]})}function Ra({kpis:e,strings:t}){var a,n,i,s,l,p;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((p=(l=e==null?void 0:e.by_status)==null?void 0:l.awaiting_validation)!=null?p: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 qa({filters:e,onChange:t,searchDraft:r,onSearchDraftChange:a,activeCount:n,strings:i,thisPage:s,onToggleThisPage:l}){var k,C,h,w,R,x,v;let p=b=>{if(b===""){let{status:q,..._}=e;t(_)}else t({...e,status:[b]})},c=b=>{if(b===""){let{type:q,..._}=e;t(_)}else t({...e,type:[b]})},m=b=>{if(b===""){let{severity:q,..._}=e;t(_)}else t({...e,severity:[b]})},d=b=>t({...e,ordering:b}),f=()=>{if(e.mine){let{mine:b,...q}=e;t(q)}else t({...e,mine:!0})},g=()=>t({});return o("div",{class:"board-filters",children:[o("div",{class:"board-scope",role:"group","aria-label":i["board.scope.thisPage"],children:[o("button",{type:"button",class:`board-scope-btn ${s?"is-active":""}`,"aria-pressed":s,onClick:()=>!s&&l(),children:i["board.scope.thisPage"]}),o("button",{type:"button",class:`board-scope-btn ${s?"":"is-active"}`,"aria-pressed":!s,onClick:()=>s&&l(),children:i["board.scope.allPages"]})]}),o("select",{class:"board-filter-select","aria-label":i["board.sort"],value:(k=e.ordering)!=null?k:"recent",onChange:b=>d(b.target.value),children:xa.map(b=>o("option",{value:b,children:i[`board.sort.${b}`]},b))}),o("select",{class:"board-filter-select","aria-label":i["board.filter.status"],value:(h=(C=e.status)==null?void 0:C[0])!=null?h:"",onChange:b=>p(b.target.value),children:[o("option",{value:"",children:i["board.filter.status"]}),wa.map(b=>{var q;return o("option",{value:b,children:(q=i[`board.kpi.${b}`])!=null?q:b},b)})]}),o("select",{class:"board-filter-select","aria-label":i["board.filter.type"],value:(R=(w=e.type)==null?void 0:w[0])!=null?R:"",onChange:b=>c(b.target.value),children:[o("option",{value:"",children:i["board.filter.type"]}),ka.map(b=>{var q;return o("option",{value:b,children:(q=i[`type.${b}`])!=null?q:b},b)})]}),o("select",{class:"board-filter-select","aria-label":i["board.filter.severity"],value:(v=(x=e.severity)==null?void 0:x[0])!=null?v:"",onChange:b=>m(b.target.value),children:[o("option",{value:"",children:i["board.filter.severity"]}),Sa.map(b=>{var q;return o("option",{value:b,children:(q=i[`severity.${b}`])!=null?q:b},b)})]}),o("input",{type:"search",class:"board-filter-search",placeholder:i["board.filter.search.placeholder"],value:r,onInput:b=>a(b.target.value)}),o("label",{class:"board-filter-toggle",children:[o("input",{type:"checkbox",checked:!!e.mine,onChange:f}),o("span",{children:i["board.filter.mine"]})]}),n>0&&o("button",{type:"button",class:"board-filter-clear",onClick:g,children:[o(La,{}),i["board.filter.clear"]]})]})}function Pa({rows:e,selectedId:t,onPick:r,strings:a,total:n,thisPage:i}){return o(ee,{children:[o("div",{class:"board-list-count",children:a[i?"board.list.count.page":"board.list.count"].replace("{n}",String(e.length)).replace("{total}",String(n))}),o("ul",{class:"board-list",role:"list",children:e.map(s=>o(Ea,{row:s,selected:s.id===t,onPick:r,strings:a},s.id))})]})}function Ea({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(Ma,{})," ",e.comment_count]}),o("span",{class:"board-row-time",children:Ia(e.created_at)})]})]})})}function Ta({strings:e,thisPage:t,onAllPages:r}){return o("div",{class:"board-empty",children:[o(za,{}),o("h3",{children:e[t?"board.list.empty.page.title":"board.list.empty.title"]}),o("p",{children:e[t?"board.list.empty.page.description":"board.list.empty.description"]}),t&&o("button",{type:"button",class:"btn btn--ghost",onClick:r,children:e["board.scope.allPages"]})]})}function Aa(){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 Ma(){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 La(){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 za(){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 Ba(){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 Fa(e,t){let[r,a]=P(e);return H(()=>{let n=setTimeout(()=>a(e),t);return()=>clearTimeout(n)},[e,t]),r}function Sr(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 Ia(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`}Z();function Da(e){return`pill pill-status pill-status--${e}`}function $a(e){return`pill pill-severity pill-severity--${e}`}function Ha(){return"pill pill-type"}function Na(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 Oa(e,t){return e===1?t["mine.replies_one"]:t["mine.replies_many"].replace("{count}",String(e))}function Xe({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:Da(e.status),children:(n=t[`status.${e.status}`])!=null?n:e.status}),o("span",{class:Ha(),children:t[`type.${e.feedback_type}`]}),o("span",{class:$a(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:Na(e.updated_at||e.created_at)}),e.comment_count>0&&o("span",{children:["\xB7 ",Oa(e.comment_count,t)]})]})]})}var Ka=3e4;function ja(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 Qa(e){let t=new Map;for(let r of e){let a=ja(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:Wa(r),rows:a}))}function Wa(e){try{return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(t){return e}}function Rr({api:e,externalId:t,strings:r,onSelect:a}){let[n,i]=P(null),[s,l]=P(null),[p,c]=P(!1),m=V(!0),d=async()=>{c(!0),l(null);try{let C=await e.listChangelog(t);return m.current&&i(C),!0}catch(C){return typeof console!="undefined"&&console.warn("[mhosaic] listChangelog:",C),m.current&&l(r["mine.error"]),!1}finally{m.current&&c(!1)}};H(()=>{m.current=!0;let C=fe(d,Ka);return()=>{m.current=!1,C.stop()}},[t]);let f=re(()=>n?Qa(n):[],[n]),g=n===null&&!s,k=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:p,children:p?r["mine.loading"]:r["mine.refresh"]})]}),g&&o("div",{class:"mine-loading",children:r["mine.loading"]}),s&&o("div",{class:"error",children:s}),k&&o("div",{class:"mine-empty",children:[o("strong",{children:r["changelog.empty.title"]}),o("p",{children:r["changelog.empty.body"]})]}),f.length>0&&o("div",{class:"changelog-groups",children:f.map(C=>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}",C.label)}),o("span",{class:"changelog-group-rule","aria-hidden":"true"}),o("span",{class:"changelog-group-count",children:r[C.rows.length===1?"changelog.resolved_one":"changelog.resolved_many"].replace("{count}",String(C.rows.length))})]}),o("ul",{class:"mine-rows",children:C.rows.map(h=>o("li",{children:o(Xe,{row:h,strings:r,onClick:()=>a(h)})}))})]},C.weekKey))})]})}function Ua(){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 qr({label:e,onClick:t,count:r}){return o("button",{type:"button",class:"fab","aria-label":e,title:e,onClick:t,children:[o(Ua,{}),r!==void 0&&r>0&&o("span",{class:"fab-badge","aria-hidden":"true",children:r>9?"9+":String(r)})]})}Z();Z();var Pr=["#ef4444","#f59e0b","#10b981","#3b82f6","#ffffff"],Va=.35;function Er(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")Ga(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=Va,e.fillRect(Ye(t.x,t.w),Ye(t.y,t.h),Math.abs(t.w),Math.abs(t.h))):t.kind==="blur"&&Xa(e,t,r);e.restore()}function Ye(e,t){return t<0?e+t:e}function Ga(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 Xa(e,t,r){if(!r)return;let a=Ye(t.x,t.w),n=Ye(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 p=n;p<n+s;p+=l)for(let c=a;c<a+i;c+=l){let m=Math.min(l,a+i-c),d=Math.min(l,n+s-p);e.drawImage(r,c,p,m,d,c,p,m,d)}e.imageSmoothingEnabled=!1;for(let p=n;p<n+s;p+=l)for(let c=a;c<a+i;c+=l){let m=Math.min(l,a+i-c),d=Math.min(l,n+s-p);e.drawImage(r,c,p,1,1,c,p,m,d)}e.imageSmoothingEnabled=!0}var le={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 Tr({imageBlob:e,strings:t,onSave:r,onCancel:a}){let n=V(null),i=V(null),s=V(null),[l,p]=P("rectangle"),[c,m]=P(Pr[0]),[d,f]=P([]),[g,k]=P([]),[C,h]=P([]),w=V(!1),[R,x]=P(null),[v,b]=P(!1),[q,_]=P(!1),F=V(1);function E(u){f(S=>(k(T=>[...T,S]),[...S,u])),h([])}function B(){f(u=>(k(S=>[...S,u]),[])),h([])}function D(){k(u=>{if(u.length===0)return u;let S=u[u.length-1];return f(T=>(h(z=>[T,...z]),S)),u.slice(0,-1)})}function I(){h(u=>{if(u.length===0)return u;let S=u[0];return f(T=>(k(z=>[...z,T]),S)),u.slice(1)})}bt(()=>{let u=S=>{S.key==="Escape"&&(S.stopPropagation(),a())};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[a]),H(()=>{let u=S=>{if(!(S.metaKey||S.ctrlKey))return;let z=S.key.toLowerCase();z==="z"?(S.preventDefault(),S.stopPropagation(),S.shiftKey?I():D()):z==="y"&&(S.preventDefault(),S.stopPropagation(),I())};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[g,C,d]),H(()=>{let u=URL.createObjectURL(e),S=new Image;return S.onload=()=>{s.current=S,b(!0)},S.src=u,()=>URL.revokeObjectURL(u)},[e]),bt(()=>{if(!v||!n.current||!s.current||!i.current)return;let u=s.current,T=i.current.clientWidth-16,z=window.innerHeight*.65,j=Math.min(T/u.width,z/u.height,1);F.current=j;let Y=n.current;Y.width=u.width,Y.height=u.height,Y.style.width=`${u.width*j}px`,Y.style.height=`${u.height*j}px`,N()},[v]),H(()=>{N()},[d,R]);function N(){let u=n.current,S=s.current;if(!u||!S)return;let T=u.getContext("2d");if(T){T.clearRect(0,0,u.width,u.height),T.drawImage(S,0,0);for(let z of d)Er(T,z,S);R&&Er(T,R,S)}}function M(u){let T=n.current.getBoundingClientRect();return{x:(u.clientX-T.left)/F.current,y:(u.clientY-T.top)/F.current}}let $=u=>{if(!v)return;let{x:S,y:T}=M(u),z=n.current.width,j=Math.max(3,Math.round(z/400)),Y=Math.max(8,Math.round(z/80));if(l==="text"){let pe=window.prompt(t["annotator.text_prompt"]);pe&&pe.trim()&&E({kind:"text",x:S,y:T,text:pe.trim(),color:c,fontSize:Math.max(16,Math.round(z/50)),lineWidth:1});return}w.current=!0,l==="rectangle"?x({kind:"rectangle",x:S,y:T,w:0,h:0,color:c,lineWidth:j}):l==="arrow"?x({kind:"arrow",x1:S,y1:T,x2:S,y2:T,color:c,lineWidth:j}):l==="freehand"?x({kind:"freehand",points:[{x:S,y:T}],color:c,lineWidth:j}):l==="highlight"?x({kind:"highlight",x:S,y:T,w:0,h:0,color:c==="#ffffff"?"#fde047":c,lineWidth:1}):l==="blur"&&x({kind:"blur",x:S,y:T,w:0,h:0,color:"#000000",lineWidth:0,tile:Y})},L=u=>{if(!w.current)return;let{x:S,y:T}=M(u);x(z=>z&&(z.kind==="rectangle"||z.kind==="highlight"||z.kind==="blur"?{...z,w:S-z.x,h:T-z.y}:z.kind==="arrow"?{...z,x2:S,y2:T}:z.kind==="freehand"?{...z,points:[...z.points,{x:S,y:T}]}:z))},O=()=>{x(u=>(w.current&&u&&((u.kind==="rectangle"||u.kind==="highlight"||u.kind==="blur")&&Math.abs(u.w)<4&&Math.abs(u.h)<4||u.kind==="arrow"&&Math.hypot(u.x2-u.x1,u.y2-u.y1)<4||u.kind==="freehand"&&u.points.length<3||E(u)),null)),w.current=!1},Q=async()=>{let u=n.current;if(u){_(!0);try{let S=await new Promise(T=>u.toBlob(T,"image/png",.92));S&&r(S)}finally{_(!1)}}},W=[{id:"rectangle",icon:le.rect,label:t["annotator.tool.rectangle"]},{id:"arrow",icon:le.arrow,label:t["annotator.tool.arrow"]},{id:"freehand",icon:le.pencil,label:t["annotator.tool.freehand"]},{id:"text",icon:le.text,label:t["annotator.tool.text"]},{id:"highlight",icon:le.highlight,label:t["annotator.tool.highlight"]},{id:"blur",icon:le.blur,label:t["annotator.tool.blur"]}];return o("div",{class:"annotator-backdrop",role:"presentation",onClick:u=>{u.target===u.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:le.close})]}),o("div",{class:"annotator-toolbar",children:[o("div",{class:"annotator-tools",children:W.map(u=>o("button",{type:"button",onClick:()=>p(u.id),title:u.label,"aria-label":u.label,"aria-pressed":l===u.id,class:`annotator-tool ${l===u.id?"is-active":""}`,children:u.icon},u.id))}),o("span",{class:"annotator-sep"}),o("div",{class:"annotator-colors",children:[Pr.map(u=>o("button",{type:"button",onClick:()=>m(u),"aria-label":u,"aria-pressed":c===u,class:`annotator-color ${c===u?"is-active":""}`,style:{backgroundColor:u}},u)),o("label",{class:"annotator-color annotator-color-picker",title:t["annotator.color_picker"],children:o("input",{type:"color",value:c,onInput:u=>m(u.target.value),"aria-label":t["annotator.color_picker"]})})]}),o("span",{class:"annotator-sep"}),o("button",{type:"button",class:"annotator-btn",onClick:D,disabled:g.length===0,title:t["annotator.undo"],children:[le.undo,o("span",{children:t["annotator.undo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:I,disabled:C.length===0,title:t["annotator.redo"],children:[le.redo,o("span",{children:t["annotator.redo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:B,disabled:d.length===0,children:[le.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:v?o("canvas",{ref:n,onMouseDown:$,onMouseMove:L,onMouseUp:O,onMouseLeave:O,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:Q,disabled:q||!v,children:q?t["annotator.applying"]:t["annotator.apply"]})]})]})})}var Ya=["bug","feature","question","praise","typo"],Ja=["blocker","high","medium","low"];function Ar({strings:e,onSubmit:t,onCancel:r,status:a,errorMessage:n,submittedSeq:i,onDirtyChange:s}){let[l,p]=P(""),[c,m]=P("bug"),[d,f]=P("medium"),[g,k]=P(""),[C,h]=P([]),[w,R]=P(!1),[x,v]=P(null),b=V(null),q=V(null),_=a==="submitting",F=_?e["form.submitting"]:e["form.submit"],E=typeof window!="undefined"?window.location.href:"",B=l.trim()!==""||C.length>0;H(()=>{s==null||s(B)},[B]);let D=V(C);D.current=C,H(()=>()=>{D.current.forEach(u=>URL.revokeObjectURL(u.preview))},[]);let I=u=>{k("");let S=5-C.length,T=u.slice(0,Math.max(0,S));for(let z of T)if(z instanceof File){let j=Ve(z);if(j){k(j.kind==="type"?e["form.screenshot.error_type"]:e["form.screenshot.error_size"].replace("{max}",String(j.maxMb)));return}}if(T.length){let z=T.map(j=>({blob:j,preview:URL.createObjectURL(j)}));h(j=>[...j,...z])}u.length>T.length&&k(e["form.screenshot.error_count"].replace("{max}",String(5)))},N=u=>{let S=C[u];S&&URL.revokeObjectURL(S.preview),h(T=>T.filter((z,j)=>j!==u)),k(""),b.current&&(b.current.value="")},M=u=>{var z;let S=u.target,T=Array.from((z=S.files)!=null?z:[]);T.length&&I(T),S.value=""},$=u=>{u.preventDefault(),u.stopPropagation(),R(!0)},L=u=>{u.preventDefault(),u.stopPropagation(),u.currentTarget===u.target&&R(!1)},O=u=>{var T,z;u.preventDefault(),u.stopPropagation(),R(!1);let S=Array.from((z=(T=u.dataTransfer)==null?void 0:T.files)!=null?z:[]);S.length&&I(S)};H(()=>{let u=q.current;if(!u)return;let S=T=>{var j;let z=(j=T.clipboardData)==null?void 0:j.items;if(z){for(let Y of Array.from(z))if(Y.kind==="file"&&Y.type.startsWith("image/")){let pe=Y.getAsFile();if(pe){T.preventDefault(),I([pe]);return}}}};return u.addEventListener("paste",S),()=>u.removeEventListener("paste",S)},[C.length]);let Q=u=>{let S=x;if(S===null||!C[S]){v(null);return}URL.revokeObjectURL(C[S].preview);let T={blob:u,preview:URL.createObjectURL(u)};h(z=>z.map((j,Y)=>Y===S?T:j)),v(null)};return o("form",{onSubmit:u=>{if(u.preventDefault(),!l.trim()){k(e["form.description.required"]);return}k("");let S={description:l.trim(),feedback_type:c,severity:d};C.length&&(S.screenshots=C.map(T=>T.blob),S.capture_method="manual"),t(S)},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:l,placeholder:e["form.description.placeholder"],onInput:u=>p(u.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:u=>m(u.target.value),children:Ya.map(u=>o("option",{value:u,children:e[`type.${u}`]}))})]}),o("div",{class:"field",children:[o("label",{for:"mfb-sev",children:e["form.severity.label"]}),o("select",{id:"mfb-sev",value:d,onChange:u=>f(u.target.value),children:Ja.map(u=>o("option",{value:u,children:e[`severity.${u}`]}))})]})]}),o("div",{class:"field",children:[o("label",{children:e["form.screenshot.label"]}),o("input",{ref:b,type:"file",accept:"image/png,image/jpeg,image/webp",multiple:!0,class:"mfb-sr-only",onChange:M,"aria-hidden":"true",tabIndex:-1}),C.length>0&&o("div",{class:"screenshot-strip",children:C.map((u,S)=>o("div",{class:"screenshot-preview",children:[o("img",{src:u.preview,alt:""}),o("div",{class:"screenshot-preview-actions",children:[o("button",{type:"button",class:"btn btn--primary screenshot-annotate",onClick:()=>v(S),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:()=>N(S),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"]]})]})]},u.preview))}),C.length<5&&o("div",{ref:q,class:`screenshot-dropzone ${w?"is-dragover":""}`,tabIndex:0,role:"button","aria-label":e["form.screenshot.label"],onClick:()=>{var u;return(u=b.current)==null?void 0:u.click()},onKeyDown:u=>{var S;(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),(S=b.current)==null||S.click())},onDragOver:$,onDragLeave:L,onDrop:O,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"]})]})]}),E&&o("div",{class:"page-context",title:E,children:[o("span",{class:"page-context-label",children:e["form.context.label"]}),o("span",{class:"page-context-url",children:ke(E,90)})]}),o("div",{class:"capture-notice",children:e["form.capture.notice"]}),g&&o("div",{class:"error",children:g}),a==="error"&&n&&o("div",{class:"error",children:n}),a==="success"&&o("div",{class:"success",children:i!==void 0?e["form.success.seq"].replace("{seq}",String(i)):e["form.success"]}),o("div",{class:"actions",children:[o("button",{type:"button",class:"btn",onClick:r,disabled:_,children:e["form.cancel"]}),o("button",{type:"submit",class:"btn btn--primary",disabled:_,children:F})]}),x!==null&&C[x]&&o(Tr,{imageBlob:C[x].blob,strings:e,onCancel:()=>v(null),onSave:Q})]})}Z();function Za(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 en(e){return e.total===0?null:Math.round((e.awaiting_validation+e.resolved)/e.total*100)}var tn={new:"new",in_progress:"in_progress",awaiting_validation:"awaiting_validation",closed:"resolved",rejected:"resolved",duplicate:"resolved",wontfix:"resolved"};function Mr(e,t){return t==="all"?e:e.filter(r=>tn[r.status]===t)}function Lr({rows:e,filter:t,onFilter:r,strings:a}){let n=Za(e),i=en(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 p=t===l.key,c=p?"all":l.key;return o("button",{type:"button",class:`kpi-cell kpi-cell--${l.key}${p?" is-active":""}`,onClick:()=>r(c),"aria-pressed":p,children:[o("span",{class:"kpi-value",children:l.value}),o("span",{class:"kpi-label",children:l.label})]})})})}var rn=3e4;function zr({api:e,externalId:t,strings:r,onSelect:a,onOpenSeq:n}){var B;let[i,s]=P(null),[l,p]=P(null),[c,m]=P(!1),[d,f]=P("all"),[g,k]=P(""),[C,h]=P(!1),[w,R]=P(!1),x=V(!0),v=async D=>{if(D.preventDefault(),!n||w)return;let I=parseInt(g.replace(/^#/,"").trim(),10);if(!Number.isInteger(I)||I<=0){h(!0);return}R(!0),h(!1);try{let N=await n(I);if(!x.current)return;N?k(""):h(!0)}finally{x.current&&R(!1)}},b=async()=>{var D;m(!0),p(null);try{let I=await e.listMine(t);return x.current&&s(I),!0}catch(I){return typeof console!="undefined"&&console.warn("[mhosaic] listMine:",I),x.current&&p((D=we(I,r))!=null?D:r["mine.error"]),!1}finally{x.current&&m(!1)}};H(()=>{x.current=!0;let D=fe(b,rn);return()=>{x.current=!1,D.stop()}},[t]);let q=i!==null&&i.length===0,_=i===null&&!l,F=i?Mr(i,d):null,E=!!i&&i.length>0&&((B=F==null?void 0:F.length)!=null?B:0)===0;return o("div",{class:"mine-list",children:[o("div",{class:"mine-list-header",children:[o("h2",{children:r["tab.mine"]}),o("div",{class:"mine-list-header-actions",children:[n&&o("form",{class:"mine-jump",onSubmit:v,children:[o("input",{type:"text",inputMode:"numeric",value:g,placeholder:r["mine.jump.placeholder"],"aria-label":r["mine.jump.aria"],onInput:D=>{k(D.target.value),h(!1)},disabled:w}),o("button",{type:"submit",class:"btn",disabled:w||!g.trim(),children:r["mine.jump.go"]})]}),o("button",{type:"button",class:"btn",onClick:()=>{b()},disabled:c,children:c?r["mine.loading"]:r["mine.refresh"]})]})]}),C&&o("div",{class:"mine-jump-error error",role:"alert",children:r["mine.jump.not_found"]}),i&&i.length>0&&o(Lr,{rows:i,filter:d,onFilter:f,strings:r}),_&&o("div",{class:"mine-loading",children:r["mine.loading"]}),l&&o("div",{class:"error",children:l}),q&&o("div",{class:"mine-empty",children:[o("strong",{children:r["mine.empty.title"]}),o("p",{children:r["mine.empty.body"]})]}),E&&o("div",{class:"mine-empty",children:o("p",{children:r["mine.filter.empty"]})}),F&&F.length>0&&o("ul",{class:"mine-rows",children:F.map(D=>o("li",{children:o(Xe,{row:D,strings:r,onClick:()=>a(D)})}))})]})}Z();function Br({onDismiss:e,children:t,closeLabel:r="Close",expanded:a=!1}){let n=V(null),i=V(null);return H(()=>{var p;i.current=document.activeElement;let s=c=>{var d;if(c.key!=="Escape")return;let m=(d=n.current)==null?void 0:d.getRootNode();m instanceof ShadowRoot&&m.querySelector(".annotator-backdrop")||(c.stopPropagation(),e("escape"))};window.addEventListener("keydown",s);let l=(p=n.current)==null?void 0:p.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("backdrop")},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("button"),children:"\xD7"}),t]})})}function Fr({open:e,strings:t,onView:r}){if(e===0)return null;let a=e===1?t["page.strip.text.one"]:t["page.strip.text"].replace("{n}",String(e));return o("div",{class:"page-strip",children:[o("span",{children:a}),o("button",{type:"button",class:"page-strip-view",onClick:r,children:t["page.strip.view"]})]})}Z();function Ir({api:e,externalId:t,strings:r,getCurrentPage:a,open:n,onViewAll:i,onPickRow:s,onSend:l}){let[p,c]=P(null),[m,d]=P(!1);return H(()=>{let f=!1,g=se(a!==void 0?{getCurrentPage:a}:{});return e.listBoard(t,{pagePath:g,status:["new","in_progress","awaiting_validation"]}).then(k=>{f||c(k.results.slice(0,5))}).catch(()=>{f||d(!0)}),()=>{f=!0}},[e,t]),o("div",{class:"page-peek",role:"region","aria-label":r["page.peek.title"],children:[o("div",{class:"page-peek-title",children:r["page.peek.title"]}),p===null&&!m&&o("div",{class:"page-peek-skeleton","aria-hidden":"true",children:[o("div",{})," ",o("div",{})]}),p!==null&&p.map(f=>o("button",{type:"button",class:"page-peek-row",onClick:()=>s==null?void 0:s(f.id),children:[o("span",{class:`page-peek-dot status-${f.status}`,"aria-hidden":"true"}),o("span",{class:"page-peek-desc",children:f.description})]},f.id)),o("div",{class:"page-peek-footer",children:[o("button",{type:"button",class:"page-peek-viewall",onClick:i,children:n===1?r["page.peek.viewAll.one"]:r["page.peek.viewAll"].replace("{n}",String(n))}),o("button",{type:"button",class:"page-peek-send",onClick:l,children:r["fab.label"]})]})]})}Z();var on=6e4;function an(e){var r,a,n;let t=e.by_status;return((r=t.new)!=null?r:0)+((a=t.in_progress)!=null?a:0)+((n=t.awaiting_validation)!=null?n:0)}var _t=new Map,yt=new Map;function nn(){_t.clear()}function sn(e,t,r){let a=`${t}|${r}`,n=_t.get(a);if(n&&Date.now()-n.fetchedAt<on)return Promise.resolve(n.open);let i=yt.get(a);if(i)return i;let s=e.fetchBoardKpis(t,{pagePath:r}).then(l=>{let p=an(l);return _t.set(a,{open:p,fetchedAt:Date.now()}),p}).finally(()=>yt.delete(a));return yt.set(a,s),s}function Dr(e){let{api:t,externalId:r,getCurrentPage:a,enabled:n}=e,[i,s]=P(0),[l,p]=P(0),c=de(()=>{nn(),p(m=>m+1)},[]);return H(()=>{if(!n||!t||!r){s(0);return}let m=!1,d=()=>{let g=se(a!==void 0?{getCurrentPage:a}:{});sn(t,r,g).then(k=>{m||s(k)}).catch(()=>{m||s(0)})};d();let f=We(d);return()=>{m=!0,f()}},[t,r,n,l]),{open:i,refresh:c}}var $r=`
|
|
621
|
+
\u2026`}function va({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:kr(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 ya=3e4,_a=300,xa=["recent","oldest","updated","severity","status"],wa=["new","in_progress","awaiting_validation","closed","rejected"],ka=["bug","feature","question","praise","typo"],Sa=["blocker","high","medium","low"];function Cr({api:e,externalId:t,strings:r,getCurrentPage:a,initialSelectedId:n}){var M,$;let[i,s]=P(()=>yr(t)),[l,p]=P(!0);H(()=>{_r(t,i)},[t,Sr(i)]);let[c,m]=P(null),[d,f]=P(null),[g,k]=P(!0),[C,h]=P(null),[w,R]=P(n!=null?n:null),[x,v]=P(0),[b,q]=P(0),[_,F]=P((M=i.q)!=null?M:""),E=Fa(_,_a);H(()=>{s(L=>{var O;if(((O=L.q)!=null?O:"")===E)return L;if(E===""){let{q:Q,...W}=L;return W}return{...L,q:E}})},[E]),H(()=>{var L;F((L=i.q)!=null?L:"")},[i.q]);let B=re(()=>{var L,O,Q,W,u,S;return((O=(L=i.status)==null?void 0:L.length)!=null?O:0)+((W=(Q=i.type)==null?void 0:Q.length)!=null?W:0)+((S=(u=i.severity)==null?void 0:u.length)!=null?S:0)+(i.q?1:0)+(i.mine?1:0)},[i]);H(()=>{if(l)return We(()=>q(L=>L+1))},[l]);let D=re(()=>{var O;let L=!!((O=i.q)!=null&&O.trim());return l&&!L?{...i,pagePath:se(a!==void 0?{getCurrentPage:a}:{})}:i},[Sr(i),l,b]);H(()=>{let L=!1;m(null),f(null),k(!0);let O=fe(async()=>{var Q;try{let[W,u]=await Promise.all([e.listBoard(t,D),e.fetchBoardKpis(t,D)]);return L||(m(W),f(u),h(null)),!0}catch(W){return L||h((Q=we(W,r))!=null?Q:r["board.list.error"]),!1}finally{L||k(!1)}},ya);return()=>{L=!0,O.stop()}},[e,t,JSON.stringify(D)]);let I=re(()=>{var L;return!w||!c?null:(L=c.results.find(O=>O.id===w))!=null?L:null},[w,c]),N=L=>{R(L.id),v(O=>O+1)};return o("div",{class:"board-view",children:[o(Ca,{strings:r,kpis:d,thisPage:l}),o(qa,{filters:i,onChange:s,searchDraft:_,onSearchDraftChange:F,activeCount:B,strings:r,thisPage:l,onToggleThisPage:()=>p(L=>!L)}),o("div",{class:"board-body",children:[o("div",{class:"board-list-wrap","aria-busy":g&&!c,children:[C&&o("div",{class:"board-error",role:"alert",children:[o("span",{children:C}),o("button",{type:"button",class:"btn btn--ghost",onClick:()=>{h(null),k(!0),q(L=>L+1)},children:r["board.retry"]})]}),!C&&g&&!c&&o(Aa,{}),!C&&c&&c.results.length===0&&!g&&o(Ta,{strings:r,thisPage:l,onAllPages:()=>p(!1)}),!C&&c&&c.results.length>0&&o(Pa,{rows:c.results,selectedId:w,onPick:N,strings:r,total:c.count,thisPage:l})]}),o("div",{class:`board-detail-wrap ${I?"has-selection":""}`,children:I?o(Ge,{api:e,externalId:t,reportId:I.id,strings:r,onBack:()=>R(null),canModerate:($=I.can_moderate)!=null?$:I.is_mine,variant:"board",onOpenSeq:L=>{e.getReportBySeq(L,t).then(O=>{R(O.id),v(Q=>Q+1)}).catch(()=>{})}},x):o("div",{class:"board-detail-empty",children:[o(Ba,{}),o("p",{children:r["board.detail.empty"]})]})})]})]})}function Ca({strings:e,kpis:t,thisPage:r}){let a=r?e["board.scope.onThisPage"]:(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 ${a}`:a})]})]}),o(Ra,{kpis:t,strings:e})]})}function Ra({kpis:e,strings:t}){var a,n,i,s,l,p;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((p=(l=e==null?void 0:e.by_status)==null?void 0:l.awaiting_validation)!=null?p: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 qa({filters:e,onChange:t,searchDraft:r,onSearchDraftChange:a,activeCount:n,strings:i,thisPage:s,onToggleThisPage:l}){var k,C,h,w,R,x,v;let p=b=>{if(b===""){let{status:q,..._}=e;t(_)}else t({...e,status:[b]})},c=b=>{if(b===""){let{type:q,..._}=e;t(_)}else t({...e,type:[b]})},m=b=>{if(b===""){let{severity:q,..._}=e;t(_)}else t({...e,severity:[b]})},d=b=>t({...e,ordering:b}),f=()=>{if(e.mine){let{mine:b,...q}=e;t(q)}else t({...e,mine:!0})},g=()=>t({});return o("div",{class:"board-filters",children:[o("div",{class:"board-scope",role:"group","aria-label":i["board.scope.thisPage"],children:[o("button",{type:"button",class:`board-scope-btn ${s?"is-active":""}`,"aria-pressed":s,onClick:()=>!s&&l(),children:i["board.scope.thisPage"]}),o("button",{type:"button",class:`board-scope-btn ${s?"":"is-active"}`,"aria-pressed":!s,onClick:()=>s&&l(),children:i["board.scope.allPages"]})]}),o("select",{class:"board-filter-select","aria-label":i["board.sort"],value:(k=e.ordering)!=null?k:"recent",onChange:b=>d(b.target.value),children:xa.map(b=>o("option",{value:b,children:i[`board.sort.${b}`]},b))}),o("select",{class:"board-filter-select","aria-label":i["board.filter.status"],value:(h=(C=e.status)==null?void 0:C[0])!=null?h:"",onChange:b=>p(b.target.value),children:[o("option",{value:"",children:i["board.filter.status"]}),wa.map(b=>{var q;return o("option",{value:b,children:(q=i[`board.kpi.${b}`])!=null?q:b},b)})]}),o("select",{class:"board-filter-select","aria-label":i["board.filter.type"],value:(R=(w=e.type)==null?void 0:w[0])!=null?R:"",onChange:b=>c(b.target.value),children:[o("option",{value:"",children:i["board.filter.type"]}),ka.map(b=>{var q;return o("option",{value:b,children:(q=i[`type.${b}`])!=null?q:b},b)})]}),o("select",{class:"board-filter-select","aria-label":i["board.filter.severity"],value:(v=(x=e.severity)==null?void 0:x[0])!=null?v:"",onChange:b=>m(b.target.value),children:[o("option",{value:"",children:i["board.filter.severity"]}),Sa.map(b=>{var q;return o("option",{value:b,children:(q=i[`severity.${b}`])!=null?q:b},b)})]}),o("input",{type:"search",class:"board-filter-search",placeholder:i["board.filter.search.placeholder"],value:r,onInput:b=>a(b.target.value)}),o("label",{class:"board-filter-toggle",children:[o("input",{type:"checkbox",checked:!!e.mine,onChange:f}),o("span",{children:i["board.filter.mine"]})]}),n>0&&o("button",{type:"button",class:"board-filter-clear",onClick:g,children:[o(La,{}),i["board.filter.clear"]]})]})}function Pa({rows:e,selectedId:t,onPick:r,strings:a,total:n,thisPage:i}){return o(ee,{children:[o("div",{class:"board-list-count",children:a[i?"board.list.count.page":"board.list.count"].replace("{n}",String(e.length)).replace("{total}",String(n))}),o("ul",{class:"board-list",role:"list",children:e.map(s=>o(Ea,{row:s,selected:s.id===t,onPick:r,strings:a},s.id))})]})}function Ea({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(Ma,{})," ",e.comment_count]}),o("span",{class:"board-row-time",children:Ia(e.created_at)})]})]})})}function Ta({strings:e,thisPage:t,onAllPages:r}){return o("div",{class:"board-empty",children:[o(za,{}),o("h3",{children:e[t?"board.list.empty.page.title":"board.list.empty.title"]}),o("p",{children:e[t?"board.list.empty.page.description":"board.list.empty.description"]}),t&&o("button",{type:"button",class:"btn btn--ghost",onClick:r,children:e["board.scope.allPages"]})]})}function Aa(){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 Ma(){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 La(){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 za(){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 Ba(){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 Fa(e,t){let[r,a]=P(e);return H(()=>{let n=setTimeout(()=>a(e),t);return()=>clearTimeout(n)},[e,t]),r}function Sr(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 Ia(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`}Z();function Da(e){return`pill pill-status pill-status--${e}`}function $a(e){return`pill pill-severity pill-severity--${e}`}function Ha(){return"pill pill-type"}function Na(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 Oa(e,t){return e===1?t["mine.replies_one"]:t["mine.replies_many"].replace("{count}",String(e))}function Xe({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:Da(e.status),children:(n=t[`status.${e.status}`])!=null?n:e.status}),o("span",{class:Ha(),children:t[`type.${e.feedback_type}`]}),o("span",{class:$a(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:Na(e.updated_at||e.created_at)}),e.comment_count>0&&o("span",{children:["\xB7 ",Oa(e.comment_count,t)]})]})]})}var Ka=3e4;function ja(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 Qa(e){let t=new Map;for(let r of e){let a=ja(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:Wa(r),rows:a}))}function Wa(e){try{return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(t){return e}}function Rr({api:e,externalId:t,strings:r,onSelect:a}){let[n,i]=P(null),[s,l]=P(null),[p,c]=P(!1),m=V(!0),d=async()=>{c(!0),l(null);try{let C=await e.listChangelog(t);return m.current&&i(C),!0}catch(C){return typeof console!="undefined"&&console.warn("[mhosaic] listChangelog:",C),m.current&&l(r["mine.error"]),!1}finally{m.current&&c(!1)}};H(()=>{m.current=!0;let C=fe(d,Ka);return()=>{m.current=!1,C.stop()}},[t]);let f=re(()=>n?Qa(n):[],[n]),g=n===null&&!s,k=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:p,children:p?r["mine.loading"]:r["mine.refresh"]})]}),g&&o("div",{class:"mine-loading",children:r["mine.loading"]}),s&&o("div",{class:"error",children:s}),k&&o("div",{class:"mine-empty",children:[o("strong",{children:r["changelog.empty.title"]}),o("p",{children:r["changelog.empty.body"]})]}),f.length>0&&o("div",{class:"changelog-groups",children:f.map(C=>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}",C.label)}),o("span",{class:"changelog-group-rule","aria-hidden":"true"}),o("span",{class:"changelog-group-count",children:r[C.rows.length===1?"changelog.resolved_one":"changelog.resolved_many"].replace("{count}",String(C.rows.length))})]}),o("ul",{class:"mine-rows",children:C.rows.map(h=>o("li",{children:o(Xe,{row:h,strings:r,onClick:()=>a(h)})}))})]},C.weekKey))})]})}function Ua(){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 qr({label:e,onClick:t,count:r}){return o("button",{type:"button",class:"fab","aria-label":e,title:e,onClick:t,children:[o(Ua,{}),r!==void 0&&r>0&&o("span",{class:"fab-badge","aria-hidden":"true",children:r>9?"9+":String(r)})]})}Z();Z();var Pr=["#ef4444","#f59e0b","#10b981","#3b82f6","#ffffff"],Va=.35;function Er(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")Ga(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=Va,e.fillRect(Ye(t.x,t.w),Ye(t.y,t.h),Math.abs(t.w),Math.abs(t.h))):t.kind==="blur"&&Xa(e,t,r);e.restore()}function Ye(e,t){return t<0?e+t:e}function Ga(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 Xa(e,t,r){if(!r)return;let a=Ye(t.x,t.w),n=Ye(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 p=n;p<n+s;p+=l)for(let c=a;c<a+i;c+=l){let m=Math.min(l,a+i-c),d=Math.min(l,n+s-p);e.drawImage(r,c,p,m,d,c,p,m,d)}e.imageSmoothingEnabled=!1;for(let p=n;p<n+s;p+=l)for(let c=a;c<a+i;c+=l){let m=Math.min(l,a+i-c),d=Math.min(l,n+s-p);e.drawImage(r,c,p,1,1,c,p,m,d)}e.imageSmoothingEnabled=!0}var le={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 Tr({imageBlob:e,strings:t,onSave:r,onCancel:a}){let n=V(null),i=V(null),s=V(null),[l,p]=P("rectangle"),[c,m]=P(Pr[0]),[d,f]=P([]),[g,k]=P([]),[C,h]=P([]),w=V(!1),[R,x]=P(null),[v,b]=P(!1),[q,_]=P(!1),F=V(1);function E(u){f(S=>(k(T=>[...T,S]),[...S,u])),h([])}function B(){f(u=>(k(S=>[...S,u]),[])),h([])}function D(){k(u=>{if(u.length===0)return u;let S=u[u.length-1];return f(T=>(h(z=>[T,...z]),S)),u.slice(0,-1)})}function I(){h(u=>{if(u.length===0)return u;let S=u[0];return f(T=>(k(z=>[...z,T]),S)),u.slice(1)})}bt(()=>{let u=S=>{S.key==="Escape"&&(S.stopPropagation(),a())};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[a]),H(()=>{let u=S=>{if(!(S.metaKey||S.ctrlKey))return;let z=S.key.toLowerCase();z==="z"?(S.preventDefault(),S.stopPropagation(),S.shiftKey?I():D()):z==="y"&&(S.preventDefault(),S.stopPropagation(),I())};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[g,C,d]),H(()=>{let u=URL.createObjectURL(e),S=new Image;return S.onload=()=>{s.current=S,b(!0)},S.src=u,()=>URL.revokeObjectURL(u)},[e]),bt(()=>{if(!v||!n.current||!s.current||!i.current)return;let u=s.current,T=i.current.clientWidth-16,z=window.innerHeight*.65,j=Math.min(T/u.width,z/u.height,1);F.current=j;let Y=n.current;Y.width=u.width,Y.height=u.height,Y.style.width=`${u.width*j}px`,Y.style.height=`${u.height*j}px`,N()},[v]),H(()=>{N()},[d,R]);function N(){let u=n.current,S=s.current;if(!u||!S)return;let T=u.getContext("2d");if(T){T.clearRect(0,0,u.width,u.height),T.drawImage(S,0,0);for(let z of d)Er(T,z,S);R&&Er(T,R,S)}}function M(u){let T=n.current.getBoundingClientRect();return{x:(u.clientX-T.left)/F.current,y:(u.clientY-T.top)/F.current}}let $=u=>{if(!v)return;let{x:S,y:T}=M(u),z=n.current.width,j=Math.max(3,Math.round(z/400)),Y=Math.max(8,Math.round(z/80));if(l==="text"){let pe=window.prompt(t["annotator.text_prompt"]);pe&&pe.trim()&&E({kind:"text",x:S,y:T,text:pe.trim(),color:c,fontSize:Math.max(16,Math.round(z/50)),lineWidth:1});return}w.current=!0,l==="rectangle"?x({kind:"rectangle",x:S,y:T,w:0,h:0,color:c,lineWidth:j}):l==="arrow"?x({kind:"arrow",x1:S,y1:T,x2:S,y2:T,color:c,lineWidth:j}):l==="freehand"?x({kind:"freehand",points:[{x:S,y:T}],color:c,lineWidth:j}):l==="highlight"?x({kind:"highlight",x:S,y:T,w:0,h:0,color:c==="#ffffff"?"#fde047":c,lineWidth:1}):l==="blur"&&x({kind:"blur",x:S,y:T,w:0,h:0,color:"#000000",lineWidth:0,tile:Y})},L=u=>{if(!w.current)return;let{x:S,y:T}=M(u);x(z=>z&&(z.kind==="rectangle"||z.kind==="highlight"||z.kind==="blur"?{...z,w:S-z.x,h:T-z.y}:z.kind==="arrow"?{...z,x2:S,y2:T}:z.kind==="freehand"?{...z,points:[...z.points,{x:S,y:T}]}:z))},O=()=>{x(u=>(w.current&&u&&((u.kind==="rectangle"||u.kind==="highlight"||u.kind==="blur")&&Math.abs(u.w)<4&&Math.abs(u.h)<4||u.kind==="arrow"&&Math.hypot(u.x2-u.x1,u.y2-u.y1)<4||u.kind==="freehand"&&u.points.length<3||E(u)),null)),w.current=!1},Q=async()=>{let u=n.current;if(u){_(!0);try{let S=await new Promise(T=>u.toBlob(T,"image/png",.92));S&&r(S)}finally{_(!1)}}},W=[{id:"rectangle",icon:le.rect,label:t["annotator.tool.rectangle"]},{id:"arrow",icon:le.arrow,label:t["annotator.tool.arrow"]},{id:"freehand",icon:le.pencil,label:t["annotator.tool.freehand"]},{id:"text",icon:le.text,label:t["annotator.tool.text"]},{id:"highlight",icon:le.highlight,label:t["annotator.tool.highlight"]},{id:"blur",icon:le.blur,label:t["annotator.tool.blur"]}];return o("div",{class:"annotator-backdrop",role:"presentation",onClick:u=>{u.target===u.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:le.close})]}),o("div",{class:"annotator-toolbar",children:[o("div",{class:"annotator-tools",children:W.map(u=>o("button",{type:"button",onClick:()=>p(u.id),title:u.label,"aria-label":u.label,"aria-pressed":l===u.id,class:`annotator-tool ${l===u.id?"is-active":""}`,children:u.icon},u.id))}),o("span",{class:"annotator-sep"}),o("div",{class:"annotator-colors",children:[Pr.map(u=>o("button",{type:"button",onClick:()=>m(u),"aria-label":u,"aria-pressed":c===u,class:`annotator-color ${c===u?"is-active":""}`,style:{backgroundColor:u}},u)),o("label",{class:"annotator-color annotator-color-picker",title:t["annotator.color_picker"],children:o("input",{type:"color",value:c,onInput:u=>m(u.target.value),"aria-label":t["annotator.color_picker"]})})]}),o("span",{class:"annotator-sep"}),o("button",{type:"button",class:"annotator-btn",onClick:D,disabled:g.length===0,title:t["annotator.undo"],children:[le.undo,o("span",{children:t["annotator.undo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:I,disabled:C.length===0,title:t["annotator.redo"],children:[le.redo,o("span",{children:t["annotator.redo"]})]}),o("button",{type:"button",class:"annotator-btn",onClick:B,disabled:d.length===0,children:[le.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:v?o("canvas",{ref:n,onMouseDown:$,onMouseMove:L,onMouseUp:O,onMouseLeave:O,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:Q,disabled:q||!v,children:q?t["annotator.applying"]:t["annotator.apply"]})]})]})})}var Ya=["bug","feature","question","praise","typo"],Ja=["blocker","high","medium","low"];function Ar({strings:e,onSubmit:t,onCancel:r,status:a,errorMessage:n,submittedSeq:i,onDirtyChange:s}){let[l,p]=P(""),[c,m]=P("bug"),[d,f]=P("medium"),[g,k]=P(""),[C,h]=P([]),[w,R]=P(!1),[x,v]=P(null),b=V(null),q=V(null),_=a==="submitting",F=_?e["form.submitting"]:e["form.submit"],E=typeof window!="undefined"?window.location.href:"",B=l.trim()!==""||C.length>0;H(()=>{s==null||s(B)},[B]);let D=V(C);D.current=C,H(()=>()=>{D.current.forEach(u=>URL.revokeObjectURL(u.preview))},[]);let I=u=>{k("");let S=5-C.length,T=u.slice(0,Math.max(0,S));for(let z of T)if(z instanceof File){let j=Ve(z);if(j){k(j.kind==="type"?e["form.screenshot.error_type"]:e["form.screenshot.error_size"].replace("{max}",String(j.maxMb)));return}}if(T.length){let z=T.map(j=>({blob:j,preview:URL.createObjectURL(j)}));h(j=>[...j,...z])}u.length>T.length&&k(e["form.screenshot.error_count"].replace("{max}",String(5)))},N=u=>{let S=C[u];S&&URL.revokeObjectURL(S.preview),h(T=>T.filter((z,j)=>j!==u)),k(""),b.current&&(b.current.value="")},M=u=>{var z;let S=u.target,T=Array.from((z=S.files)!=null?z:[]);T.length&&I(T),S.value=""},$=u=>{u.preventDefault(),u.stopPropagation(),R(!0)},L=u=>{u.preventDefault(),u.stopPropagation(),u.currentTarget===u.target&&R(!1)},O=u=>{var T,z;u.preventDefault(),u.stopPropagation(),R(!1);let S=Array.from((z=(T=u.dataTransfer)==null?void 0:T.files)!=null?z:[]);S.length&&I(S)};H(()=>{let u=q.current;if(!u)return;let S=T=>{var j;let z=(j=T.clipboardData)==null?void 0:j.items;if(z){for(let Y of Array.from(z))if(Y.kind==="file"&&Y.type.startsWith("image/")){let pe=Y.getAsFile();if(pe){T.preventDefault(),I([pe]);return}}}};return u.addEventListener("paste",S),()=>u.removeEventListener("paste",S)},[C.length]);let Q=u=>{let S=x;if(S===null||!C[S]){v(null);return}URL.revokeObjectURL(C[S].preview);let T={blob:u,preview:URL.createObjectURL(u)};h(z=>z.map((j,Y)=>Y===S?T:j)),v(null)};return o("form",{onSubmit:u=>{if(u.preventDefault(),!l.trim()){k(e["form.description.required"]);return}k("");let S={description:l.trim(),feedback_type:c,severity:d};C.length&&(S.screenshots=C.map(T=>T.blob),S.capture_method="manual"),t(S)},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:l,placeholder:e["form.description.placeholder"],onInput:u=>p(u.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:u=>m(u.target.value),children:Ya.map(u=>o("option",{value:u,children:e[`type.${u}`]}))})]}),o("div",{class:"field",children:[o("label",{for:"mfb-sev",children:e["form.severity.label"]}),o("select",{id:"mfb-sev",value:d,onChange:u=>f(u.target.value),children:Ja.map(u=>o("option",{value:u,children:e[`severity.${u}`]}))})]})]}),o("div",{class:"field",children:[o("label",{children:e["form.screenshot.label"]}),o("input",{ref:b,type:"file",accept:"image/png,image/jpeg,image/webp",multiple:!0,class:"mfb-sr-only",onChange:M,"aria-hidden":"true",tabIndex:-1}),C.length>0&&o("div",{class:"screenshot-strip",children:C.map((u,S)=>o("div",{class:"screenshot-preview",children:[o("img",{src:u.preview,alt:""}),o("div",{class:"screenshot-preview-actions",children:[o("button",{type:"button",class:"btn btn--primary screenshot-annotate",onClick:()=>v(S),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:()=>N(S),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"]]})]})]},u.preview))}),C.length<5&&o("div",{ref:q,class:`screenshot-dropzone ${w?"is-dragover":""}`,tabIndex:0,role:"button","aria-label":e["form.screenshot.label"],onClick:()=>{var u;return(u=b.current)==null?void 0:u.click()},onKeyDown:u=>{var S;(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),(S=b.current)==null||S.click())},onDragOver:$,onDragLeave:L,onDrop:O,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"]})]})]}),E&&o("div",{class:"page-context",title:E,children:[o("span",{class:"page-context-label",children:e["form.context.label"]}),o("span",{class:"page-context-url",children:ke(E,90)})]}),o("div",{class:"capture-notice",children:e["form.capture.notice"]}),g&&o("div",{class:"error",children:g}),a==="error"&&n&&o("div",{class:"error",children:n}),a==="success"&&o("div",{class:"success",children:i!==void 0?e["form.success.seq"].replace("{seq}",String(i)):e["form.success"]}),o("div",{class:"actions",children:[o("button",{type:"button",class:"btn",onClick:r,disabled:_,children:e["form.cancel"]}),o("button",{type:"submit",class:"btn btn--primary",disabled:_,children:F})]}),x!==null&&C[x]&&o(Tr,{imageBlob:C[x].blob,strings:e,onCancel:()=>v(null),onSave:Q})]})}Z();function Za(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 en(e){return e.total===0?null:Math.round((e.awaiting_validation+e.resolved)/e.total*100)}var tn={new:"new",in_progress:"in_progress",awaiting_validation:"awaiting_validation",closed:"resolved",rejected:"resolved",duplicate:"resolved",wontfix:"resolved"};function Mr(e,t){return t==="all"?e:e.filter(r=>tn[r.status]===t)}function Lr({rows:e,filter:t,onFilter:r,strings:a}){let n=Za(e),i=en(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 p=t===l.key,c=p?"all":l.key;return o("button",{type:"button",class:`kpi-cell kpi-cell--${l.key}${p?" is-active":""}`,onClick:()=>r(c),"aria-pressed":p,children:[o("span",{class:"kpi-value",children:l.value}),o("span",{class:"kpi-label",children:l.label})]})})})}var rn=3e4;function zr({api:e,externalId:t,strings:r,onSelect:a,onOpenSeq:n}){var B;let[i,s]=P(null),[l,p]=P(null),[c,m]=P(!1),[d,f]=P("all"),[g,k]=P(""),[C,h]=P(!1),[w,R]=P(!1),x=V(!0),v=async D=>{if(D.preventDefault(),!n||w)return;let I=parseInt(g.replace(/^#/,"").trim(),10);if(!Number.isInteger(I)||I<=0){h(!0);return}R(!0),h(!1);try{let N=await n(I);if(!x.current)return;N?k(""):h(!0)}finally{x.current&&R(!1)}},b=async()=>{var D;m(!0),p(null);try{let I=await e.listMine(t);return x.current&&s(I),!0}catch(I){return typeof console!="undefined"&&console.warn("[mhosaic] listMine:",I),x.current&&p((D=we(I,r))!=null?D:r["mine.error"]),!1}finally{x.current&&m(!1)}};H(()=>{x.current=!0;let D=fe(b,rn);return()=>{x.current=!1,D.stop()}},[t]);let q=i!==null&&i.length===0,_=i===null&&!l,F=i?Mr(i,d):null,E=!!i&&i.length>0&&((B=F==null?void 0:F.length)!=null?B:0)===0;return o("div",{class:"mine-list",children:[o("div",{class:"mine-list-header",children:[o("h2",{children:r["tab.mine"]}),o("div",{class:"mine-list-header-actions",children:[n&&o("form",{class:"mine-jump",onSubmit:v,children:[o("input",{type:"text",inputMode:"numeric",value:g,placeholder:r["mine.jump.placeholder"],"aria-label":r["mine.jump.aria"],onInput:D=>{k(D.target.value),h(!1)},disabled:w}),o("button",{type:"submit",class:"btn",disabled:w||!g.trim(),children:r["mine.jump.go"]})]}),o("button",{type:"button",class:"btn",onClick:()=>{b()},disabled:c,children:c?r["mine.loading"]:r["mine.refresh"]})]})]}),C&&o("div",{class:"mine-jump-error error",role:"alert",children:r["mine.jump.not_found"]}),i&&i.length>0&&o(Lr,{rows:i,filter:d,onFilter:f,strings:r}),_&&o("div",{class:"mine-loading",children:r["mine.loading"]}),l&&o("div",{class:"error",children:l}),q&&o("div",{class:"mine-empty",children:[o("strong",{children:r["mine.empty.title"]}),o("p",{children:r["mine.empty.body"]})]}),E&&o("div",{class:"mine-empty",children:o("p",{children:r["mine.filter.empty"]})}),F&&F.length>0&&o("ul",{class:"mine-rows",children:F.map(D=>o("li",{children:o(Xe,{row:D,strings:r,onClick:()=>a(D)})}))})]})}Z();function Br({onDismiss:e,children:t,closeLabel:r="Close",expanded:a=!1}){let n=V(null),i=V(null);return H(()=>{var p;i.current=document.activeElement;let s=c=>{var d;if(c.key!=="Escape")return;let m=(d=n.current)==null?void 0:d.getRootNode();m instanceof ShadowRoot&&m.querySelector(".annotator-backdrop")||(c.stopPropagation(),e("escape"))};window.addEventListener("keydown",s);let l=(p=n.current)==null?void 0:p.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("backdrop")},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("button"),children:"\xD7"}),t]})})}function Fr({open:e,strings:t,onView:r}){if(e===0)return null;let a=e===1?t["page.strip.text.one"]:t["page.strip.text"].replace("{n}",String(e));return o("div",{class:"page-strip",children:[o("span",{children:a}),o("button",{type:"button",class:"page-strip-view",onClick:r,children:t["page.strip.view"]})]})}Z();function Ir({api:e,externalId:t,strings:r,getCurrentPage:a,open:n,onViewAll:i,onPickRow:s,onSend:l}){let[p,c]=P(null),[m,d]=P(!1);return H(()=>{let f=!1,g=se(a!==void 0?{getCurrentPage:a}:{});return e.listBoard(t,{pagePath:g,status:["new","in_progress","awaiting_validation"]}).then(k=>{f||c(k.results.slice(0,5))}).catch(()=>{f||d(!0)}),()=>{f=!0}},[e,t]),o("div",{class:"page-peek",role:"region","aria-label":r["page.peek.title"],children:[o("div",{class:"page-peek-title",children:r["page.peek.title"]}),p===null&&!m&&o("div",{class:"page-peek-skeleton","aria-hidden":"true",children:[o("div",{})," ",o("div",{})]}),p!==null&&p.map(f=>o("button",{type:"button",class:"page-peek-row",onClick:()=>s==null?void 0:s(f.id),children:[o("span",{class:`page-peek-dot status-${f.status}`,"aria-hidden":"true"}),o("span",{class:"page-peek-desc",children:f.description})]},f.id)),o("div",{class:"page-peek-footer",children:[o("button",{type:"button",class:"page-peek-viewall",onClick:i,children:n===1?r["page.peek.viewAll.one"]:r["page.peek.viewAll"].replace("{n}",String(n))}),o("button",{type:"button",class:"page-peek-send",onClick:l,children:r["fab.label"]})]})]})}Z();var on=6e4;function an(e){var r,a,n;let t=e.by_status;return((r=t.new)!=null?r:0)+((a=t.in_progress)!=null?a:0)+((n=t.awaiting_validation)!=null?n:0)}var _t=new Map,yt=new Map;function nn(){_t.clear()}function sn(e,t,r){let a=`${t}|${r}`,n=_t.get(a);if(n&&Date.now()-n.fetchedAt<on)return Promise.resolve(n.open);let i=yt.get(a);if(i)return i;let s=e.fetchBoardKpis(t,{pagePath:r}).then(l=>{let p=an(l);return _t.set(a,{open:p,fetchedAt:Date.now()}),p}).finally(()=>yt.delete(a));return yt.set(a,s),s}function Dr(e){let{api:t,externalId:r,getCurrentPage:a,enabled:n}=e,[i,s]=P(0),[l,p]=P(0),c=de(()=>{nn(),p(m=>m+1)},[]);return H(()=>{if(!n||!t||!r){s(0);return}let m=!1,d=()=>{let g=se(a!==void 0?{getCurrentPage:a}:{});sn(t,r,g).then(k=>{m||s(k)}).catch(()=>{m||s(0)})};d();let f=We(d);return()=>{m=!0,f()}},[t,r,n,l]),{open:i,refresh:c}}var $r=`
|
|
622
622
|
:host {
|
|
623
623
|
--mfb-accent: #3b82f6;
|
|
624
624
|
--mfb-accent-contrast: #ffffff;
|
|
@@ -2666,5 +2666,5 @@ button.report-detail-edit {
|
|
|
2666
2666
|
background: var(--mfb-surface-2);
|
|
2667
2667
|
margin: var(--mfb-space-2) 0;
|
|
2668
2668
|
}
|
|
2669
|
-
`;function ln(e,t,r){return!(!e.showFAB||e.getExternalId!==void 0&&!t||e.requiresVisibilityCheck&&!r)}function Hr(e){let t=e.host.attachShadow({mode:"open"}),r=document.createElement("style");r.textContent=$r,t.appendChild(r);let a=document.createElement("div");t.appendChild(a);let n={open:!1,status:"idle",tab:"send"},i=null,s=!1;function l(f){n=f,_e(y(m,{state:f}),a)}function p(f){let{selectedReportId:g,boardSelectId:k,...C}=f;return C}function c(f){l({...n,open:!0,tab:"send"}),e.openToCurrentPageFeedback&&e.api&&f&&e.api.fetchBoardKpis(f,{pagePath:se(e)}).then(g=>{g.total>0&&n.open&&n.tab==="send"&&l({...n,tab:"board"})}).catch(()=>{})}function m({state:f}){var N;let g=de(async M=>{l({...n,status:"submitting"});try{let $=await e.onSubmit(M);R.refresh(),l({...n,status:"success",...$&&$.seq!==void 0&&{submittedSeq:$.seq}}),i!==null&&clearTimeout(i),i=setTimeout(()=>{i=null,l({...n,open:!1,status:"idle",tab:e.api?"mine":"send"})},1200)}catch($){typeof console!="undefined"&&console.warn("[mhosaic] submit:",$),l({...n,status:"error",error:e.strings["form.error"]})}},[]),k=(N=e.getExternalId)==null?void 0:N.call(e),C=M=>!e.api||!k?Promise.resolve(!1):e.api.getReportBySeq(M,k).then($=>(l({...n,open:!0,tab:"mine",selectedReportId:$.id}),!0)).catch(()=>!1),h=e.deepLinkParam===!1?void 0:M=>{let $=e.deepLinkParam||"mhfeedback";try{let L=new URL(window.location.href);return L.searchParams.set($,M),L.toString()}catch(L){return""}},w=e.showPageActivity!==!1,R=Dr({...e.api!==void 0&&{api:e.api},...k!==void 0&&{externalId:k},...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},enabled:w}),x=R.open===1?e.strings["page.badge.aria.one"]:R.open>0?e.strings["page.badge.aria"].replace("{n}",String(R.open)):e.strings["fab.label"],[v,b]=P(!e.requiresVisibilityCheck);H(()=>{if(!e.requiresVisibilityCheck){b(!0);return}if(!k||!e.checkVisibility){b(!1);return}let M=!1;return e.checkVisibility(k).then($=>{M||b($)}).catch(()=>{M||b(!1)}),()=>{M=!0}},[k]);let q=ln(e,k,v),_=!!(e.api&&k),[F,E]=P(!1),B=V({});return o(ee,{children:[q&&o("div",{class:"fab-area",onMouseEnter:()=>{B.current.close&&clearTimeout(B.current.close),B.current.open=setTimeout(()=>E(!0),250)},onMouseLeave:()=>{B.current.open&&clearTimeout(B.current.open),B.current.close=setTimeout(()=>E(!1),140)},onFocusIn:M=>{var $,L;B.current.close&&clearTimeout(B.current.close),(L=($=M.target).matches)!=null&&L.call($,":focus-visible")&&E(!0)},onFocusOut:()=>E(!1),onKeyDown:M=>M.key==="Escape"&&E(!1),children:[F&&!f.open&&w&&R.open>0&&e.api&&k&&o(Ir,{api:e.api,externalId:k,strings:e.strings,...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},open:R.open,onViewAll:()=>{E(!1),l({...n,open:!0,tab:"board"})},onPickRow:M=>{E(!1),l({...n,open:!0,tab:"board",boardSelectId:M})},onSend:()=>{E(!1),c(k)}}),o(qr,{label:x,onClick:()=>c(k),...R.open>0&&{count:R.open}})]}),f.open&&o(Br,{onDismiss:M=>{if(M!=="button"&&s&&n.tab==="send"&&n.status!=="submitting"){l({...n,confirmingDiscard:!0});return}s=!1,l(p({...n,open:!1,status:"idle",confirmingDiscard:!1}))},closeLabel:e.strings["form.close"],expanded:f.tab==="board",children:[f.confirmingDiscard&&o("div",{class:"discard-confirm",role:"alertdialog","aria-modal":"true",children:o("div",{class:"discard-confirm-card",children:[o("p",{class:"discard-confirm-title",children:e.strings["form.discard.title"]}),o("p",{class:"discard-confirm-body",children:e.strings["form.discard.body"]}),o("div",{class:"discard-confirm-actions",children:[o("button",{type:"button",class:"btn",onClick:()=>l({...n,confirmingDiscard:!1}),children:e.strings["form.discard.keep"]}),o("button",{type:"button",class:"btn btn--primary",onClick:()=>{s=!1,l(p({...n,open:!1,status:"idle",confirmingDiscard:!1}))},children:e.strings["form.discard.confirm"]})]})]})}),_&&o("div",{class:"tab-strip",role:"tablist",children:[o("button",{type:"button",role:"tab","aria-selected":f.tab==="send",class:`tab-button ${f.tab==="send"?"is-active":""}`,onClick:()=>l(p({...n,tab:"send"})),children:e.strings["tab.send"]}),o("button",{type:"button",role:"tab","aria-selected":f.tab==="mine",class:`tab-button ${f.tab==="mine"?"is-active":""}`,onClick:()=>l(p({...n,tab:"mine"})),children:e.strings["tab.mine"]}),o("button",{type:"button",role:"tab","aria-selected":f.tab==="changelog",class:`tab-button ${f.tab==="changelog"?"is-active":""}`,onClick:()=>l(p({...n,tab:"changelog"})),children:e.strings["tab.changelog"]}),o("button",{type:"button",role:"tab","aria-selected":f.tab==="board",class:`tab-button tab-button--board ${f.tab==="board"?"is-active":""}`,onClick:()=>l(p({...n,tab:"board"})),children:e.strings["tab.board"]})]}),f.tab==="send"&&o(ee,{children:[_&&w&&o(Fr,{open:R.open,strings:e.strings,onView:()=>l(p({...n,tab:"board"}))}),o(Ar,{strings:e.strings,onSubmit:g,onCancel:()=>l({...n,open:!1,status:"idle"}),status:f.status,...f.error!==void 0&&{errorMessage:f.error},...f.submittedSeq!==void 0&&{submittedSeq:f.submittedSeq},onDirtyChange:M=>{s=M}})]}),f.tab==="mine"&&e.api&&k&&!f.selectedReportId&&o(zr,{api:e.api,externalId:k,strings:e.strings,onSelect:M=>l({...n,selectedReportId:M.id}),onOpenSeq:C}),(f.tab==="mine"||f.tab==="changelog")&&e.api&&k&&f.selectedReportId&&o(Ge,{api:e.api,externalId:k,reportId:f.selectedReportId,strings:e.strings,onBack:()=>l(p({...n})),onOpenSeq:C,...h&&{buildPermalink:h}}),f.tab==="changelog"&&e.api&&k&&!f.selectedReportId&&o(Rr,{api:e.api,externalId:k,strings:e.strings,onSelect:M=>l({...n,selectedReportId:M.id})}),f.tab==="board"&&e.api&&k&&o(Cr,{api:e.api,externalId:k,strings:e.strings,...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},...f.boardSelectId!==void 0&&{initialSelectedId:f.boardSelectId}})]})]})}l(n);function d(f){var w;let g=e.api,k=(w=e.getExternalId)==null?void 0:w.call(e);if(!g||!k||!f)return;let C=/^\d+$/.test(f)?parseInt(f,10):null;(C!==null?g.getReportBySeq(C,k):g.getReport(f,k)).then(R=>l({...n,open:!0,tab:"mine",selectedReportId:R.id})).catch(()=>{})}if(e.deepLinkParam!==!1)try{let f=e.deepLinkParam||"mhfeedback",g=new URLSearchParams(window.location.search).get(f);g&&d(g.trim())}catch(f){}return{open(){var f;c((f=e.getExternalId)==null?void 0:f.call(e))},close(){l({...n,open:!1,status:"idle"})},dispose(){i!==null&&(clearTimeout(i),i=null),_e(null,a),e.host.innerHTML=""},notifyIdentityChanged(){l({...n})}}}function Sn(){return{right:24+24/2,bottom:84}}function Rt(e){var C,h,w,R,x,v,b,q;let t=(C=e.env)!=null?C:"prod",r=(h=e.locale)!=null?h:typeof navigator!="undefined"?navigator.language:void 0,a=Wt((w=e.translations)!=null?w:{},r!==void 0?{locale:r}:{}),n=Qt({...e.sanitizeUrl!==void 0&&{sanitizeUrl:e.sanitizeUrl}}),i=e.user,s=(R=e.metadata)!=null?R:{},l=Dt({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}}),p=[],c=document.createElement("div");if(c.className="mhosaic-feedback",e.attachTo){let _=typeof e.attachTo=="string"?document.querySelector(e.attachTo):e.attachTo;_==null||_.appendChild(c)}else document.body.appendChild(c);async function m(_){var $,L,O,Q,W,u;let F=($=_.screenshots)!=null&&$.length?_.screenshots:_.screenshot?[_.screenshot]:void 0,E=_.synthetic?void 0:F,B=n.snapshot();if(i){let{userHash:S,exp:T,...z}=i;B.user=z}s&&Object.keys(s).length>0&&(B.metadata={...s});let D=E!=null&&E.length?(L=_.capture_method)!=null?L:"manual":"none",I={description:_.description,feedback_type:(O=_.feedback_type)!=null?O:"bug",severity:(Q=_.severity)!=null?Q:"medium",env:t,page_url:window.location.href,user_agent:navigator.userAgent,capture_method:D,technical_context:B};I.widget_version="0.30.0",E!=null&&E.length&&(I.screenshots=E,I.screenshot=E[0]),_.synthetic&&(I.synthetic=!0);let N=se(e);N&&(I.page_path=N),(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""&&(I.user={id:String(i.id),...i.email!==void 0&&{email:i.email},...i.name!==void 0&&{name:i.name}});let M=I;for(let S of p)M=await S(M);try{let S=await l.submitReport(M);return(W=e.onSubmitSuccess)==null||W.call(e,S),n.clear(),S}catch(S){let T=S instanceof Error?S:new Error(String(S));throw(u=e.onError)==null||u.call(e,T),T}}let d=Hr({host:c,strings:a,showFAB:(x=e.showFAB)!=null?x:!0,onSubmit:_=>m(_),api:l,getExternalId:()=>(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""?String(i.id):void 0,requiresVisibilityCheck:(v=e.requiresVisibilityCheck)!=null?v:!1,checkVisibility:_=>l.checkVisibility(_,i==null?void 0:i.email),...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},...e.openToCurrentPageFeedback!==void 0&&{openToCurrentPageFeedback:e.openToCurrentPageFeedback},...e.showPageActivity!==void 0&&{showPageActivity:e.showPageActivity}}),f,g=!1;if((b=e.qaMeter)!=null&&b.source){let _=e.qaMeter,F=(q=_.locale)!=null?q:String(r!=null?r:"").toLowerCase().startsWith("fr")?"fr":"en";Promise.resolve().then(()=>(mo(),fo)).then(({createQaMeter:E})=>{var B,D;g||(f=E({source:_.source,size:(B=_.size)!=null?B:"sm",position:(D=_.position)!=null?D:Sn(),locale:F,..._.getCurrentPage&&{getCurrentPage:_.getCurrentPage}}))})}let k={show(){d.open()},hide(){d.close()},open(_){d.open()},async submit(_){return m({description:_.description,..._.feedback_type!==void 0&&{feedback_type:_.feedback_type},..._.severity!==void 0&&{severity:_.severity},..._.synthetic!==void 0&&{synthetic:_.synthetic},..._.screenshot!==void 0&&{screenshot:_.screenshot},..._.screenshots!==void 0&&{screenshots:_.screenshots}})},identify(_){i=_,d.notifyIdentityChanged()},setMetadata(_){s={...s,..._}},shutdown(){g=!0,f==null||f.dispose(),d.dispose(),n.dispose(),c.remove();let _=window;_.mhosaicFeedback===k&&delete _.mhosaicFeedback},_registerTransformer(_){p.push(_)}};return window.mhosaicFeedback=k,k}var vo=window;function yo(e){if(!e.key||!e.endpoint)return null;let t=e.env;return{apiKey:e.key,endpoint:e.endpoint,...t!==void 0&&{env:t},...e.qaSource?{qaMeter:{source:e.qaSource,...e.qaLocale?{locale:e.qaLocale}:{}}}:{}}}function Cn(){let e=document.currentScript;return e?yo(e.dataset):null}var he=null,go,ho,at=(ho=(go=vo.Feedback)==null?void 0:go.q)!=null?ho:[];function _o(e){let[t,r]=e;if(t==="init"){if(he)return;he=Rt(r);return}if(!he){at.push(e);return}t==="identify"?he.identify(r):t==="setMetadata"?he.setMetadata(r):t==="open"&&he.open(r)}var bo=Cn();bo&&(he=Rt(bo));for(;at.length>0;)_o(at.shift());var Rn=Object.assign(function(t,r){_o([t,r])},{q:at});vo.Feedback=Rn;return Lo(qn);})();
|
|
2669
|
+
`;function ln(e,t,r){return!(!e.showFAB||e.getExternalId!==void 0&&!t||e.requiresVisibilityCheck&&!r)}function Hr(e){let t=e.host.attachShadow({mode:"open"}),r=document.createElement("style");r.textContent=$r,t.appendChild(r);let a=document.createElement("div");t.appendChild(a);let n={open:!1,status:"idle",tab:"send"},i=null,s=!1;function l(f){n=f,_e(y(m,{state:f}),a)}function p(f){let{selectedReportId:g,boardSelectId:k,...C}=f;return C}function c(f){l({...n,open:!0,tab:"send"}),e.openToCurrentPageFeedback&&e.api&&f&&e.api.fetchBoardKpis(f,{pagePath:se(e)}).then(g=>{g.total>0&&n.open&&n.tab==="send"&&l({...n,tab:"board"})}).catch(()=>{})}function m({state:f}){var N;let g=de(async M=>{l({...n,status:"submitting"});try{let $=await e.onSubmit(M);R.refresh(),l({...n,status:"success",...$&&$.seq!==void 0&&{submittedSeq:$.seq}}),i!==null&&clearTimeout(i),i=setTimeout(()=>{i=null,l({...n,open:!1,status:"idle",tab:e.api?"mine":"send"})},1200)}catch($){typeof console!="undefined"&&console.warn("[mhosaic] submit:",$),l({...n,status:"error",error:e.strings["form.error"]})}},[]),k=(N=e.getExternalId)==null?void 0:N.call(e),C=M=>!e.api||!k?Promise.resolve(!1):e.api.getReportBySeq(M,k).then($=>(l({...n,open:!0,tab:"mine",selectedReportId:$.id}),!0)).catch(()=>!1),h=e.deepLinkParam===!1?void 0:M=>{let $=e.deepLinkParam||"mhfeedback";try{let L=new URL(window.location.href);return L.searchParams.set($,M),L.toString()}catch(L){return""}},w=e.showPageActivity!==!1,R=Dr({...e.api!==void 0&&{api:e.api},...k!==void 0&&{externalId:k},...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},enabled:w}),x=R.open===1?e.strings["page.badge.aria.one"]:R.open>0?e.strings["page.badge.aria"].replace("{n}",String(R.open)):e.strings["fab.label"],[v,b]=P(!e.requiresVisibilityCheck);H(()=>{if(!e.requiresVisibilityCheck){b(!0);return}if(!k||!e.checkVisibility){b(!1);return}let M=!1;return e.checkVisibility(k).then($=>{M||b($)}).catch(()=>{M||b(!1)}),()=>{M=!0}},[k]);let q=ln(e,k,v),_=!!(e.api&&k),[F,E]=P(!1),B=V({});return o(ee,{children:[q&&o("div",{class:"fab-area",onMouseEnter:()=>{B.current.close&&clearTimeout(B.current.close),B.current.open=setTimeout(()=>E(!0),250)},onMouseLeave:()=>{B.current.open&&clearTimeout(B.current.open),B.current.close=setTimeout(()=>E(!1),140)},onFocusIn:M=>{var $,L;B.current.close&&clearTimeout(B.current.close),(L=($=M.target).matches)!=null&&L.call($,":focus-visible")&&E(!0)},onFocusOut:()=>E(!1),onKeyDown:M=>M.key==="Escape"&&E(!1),children:[F&&!f.open&&w&&R.open>0&&e.api&&k&&o(Ir,{api:e.api,externalId:k,strings:e.strings,...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},open:R.open,onViewAll:()=>{E(!1),l({...n,open:!0,tab:"board"})},onPickRow:M=>{E(!1),l({...n,open:!0,tab:"board",boardSelectId:M})},onSend:()=>{E(!1),c(k)}}),o(qr,{label:x,onClick:()=>c(k),...R.open>0&&{count:R.open}})]}),f.open&&o(Br,{onDismiss:M=>{if(M!=="button"&&s&&n.tab==="send"&&n.status!=="submitting"){l({...n,confirmingDiscard:!0});return}s=!1,l(p({...n,open:!1,status:"idle",confirmingDiscard:!1}))},closeLabel:e.strings["form.close"],expanded:f.tab==="board",children:[f.confirmingDiscard&&o("div",{class:"discard-confirm",role:"alertdialog","aria-modal":"true",children:o("div",{class:"discard-confirm-card",children:[o("p",{class:"discard-confirm-title",children:e.strings["form.discard.title"]}),o("p",{class:"discard-confirm-body",children:e.strings["form.discard.body"]}),o("div",{class:"discard-confirm-actions",children:[o("button",{type:"button",class:"btn",onClick:()=>l({...n,confirmingDiscard:!1}),children:e.strings["form.discard.keep"]}),o("button",{type:"button",class:"btn btn--primary",onClick:()=>{s=!1,l(p({...n,open:!1,status:"idle",confirmingDiscard:!1}))},children:e.strings["form.discard.confirm"]})]})]})}),_&&o("div",{class:"tab-strip",role:"tablist",children:[o("button",{type:"button",role:"tab","aria-selected":f.tab==="send",class:`tab-button ${f.tab==="send"?"is-active":""}`,onClick:()=>l(p({...n,tab:"send"})),children:e.strings["tab.send"]}),o("button",{type:"button",role:"tab","aria-selected":f.tab==="mine",class:`tab-button ${f.tab==="mine"?"is-active":""}`,onClick:()=>l(p({...n,tab:"mine"})),children:e.strings["tab.mine"]}),o("button",{type:"button",role:"tab","aria-selected":f.tab==="changelog",class:`tab-button ${f.tab==="changelog"?"is-active":""}`,onClick:()=>l(p({...n,tab:"changelog"})),children:e.strings["tab.changelog"]}),o("button",{type:"button",role:"tab","aria-selected":f.tab==="board",class:`tab-button tab-button--board ${f.tab==="board"?"is-active":""}`,onClick:()=>l(p({...n,tab:"board"})),children:e.strings["tab.board"]})]}),f.tab==="send"&&o(ee,{children:[_&&w&&o(Fr,{open:R.open,strings:e.strings,onView:()=>l(p({...n,tab:"board"}))}),o(Ar,{strings:e.strings,onSubmit:g,onCancel:()=>l({...n,open:!1,status:"idle"}),status:f.status,...f.error!==void 0&&{errorMessage:f.error},...f.submittedSeq!==void 0&&{submittedSeq:f.submittedSeq},onDirtyChange:M=>{s=M}})]}),f.tab==="mine"&&e.api&&k&&!f.selectedReportId&&o(zr,{api:e.api,externalId:k,strings:e.strings,onSelect:M=>l({...n,selectedReportId:M.id}),onOpenSeq:C}),(f.tab==="mine"||f.tab==="changelog")&&e.api&&k&&f.selectedReportId&&o(Ge,{api:e.api,externalId:k,reportId:f.selectedReportId,strings:e.strings,onBack:()=>l(p({...n})),onOpenSeq:C,...h&&{buildPermalink:h}}),f.tab==="changelog"&&e.api&&k&&!f.selectedReportId&&o(Rr,{api:e.api,externalId:k,strings:e.strings,onSelect:M=>l({...n,selectedReportId:M.id})}),f.tab==="board"&&e.api&&k&&o(Cr,{api:e.api,externalId:k,strings:e.strings,...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},...f.boardSelectId!==void 0&&{initialSelectedId:f.boardSelectId}})]})]})}l(n);function d(f){var w;let g=e.api,k=(w=e.getExternalId)==null?void 0:w.call(e);if(!g||!k||!f)return;let C=/^\d+$/.test(f)?parseInt(f,10):null;(C!==null?g.getReportBySeq(C,k):g.getReport(f,k)).then(R=>l({...n,open:!0,tab:"mine",selectedReportId:R.id})).catch(()=>{})}if(e.deepLinkParam!==!1)try{let f=e.deepLinkParam||"mhfeedback",g=new URLSearchParams(window.location.search).get(f);g&&d(g.trim())}catch(f){}return{open(){var f;c((f=e.getExternalId)==null?void 0:f.call(e))},close(){l({...n,open:!1,status:"idle"})},dispose(){i!==null&&(clearTimeout(i),i=null),_e(null,a),e.host.innerHTML=""},notifyIdentityChanged(){l({...n})}}}function Sn(){return{right:24+24/2,bottom:84}}function Rt(e){var C,h,w,R,x,v,b,q;let t=(C=e.env)!=null?C:"prod",r=(h=e.locale)!=null?h:typeof navigator!="undefined"?navigator.language:void 0,a=Wt((w=e.translations)!=null?w:{},r!==void 0?{locale:r}:{}),n=Qt({...e.sanitizeUrl!==void 0&&{sanitizeUrl:e.sanitizeUrl}}),i=e.user,s=(R=e.metadata)!=null?R:{},l=Dt({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}}),p=[],c=document.createElement("div");if(c.className="mhosaic-feedback",e.attachTo){let _=typeof e.attachTo=="string"?document.querySelector(e.attachTo):e.attachTo;_==null||_.appendChild(c)}else document.body.appendChild(c);async function m(_){var $,L,O,Q,W,u;let F=($=_.screenshots)!=null&&$.length?_.screenshots:_.screenshot?[_.screenshot]:void 0,E=_.synthetic?void 0:F,B=n.snapshot();if(i){let{userHash:S,exp:T,...z}=i;B.user=z}s&&Object.keys(s).length>0&&(B.metadata={...s});let D=E!=null&&E.length?(L=_.capture_method)!=null?L:"manual":"none",I={description:_.description,feedback_type:(O=_.feedback_type)!=null?O:"bug",severity:(Q=_.severity)!=null?Q:"medium",env:t,page_url:window.location.href,user_agent:navigator.userAgent,capture_method:D,technical_context:B};I.widget_version="0.31.0",E!=null&&E.length&&(I.screenshots=E,I.screenshot=E[0]),_.synthetic&&(I.synthetic=!0);let N=se(e);N&&(I.page_path=N),(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""&&(I.user={id:String(i.id),...i.email!==void 0&&{email:i.email},...i.name!==void 0&&{name:i.name}});let M=I;for(let S of p)M=await S(M);try{let S=await l.submitReport(M);return(W=e.onSubmitSuccess)==null||W.call(e,S),n.clear(),S}catch(S){let T=S instanceof Error?S:new Error(String(S));throw(u=e.onError)==null||u.call(e,T),T}}let d=Hr({host:c,strings:a,showFAB:(x=e.showFAB)!=null?x:!0,onSubmit:_=>m(_),api:l,getExternalId:()=>(i==null?void 0:i.id)!==void 0&&i.id!==null&&i.id!==""?String(i.id):void 0,requiresVisibilityCheck:(v=e.requiresVisibilityCheck)!=null?v:!1,checkVisibility:_=>l.checkVisibility(_,i==null?void 0:i.email),...e.getCurrentPage!==void 0&&{getCurrentPage:e.getCurrentPage},...e.openToCurrentPageFeedback!==void 0&&{openToCurrentPageFeedback:e.openToCurrentPageFeedback},...e.showPageActivity!==void 0&&{showPageActivity:e.showPageActivity}}),f,g=!1;if((b=e.qaMeter)!=null&&b.source){let _=e.qaMeter,F=(q=_.locale)!=null?q:String(r!=null?r:"").toLowerCase().startsWith("fr")?"fr":"en";Promise.resolve().then(()=>(mo(),fo)).then(({createQaMeter:E})=>{var B,D;g||(f=E({source:_.source,size:(B=_.size)!=null?B:"sm",position:(D=_.position)!=null?D:Sn(),locale:F,..._.getCurrentPage&&{getCurrentPage:_.getCurrentPage}}))})}let k={show(){d.open()},hide(){d.close()},open(_){d.open()},async submit(_){return m({description:_.description,..._.feedback_type!==void 0&&{feedback_type:_.feedback_type},..._.severity!==void 0&&{severity:_.severity},..._.synthetic!==void 0&&{synthetic:_.synthetic},..._.screenshot!==void 0&&{screenshot:_.screenshot},..._.screenshots!==void 0&&{screenshots:_.screenshots}})},identify(_){i=_,d.notifyIdentityChanged()},setMetadata(_){s={...s,..._}},shutdown(){g=!0,f==null||f.dispose(),d.dispose(),n.dispose(),c.remove();let _=window;_.mhosaicFeedback===k&&delete _.mhosaicFeedback},_registerTransformer(_){p.push(_)}};return window.mhosaicFeedback=k,k}var vo=window;function yo(e){if(!e.key||!e.endpoint)return null;let t=e.env;return{apiKey:e.key,endpoint:e.endpoint,...t!==void 0&&{env:t},...e.qaSource?{qaMeter:{source:e.qaSource,...e.qaLocale?{locale:e.qaLocale}:{}}}:{}}}function Cn(){let e=document.currentScript;return e?yo(e.dataset):null}var he=null,go,ho,at=(ho=(go=vo.Feedback)==null?void 0:go.q)!=null?ho:[];function _o(e){let[t,r]=e;if(t==="init"){if(he)return;he=Rt(r);return}if(!he){at.push(e);return}t==="identify"?he.identify(r):t==="setMetadata"?he.setMetadata(r):t==="open"&&he.open(r)}var bo=Cn();bo&&(he=Rt(bo));for(;at.length>0;)_o(at.shift());var Rn=Object.assign(function(t,r){_o([t,r])},{q:at});vo.Feedback=Rn;return Lo(qn);})();
|
|
2670
2670
|
//# sourceMappingURL=embed.min.js.map
|