1import{t as e}from"../chunks/DK3Fl9T5.js";import{$ as t,At as n,B as r,D as i,E as a,Et as o,F as s,G as c,It as l,K as u,L as d,Lt as f,M as p,St as m,T as h,V as g,W as _,Z as v,at as y,b,bt as x,ct as S,dt as C,f as w,ft as T,g as E,gt as D,j as O,jt as k,l as A,lt as j,m as M,mt as N,n as P,o as F,ot as I,p as L,q as R,rt as z,u as ee,ut as B,v as V,vt as H,x as U,xt as W,y as te,z as G}from"../chunks/BXtz0qFL.js";import"../chunks/e6RhZ6Z5.js";import{t as K}from"../chunks/ZkeKD-Hu.js";import"../chunks/xihTtKlq.js";import{a as ne}from"../chunks/C3Y4BUgs.js";import{n as re,t as ie}from"../chunks/DXVqgE1f.js";import{t as q}from"../chunks/Ce8z0r14.js";import{n as J,r as ae,t as Y}from"../chunks/B7LSVeTz.js";import{t as oe}from"../chunks/DcxPDoGp.js";import{t as X}from"../chunks/U4ffhsMx2.js";var Z=g(`<h2><!></h2>`),Q=g(`<p><!></p>`),$=g(`<div class="footer svelte-odyagr"><!></div>`),se=g(`<div><div></div> <div><!> <!> <div class="body svelte-odyagr"><!></div> <!> <button><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"></path></svg></button></div></div>`),ce=g(`<!> <!>`,1);function le(e,t){k(t,!0);let a=()=>m(P,`$portalled`,_),o=()=>m(E,`$overlay`,_),c=()=>m(D,`$content`,_),l=()=>m(A,`$titleEl`,_),u=()=>m(M,`$descriptionEl`,_),d=()=>m(N,`$close`,_),p=()=>m(T,`$triggerEl`,_),g=()=>m(I,`$openState`,_),[_,v]=W(),y=F(t,`defaultOpen`,3,!1),b=F(t,`role`,3,`dialog`),x=F(t,`preventScroll`,3,!0),S=F(t,`closeOnOutsideClick`,3,!0),{elements:{trigger:T,overlay:E,content:D,title:A,description:M,close:N,portalled:P},states:{open:I}}=ne({open:t.open,defaultOpen:y(),role:b(),preventScroll:x(),closeOnOutsideClick:S(),onOpenChange:t.onOpenChange});function L(){I.set(!1)}var R=ce(),z=B(R),ee=e=>{var n=r();O(B(n),()=>t.trigger,()=>({triggerProps:p()})),G(e,n)};s(z,e=>{t.trigger&&e(ee)});var V=C(z,2),H=e=>{var n=se();w(n,()=>({...a()}),void 0,void 0,void 0,`svelte-odyagr`);var r=j(n);w(r,()=>({...o(),class:`overlay`}),void 0,void 0,void 0,`svelte-odyagr`),h(r,e=>o().action?.(e));var p=C(r,2);w(p,()=>({...c(),class:`content`}),void 0,void 0,void 0,`svelte-odyagr`);var m=j(p),g=e=>{var n=Z();w(n,()=>({...l(),class:`title`}),void 0,void 0,void 0,`svelte-odyagr`),O(j(n),()=>t.title),f(n),h(n,e=>l().action?.(e)),G(e,n)};s(m,e=>{t.title&&e(g)});var _=C(m,2),v=e=>{var n=Q();w(n,()=>({...u(),class:`description`}),void 0,void 0,void 0,`svelte-odyagr`),O(j(n),()=>t.description),f(n),h(n,e=>u().action?.(e)),G(e,n)};s(_,e=>{t.description&&e(v)});var y=C(_,2);O(j(y),()=>t.children,()=>({close:L})),f(y);var b=C(y,2),x=e=>{var n=$();O(j(n),()=>t.footer,()=>({close:L})),f(n),G(e,n)};s(b,e=>{t.footer&&e(x)});var S=C(b,2);w(S,()=>({...d(),class:`close`,"aria-label":`Close`}),void 0,void 0,void 0,`svelte-odyagr`),h(S,e=>d().action?.(e)),f(p),h(p,e=>c().action?.(e)),f(n),h(n,e=>a().action?.(e)),i(3,r,()=>ie,()=>({duration:150})),i(3,p,()=>re,()=>({y:8,duration:180})),G(e,n)};s(V,e=>{g()&&e(H)}),G(e,R),n(),v()}var ue=e({prerender:()=>!1}),de=g(`<option class="svelte-1e7avu9"> </option>`),fe=g(`<select><option class="svelte-1e7avu9">â</option><!></select>`);function pe(e,t){k(t,!0);function r(e){let n=e.currentTarget.value;t.onChange(n===``?null:Number(n))}var i=fe();let a;var o=j(i);o.value=o.__value=``,p(C(o),17,()=>t.options,e=>e.value,(e,t)=>{var n=de(),r=j(n,!0);f(n);var i={};y(()=>{d(r,v(t).label),i!==(i=v(t).value)&&(n.value=(n.__value=v(t).value)??``)}),G(e,n)}),f(i);var s;V(i),y(()=>{a=U(i,1,`cell svelte-1e7avu9`,null,a,{empty:t.value===null,justified:t.justified}),s!==(s=t.value??``)&&(i.value=(i.__value=t.value??``)??``,te(i,t.value??``))}),u(`change`,i,r),G(e,i),n()}c([`change`]);var me=[{value:1,label:`Minimal`,description:`Affects <100 users/customers per quarter`},{value:2,label:`Low`,description:`Affects 100-500 users/customers per quarter`},{value:3,label:`Medium`,description:`Affects 500-2,000 users/customers per quarter`},{value:4,label:`High`,description:`Affects 2,000-10,000 users/customers per quarter`},{value:5,label:`Very High`,description:`Affects 10,000+ users/customers per quarter`}],he=[{value:.25,label:`Minimal`,description:`Barely noticeable improvement`},{value:.5,label:`Low`,description:`Minor quality of life improvement`},{value:1,label:`Medium`,description:`Noticeable positive change`},{value:2,label:`High`,description:`Significant improvement to experience`},{value:3,label:`Massive`,description:`Game-changing impact`}],ge=[{value:.2,label:`Very Low`,description:`Wild guess, no data`},{value:.4,label:`Low`,description:`Some intuition, minimal evidence`},{value:.6,label:`Medium`,description:`Reasonable estimates with some data`},{value:.8,label:`High`,description:`Strong evidence and research`},{value:1,label:`Very High`,description:`Validated with experiments/data`}],_e=[{value:.5,label:`Minimal`,description:`Less than 1 person-week`},{value:1,label:`Low`,description:`1-2 person-weeks`},{value:2,label:`Medium`,description:`2-4 person-weeks`},{value:4,label:`High`,description:`1-2 person-months`},{value:8,label:`Very High`,description:`2+ person-months`}],ve=[{id:`reach`,name:`Reach`,description:`How many people will this impact in a given time period?`,helpText:`Estimate the number of users, customers, or transactions affected per quarter. Use real data when possible.`,scale:me},{id:`impact`,name:`Impact`,description:`How much will this impact each person?`,helpText:`Score from Minimal (0.25) to Massive (3). Consider the magnitude of improvement for each affected user.`,scale:he},{id:`confidence`,name:`Confidence`,description:`How confident are you in your estimates?`,helpText:`Be honest about uncertainty. Low confidence scores will reduce the overall priority, which helps avoid over-investing in risky bets.`,scale:ge},{id:`effort`,name:`Effort`,description:`How much work will this require?`,helpText:`Estimate in person-weeks or person-months. Include design, development, testing, and deployment time.`,scale:_e}];function ye(e,t,n,r){return e===null||t===null||n===null||r===null||r===0?null:e*t*n/r}function be(e){return e===null?`Incomplete`:e>=10?`Very High Priority`:e>=5?`High Priority`:e>=2?`Medium Priority`:e>=1?`Low Priority`:`Very Low Priority`}function xe(e){return e===null?`none`:e>=10?`very-high`:e>=5?`high`:e>=2?`medium`:e>=1?`low`:`very-low`}function Se(e){return e===null?`â`:e>=100?e.toFixed(0):e>=10?e.toFixed(1):e.toFixed(2)}var Ce=g(`<col/>`),we=g(`<button type="button"><span class="svelte-8as8u6"> </span> <span class="sort-arrow svelte-8as8u6"><!></span></button>`),Te=g(`<p> </p>`),Ee=g(`<th class="svelte-8as8u6"><!></th>`),De=g(`<span class="name-text svelte-8as8u6"> </span>`),Oe=g(`<span class="untitled svelte-8as8u6">Untitled</span>`),ke=g(`<span class="desc-text svelte-8as8u6"> </span>`),Ae=g(`<span class="desc-empty svelte-8as8u6">â</span>`),je=g(`<div class="score-wrap svelte-8as8u6"><!></div>`),Me=g(`<td class="score-cell svelte-8as8u6"><!></td>`),Ne=g(`<span class="score-value svelte-8as8u6"> </span>`),Pe=g(`<p class="math svelte-8as8u6"> </p>`),Fe=g(`<span class="score-value svelte-8as8u6" data-tier="none"> </span>`),Ie=g(`<tr><td class="drag-cell svelte-8as8u6"><span class="drag-handle svelte-8as8u6" role="button" tabindex="-1" draggable="true" aria-label="Drag to reorder"><!></span></td><td class="text-cell name-cell svelte-8as8u6" role="button" tabindex="0"><!></td><td class="text-cell desc-cell svelte-8as8u6" role="button" tabindex="0"><!></td><!><td class="rice-total svelte-8as8u6"><!></td><td class="delete-cell svelte-8as8u6"><span class="delete-wrap svelte-8as8u6"><!></span></td></tr>`),Le=g(`<!> <!>`,1),Re=g(`<p class="confirm-body svelte-8as8u6">This will permanently remove <strong class="svelte-8as8u6"> </strong> from your list. You can't undo this.</p>`),ze=g(`<div class="wrap svelte-8as8u6"><div class="scroll svelte-8as8u6"><table class="svelte-8as8u6"><colgroup><col/><col/><col/><!><col/><col/></colgroup><thead><tr><th class="pad-0 svelte-8as8u6"></th><th class="name-head svelte-8as8u6"><button type="button"><span class="svelte-8as8u6">Name</span> <span class="sort-arrow svelte-8as8u6"><!></span></button> <span class="resize-handle svelte-8as8u6" role="separator" aria-orientation="vertical" aria-label="Resize name column"></span></th><th class="svelte-8as8u6"><span class="col-label svelte-8as8u6">Description</span></th><!><th class="svelte-8as8u6"><button type="button"><span class="svelte-8as8u6">Score</span> <span class="sort-arrow svelte-8as8u6"><!></span></button></th><th class="pad-0 svelte-8as8u6"></th></tr></thead><tbody><!><tr class="add-row svelte-8as8u6"><td class="drag-cell svelte-8as8u6"><span class="plus svelte-8as8u6"><!></span></td><td class="add-cell svelte-8as8u6"><input type="text" placeholder="New item..." class="add-input svelte-8as8u6"/></td><td class="svelte-8as8u6"></td></tr></tbody></table></div></div> <!>`,1);function Be(e,t){k(t,!0);let r={reach:me,impact:he,confidence:ge,effort:_e},i=[`reach`,`impact`,`confidence`,`effort`],a=D(``),c=D(null),m=D(`desc`),h=D(null),g=D(null),x=o(!1),S=D(null),w=H(()=>v(S)?t.items.find(e=>e.id===v(S))??null:null);function T(e){N(S,e,!0),x.set(!0)}function E(){v(S)&&t.onRemoveItem(v(S)),N(S,null),x.set(!1)}function O({next:e}){return e||N(S,null),e}let P={reach:ve.find(e=>e.id===`reach`)?.helpText??``,impact:ve.find(e=>e.id===`impact`)?.helpText??``,confidence:ve.find(e=>e.id===`confidence`)?.helpText??``,effort:ve.find(e=>e.id===`effort`)?.helpText??``},F=D(200),I,z=0,V=0;function W(){return I?I.offsetWidth-534:400}function te(e){e.preventDefault(),e.stopPropagation(),z=e.clientX,V=v(F);function t(e){let t=W(),n=e.clientX-z,r=t-150;N(F,Math.max(120,Math.min(r,V+n)),!0)}function n(){document.removeEventListener(`mousemove`,t),document.removeEventListener(`mouseup`,n),document.body.style.cursor=``,document.body.style.userSelect=``}document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,document.addEventListener(`mousemove`,t),document.addEventListener(`mouseup`,n)}function K(){let e=v(a).trim();e&&(t.onAddItem(e),N(a,``))}function ne(e){v(c)===e?N(m,v(m)===`asc`?`desc`:`asc`,!0):(N(c,e,!0),N(m,e===`name`?`asc`:`desc`,!0))}let re=H(()=>
1{if(!v(c))return t.items;let e=v(c),n=[...t.items];return n.sort((t,n)=>{let r;return r=e===`name`?t.name.localeCompare(n.name):e===`riceScore`?(t.riceScore??-1/0)-(n.riceScore??-1/0):(t[e]??-1/0)-(n[e]??-1/0),v(m)===`asc`?r:-r}),n});function ie(e){N(h,e,!0),N(c,null)}function ae(e,t){e.preventDefault(),N(g,t,!0)}function oe(){v(h)!==null&&v(g)!==null&&v(h)!==v(g)&&t.onReorderItems(v(h),v(g)),N(h,null),N(g,null)}function X(e,t){return e[`${t}Justification`]}var Z=ze(),Q=B(Z),$=j(Q),se=j($),ce=j(se),ue=j(ce);b(ue,`width: 32px`);var de=C(ue),fe=C(de,2);p(fe,16,()=>i,e=>e,(e,t)=>{var n=Ce();b(n,`width: 100px`),G(e,n)});var ye=C(fe);b(ye,`width: 70px`),b(C(ye),`width: 32px`),f(ce);var be=C(ce),Be=j(be),Ve=C(j(Be)),He=j(Ve);let Ue;var We=C(j(He),2),Ge=j(We),Ke=e=>{{let t=H(()=>v(m)===`asc`?`lucide:arrow-up`:`lucide:arrow-down`);J(e,{get name(){return v(t)},size:`0.75rem`})}};s(Ge,e=>{v(c)===`name`&&e(Ke)}),f(We),f(He);var qe=C(He,2);f(Ve);var Je=C(Ve,2);p(Je,16,()=>i,e=>e,(e,t)=>{var n=Ee();Y(j(n),{trigger:e=>{var n=we();let r;var i=j(n),a=j(i,!0);f(i);var o=C(i,2),l=j(o),p=e=>{{let t=H(()=>v(m)===`asc`?`lucide:arrow-up`:`lucide:arrow-down`);J(e,{get name(){return v(t)},size:`0.75rem`})}};s(l,e=>{v(c)===t&&e(p)}),f(o),f(n),y(()=>{r=U(n,1,`sort-btn svelte-8as8u6`,null,r,{active:v(c)===t}),d(a,t)}),u(`click`,n,()=>ne(t)),G(e,n)},content:e=>{var n=Te(),r=j(n,!0);f(n),y(()=>d(r,P[t])),G(e,n)},$$slots:{trigger:!0,content:!0}}),f(n),G(e,n)});var Ye=C(Je),Xe=j(Ye);let Ze;var Qe=C(j(Xe),2),$e=j(Qe),et=e=>{{let t=H(()=>v(m)===`asc`?`lucide:arrow-up`:`lucide:arrow-down`);J(e,{get name(){return v(t)},size:`0.75rem`})}};s($e,e=>{v(c)===`riceScore`&&e(et)}),f(Qe),f(Xe),f(Ye),l(),f(Be),f(be);var tt=C(be),nt=j(tt);p(nt,19,()=>v(re),e=>e.id,(e,n,a)=>{var o=Ie();let c;var l=j(o),m=j(l);J(j(m),{name:`lucide:grip-vertical`,size:`0.875rem`}),f(m),f(l);var _=C(l),b=j(_),x=e=>{Y(e,{trigger:e=>{var t=De(),r=j(t,!0);f(t),y(()=>d(r,v(n).name)),G(e,t)},content:e=>{var t=Te(),r=j(t,!0);f(t),y(()=>d(r,v(n).name)),G(e,t)},$$slots:{trigger:!0,content:!0}})},S=e=>{G(e,Oe())};s(b,e=>{v(n).name?e(x):e(S,-1)}),f(_);var w=C(_),E=j(w),D=e=>{Y(e,{trigger:e=>{var t=ke(),r=j(t,!0);f(t),y(()=>d(r,v(n).description)),G(e,t)},content:e=>{var t=Te(),r=j(t,!0);f(t),y(()=>d(r,v(n).description)),G(e,t)},$$slots:{trigger:!0,content:!0}})},O=e=>{G(e,Ae())};s(E,e=>{v(n).description?e(D):e(O,-1)}),f(w);var k=C(w);p(k,16,()=>i,e=>e,(e,i)=>{let a=H(()=>X(v(n),i));var o=Me(),c=j(o),l=e=>{Y(e,{trigger:e=>{var a=je();pe(j(a),{get value(){return v(n)[i]},get options(){return r[i]},justified:!0,onChange:e=>t.onUpdateItem(v(n).id,i,e)}),f(a),G(e,a)},content:e=>{var t=Te(),n=j(t,!0);f(t),y(()=>d(n,v(a))),G(e,t)},$$slots:{trigger:!0,content:!0}})},u=e=>{pe(e,{get value(){return v(n)[i]},get options(){return r[i]},justified:!1,onChange:e=>t.onUpdateItem(v(n).id,i,e)})};s(c,e=>{v(a)?e(l):e(u,-1)}),f(o),G(e,o)});var A=C(k),N=j(A),P=e=>{Y(e,{trigger:e=>{var t=Ne(),r=j(t,!0);f(t),y((e,n)=>{M(t,`data-tier`,e),d(r,n)},[()=>xe(v(n).riceScore),()=>Se(v(n).riceScore)]),G(e,t)},content:e=>{var t=Pe(),r=j(t);f(t),y(e=>d(r,`(${v(n).reach??``} à ${v(n).impact??``} à ${v(n).confidence??``}) ÷ ${v(n).effort??``} = 2 ${e??``}`),[()=>Se(v(n).riceScore)]),G(e,t)},$$slots:{trigger:!0,content:!0}})},F=e=>{var t=Fe(),r=j(t,!0);f(t),y(e=>d(r,e),[()=>Se(v(n).riceScore)]),G(e,t)};s(N,e=>{v(n).riceScore!==null&&v(n).reach!==null&&v(n).impact!==null&&v(n).confidence!==null&&v(n).effort!==null?e(P):e(F,-1)}),f(A);var I=C(A),L=j(I),z=j(L);{let e=H(()=>v(n).name||`item`);q(z,{intent:`critical`,size:`sm`,get"aria-label"(){return`Remove ${v(e)??``}`},onclick:()=>T(v(n).id),children:(e,t)=>{J(e,{name:`lucide:trash-2`,size:`0.875rem`})},$$slots:{default:!0}})}f(L),f(I),f(o),y(()=>c=U(o,1,`row svelte-8as8u6`,null,c,{dragging:v(h)===v(a),"drop-target":v(g)===v(a)&&v(h)!==v(a)})),R(`dragover`,o,e=>ae(e,v(a))),R(`dragstart`,m,()=>ie(v(a))),R(`dragend`,m,oe),u(`click`,_,()=>t.onSelectItem(v(n))),u(`keydown`,_,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.onSelectItem(v(n)))}),u(`click`,w,()=>t.onSelectItem(v(n))),u(`keydown`,w,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.onSelectItem(v(n)))}),G(e,o)});var rt=C(nt),it=j(rt),at=j(it);J(j(at),{name:`lucide:plus`,size:`0.875rem`}),f(at),f(it);var ot=C(it);M(ot,`colspan`,7);var st=j(ot);L(st),f(ot),l(),f(rt),f(tt),f(se),f($),f(Q),A(Q,e=>I=e,()=>I),le(C(Q,2),{get open(){return x},role:`alertdialog`,onOpenChange:O,title:e=>{l(),G(e,_(`Delete item?`))},footer:(e,t)=>{let n=()=>(t?.()).close;var r=Le(),i=B(r);q(i,{intent:`neutral`,size:`md`,get onclick(){return n()},children:(e,t)=>{l(),G(e,_(`Cancel`))},$$slots:{default:!0}}),q(C(i,2),{intent:`critical`,size:`md`,onclick:E,children:(e,t)=>{l(),G(e,_(`Delete`))},$$slots:{default:!0}}),G(e,r)},children:(e,t)=>
2{var n=Re(),r=C(j(n)),i=j(r,!0);f(r),l(),f(n),y(()=>d(i,v(w)?.name||`this item`)),G(e,n)},$$slots:{title:!0,footer:!0,default:!0}}),y(()=>{b(de,`width: ${v(F)??``}px`),Ue=U(He,1,`sort-btn svelte-8as8u6`,null,Ue,{active:v(c)===`name`}),Ze=U(Xe,1,`sort-btn svelte-8as8u6`,null,Ze,{active:v(c)===`riceScore`})}),u(`click`,He,()=>ne(`name`)),u(`mousedown`,qe,te),u(`click`,Xe,()=>ne(`riceScore`)),u(`keydown`,st,e=>{e.key===`Enter`&&(e.preventDefault(),K())}),ee(st,()=>v(a),e=>N(a,e)),G(e,Z),n()}c([`click`,`mousedown`,`keydown`]);var Ve=g(`<span class="user-text svelte-1cz41s9"> </span>`),He=g(`<span class="ghost svelte-1cz41s9"> </span>`),Ue=g(`<span class="ph svelte-1cz41s9"> </span>`),We=g(`<span class="loading svelte-1cz41s9"><!></span>`),Ge=g(`<span class="hint svelte-1cz41s9"><!> <span class="svelte-1cz41s9">Tab to accept</span></span>`),Ke=g(`<div class="wrap svelte-1cz41s9"><div class="layer svelte-1cz41s9" aria-hidden="true"><!> <!> <!> <!></div> <textarea class="area svelte-1cz41s9" rows="4"></textarea> <div class="meta svelte-1cz41s9"><!> <!> <span> </span></div></div>`);function qe(e,t){k(t,!0);let r=F(t,`placeholder`,3,``),i=F(t,`initialSuggestion`,3,``),a=F(t,`maxLength`,3,1e3),o=D(T(i()??``)),c=D(!!i()),p=D(!1),m=D(!1),h=i(),g=null,_=null,b=!1;I(()=>{i()&&i()!==h&&!v(o)&&!t.value&&(N(o,i()),N(c,!0),h=i())}),I(()=>{let e=t.value,n=t.featureName;if(!v(m)&&!(i()&&!e)&&(g&&clearTimeout(g),n.trim()))return g=setTimeout(()=>{S(n,e)},1e3),()=>{g&&clearTimeout(g)}});async function S(e,t){if(_&&_.abort(),!e.trim()){N(o,``);return}N(p,!0),_=new AbortController;try{let n=await fetch(`/projects/rice-prioritization/api/autocomplete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({featureName:e,currentDescription:t}),signal:_.signal});if(!n.ok)throw Error(`Failed to fetch`);let r=await n.json();r.suggestion&&(N(o,r.suggestion,!0),N(c,!0))}catch(e){e.name!==`AbortError`&&console.error(`Auto-complete error:`,e)}finally{b||N(p,!1)}}function w(e){if(e.key===`Tab`&&v(c)&&v(o)){e.preventDefault();let n=t.value?`${t.value} ${v(o)}`:v(o);t.onChange(n),N(o,``),N(c,!1),N(m,!0)}else e.key===`Escape`&&(N(o,``),N(c,!1))}function O(e){t.onChange(e.currentTarget.value),v(m)&&N(m,!1)}P(()=>{b=!0,g&&clearTimeout(g),_&&_.abort()});let A=H(()=>v(c)&&!!v(o)),L=H(()=>!t.value&&v(A)),R=H(()=>!!t.value&&v(A));var z=Ke(),ee=j(z),B=j(ee),V=e=>{var n=Ve(),r=j(n,!0);f(n),y(()=>d(r,t.value)),G(e,n)};s(B,e=>{t.value&&e(V)});var W=C(B,2),te=e=>{var t=He(),n=j(t,!0);f(t),y(()=>d(n,v(o))),G(e,t)};s(W,e=>{v(L)&&e(te)});var K=C(W,2),ne=e=>{var t=He(),n=j(t,!0);f(t),y(()=>d(n,v(o))),G(e,t)};s(K,e=>{v(R)&&e(ne)});var re=C(K,2),ie=e=>{var t=Ue(),n=j(t,!0);f(t),y(()=>d(n,r())),G(e,t)};s(re,e=>{!t.value&&!v(A)&&r()&&e(ie)}),f(ee);var q=C(ee,2);x(q);var ae=C(q,2),Y=j(ae),oe=e=>{var t=We();J(j(t),{name:`lucide:sparkles`,size:`0.75rem`}),f(t),G(e,t)};s(Y,e=>{v(p)&&e(oe)});var X=C(Y,2),Z=e=>{var t=Ge();J(j(t),{name:`lucide:sparkles`,size:`0.625rem`}),l(2),f(t),G(e,t)};s(X,e=>{v(A)&&!v(p)&&e(Z)});var Q=C(X,2);let $;var se=j(Q);f(Q),f(ae),f(z),y(()=>{E(q,t.value),M(q,`maxlength`,a()),$=U(Q,1,`count svelte-1cz41s9`,null,$,{over:t.value.length>=a()}),d(se,`${t.value.length??``}/${a()??``}`)}),u(`input`,q,O),u(`keydown`,q,w),G(e,z),n()}c([`input`,`keydown`]);var Je=g(`<div class="title-edit svelte-qq3i6w"><input type="text" class="title-input svelte-qq3i6w"/> <span> </span></div>`),Ye=g(`<h2> </h2>`),Xe=g(`<div class="math svelte-qq3i6w"> </div>`),Ze=g(`<div class="summary-inner svelte-qq3i6w"><div class="summary-head svelte-qq3i6w"><span class="label svelte-qq3i6w">RICE Score</span> <span class="score-big svelte-qq3i6w"> </span></div> <!> <!></div>`),Qe=g(`<span class="component-value svelte-qq3i6w"> </span>`),$e=g(`<button type="button"><span class="option-label svelte-qq3i6w"> </span> <span class="option-desc svelte-qq3i6w"> </span></button>`),et=g(`<div class="component svelte-qq3i6w"><div class="component-head svelte-qq3i6w"><label class="component-label svelte-qq3i6w"> </label> <!></div> <p class="component-desc svelte-qq3i6w"> </p> <div class="options svelte-qq3i6w"></div></div>`),tt=g(`<div><div></div> <div><header class="head svelte-qq3i6w"><!> <p>Edit feature details</p></header> <div class="body svelte-qq3i6w"><section class="field-group svelte-qq3i6w"><label class="label svelte-qq3i6w" for="rice-desc">Description</label> <!></section> <div class="summary svelte-qq3i6w"><!></div> <section class="components svelte-qq3i6w"><h3 class="section-heading svelte-qq3i6w">Score components</h3> <!></section></div></div></div>`);function nt(e,a){k(a,!0);let o=()=>m(J,`$portalled`,T),c=()=>m(V,`$overlay`,T),g=()=>m(te,`$content`,T),b=()=>m(K,`$title`,T),x=()=>m(q,`$description`,T),S=()=>m(Y,`$openState`,T),[T,E]=W(),O={"very-high":`success`,high:`accent`,medium:`warning`,low:`warning`,"very-low":`critical`,none:`neutral`},P=H(()=>xe(a.item?.riceScore??null)),F={reach:me,impact:he,confidence:ge,effort:_e},z=[`reach`,`impact`,`confidence`,`effort`],{elements:{overlay:V,content:te,title:K,description:q,portalled:J},states:{open:Y}}
2=ne({defaultOpen:!1,preventScroll:!0,closeOnOutsideClick:!0,role:`dialog`,onOpenChange:({next:e})=>(a.onOpenChange(e),e)});I(()=>{Y.set(a.open)});let X=D(!1),Z=D(``),Q=D(null);I(()=>{a.item&&N(Z,a.item.name,!0)});async function $(){N(X,!0),await t(),v(Q)?.focus(),v(Q)?.select()}function se(){if(!a.item)return;N(X,!1);let e=v(Z).trim();e&&e!==a.item.name?a.onUpdateItem(a.item.id,`name`,e):N(Z,a.item.name,!0)}function ce(e){e.key===`Enter`?(e.preventDefault(),se()):e.key===`Escape`&&(a.item&&N(Z,a.item.name,!0),N(X,!1))}var le=r(),ue=B(le),de=e=>{var t=tt();w(t,()=>({...o()}),void 0,void 0,void 0,`svelte-qq3i6w`);var n=j(t);w(n,()=>({...c(),class:`overlay`}),void 0,void 0,void 0,`svelte-qq3i6w`),h(n,e=>c().action?.(e));var r=C(n,2);w(r,()=>({...g(),class:`sheet`}),void 0,void 0,void 0,`svelte-qq3i6w`);var m=j(r),S=j(m),T=e=>{var t=Je(),n=j(t);L(n),M(n,`maxlength`,200),A(n,e=>N(Q,e),()=>v(Q));var r=C(n,2);let i;var a=j(r);f(r),f(t),y(()=>{i=U(r,1,`count svelte-qq3i6w`,null,i,{over:v(Z).length>=200}),d(a,`${v(Z).length??``}/200`)}),R(`blur`,n,se),u(`keydown`,n,ce),ee(n,()=>v(Z),e=>N(Z,e)),G(e,t)},E=e=>{var t=Ye(),n=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),$())};w(t,()=>({...b(),class:`title`,onclick:$,role:`button`,tabindex:`0`,onkeydown:n}),void 0,void 0,void 0,`svelte-qq3i6w`);var r=j(t,!0);f(t),h(t,e=>b().action?.(e)),y(()=>d(r,a.item.name||`Untitled`)),G(e,t)};s(S,e=>{v(X)?e(T):e(E,-1)});var D=C(S,2);w(D,()=>({...x(),class:`sr-only`}),void 0,void 0,void 0,`svelte-qq3i6w`),h(D,e=>x().action?.(e)),f(m);var k=C(m,2),I=j(k),B=C(j(I),2);{let e=H(()=>a.item.description??``);qe(B,{get value(){return v(e)},get featureName(){return a.item.name},placeholder:`Add a description...`,get initialSuggestion(){return a.item.suggestedDescription},onChange:e=>
2a.onUpdateItem(a.item.id,`description`,e)})}f(I);var V=C(I,2);oe(j(V),{surface:`strong`,padding:`md`,bordered:!1,as:`section`,children:(e,t)=>{var n=Ze(),r=j(n),i=C(j(r),2),o=j(i,!0);f(i),f(r);var c=C(r,2);ae(c,{get tone(){return O[v(P)]},variant:`soft`,size:`sm`,children:(e,t)=>{l();var n=_();y(e=>d(n,e),[()=>be(a.item.riceScore)]),G(e,n)},$$slots:{default:!0}});var u=C(c,2),p=e=>{var t=Xe(),n=j(t);f(t),y(e=>d(n,`(${a.item.reach??``} à ${a.item.impact??``} à ${a.item.confidence??``}) ÷ ${a.item.effort??``} = 3 ${e??``}`),[()=>Se(a.item.riceScore)]),G(e,t)};s(u,e=>{a.item.riceScore!==null&&e(p)}),f(n),y(e=>d(o,e),[()=>Se(a.item.riceScore)]),G(e,n)},$$slots:{default:!0}}),f(V);var W=C(V,2);p(C(j(W),2),16,()=>z,e=>e,(e,t)=>{let n=H(()=>ve.find(e=>e.id===t));var r=et(),i=j(r),o=j(i),c=j(o,!0);f(o);var l=C(o,2),m=e=>{var n=Qe(),r=j(n,!0);f(n),y(()=>d(r,a.item[t])),G(e,n)};s(l,e=>{a.item[t]!==null&&e(m)}),f(i);var h=C(i,2),g=j(h,!0);f(h);var _=C(h,2);p(_,21,()=>F[t],e=>e.value,(e,n)=>{var r=$e();let i;var o=j(r),s=j(o,!0);f(o);var c=C(o,2),l=j(c,!0);f(c),f(r),y(()=>{i=U(r,1,`option svelte-qq3i6w`,null,i,{active:a.item[t]===v(n).value}),d(s,v(n).label),d(l,v(n).description)}),u(`click`,r,()=>
3a.onUpdateItem(a.item.id,t,v(n).value)),G(e,r)}),f(_),f(r),y(()=>{M(o,`for`,`rice-${t??``}`),d(c,t),d(g,v(n)?.description)}),G(e,r)}),f(W),f(k),f(r),h(r,e=>g().action?.(e)),f(t),h(t,e=>o().action?.(e)),y(()=>M(V,`data-tier`,v(P))),i(3,n,()=>ie,()=>({duration:150})),i(3,r,()=>re,()=>({x:24,duration:220})),G(e,t)};s(ue,e=>{a.item&&S()&&e(de)}),G(e,le),n(),E()}c([`keydown`,`click`]);var rt=g(`<meta name="description" content="Score your items using Reach, Impact, Confidence, and Effort."/>`),it=g(`<div class="page svelte-1e2f8h7"><a href="/projects" class="back-link svelte-1e2f8h7">â Projects</a> <!> <!></div> <!>`,1);function at(e,t){k(t,!0);let r=[`Hopping through your features...`,`Bouncing priorities around...`,`Pouch-ing the numbers...`,`Consulting the marsupial council...`,`Kangaroo-crunching scores...`,`Leaping to conclusions...`],i={reach:`reachJustification`,impact:`impactJustification`,confidence:`confidenceJustification`,effort:`effortJustification`},o=D(T([])),s=D(null),c=D(!1),u=D(!1),p=D(0),m=null;I(()=>(v(u)?m=setInterval(()=>{N(p,(v(p)+1)%r.length)},2500):(m&&clearInterval(m),m=null,N(p,0)),()=>{m&&clearInterval(m),m=null})),P(()=>{m&&clearInterval(m)});let h=H(()=>v(s)?v(o).find(e=>e.id===v(s))??null:null);function g(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`id-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}async function b(e){let t=g(),n={id:t,name:e,reach:null,impact:null,confidence:null,effort:null,riceScore:null};N(o,[...v(o),n],!0),K.capture(`rice_item_added`,{item_count:v(o).length});try{let n=await fetch(`/projects/rice-prioritization/api/autocomplete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({featureName:e,currentDescription:``})});if(!n.ok)return;let r=await n.json();r.suggestion&&N(o,v(o).map(e=>e.id===t?{...e,suggestedDescription:r.suggestion}:e),!0)}catch(e){console.error(`Failed to pre-fetch suggestion:`,e)}}function x(e){N(o,v(o).filter(t=>t.id!==e),!0),v(s)===e&&(N(s,null),N(c,!1))}function w(e,t,n){N(o,v(o).map(r=>{if(r.id!==e)return r;let a={...r,[t]:n};return(t===`reach`||t===`impact`||t===`confidence`||t===`effort`)&&(a[i[t]]=void 0,a.riceScore=ye(a.reach,a.impact,a.confidence,a.effort)),a}),!0)}function E(e,t){let n=[...v(o)],[r]=n.splice(e,1);n.splice(t,0,r),N(o,n,!0)}function O(e){N(s,e.id,!0),N(c,!0)}function A(e){N(c,e,!0),e||N(s,null)}async function M(){if(v(o).length!==0){N(u,!0);try{let e={};try{let t=K.get_distinct_id(),n=K.get_session_id();t&&(e[`X-POSTHOG-DISTINCT-ID`]=t),n&&(e[`X-POSTHOG-SESSION-ID`]=n)}catch{}let t=await fetch(`/projects/rice-prioritization/api/relative-estimate`,{method:`POST`,headers:{"Content-Type":`application/json`,...e},body:JSON.stringify({items:v(o)})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.message||`Failed to generate estimates`)}let n=await t.json();N(o,v(o).map(e=>{let t=n.estimates.find(t=>t.id===e.id);if(!t)return e;let r={...e,reach:t.reach,impact:t.impact,confidence:t.confidence,effort:t.effort,reachJustification:t.reachJustification,impactJustification:t.impactJustification,confidenceJustification:t.confidenceJustification,effortJustification:t.effortJustification};return r.riceScore=ye(r.reach,r.impact,r.confidence,r.effort),r}),!0)}catch(e){console.error(`Relative estimation failed:`,e)}finally{N(u,!1)}}}var F=it();a(`1e2f8h7`,e=>{var t=rt();z(()=>{S.title=`RICE Prioritization â Wallabi`}),G(e,t)});var L=B(F),R=C(j(L),2);X(R,{title:`RICE Prioritization`,description:`Score your items using Reach, Impact, Confidence, and Effort.`,as:`h1`,size:`sm`,actions:e=>{{let t=e=>{{let t=H(()=>v(u)?`icon-spin`:``);J(e,{name:`lucide:sparkles`,size:`1rem`,get class(){return v(t)}})}},n=H(()=>v(o).length===0||v(u));q(e,{intent:`neutral`,size:`md`,onclick:M,get disabled(){return v(n)},leading:t,children:(e,t)=>{l();var n=_();y(()=>d(n,v(u)?r[v(p)]:`AI Relative Estimate`)),G(e,n)},$$slots:{leading:!0,default:!0}})}},$$slots:{actions:!0}}),Be(C(R,2),{get items(){return v(o)},onAddItem:b,onRemoveItem:x,onUpdateItem:w,onReorderItems:E,onSelectItem:O}),f(L),nt(C(L,2),{get item(){return v(h)},get open(){return v(c)},onOpenChange:A,onUpdateItem:w}),G(e,F),n()}export{at as component,ue as universal};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.