dev-process-kit 0.0.13 → 0.0.15
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/README.md +1 -1
- package/dist/chunks/{shared-CirHYajF.js → shared-BJvnqK51.js} +1 -1
- package/dist/chunks/{shared-0MFKKPnB.js → shared-BS9TMOvt.js} +11 -11
- package/dist/chunks/{shared-Cd8A5TjZ.js → shared-BYoX4LxS.js} +174 -157
- package/dist/chunks/shared-B_nvELQt.js +572 -0
- package/dist/chunks/{shared-C1KQ5iU8.js → shared-Bp3FCPZj.js} +15 -21
- package/dist/chunks/shared-BtEAASxQ.js +1049 -0
- package/dist/chunks/shared-CBRj9Yll.js +2692 -0
- package/dist/chunks/{shared-DjmQsa0n.js → shared-CLabLKYD.js} +1 -1
- package/dist/chunks/{shared-B2YRwZ0P.js → shared-CRpGBd1Z.js} +139 -128
- package/dist/chunks/{shared-D7poXZ0z.js → shared-CVI7znpk.js} +6 -5
- package/dist/chunks/{shared-DklLt1Sc.js → shared-CeM-gXAw.js} +1 -1
- package/dist/chunks/{shared-CQG0dnvb.js → shared-D0PnnUir.js} +5 -4
- package/dist/chunks/shared-DsUcMhpJ.js +1104 -0
- package/dist/chunks/{shared-DrMSORn-.js → shared-m1HXI5YR.js} +176 -168
- package/dist/components.js +1 -1
- package/dist/index.js +1 -1
- package/dist/templates/delegation-poker.js +1 -1
- package/dist/templates/event-storming.js +1 -1
- package/dist/templates/example-mapping.js +1 -1
- package/dist/templates/grill.js +1 -1
- package/dist/templates/plain.js +1 -1
- package/dist/templates/prototype.js +1 -1
- package/dist/templates/slides.js +1 -1
- package/dist/templates/task-board.js +1 -1
- package/dist/templates/usm.js +1 -1
- package/dist/templates/whiteboard.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/shared-B4Mwapvi.js +0 -1043
- package/dist/chunks/shared-BDUe3aT-.js +0 -1
- package/dist/chunks/shared-CSC14I4g.js +0 -2370
- package/dist/chunks/shared-DO0pUSjw.js +0 -571
- package/dist/chunks/shared-DxAiavwJ.js +0 -1102
- package/dist/chunks/shared-aDPp8Vry.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f,aj as b,aK as ht,a_ as vt,ah as ge,p as g,at as h,v as H,ay as P,P as ft,e as bt,a0 as yt,V as R,R as y,a7 as V,a2 as W,G as kt,a4 as l,aP as M,a3 as m,a8 as xt,j as St,a9 as wt,aN as Tt,aO as $t,A as Et,l as F,a5 as A,aD as N,J as At,B as It,aH as _t,K as he,z as ve,h as Mt,as as Ot,T as fe,a1 as Lt}from"./shared-CSC14I4g.js";import{s as Dt}from"./shared-D4K7KsfJ.js";import{P as Rt,p as Nt}from"./shared-aDPp8Vry.js";import{r as se,D as Ct}from"./shared-DdefS1nG.js";import{a as Yt}from"./shared-BDUe3aT-.js";const Ut=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m16 9-5.5 5.5L8 12"}]],zt=[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7"}]],Pt=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9"}]],Vt=[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"}],["circle",{cx:"12",cy:"12",r:"10"}]],Bt=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]],Gt=[["circle",{cx:"12",cy:"12",r:"10"}]],Ft=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 6v6l4 2"}]],Kt=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}],["circle",{cx:"12",cy:"12",r:"3"}]],jt=[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528"}]],qt=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"}],["path",{d:"M9 18h6"}],["path",{d:"M10 22h4"}]],X=["gray","blue","violet","green","amber","accent"],be=["progress","circle","lightbulb","flag","play","clock","eye","pause","check","x"],Ht=U({id:f(c(),b(1)),name:f(c(),b(1))}),Wt=U({id:D,name:f(c(),b(1)),actor:T(c()),steps:z(G(Ht),[])}),Xt=U({id:f(c(),b(1)),name:f(c(),b(1)),timeframe:T(c()),description:T(c())}),ie=ge(X),ne=ge(be),re=f(c(),vt(),ht(e=>/^https?:\/\//i.test(e),"a link must be an http(s) URL")),Zt=U({url:re,label:T(f(c(),b(1)))}),Jt=U({id:D,name:f(c(),b(1)),tone:z(ie),icon:z(ne)}),Qt=U({id:D,name:f(c(),b(1)),description:T(c()),activityId:f(c(),b(1)),stepId:f(c(),b(1)),milestoneId:T(c()),statusId:T(c()),links:T(G(Zt))}),ea=U({title:T(c()),activities:z(G(Wt),[]),milestones:z(G(Xt),[]),statuses:z(G(Jt),[]),stories:z(G(Qt),[])}),ye=e=>X[e%X.length]??"gray",ke=e=>{const t=mt(ea,e),a=t.statuses[0]?.id,s={...t,stories:a===void 0?t.stories:t.stories.map(d=>d.statusId===void 0?{...d,statusId:a}:d),statuses:t.statuses.map((d,u)=>({...d,tone:d.tone??ye(u),icon:d.icon??"progress"}))},i=new Map;for(const d of s.activities)for(const u of d.steps)i.set(u.id,d.id);const n=new Set(s.milestones.map(d=>d.id)),r=new Set(s.statuses.map(d=>d.id)),o=new Set,p=(d,u)=>{if(o.has(u))throw new Error(`duplicate id "${u}" in ${d}`);o.add(u)};for(const d of s.activities){p("activities",d.id);for(const u of d.steps)p("steps",u.id)}for(const d of s.milestones)p("milestones",d.id);for(const d of s.statuses)p("statuses",d.id);for(const d of s.stories){p("stories",d.id);const u=i.get(d.stepId);if(u===void 0||u!==d.activityId)throw new Error(`story "${d.id}" references unknown activityId/stepId`);if(d.milestoneId!==void 0&&!n.has(d.milestoneId))throw new Error(`story "${d.id}" references unknown milestoneId "${d.milestoneId}"`);const E=(d.links??[]).map(I=>I.url);if(new Set(E).size!==E.length)throw new Error(`story "${d.id}" links the same URL twice`);if(d.statusId!==void 0&&!r.has(d.statusId))throw new Error(`story "${d.id}" references unknown statusId "${d.statusId}"`)}return s},xe=()=>({activities:[],milestones:[],statuses:[],stories:[]}),L=(e,t)=>{if(t!==void 0)return e.activities.find(a=>a.id===t)},oe=(e,t)=>`${e}.${t}`,S=(e,t)=>{if(t===void 0)return;const a=gt(t,2);if(a){const[s,i]=a;if(s===void 0||i===void 0)return;const n=e.activities.find(o=>o.id===s),r=n?.steps.find(o=>o.id===i);return n&&r?{activity:n,step:r}:void 0}if(!t.includes("."))for(const s of e.activities){const i=s.steps.find(n=>n.id===t);if(i)return{activity:s,step:i}}},O=(e,t)=>{if(t!==void 0)return e.milestones.find(a=>a.id===t)},$=(e,t)=>{if(t!==void 0)return e.statuses.find(a=>a.id===t)},x=(e,t)=>{if(t!==void 0)return e.stories.find(a=>a.id===t)},de=e=>e.activities.flatMap(t=>t.steps.map(a=>({activity:t,step:a}))),ta=e=>({...e,stories:Dt(e.stories,[t=>`${t.activityId}/${t.stepId}/${t.milestoneId??""}`])}),Z=(e,t,a)=>e.stories.filter(s=>s.stepId===t&&(s.milestoneId??void 0)===a),Se=(e,t,a)=>e.stories.filter(s=>s.activityId===t&&(s.milestoneId??void 0)===a),B=e=>[...e.activities.map(t=>t.id),...e.activities.flatMap(t=>t.steps.map(a=>a.id)),...e.milestones.map(t=>t.id),...e.statuses.map(t=>t.id),...e.stories.map(t=>t.id)],we=(e,t)=>e.stories.filter(a=>a.stepId===t).length,v={SET_ACTIVITY_NAME:g("SET_ACTIVITY_NAME","activity",h({name:f(c(),b(1))})),SET_ACTIVITY_ACTOR:g("SET_ACTIVITY_ACTOR","activity",h({actor:c()})),SET_STEP_NAME:g("SET_STEP_NAME","step",h({name:f(c(),b(1))})),REORDER_STEP:g("REORDER_STEP","step",h({after:P(c())}),{mode:"sequence"}),ADD_ACTIVITY:g("ADD_ACTIVITY","page",h({id:D,name:f(c(),b(1))}),{dedupeKey:H}),ADD_STEP:g("ADD_STEP","activity",h({id:D,name:f(c(),b(1))}),{dedupeKey:H}),DELETE_ACTIVITY:g("DELETE_ACTIVITY","activity",h({})),DELETE_STEP:g("DELETE_STEP","step",h({})),SET_STORY_NAME:g("SET_STORY_NAME","story",h({name:f(c(),b(1))})),SET_STORY_DESCRIPTION:g("SET_STORY_DESCRIPTION","story",h({description:c()})),SET_STORY_MILESTONE:g("SET_STORY_MILESTONE","story",h({milestoneId:P(c())})),MOVE_STORY:g("MOVE_STORY","story",h({activityId:f(c(),b(1)),stepId:f(c(),b(1)),milestoneId:P(c()),after:P(c())}),{mode:"sequence"}),REORDER_STORY:g("REORDER_STORY","story",h({after:P(c())}),{mode:"sequence"}),ADD_STORY:g("ADD_STORY","step",h({id:D,name:f(c(),b(1)),activityId:f(c(),b(1)),milestoneId:T(c())}),{dedupeKey:H}),DELETE_STORY:g("DELETE_STORY","story",h({})),ADD_STORY_LINK:g("ADD_STORY_LINK","story",h({url:re,label:T(f(c(),b(1)))})),REMOVE_STORY_LINK:g("REMOVE_STORY_LINK","story",h({url:c()})),SET_STORY_STATUS:g("SET_STORY_STATUS","story",h({statusId:f(c(),b(1))})),SET_MILESTONE_NAME:g("SET_MILESTONE_NAME","milestone",h({name:f(c(),b(1))})),ADD_MILESTONE:g("ADD_MILESTONE","page",h({id:D,name:f(c(),b(1))}),{dedupeKey:H}),DELETE_MILESTONE:g("DELETE_MILESTONE","milestone",h({})),REORDER_MILESTONE:g("REORDER_MILESTONE","milestone",h({after:P(c())}),{mode:"sequence"}),ADD_STATUS:g("ADD_STATUS","page",h({id:D,name:f(c(),b(1)),tone:ie,icon:T(ne)}),{dedupeKey:H}),SET_STATUS_NAME:g("SET_STATUS_NAME","status",h({name:f(c(),b(1))})),SET_STATUS_TONE:g("SET_STATUS_TONE","status",h({tone:ie})),SET_STATUS_ICON:g("SET_STATUS_ICON","status",h({icon:ne})),DELETE_STATUS:g("DELETE_STATUS","status",h({})),REORDER_STATUS:g("REORDER_STATUS","status",h({after:P(c())}),{mode:"sequence"})},aa={setActivityName:(e,t)=>({type:"SET_ACTIVITY_NAME",target:{type:"activity",id:e},payload:{name:t}}),setStepName:(e,t)=>({type:"SET_STEP_NAME",target:{type:"step",id:e},payload:{name:t}})},Te=(e,t)=>{const a=ft(v,t);if(a===null)return null;const s=a.target.id;switch(a.type){case"SET_ACTIVITY_NAME":{const{name:i}=a.payload;return e.activities.some(n=>n.id===s)?{...e,activities:e.activities.map(n=>n.id===s?{...n,name:i}:n)}:null}case"SET_ACTIVITY_ACTOR":{const i=a.payload.actor.trim();return e.activities.some(n=>n.id===s)?{...e,activities:e.activities.map(n=>{if(n.id!==s)return n;const{actor:r,...o}=n;return i===""?o:{...o,actor:i}})}:null}case"SET_STEP_NAME":{const{name:i}=a.payload,n=S(e,s);return n?{...e,activities:e.activities.map(r=>r.id===n.activity.id?{...r,steps:r.steps.map(o=>o.id===n.step.id?{...o,name:i}:o)}:r)}:null}case"REORDER_STEP":{const{after:i}=a.payload,n=S(e,s);if(!n)return null;const r=i===null?null:S(e,i);if(i!==null&&(!r||r.activity.id!==n.activity.id))return null;const o=pe(n.activity.steps,n.step.id,r?.step.id??null);return o===null?null:{...e,activities:e.activities.map(p=>p.id===n.activity.id?{...p,steps:o}:p)}}case"ADD_ACTIVITY":{const i=a.payload;return e.activities.some(n=>n.id===i.id)?e:{...e,activities:[...e.activities,{id:i.id,name:i.name,steps:[]}]}}case"ADD_STEP":{const i=a.payload,n=e.activities.find(r=>r.id===s);return n?n.steps.some(r=>r.id===i.id)?e:{...e,activities:e.activities.map(r=>r.id===s?{...r,steps:[...r.steps,{id:i.id,name:i.name}]}:r)}:null}case"DELETE_ACTIVITY":{const i=e.activities.find(r=>r.id===s);if(!i)return null;const n=new Set(i.steps.map(r=>r.id));return{...e,activities:e.activities.filter(r=>r.id!==s),stories:e.stories.filter(r=>r.activityId!==s&&!n.has(r.stepId))}}case"DELETE_STEP":{const i=S(e,s);return i?{...e,activities:e.activities.map(n=>n.id===i.activity.id?{...n,steps:n.steps.filter(r=>r.id!==i.step.id)}:n),stories:e.stories.filter(n=>n.activityId!==i.activity.id||n.stepId!==i.step.id)}:null}case"SET_STORY_NAME":{const{name:i}=a.payload;return K(e,s,n=>({...n,name:i}))}case"SET_STORY_DESCRIPTION":{const{description:i}=a.payload;return K(e,s,n=>({...n,description:i}))}case"SET_STORY_MILESTONE":{const{milestoneId:i}=a.payload;return i!==null&&!O(e,i)?null:K(e,s,n=>i===null?le(n):{...n,milestoneId:i})}case"MOVE_STORY":{const i=a.payload,n=x(e,s);if(!n)return null;const r=S(e,i.stepId);if(!r||r.activity.id!==i.activityId||i.milestoneId!==null&&!O(e,i.milestoneId))return null;const o=i.milestoneId??void 0,p=o===void 0?{...le(n),activityId:r.activity.id,stepId:r.step.id}:{...n,activityId:r.activity.id,stepId:r.step.id,milestoneId:o};return $e(e,p,i.after)}case"REORDER_STORY":{const{after:i}=a.payload,n=x(e,s);return n?$e(e,n,i,!0):null}case"ADD_STORY":{const i=a.payload,n=S(e,t.target.id);if(!n||n.activity.id!==i.activityId||i.milestoneId!==void 0&&!O(e,i.milestoneId))return null;if(e.stories.some(o=>o.id===i.id))return e;const r={id:i.id,name:i.name,activityId:i.activityId,stepId:n.step.id,...i.milestoneId===void 0?{}:{milestoneId:i.milestoneId},...e.statuses[0]===void 0?{}:{statusId:e.statuses[0].id}};return{...e,stories:[...e.stories,r]}}case"DELETE_STORY":return e.stories.some(i=>i.id===s)?{...e,stories:e.stories.filter(i=>i.id!==s)}:null;case"ADD_STORY_LINK":{const{url:i,label:n}=a.payload,r=x(e,s);if(!r)return null;if(r.links?.some(p=>p.url===i))return e;const o=n===void 0?{url:i}:{url:i,label:n};return K(e,s,p=>({...p,links:[...p.links??[],o]}))}case"REMOVE_STORY_LINK":{const{url:i}=a.payload;return x(e,s)?.links?.some(r=>r.url===i)?K(e,s,r=>{const o=(r.links??[]).filter(u=>u.url!==i),{links:p,...d}=r;return o.length===0?d:{...d,links:o}}):null}case"SET_STORY_STATUS":{const{statusId:i}=a.payload;return $(e,i)?K(e,s,n=>({...n,statusId:i})):null}case"SET_MILESTONE_NAME":{const{name:i}=a.payload;return e.milestones.some(n=>n.id===s)?{...e,milestones:e.milestones.map(n=>n.id===s?{...n,name:i}:n)}:null}case"ADD_MILESTONE":{const i=a.payload;return e.milestones.some(n=>n.id===i.id)?e:{...e,milestones:[...e.milestones,{id:i.id,name:i.name}]}}case"DELETE_MILESTONE":return e.milestones.some(i=>i.id===s)?{...e,milestones:e.milestones.filter(i=>i.id!==s),stories:e.stories.map(i=>i.milestoneId===s?le(i):i)}:null;case"REORDER_MILESTONE":{const{after:i}=a.payload,n=pe(e.milestones,s,i);return n===null?null:{...e,milestones:n}}case"ADD_STATUS":{const{id:i,name:n,tone:r,icon:o}=a.payload;if(e.statuses.some(d=>d.id===i))return e;const p=[...e.statuses,{id:i,name:n,tone:r,icon:o??"progress"}];return e.statuses.length===0?{...e,statuses:p,stories:e.stories.map(d=>({...d,statusId:i}))}:{...e,statuses:p}}case"SET_STATUS_NAME":{const{name:i}=a.payload;return $(e,s)?{...e,statuses:e.statuses.map(n=>n.id===s?{...n,name:i}:n)}:null}case"SET_STATUS_TONE":{const{tone:i}=a.payload;return $(e,s)?{...e,statuses:e.statuses.map(n=>n.id===s?{...n,tone:i}:n)}:null}case"SET_STATUS_ICON":{const{icon:i}=a.payload;return $(e,s)?{...e,statuses:e.statuses.map(n=>n.id===s?{...n,icon:i}:n)}:null}case"DELETE_STATUS":{if(!$(e,s))return null;const i=e.statuses.filter(r=>r.id!==s),n=i[0]?.id;return{...e,statuses:i,stories:e.stories.map(r=>r.statusId!==s?r:n===void 0?sa(r):{...r,statusId:n})}}case"REORDER_STATUS":{const{after:i}=a.payload,n=pe(e.statuses,s,i);return n===null?null:{...e,statuses:n}}default:return bt(a)}},K=(e,t,a)=>e.stories.some(s=>s.id===t)?{...e,stories:e.stories.map(s=>s.id===t?a(s):s)}:null,le=e=>{const{milestoneId:t,...a}=e;return a},sa=e=>{const{statusId:t,...a}=e;return a},$e=(e,t,a,s=!1)=>{const i=t.milestoneId??void 0,n=e.stories.filter(k=>k.id!==t.id),r=n.filter(k=>k.stepId===t.stepId&&(k.milestoneId??void 0)===i);if(a!==null){const k=n.find(_=>_.id===a);if(!k||k.stepId!==t.stepId||(k.milestoneId??void 0)!==i)return null;if(s){const _=x(e,t.id);if(!_||k.stepId!==_.stepId||(k.milestoneId??void 0)!==(_.milestoneId??void 0))return null}}const o=a===null?[t,...r]:Ee(r,t,a),p=n.findIndex(k=>k.stepId===t.stepId&&(k.milestoneId??void 0)===i),d=new Set(r.map(k=>k.id)),u=n.filter(k=>!d.has(k.id)),E=p<0?u.length:Math.min(p,u.length),I=[...u.slice(0,E),...o,...u.slice(E)];return{...e,stories:I}},pe=(e,t,a)=>{if(!e.some(n=>n.id===t)||a!==null&&!e.some(n=>n.id===a))return null;if(a===t)return[...e];const s=e.find(n=>n.id===t);if(s===void 0)return null;const i=e.filter(n=>n.id!==t);return Ee(i,s,a)},Ee=(e,t,a)=>{const s=[...e],i=a===null?-1:s.findIndex(n=>n.id===a);return s.splice(i+1,0,t),s},J=yt({en:{renameActivity:"Rename activity",changeActivityActor:"Change whose experience",renameStep:"Rename step",reorderStep:"Reorder step",addActivity:"Add activity",addStep:"Add step",deleteActivity:"Delete activity",deleteStep:"Delete step",renameStory:"Rename story",updateStoryDescription:"Update story description",changeMilestone:"Change milestone",moveStory:"Move story",reorderStory:"Reorder story",addStory:"Add story",deleteStory:"Delete story",renameMilestone:"Rename milestone",addMilestone:"Add milestone",deleteMilestone:"Delete milestone",reorderMilestone:"Reorder milestone",changeStoryStatus:"Change story status",addStatus:"Add status",renameStatus:"Rename status",changeStatusTone:"Change status color",changeStatusIcon:"Change status icon",addStoryLink:"Link to story",removeStoryLink:"Unlink from story",deleteStatus:"Delete status",reorderStatus:"Reorder status",toValue:e=>`\u2192 \u201C${e}\u201D`,fromTo:(e,t)=>`\u201C${e}\u201D \u2192 \u201C${t}\u201D`,added:e=>`+ \u201C${e}\u201D`,removed:e=>`\u2212 \u201C${e}\u201D`,toFront:"\u2192 To the front",afterName:e=>`\u2192 Right after \u201C${e}\u201D`,toUnassigned:"\u2192 Unassigned",toName:e=>`\u2192 ${e}`,activityGroup:"Activity",stepGroup:"Step",storyGroup:"Story",milestoneGroup:"Milestone",statusGroup:"Status",mapGroup:"Map",targetLabel:(e,t)=>`${e} \xB7 ${t}`,targetMissing:(e,t)=>`${e} \xB7 ${t} (missing)`,wholeMap:"Whole map",unassigned:"Unassigned",emptyTitle:"No backbone yet",emptyBody:"Add activities and steps, and the story map appears here.",firstActivityButton:"+ First activity",groupingLabel:"Group by",groupViewTab:"Activity group",groupAxisHeader:"Activity group \u2192",activityAxis:"Activity \u2192",milestoneAxis:"Milestone \u2193",stepNameLabel:"Step name",activityNameLabel:"Activity name",milestoneNameLabel:"Milestone name",addStepAria:"Add a step to this activity",newActivityButton:"+ Activity",newMilestoneButton:"+ Milestone",addCellButton:"+ Add",addStoryCellAria:"Add a story to this cell",storyCount:e=>e===1?"1 story":`${e} stories`,pageTabsLabel:"Page",mapTab:"User Story Mapping",milestonesTab:"Milestones",statusesTab:"Statuses",shareOfStories:e=>`${e}% of all stories`,coverageLabel:"Backbone coverage",coverage:(e,t)=>`${e} / ${t} steps`,storiesLabel:"Stories",timeframeUnset:"Timing not set",milestoneNoDescription:"No description yet.",noMilestonesTitle:"No milestones yet",noMilestonesBody:"Add a milestone to slice the map into releases.",commentCountAria:e=>e===1?"1 comment":`${e} comments`,statusNameLabel:"Status name",statusToneLabel:"Color",toneName:e=>({gray:"Gray",blue:"Blue",violet:"Violet",green:"Green",amber:"Amber",accent:"Orange"})[e],statusIconLabel:"Icon",iconName:e=>({progress:"Progress ring",circle:"Circle",lightbulb:"Light bulb",flag:"Flag",play:"Play",clock:"Clock",eye:"Eye",pause:"Pause",check:"Check",x:"Cross"})[e],statusShare:(e,t)=>`${e===1?"1 story":`${e} stories`} \xB7 ${t}%`,statusFilterLabel:"Status",clearFilter:"Clear",progressAria:e=>`Progress: ${e}`,activityActorLabel:"Who",noStatusesTitle:"No statuses yet",noStatusesBody:"Add statuses such as Idea / Ready / Done, and the map colors each story by where it stands.",newStatusButton:"+ Status",moveUpAria:"Move up",moveDownAria:"Move down",deleteStatusAria:"Delete this status",moveDialogLabel:"Step to move to",moveDialogSelectLabel:"Destination",moveConfirm:"Move",moveCancel:"Cancel",storyStatusLabel:"Status",panelLabel:e=>`Story: ${e}`,closePanelAria:"Close",storyTitleLabel:"Title",storyDescriptionLabel:"Description",storyLinksLabel:"Links",linkUrlLabel:"URL",addLinkButton:"Add",removeLinkAria:e=>`Remove ${e}`,deleteStoryButton:"Delete story",storyCommentsLabel:"Comments",commentSubmit:"Comment",storyStatusAria:e=>`Status: ${e}`,newActivityName:"New activity",newStepName:"New step",newMilestoneName:"New milestone",newStoryName:"New story",newStatusName:"New status"},ja:{renameActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u540D\u3092\u5909\u66F4",changeActivityActor:"\u4F53\u9A13\u3059\u308B\u4EBA\u3092\u5909\u66F4",renameStep:"\u30B9\u30C6\u30C3\u30D7\u540D\u3092\u5909\u66F4",reorderStep:"\u30B9\u30C6\u30C3\u30D7\u306E\u9806\u5E8F\u3092\u5909\u66F4",addActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u8FFD\u52A0",addStep:"\u30B9\u30C6\u30C3\u30D7\u3092\u8FFD\u52A0",deleteActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u524A\u9664",deleteStep:"\u30B9\u30C6\u30C3\u30D7\u3092\u524A\u9664",renameStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u540D\u3092\u5909\u66F4",updateStoryDescription:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u8AAC\u660E\u3092\u66F4\u65B0",changeMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u5909\u66F4",moveStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u79FB\u52D5",reorderStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u9806\u5E8F\u3092\u5909\u66F4",addStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u8FFD\u52A0",deleteStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u524A\u9664",renameMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u540D\u3092\u5909\u66F4",addMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u8FFD\u52A0",deleteMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u524A\u9664",reorderMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u306E\u9806\u5E8F\u3092\u5909\u66F4",changeStoryStatus:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4",addStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FFD\u52A0",renameStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u540D\u3092\u5909\u66F4",changeStatusTone:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u8272\u3092\u5909\u66F4",changeStatusIcon:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4",addStoryLink:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306B\u30EA\u30F3\u30AF\u3092\u8FFD\u52A0",removeStoryLink:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u30EA\u30F3\u30AF\u3092\u524A\u9664",deleteStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u524A\u9664",reorderStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u9806\u5E8F\u3092\u5909\u66F4",toValue:e=>`\u2192 \u300C${e}\u300D`,fromTo:(e,t)=>`\u300C${e}\u300D\u2192\u300C${t}\u300D`,added:e=>`+ \u300C${e}\u300D`,removed:e=>`\u2212 \u300C${e}\u300D`,toFront:"\u2192 \u5148\u982D\u3078",afterName:e=>`\u2192 \u300C${e}\u300D\u306E\u76F4\u5F8C\u3078`,toUnassigned:"\u2192 \u672A\u5272\u5F53\u3078",toName:e=>`\u2192 ${e}`,activityGroup:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",stepGroup:"\u30B9\u30C6\u30C3\u30D7",storyGroup:"\u30B9\u30C8\u30FC\u30EA\u30FC",milestoneGroup:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",statusGroup:"\u30B9\u30C6\u30FC\u30BF\u30B9",mapGroup:"\u30DE\u30C3\u30D7",targetLabel:(e,t)=>`${e} \xB7 ${t}`,targetMissing:(e,t)=>`${e} \xB7 ${t} (missing)`,wholeMap:"\u30DE\u30C3\u30D7\u5168\u4F53",unassigned:"\u672A\u5272\u5F53",emptyTitle:"\u30D0\u30C3\u30AF\u30DC\u30FC\u30F3\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",emptyBody:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3068\u30B9\u30C6\u30C3\u30D7\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u3053\u3053\u306B\u30B9\u30C8\u30FC\u30EA\u30FC\u30DE\u30C3\u30D7\u304C\u73FE\u308C\u307E\u3059\u3002",firstActivityButton:"+ \u6700\u521D\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",groupingLabel:"\u307E\u3068\u3081\u308B\u5358\u4F4D",groupViewTab:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30B0\u30EB\u30FC\u30D7",groupAxisHeader:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30B0\u30EB\u30FC\u30D7 \u2192",activityAxis:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 \u2192",milestoneAxis:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3 \u2193",stepNameLabel:"\u30B9\u30C6\u30C3\u30D7\u540D",activityNameLabel:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u540D",milestoneNameLabel:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u540D",addStepAria:"\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u306B\u30B9\u30C6\u30C3\u30D7\u3092\u8FFD\u52A0",newActivityButton:"+ \u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",newMilestoneButton:"+ \u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",addCellButton:"+ \u8FFD\u52A0",addStoryCellAria:"\u3053\u306E\u30DE\u30B9\u306B\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u8FFD\u52A0",storyCount:e=>`${e} \u30B9\u30C8\u30FC\u30EA\u30FC`,pageTabsLabel:"\u30DA\u30FC\u30B8",mapTab:"User Story Mapping",milestonesTab:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",statusesTab:"\u30B9\u30C6\u30FC\u30BF\u30B9",shareOfStories:e=>`\u5168\u30B9\u30C8\u30FC\u30EA\u30FC\u306E ${e}%`,coverageLabel:"\u30D0\u30C3\u30AF\u30DC\u30FC\u30F3\u306E\u7DB2\u7F85",coverage:(e,t)=>`${e} / ${t} \u30B9\u30C6\u30C3\u30D7`,storiesLabel:"\u30B9\u30C8\u30FC\u30EA\u30FC",timeframeUnset:"\u6642\u671F\u672A\u5B9A",milestoneNoDescription:"\u8AAC\u660E\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002",noMilestonesTitle:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",noMilestonesBody:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u30DE\u30C3\u30D7\u3092\u30EA\u30EA\u30FC\u30B9\u3054\u3068\u306B\u533A\u5207\u308C\u307E\u3059\u3002",commentCountAria:e=>`\u30B3\u30E1\u30F3\u30C8 ${e} \u4EF6`,statusNameLabel:"\u30B9\u30C6\u30FC\u30BF\u30B9\u540D",statusToneLabel:"\u8272",toneName:e=>({gray:"\u30B0\u30EC\u30FC",blue:"\u9752",violet:"\u7D2B",green:"\u7DD1",amber:"\u9EC4",accent:"\u30AA\u30EC\u30F3\u30B8"})[e],statusIconLabel:"\u30A2\u30A4\u30B3\u30F3",iconName:e=>({progress:"\u9032\u6357\u30EA\u30F3\u30B0",circle:"\u5186",lightbulb:"\u96FB\u7403",flag:"\u65D7",play:"\u518D\u751F",clock:"\u6642\u8A08",eye:"\u76EE",pause:"\u4E00\u6642\u505C\u6B62",check:"\u30C1\u30A7\u30C3\u30AF",x:"\u30D0\u30C4"})[e],statusShare:(e,t)=>`${e} \u30B9\u30C8\u30FC\u30EA\u30FC \xB7 ${t}%`,statusFilterLabel:"\u30B9\u30C6\u30FC\u30BF\u30B9",clearFilter:"\u30AF\u30EA\u30A2",progressAria:e=>`\u9032\u307F\u5177\u5408: ${e}`,activityActorLabel:"\u8AB0\u306E\u4F53\u9A13",noStatusesTitle:"\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",noStatusesBody:"Idea / Ready / Done \u306E\u3088\u3046\u306A\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u30DE\u30C3\u30D7\u306E\u30AB\u30FC\u30C9\u304C\u9032\u307F\u5177\u5408\u3067\u8272\u5206\u3051\u3055\u308C\u307E\u3059\u3002",newStatusButton:"+ \u30B9\u30C6\u30FC\u30BF\u30B9",moveUpAria:"\u4E0A\u3078\u79FB\u52D5",moveDownAria:"\u4E0B\u3078\u79FB\u52D5",deleteStatusAria:"\u3053\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u524A\u9664",moveDialogLabel:"\u79FB\u52D5\u5148\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",moveDialogSelectLabel:"\u79FB\u52D5\u5148",moveConfirm:"\u79FB\u52D5\u3059\u308B",moveCancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",storyStatusLabel:"\u30B9\u30C6\u30FC\u30BF\u30B9",panelLabel:e=>`\u30B9\u30C8\u30FC\u30EA\u30FC: ${e}`,closePanelAria:"\u9589\u3058\u308B",storyTitleLabel:"\u30BF\u30A4\u30C8\u30EB",storyDescriptionLabel:"\u8AAC\u660E",storyLinksLabel:"\u30EA\u30F3\u30AF",linkUrlLabel:"URL",addLinkButton:"\u8FFD\u52A0",removeLinkAria:e=>`${e} \u3092\u5916\u3059`,deleteStoryButton:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u524A\u9664",storyCommentsLabel:"\u30B3\u30E1\u30F3\u30C8",commentSubmit:"\u30B3\u30E1\u30F3\u30C8\u3059\u308B",storyStatusAria:e=>`\u30B9\u30C6\u30FC\u30BF\u30B9: ${e}`,newActivityName:"\u65B0\u3057\u3044\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",newStepName:"\u65B0\u3057\u3044\u30B9\u30C6\u30C3\u30D7",newMilestoneName:"\u65B0\u3057\u3044\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",newStoryName:"\u65B0\u3057\u3044\u30B9\u30C8\u30FC\u30EA\u30FC",newStatusName:"\u65B0\u3057\u3044\u30B9\u30C6\u30FC\u30BF\u30B9"}}),ce=/^[A-Z][A-Z0-9]+-\d+$/,Ae=e=>{let t=e;try{t=decodeURIComponent(e)}catch{}return t.replace(/[-_+]+/g," ").trim()},ia=(e,t)=>{if(e!=="github.com")return null;const[a,s,i,n]=t;if(a===void 0)return{kind:"github",text:"GitHub",title:"github.com"};if(s===void 0)return{kind:"github",text:a,title:a};const r=`${a}/${s}`;return(i==="issues"||i==="pull"||i==="discussions")&&n&&/^\d+$/.test(n)?{kind:"github",text:`#${n}`,title:`${r}#${n}`}:i==="commit"&&n?{kind:"github",text:n.slice(0,7),title:`${r}@${n}`}:{kind:"github",text:r,title:r}},na=(e,t)=>{if(e!=="gitlab.com")return null;const a=t.indexOf("-"),s=(a<0?t:t.slice(0,a)).join("/"),i=a<0?void 0:t[a+1],n=a<0?void 0:t[a+2];if(n&&/^\d+$/.test(n)){if(i==="issues")return{kind:"gitlab",text:`#${n}`,title:`${s}#${n}`};if(i==="merge_requests")return{kind:"gitlab",text:`!${n}`,title:`${s}!${n}`}}return{kind:"gitlab",text:s||"GitLab",title:s||e}},ra=(e,t,a)=>{if(!t.endsWith(".atlassian.net")&&!t.startsWith("jira."))return null;const s=(a[0]==="browse"?a[1]:void 0)??e.searchParams.get("selectedIssue")??a.find(i=>ce.test(i));return s&&ce.test(s)?{kind:"jira",text:s,title:`${t} ${s}`}:{kind:"jira",text:"Jira",title:t}},oa=(e,t)=>{if(e!=="linear.app")return null;const a=t[1]==="issue"?t[2]?.toUpperCase():void 0;return a&&ce.test(a)?{kind:"linear",text:a,title:a}:{kind:"linear",text:"Linear",title:e}},da=(e,t)=>{if(e!=="figma.com")return null;const[a,,s]=t;if((a==="file"||a==="design"||a==="proto"||a==="board")&&s){const i=Ae(s);return{kind:"figma",text:i,title:i}}return{kind:"figma",text:"Figma",title:e}},la=(e,t)=>{if(e!=="notion.so"&&!e.endsWith(".notion.site"))return null;const s=(t.at(-1)??"").replace(/-?[0-9a-f]{32}$/i,""),i=s===""?"Notion":Ae(s);return{kind:"notion",text:i,title:i}},Q=e=>{let t;try{t=new URL(e)}catch{return{kind:"web",text:e,title:e}}const a=t.hostname.replace(/^www\./,""),s=t.pathname.split("/").filter(i=>i!=="");return ia(a,s)??na(a,s)??ra(t,a,s)??oa(a,s)??da(a,s)??la(a,s)??{kind:"web",text:a,title:e}},Ie=e=>{const t=e.tab;return t==="milestones"||t==="statuses"?t:"map"},ee=e=>{const t=e.statuses.length-1;return e.statuses.map((a,s)=>({id:a.id,name:a.name,tone:a.tone,icon:a.icon,progress:t<=0?1:s/t}))},_e=(e,t)=>e.find(a=>a.id===t.statusId),Me=(e,t)=>ee(e).map(a=>({...a,count:t.filter(s=>s.statusId===a.id).length})).filter(a=>a.count>0),te=(e,t)=>{const a=t.status;if(a===void 0||a==="")return new Set;const s=new Set(a.split(","));return new Set(e.statuses.map(i=>i.id).filter(i=>s.has(i)))},Oe=(e,t)=>{const a=e.statuses.map(s=>s.id).filter(s=>t.has(s));return a.length===0?null:a.join(",")},pa=(e,t)=>{const a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a},Le=(e,t)=>e.size===0?!0:t.statusId!==void 0&&e.has(t.statusId),C=(e,t,a)=>{const s=typeof a=="string"?a:"",i=typeof t=="string"?t:void 0;return i===void 0?e.toValue(s):e.fromTo(i,s)},ae=(e,t)=>typeof t=="string"?e.afterName(t):e.toFront,ca={SET_ACTIVITY_NAME:(e,t,a)=>({title:e.renameActivity,tone:"update",body:C(e,L(a,t.target.id)?.name,y(v.SET_ACTIVITY_NAME,t).name??"")}),SET_ACTIVITY_ACTOR:(e,t,a)=>{const s=y(v.SET_ACTIVITY_ACTOR,t).actor.trim();return{title:e.changeActivityActor,tone:"update",body:s===""?e.removed(L(a,t.target.id)?.actor??""):C(e,L(a,t.target.id)?.actor,s)}},SET_STEP_NAME:(e,t,a)=>({title:e.renameStep,tone:"update",body:C(e,S(a,t.target.id)?.step.name,y(v.SET_STEP_NAME,t).name??"")}),REORDER_STEP:(e,t)=>({title:e.reorderStep,tone:"move",body:ae(e,y(v.REORDER_STEP,t).after)}),ADD_ACTIVITY:(e,t)=>({title:e.addActivity,tone:"create",body:e.added(String(y(v.ADD_ACTIVITY,t).name??""))}),ADD_STEP:(e,t)=>({title:e.addStep,tone:"create",body:e.added(String(y(v.ADD_STEP,t).name??""))}),DELETE_ACTIVITY:(e,t,a)=>({title:e.deleteActivity,tone:"delete",body:e.removed(L(a,t.target.id)?.name??t.target.id)}),DELETE_STEP:(e,t,a)=>({title:e.deleteStep,tone:"delete",body:e.removed(S(a,t.target.id)?.step.name??t.target.id)}),SET_STORY_NAME:(e,t,a)=>({title:e.renameStory,tone:"update",body:C(e,x(a,t.target.id)?.name,y(v.SET_STORY_NAME,t).name??"")}),SET_STORY_DESCRIPTION:(e,t)=>({title:e.updateStoryDescription,tone:"update",body:e.toValue(String(y(v.SET_STORY_DESCRIPTION,t).description??"").slice(0,90))}),SET_STORY_MILESTONE:(e,t,a)=>{const s=y(v.SET_STORY_MILESTONE,t).milestoneId;return{title:e.changeMilestone,tone:"move",body:s==null?e.toUnassigned:e.toName(O(a,String(s))?.name??String(s))}},MOVE_STORY:(e,t,a)=>({title:e.moveStory,tone:"move",body:e.toName(S(a,String(y(v.MOVE_STORY,t).stepId))?.step.name??String(y(v.MOVE_STORY,t).stepId??""))}),REORDER_STORY:(e,t)=>({title:e.reorderStory,tone:"move",body:ae(e,y(v.REORDER_STORY,t).after)}),ADD_STORY:(e,t)=>({title:e.addStory,tone:"create",body:e.added(String(y(v.ADD_STORY,t).name??""))}),DELETE_STORY:(e,t,a)=>({title:e.deleteStory,tone:"delete",body:e.removed(x(a,t.target.id)?.name??t.target.id)}),SET_MILESTONE_NAME:(e,t,a)=>({title:e.renameMilestone,tone:"update",body:C(e,O(a,t.target.id)?.name,y(v.SET_MILESTONE_NAME,t).name??"")}),ADD_MILESTONE:(e,t)=>({title:e.addMilestone,tone:"create",body:e.added(String(y(v.ADD_MILESTONE,t).name??""))}),DELETE_MILESTONE:(e,t,a)=>({title:e.deleteMilestone,tone:"delete",body:e.removed(O(a,t.target.id)?.name??t.target.id)}),REORDER_MILESTONE:(e,t)=>({title:e.reorderMilestone,tone:"move",body:ae(e,y(v.REORDER_MILESTONE,t).after)}),ADD_STORY_LINK:(e,t)=>{const{url:a,label:s}=y(v.ADD_STORY_LINK,t);return{title:e.addStoryLink,tone:"create",body:e.added(s??Q(a).title)}},REMOVE_STORY_LINK:(e,t,a)=>{const{url:s}=y(v.REMOVE_STORY_LINK,t),i=x(a,t.target.id)?.links?.find(n=>n.url===s);return{title:e.removeStoryLink,tone:"delete",body:e.removed(i?.label??Q(s).title)}},SET_STORY_STATUS:(e,t,a)=>{const s=y(v.SET_STORY_STATUS,t).statusId;return{title:e.changeStoryStatus,tone:"update",body:e.toName($(a,s)?.name??s)}},ADD_STATUS:(e,t)=>({title:e.addStatus,tone:"create",body:e.added(y(v.ADD_STATUS,t).name)}),SET_STATUS_NAME:(e,t,a)=>({title:e.renameStatus,tone:"update",body:C(e,$(a,t.target.id)?.name,y(v.SET_STATUS_NAME,t).name)}),SET_STATUS_TONE:(e,t,a)=>{const s=$(a,t.target.id)?.tone,i=y(v.SET_STATUS_TONE,t).tone;return{title:e.changeStatusTone,tone:"update",body:C(e,s===void 0?void 0:e.toneName(s),e.toneName(i))}},SET_STATUS_ICON:(e,t,a)=>{const s=$(a,t.target.id)?.icon,i=y(v.SET_STATUS_ICON,t).icon;return{title:e.changeStatusIcon,tone:"update",body:C(e,s===void 0?void 0:e.iconName(s),e.iconName(i))}},DELETE_STATUS:(e,t,a)=>({title:e.deleteStatus,tone:"delete",body:e.removed($(a,t.target.id)?.name??t.target.id)}),REORDER_STATUS:(e,t)=>({title:e.reorderStatus,tone:"move",body:ae(e,y(v.REORDER_STATUS,t).after)})},De=(e,t,a,s)=>{let i;try{const n=ca[t.type];i=n?n(e,t,s??a):{title:t.type,tone:"meta"}}catch{i={title:t.type,tone:"meta"}}return{title:i.title,targetLabel:Ne(e,a,t.target),tone:i.tone,...i.body===void 0?{}:{summary:i.body}}},Re=e=>`${e.type} ${R(e.target)} ${JSON.stringify(e.payload)}`,Ne=(e,t,a)=>{try{switch(a.type){case"activity":{const s=L(t,a.id);return s?e.targetLabel(e.activityGroup,s.name):e.targetMissing(e.activityGroup,a.id)}case"step":{const s=S(t,a.id)?.step;return s?e.targetLabel(e.stepGroup,s.name):e.targetMissing(e.stepGroup,a.id)}case"story":{const s=x(t,a.id);return s?e.targetLabel(e.storyGroup,s.name):e.targetMissing(e.storyGroup,a.id)}case"milestone":{const s=O(t,a.id);return s?e.targetLabel(e.milestoneGroup,s.name):e.targetMissing(e.milestoneGroup,a.id)}case"status":{const s=$(t,a.id);return s?e.targetLabel(e.statusGroup,s.name):e.targetMissing(e.statusGroup,a.id)}case"page":return e.targetLabel(e.mapGroup,ue(t));default:return`${a.type} \xB7 ${a.id}`}}catch{return`${a.type} \xB7 ${a.id}`}},Ce=(e,t,a)=>{const s=[{value:"page:usm",label:e.wholeMap,group:e.mapGroup}];for(const i of t.activities){s.push({value:R({type:"activity",id:i.id}),label:i.name,group:e.activityGroup});for(const n of i.steps)s.push({value:R({type:"step",id:oe(i.id,n.id)}),label:`${i.name} \u203A ${n.name}`,group:e.stepGroup})}for(const i of t.milestones)s.push({value:R({type:"milestone",id:i.id}),label:i.name,group:e.milestoneGroup});for(const i of t.statuses)s.push({value:R({type:"status",id:i.id}),label:i.name,group:e.statusGroup});for(const i of t.stories)s.push({value:R({type:"story",id:i.id}),label:i.name,group:e.storyGroup});return s},Ye=(e,t,a)=>{const s=t.stories.find(i=>i.id===a.story);if(s)return{value:R({type:"story",id:s.id}),label:s.name,group:e.storyGroup};for(const i of t.activities){const n=i.steps.find(r=>r.id===a.step);if(n)return{value:R({type:"step",id:oe(i.id,n.id)}),label:n.name,group:e.stepGroup}}return null},ue=e=>e.title??"User Story Mapping",Ue=(e,t)=>{const a=S(e,t.step),s=a?.activity??L(e,t.activity)??e.activities[0],i=a?.step??s?.steps.find(d=>d.id===t.step)??s?.steps[0],n=x(e,t.story),r={...t};s?r.activity=s.id:delete r.activity,i?r.step=i.id:delete r.step,n?r.story=n.id:delete r.story,r.view=t.view==="group"?"group":"activity";const o=Oe(e,te(e,t));o===null?delete r.status:r.status=o;const p=Ie(t);return p==="map"?delete r.tab:r.tab=p,r},ze=(e,t)=>{switch(t.type){case"activity":return L(e,t.id)!==void 0;case"step":return S(e,t.id)!==void 0;case"story":return x(e,t.id)!==void 0;case"milestone":return O(e,t.id)!==void 0;case"status":return $(e,t.id)!==void 0;case"page":return!0;default:return!1}},Pe=e=>{const t=J(e);return{name:"usm",label:"User Story Mapping",parseBase:ke,emptyBase:xe,actions:v,apply:Te,canonicalState:ta,hasTarget:ze,canonicalTarget:(a,s)=>{if(s.type!=="step")return s;const i=S(a,s.id);return i?{...s,id:oe(i.activity.id,i.step.id)}:s},describe:(a,s,i)=>De(t,a,s,i),serialize:Re,resolveNavigation:Ue,commentTargets:(a,s)=>Ce(t,a),currentTarget:(a,s)=>Ye(t,a,s),title:ue}},ua={github:V`<path fill-rule="evenodd" d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path>`,gitlab:V`<path d="M8 15 1.2 9.9a.7.7 0 0 1-.25-.78L2.7 2.6a.35.35 0 0 1 .66 0L5.1 7.6h5.8l1.74-5a.35.35 0 0 1 .66 0l1.75 6.52a.7.7 0 0 1-.25.78z"></path>`,jira:V`<path d="M14.6 7.4 8.6 1.4 8 .8 3.5 5.3 1.4 7.4a.85.85 0 0 0 0 1.2l4.1 4.1L8 15.2l4.5-4.5.07-.07 2.03-2.03a.85.85 0 0 0 0-1.2zM8 9.9 5.9 8 8 5.9 10.1 8z"></path>`,linear:V`<path d="M1.2 9.4a6.9 6.9 0 0 0 5.4 5.4zM1 7.3l7.7 7.7a7 7 0 0 0 1.9-.5L1.5 5.4a7 7 0 0 0-.5 1.9zm1.2-3.1 9.6 9.6a7 7 0 0 0 1.2-1.1L3.3 3a7 7 0 0 0-1.1 1.2zM4.3 2.3a7 7 0 1 1 9.4 9.4z"></path>`,figma:V`<path d="M5.5 1h2.3v4.6H5.5a2.3 2.3 0 1 1 0-4.6zm2.3 0h2.3a2.3 2.3 0 1 1 0 4.6H7.8zm2.3 4.6a2.3 2.3 0 1 1 0 4.6 2.3 2.3 0 0 1 0-4.6zM5.5 5.6h2.3v4.6H5.5a2.3 2.3 0 1 1 0-4.6zm0 4.6h2.3v2.3a2.3 2.3 0 1 1-2.3-2.3z"></path>`,notion:V`<path fill-rule="evenodd" d="M2.5 1.6 11 1c1 0 1.3.1 2 .6l2.1 1.5c.4.3.5.4.5.7v9.6c0 .7-.3 1.1-1.1 1.2l-9.4.6c-.6 0-.9-.1-1.2-.5L1.9 12c-.3-.5-.5-.8-.5-1.3V2.8c0-.6.3-1.1 1.1-1.2zM5 4.4v8.9l8.6-.5V4zm1 1.2 2.9-.2 3 4.7V5.6l-.8-.1v-.5l2-.1v.6l-.6.1v6.1l-.9.1-3.5-5.4v4.9l.8.2v.5l-2.3.1v-.5l.6-.2V6.4l-.8-.1z"></path>`},Ve=e=>e==="web"?kt():l`<svg class="link-mark" viewBox="0 0 16 16" aria-hidden="true">${ua[e]}</svg>`,Be=W`
|
|
1
|
+
import{ad as mt,aP as gt,ae as U,af as z,ag as G,aB as T,ah as c,aA as R,aj as f,ak as b,aO as ht,b3 as vt,ai as ge,p as g,au as h,v as H,az as P,P as ft,e as bt,a0 as yt,V as w,R as y,a7 as V,a2 as W,G as kt,a4 as p,aT as O,a3 as m,a8 as xt,j as St,aa as wt,aR as $t,aS as Tt,A as Et,l as F,a5 as I,aE as N,J as At,B as It,aI as _t,K as he,z as ve,h as Mt,at as Ot,T as fe,a1 as Lt,a9 as Dt,aJ as Rt,b4 as Nt}from"./shared-CBRj9Yll.js";import{s as Ct}from"./shared-D4K7KsfJ.js";import{r as ie,D as Yt}from"./shared-DdefS1nG.js";const Ut=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m16 9-5.5 5.5L8 12"}]],zt=[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7"}]],Pt=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9"}]],Vt=[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"}],["circle",{cx:"12",cy:"12",r:"10"}]],Bt=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]],Gt=[["circle",{cx:"12",cy:"12",r:"10"}]],Ft=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 6v6l4 2"}]],jt=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}],["circle",{cx:"12",cy:"12",r:"3"}]],Kt=[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528"}]],qt=[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"}],["path",{d:"M9 18h6"}],["path",{d:"M10 22h4"}]],X=["gray","blue","violet","green","amber","accent"],be=["progress","circle","lightbulb","flag","play","clock","eye","pause","check","x"],Ht=U({id:f(c(),b(1)),name:f(c(),b(1))}),Wt=U({id:R,name:f(c(),b(1)),actor:T(c()),steps:z(G(Ht),[])}),Xt=U({id:f(c(),b(1)),name:f(c(),b(1)),timeframe:T(c()),description:T(c())}),ne=ge(X),re=ge(be),oe=f(c(),vt(),ht(e=>/^https?:\/\//i.test(e),"a link must be an http(s) URL")),Zt=U({url:oe,label:T(f(c(),b(1)))}),Jt=U({id:R,name:f(c(),b(1)),tone:z(ne),icon:z(re)}),Qt=U({id:R,name:f(c(),b(1)),description:T(c()),activityId:f(c(),b(1)),stepId:f(c(),b(1)),milestoneId:T(c()),statusId:T(c()),links:T(G(Zt))}),ea=U({title:T(c()),activities:z(G(Wt),[]),milestones:z(G(Xt),[]),statuses:z(G(Jt),[]),stories:z(G(Qt),[])}),ye=e=>X[e%X.length]??"gray",ke=e=>{const t=mt(ea,e),a=t.statuses[0]?.id,s={...t,stories:a===void 0?t.stories:t.stories.map(d=>d.statusId===void 0?{...d,statusId:a}:d),statuses:t.statuses.map((d,u)=>({...d,tone:d.tone??ye(u),icon:d.icon??"progress"}))},i=new Map;for(const d of s.activities)for(const u of d.steps)i.set(u.id,d.id);const n=new Set(s.milestones.map(d=>d.id)),r=new Set(s.statuses.map(d=>d.id)),o=new Set,l=(d,u)=>{if(o.has(u))throw new Error(`duplicate id "${u}" in ${d}`);o.add(u)};for(const d of s.activities){l("activities",d.id);for(const u of d.steps)l("steps",u.id)}for(const d of s.milestones)l("milestones",d.id);for(const d of s.statuses)l("statuses",d.id);for(const d of s.stories){l("stories",d.id);const u=i.get(d.stepId);if(u===void 0||u!==d.activityId)throw new Error(`story "${d.id}" references unknown activityId/stepId`);if(d.milestoneId!==void 0&&!n.has(d.milestoneId))throw new Error(`story "${d.id}" references unknown milestoneId "${d.milestoneId}"`);const A=(d.links??[]).map(_=>_.url);if(new Set(A).size!==A.length)throw new Error(`story "${d.id}" links the same URL twice`);if(d.statusId!==void 0&&!r.has(d.statusId))throw new Error(`story "${d.id}" references unknown statusId "${d.statusId}"`)}return s},xe=()=>({activities:[],milestones:[],statuses:[],stories:[]}),D=(e,t)=>{if(t!==void 0)return e.activities.find(a=>a.id===t)},Z=(e,t)=>`${e}.${t}`,S=(e,t)=>{if(t===void 0)return;const a=gt(t,2);if(a){const[s,i]=a;if(s===void 0||i===void 0)return;const n=e.activities.find(o=>o.id===s),r=n?.steps.find(o=>o.id===i);return n&&r?{activity:n,step:r}:void 0}if(!t.includes("."))for(const s of e.activities){const i=s.steps.find(n=>n.id===t);if(i)return{activity:s,step:i}}},L=(e,t)=>{if(t!==void 0)return e.milestones.find(a=>a.id===t)},E=(e,t)=>{if(t!==void 0)return e.statuses.find(a=>a.id===t)},x=(e,t)=>{if(t!==void 0)return e.stories.find(a=>a.id===t)},de=e=>e.activities.flatMap(t=>t.steps.map(a=>({activity:t,step:a}))),ta=e=>({...e,stories:Ct(e.stories,[t=>`${t.activityId}/${t.stepId}/${t.milestoneId??""}`])}),J=(e,t,a)=>e.stories.filter(s=>s.stepId===t&&(s.milestoneId??void 0)===a),Se=(e,t,a)=>e.stories.filter(s=>s.activityId===t&&(s.milestoneId??void 0)===a),B=e=>[...e.activities.map(t=>t.id),...e.activities.flatMap(t=>t.steps.map(a=>a.id)),...e.milestones.map(t=>t.id),...e.statuses.map(t=>t.id),...e.stories.map(t=>t.id)],we=(e,t)=>e.stories.filter(a=>a.stepId===t).length,v={SET_ACTIVITY_NAME:g("SET_ACTIVITY_NAME","activity",h({name:f(c(),b(1))})),SET_ACTIVITY_ACTOR:g("SET_ACTIVITY_ACTOR","activity",h({actor:c()})),SET_STEP_NAME:g("SET_STEP_NAME","step",h({name:f(c(),b(1))})),REORDER_STEP:g("REORDER_STEP","step",h({after:P(c())}),{mode:"sequence"}),ADD_ACTIVITY:g("ADD_ACTIVITY","page",h({id:R,name:f(c(),b(1))}),{dedupeKey:H}),ADD_STEP:g("ADD_STEP","activity",h({id:R,name:f(c(),b(1))}),{dedupeKey:H}),DELETE_ACTIVITY:g("DELETE_ACTIVITY","activity",h({})),DELETE_STEP:g("DELETE_STEP","step",h({})),SET_STORY_NAME:g("SET_STORY_NAME","story",h({name:f(c(),b(1))})),SET_STORY_DESCRIPTION:g("SET_STORY_DESCRIPTION","story",h({description:c()})),SET_STORY_MILESTONE:g("SET_STORY_MILESTONE","story",h({milestoneId:P(c())})),MOVE_STORY:g("MOVE_STORY","story",h({activityId:f(c(),b(1)),stepId:f(c(),b(1)),milestoneId:P(c()),after:P(c())}),{mode:"sequence"}),REORDER_STORY:g("REORDER_STORY","story",h({after:P(c())}),{mode:"sequence"}),ADD_STORY:g("ADD_STORY","step",h({id:R,name:f(c(),b(1)),activityId:f(c(),b(1)),milestoneId:T(c())}),{dedupeKey:H}),DELETE_STORY:g("DELETE_STORY","story",h({})),ADD_STORY_LINK:g("ADD_STORY_LINK","story",h({url:oe,label:T(f(c(),b(1)))})),REMOVE_STORY_LINK:g("REMOVE_STORY_LINK","story",h({url:c()})),SET_STORY_STATUS:g("SET_STORY_STATUS","story",h({statusId:f(c(),b(1))})),SET_MILESTONE_NAME:g("SET_MILESTONE_NAME","milestone",h({name:f(c(),b(1))})),ADD_MILESTONE:g("ADD_MILESTONE","page",h({id:R,name:f(c(),b(1))}),{dedupeKey:H}),DELETE_MILESTONE:g("DELETE_MILESTONE","milestone",h({})),REORDER_MILESTONE:g("REORDER_MILESTONE","milestone",h({after:P(c())}),{mode:"sequence"}),ADD_STATUS:g("ADD_STATUS","page",h({id:R,name:f(c(),b(1)),tone:ne,icon:T(re)}),{dedupeKey:H}),SET_STATUS_NAME:g("SET_STATUS_NAME","status",h({name:f(c(),b(1))})),SET_STATUS_TONE:g("SET_STATUS_TONE","status",h({tone:ne})),SET_STATUS_ICON:g("SET_STATUS_ICON","status",h({icon:re})),DELETE_STATUS:g("DELETE_STATUS","status",h({})),REORDER_STATUS:g("REORDER_STATUS","status",h({after:P(c())}),{mode:"sequence"})},aa={setActivityName:(e,t)=>({type:"SET_ACTIVITY_NAME",target:{type:"activity",id:e},payload:{name:t}}),setStepName:(e,t)=>({type:"SET_STEP_NAME",target:{type:"step",id:e},payload:{name:t}})},$e=(e,t)=>{const a=ft(v,t);if(a===null)return null;const s=a.target.id;switch(a.type){case"SET_ACTIVITY_NAME":{const{name:i}=a.payload;return e.activities.some(n=>n.id===s)?{...e,activities:e.activities.map(n=>n.id===s?{...n,name:i}:n)}:null}case"SET_ACTIVITY_ACTOR":{const i=a.payload.actor.trim();return e.activities.some(n=>n.id===s)?{...e,activities:e.activities.map(n=>{if(n.id!==s)return n;const{actor:r,...o}=n;return i===""?o:{...o,actor:i}})}:null}case"SET_STEP_NAME":{const{name:i}=a.payload,n=S(e,s);return n?{...e,activities:e.activities.map(r=>r.id===n.activity.id?{...r,steps:r.steps.map(o=>o.id===n.step.id?{...o,name:i}:o)}:r)}:null}case"REORDER_STEP":{const{after:i}=a.payload,n=S(e,s);if(!n)return null;const r=i===null?null:S(e,i);if(i!==null&&(!r||r.activity.id!==n.activity.id))return null;const o=pe(n.activity.steps,n.step.id,r?.step.id??null);return o===null?null:{...e,activities:e.activities.map(l=>l.id===n.activity.id?{...l,steps:o}:l)}}case"ADD_ACTIVITY":{const i=a.payload;return e.activities.some(n=>n.id===i.id)?e:{...e,activities:[...e.activities,{id:i.id,name:i.name,steps:[]}]}}case"ADD_STEP":{const i=a.payload,n=e.activities.find(r=>r.id===s);return n?n.steps.some(r=>r.id===i.id)?e:{...e,activities:e.activities.map(r=>r.id===s?{...r,steps:[...r.steps,{id:i.id,name:i.name}]}:r)}:null}case"DELETE_ACTIVITY":{const i=e.activities.find(r=>r.id===s);if(!i)return null;const n=new Set(i.steps.map(r=>r.id));return{...e,activities:e.activities.filter(r=>r.id!==s),stories:e.stories.filter(r=>r.activityId!==s&&!n.has(r.stepId))}}case"DELETE_STEP":{const i=S(e,s);return i?{...e,activities:e.activities.map(n=>n.id===i.activity.id?{...n,steps:n.steps.filter(r=>r.id!==i.step.id)}:n),stories:e.stories.filter(n=>n.activityId!==i.activity.id||n.stepId!==i.step.id)}:null}case"SET_STORY_NAME":{const{name:i}=a.payload;return j(e,s,n=>({...n,name:i}))}case"SET_STORY_DESCRIPTION":{const{description:i}=a.payload;return j(e,s,n=>({...n,description:i}))}case"SET_STORY_MILESTONE":{const{milestoneId:i}=a.payload;return i!==null&&!L(e,i)?null:j(e,s,n=>i===null?le(n):{...n,milestoneId:i})}case"MOVE_STORY":{const i=a.payload,n=x(e,s);if(!n)return null;const r=S(e,i.stepId);if(!r||r.activity.id!==i.activityId||i.milestoneId!==null&&!L(e,i.milestoneId))return null;const o=i.milestoneId??void 0,l=o===void 0?{...le(n),activityId:r.activity.id,stepId:r.step.id}:{...n,activityId:r.activity.id,stepId:r.step.id,milestoneId:o};return Te(e,l,i.after)}case"REORDER_STORY":{const{after:i}=a.payload,n=x(e,s);return n?Te(e,n,i,!0):null}case"ADD_STORY":{const i=a.payload,n=S(e,t.target.id);if(!n||n.activity.id!==i.activityId||i.milestoneId!==void 0&&!L(e,i.milestoneId))return null;if(e.stories.some(o=>o.id===i.id))return e;const r={id:i.id,name:i.name,activityId:i.activityId,stepId:n.step.id,...i.milestoneId===void 0?{}:{milestoneId:i.milestoneId},...e.statuses[0]===void 0?{}:{statusId:e.statuses[0].id}};return{...e,stories:[...e.stories,r]}}case"DELETE_STORY":return e.stories.some(i=>i.id===s)?{...e,stories:e.stories.filter(i=>i.id!==s)}:null;case"ADD_STORY_LINK":{const{url:i,label:n}=a.payload,r=x(e,s);if(!r)return null;if(r.links?.some(l=>l.url===i))return e;const o=n===void 0?{url:i}:{url:i,label:n};return j(e,s,l=>({...l,links:[...l.links??[],o]}))}case"REMOVE_STORY_LINK":{const{url:i}=a.payload;return x(e,s)?.links?.some(r=>r.url===i)?j(e,s,r=>{const o=(r.links??[]).filter(u=>u.url!==i),{links:l,...d}=r;return o.length===0?d:{...d,links:o}}):null}case"SET_STORY_STATUS":{const{statusId:i}=a.payload;return E(e,i)?j(e,s,n=>({...n,statusId:i})):null}case"SET_MILESTONE_NAME":{const{name:i}=a.payload;return e.milestones.some(n=>n.id===s)?{...e,milestones:e.milestones.map(n=>n.id===s?{...n,name:i}:n)}:null}case"ADD_MILESTONE":{const i=a.payload;return e.milestones.some(n=>n.id===i.id)?e:{...e,milestones:[...e.milestones,{id:i.id,name:i.name}]}}case"DELETE_MILESTONE":return e.milestones.some(i=>i.id===s)?{...e,milestones:e.milestones.filter(i=>i.id!==s),stories:e.stories.map(i=>i.milestoneId===s?le(i):i)}:null;case"REORDER_MILESTONE":{const{after:i}=a.payload,n=pe(e.milestones,s,i);return n===null?null:{...e,milestones:n}}case"ADD_STATUS":{const{id:i,name:n,tone:r,icon:o}=a.payload;if(e.statuses.some(d=>d.id===i))return e;const l=[...e.statuses,{id:i,name:n,tone:r,icon:o??"progress"}];return e.statuses.length===0?{...e,statuses:l,stories:e.stories.map(d=>({...d,statusId:i}))}:{...e,statuses:l}}case"SET_STATUS_NAME":{const{name:i}=a.payload;return E(e,s)?{...e,statuses:e.statuses.map(n=>n.id===s?{...n,name:i}:n)}:null}case"SET_STATUS_TONE":{const{tone:i}=a.payload;return E(e,s)?{...e,statuses:e.statuses.map(n=>n.id===s?{...n,tone:i}:n)}:null}case"SET_STATUS_ICON":{const{icon:i}=a.payload;return E(e,s)?{...e,statuses:e.statuses.map(n=>n.id===s?{...n,icon:i}:n)}:null}case"DELETE_STATUS":{if(!E(e,s))return null;const i=e.statuses.filter(r=>r.id!==s),n=i[0]?.id;return{...e,statuses:i,stories:e.stories.map(r=>r.statusId!==s?r:n===void 0?sa(r):{...r,statusId:n})}}case"REORDER_STATUS":{const{after:i}=a.payload,n=pe(e.statuses,s,i);return n===null?null:{...e,statuses:n}}default:return bt(a)}},j=(e,t,a)=>e.stories.some(s=>s.id===t)?{...e,stories:e.stories.map(s=>s.id===t?a(s):s)}:null,le=e=>{const{milestoneId:t,...a}=e;return a},sa=e=>{const{statusId:t,...a}=e;return a},Te=(e,t,a,s=!1)=>{const i=t.milestoneId??void 0,n=e.stories.filter(k=>k.id!==t.id),r=n.filter(k=>k.stepId===t.stepId&&(k.milestoneId??void 0)===i);if(a!==null){const k=n.find(M=>M.id===a);if(!k||k.stepId!==t.stepId||(k.milestoneId??void 0)!==i)return null;if(s){const M=x(e,t.id);if(!M||k.stepId!==M.stepId||(k.milestoneId??void 0)!==(M.milestoneId??void 0))return null}}const o=a===null?[t,...r]:Ee(r,t,a),l=n.findIndex(k=>k.stepId===t.stepId&&(k.milestoneId??void 0)===i),d=new Set(r.map(k=>k.id)),u=n.filter(k=>!d.has(k.id)),A=l<0?u.length:Math.min(l,u.length),_=[...u.slice(0,A),...o,...u.slice(A)];return{...e,stories:_}},pe=(e,t,a)=>{if(!e.some(n=>n.id===t)||a!==null&&!e.some(n=>n.id===a))return null;if(a===t)return[...e];const s=e.find(n=>n.id===t);if(s===void 0)return null;const i=e.filter(n=>n.id!==t);return Ee(i,s,a)},Ee=(e,t,a)=>{const s=[...e],i=a===null?-1:s.findIndex(n=>n.id===a);return s.splice(i+1,0,t),s},Q=yt({en:{renameActivity:"Rename activity",changeActivityActor:"Change whose experience",renameStep:"Rename step",reorderStep:"Reorder step",addActivity:"Add activity",addStep:"Add step",deleteActivity:"Delete activity",deleteStep:"Delete step",renameStory:"Rename story",updateStoryDescription:"Update story description",changeMilestone:"Change milestone",moveStory:"Move story",reorderStory:"Reorder story",addStory:"Add story",deleteStory:"Delete story",renameMilestone:"Rename milestone",addMilestone:"Add milestone",deleteMilestone:"Delete milestone",reorderMilestone:"Reorder milestone",changeStoryStatus:"Change story status",addStatus:"Add status",renameStatus:"Rename status",changeStatusTone:"Change status color",changeStatusIcon:"Change status icon",addStoryLink:"Link to story",removeStoryLink:"Unlink from story",deleteStatus:"Delete status",reorderStatus:"Reorder status",toValue:e=>`\u2192 \u201C${e}\u201D`,fromTo:(e,t)=>`\u201C${e}\u201D \u2192 \u201C${t}\u201D`,added:e=>`+ \u201C${e}\u201D`,removed:e=>`\u2212 \u201C${e}\u201D`,toFront:"\u2192 To the front",afterName:e=>`\u2192 Right after \u201C${e}\u201D`,toUnassigned:"\u2192 Unassigned",toName:e=>`\u2192 ${e}`,activityGroup:"Activity",stepGroup:"Step",storyGroup:"Story",milestoneGroup:"Milestone",statusGroup:"Status",mapGroup:"Map",targetLabel:(e,t)=>`${e} \xB7 ${t}`,targetMissing:(e,t)=>`${e} \xB7 ${t} (missing)`,wholeMap:"Whole map",unassigned:"Unassigned",emptyTitle:"No backbone yet",emptyBody:"Add activities and steps, and the story map appears here.",firstActivityButton:"+ First activity",groupingLabel:"Group by",groupViewTab:"Activity group",groupAxisHeader:"Activity group \u2192",activityAxis:"Activity \u2192",milestoneAxis:"Milestone \u2193",stepNameLabel:"Step name",activityNameLabel:"Activity name",milestoneNameLabel:"Milestone name",addStepAria:"Add a step to this activity",newActivityButton:"+ Activity",newMilestoneButton:"+ Milestone",addCellButton:"+ Add",addStoryCellAria:"Add a story to this cell",storyCount:e=>e===1?"1 story":`${e} stories`,pageTabsLabel:"Page",mapTab:"User Story Mapping",milestonesTab:"Milestones",statusesTab:"Statuses",shareOfStories:e=>`${e}% of all stories`,coverageLabel:"Backbone coverage",coverage:(e,t)=>`${e} / ${t} steps`,storiesLabel:"Stories",timeframeUnset:"Timing not set",milestoneNoDescription:"No description yet.",noMilestonesTitle:"No milestones yet",noMilestonesBody:"Add a milestone to slice the map into releases.",commentCountAria:e=>e===1?"1 comment":`${e} comments`,statusNameLabel:"Status name",statusToneLabel:"Color",toneName:e=>({gray:"Gray",blue:"Blue",violet:"Violet",green:"Green",amber:"Amber",accent:"Orange"})[e],statusIconLabel:"Icon",iconName:e=>({progress:"Progress ring",circle:"Circle",lightbulb:"Light bulb",flag:"Flag",play:"Play",clock:"Clock",eye:"Eye",pause:"Pause",check:"Check",x:"Cross"})[e],statusShare:(e,t)=>`${e===1?"1 story":`${e} stories`} \xB7 ${t}%`,statusFilterLabel:"Status",clearFilter:"Clear",progressAria:e=>`Progress: ${e}`,activityActorLabel:"Who",noStatusesTitle:"No statuses yet",noStatusesBody:"Add statuses such as Idea / Ready / Done, and the map colors each story by where it stands.",newStatusButton:"+ Status",moveUpAria:"Move up",moveDownAria:"Move down",deleteStatusAria:"Delete this status",moveDialogLabel:"Step to move to",moveDialogSelectLabel:"Destination",moveConfirm:"Move",moveCancel:"Cancel",storyStatusLabel:"Status",panelLabel:e=>`Story: ${e}`,closePanelAria:"Close",storyTitleLabel:"Title",storyDescriptionLabel:"Description",storyLinksLabel:"Links",linkUrlLabel:"URL",addLinkButton:"Add",removeLinkAria:e=>`Remove ${e}`,deleteStoryButton:"Delete story",storyCommentsLabel:"Comments",commentSubmit:"Comment",storyStatusAria:e=>`Status: ${e}`,newActivityName:"New activity",newStepName:"New step",newMilestoneName:"New milestone",newStoryName:"New story",newStatusName:"New status"},ja:{renameActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u540D\u3092\u5909\u66F4",changeActivityActor:"\u4F53\u9A13\u3059\u308B\u4EBA\u3092\u5909\u66F4",renameStep:"\u30B9\u30C6\u30C3\u30D7\u540D\u3092\u5909\u66F4",reorderStep:"\u30B9\u30C6\u30C3\u30D7\u306E\u9806\u5E8F\u3092\u5909\u66F4",addActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u8FFD\u52A0",addStep:"\u30B9\u30C6\u30C3\u30D7\u3092\u8FFD\u52A0",deleteActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u524A\u9664",deleteStep:"\u30B9\u30C6\u30C3\u30D7\u3092\u524A\u9664",renameStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u540D\u3092\u5909\u66F4",updateStoryDescription:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u8AAC\u660E\u3092\u66F4\u65B0",changeMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u5909\u66F4",moveStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u79FB\u52D5",reorderStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u9806\u5E8F\u3092\u5909\u66F4",addStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u8FFD\u52A0",deleteStory:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u524A\u9664",renameMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u540D\u3092\u5909\u66F4",addMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u8FFD\u52A0",deleteMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u524A\u9664",reorderMilestone:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u306E\u9806\u5E8F\u3092\u5909\u66F4",changeStoryStatus:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u5909\u66F4",addStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FFD\u52A0",renameStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u540D\u3092\u5909\u66F4",changeStatusTone:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u8272\u3092\u5909\u66F4",changeStatusIcon:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u30A2\u30A4\u30B3\u30F3\u3092\u5909\u66F4",addStoryLink:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306B\u30EA\u30F3\u30AF\u3092\u8FFD\u52A0",removeStoryLink:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u30EA\u30F3\u30AF\u3092\u524A\u9664",deleteStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u524A\u9664",reorderStatus:"\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u9806\u5E8F\u3092\u5909\u66F4",toValue:e=>`\u2192 \u300C${e}\u300D`,fromTo:(e,t)=>`\u300C${e}\u300D\u2192\u300C${t}\u300D`,added:e=>`+ \u300C${e}\u300D`,removed:e=>`\u2212 \u300C${e}\u300D`,toFront:"\u2192 \u5148\u982D\u3078",afterName:e=>`\u2192 \u300C${e}\u300D\u306E\u76F4\u5F8C\u3078`,toUnassigned:"\u2192 \u672A\u5272\u5F53\u3078",toName:e=>`\u2192 ${e}`,activityGroup:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",stepGroup:"\u30B9\u30C6\u30C3\u30D7",storyGroup:"\u30B9\u30C8\u30FC\u30EA\u30FC",milestoneGroup:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",statusGroup:"\u30B9\u30C6\u30FC\u30BF\u30B9",mapGroup:"\u30DE\u30C3\u30D7",targetLabel:(e,t)=>`${e} \xB7 ${t}`,targetMissing:(e,t)=>`${e} \xB7 ${t} (missing)`,wholeMap:"\u30DE\u30C3\u30D7\u5168\u4F53",unassigned:"\u672A\u5272\u5F53",emptyTitle:"\u30D0\u30C3\u30AF\u30DC\u30FC\u30F3\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",emptyBody:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3068\u30B9\u30C6\u30C3\u30D7\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u3053\u3053\u306B\u30B9\u30C8\u30FC\u30EA\u30FC\u30DE\u30C3\u30D7\u304C\u73FE\u308C\u307E\u3059\u3002",firstActivityButton:"+ \u6700\u521D\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",groupingLabel:"\u307E\u3068\u3081\u308B\u5358\u4F4D",groupViewTab:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30B0\u30EB\u30FC\u30D7",groupAxisHeader:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u30B0\u30EB\u30FC\u30D7 \u2192",activityAxis:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3 \u2192",milestoneAxis:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3 \u2193",stepNameLabel:"\u30B9\u30C6\u30C3\u30D7\u540D",activityNameLabel:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u540D",milestoneNameLabel:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u540D",addStepAria:"\u3053\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u306B\u30B9\u30C6\u30C3\u30D7\u3092\u8FFD\u52A0",newActivityButton:"+ \u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",newMilestoneButton:"+ \u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",addCellButton:"+ \u8FFD\u52A0",addStoryCellAria:"\u3053\u306E\u30DE\u30B9\u306B\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u8FFD\u52A0",storyCount:e=>`${e} \u30B9\u30C8\u30FC\u30EA\u30FC`,pageTabsLabel:"\u30DA\u30FC\u30B8",mapTab:"User Story Mapping",milestonesTab:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",statusesTab:"\u30B9\u30C6\u30FC\u30BF\u30B9",shareOfStories:e=>`\u5168\u30B9\u30C8\u30FC\u30EA\u30FC\u306E ${e}%`,coverageLabel:"\u30D0\u30C3\u30AF\u30DC\u30FC\u30F3\u306E\u7DB2\u7F85",coverage:(e,t)=>`${e} / ${t} \u30B9\u30C6\u30C3\u30D7`,storiesLabel:"\u30B9\u30C8\u30FC\u30EA\u30FC",timeframeUnset:"\u6642\u671F\u672A\u5B9A",milestoneNoDescription:"\u8AAC\u660E\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093\u3002",noMilestonesTitle:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",noMilestonesBody:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u30DE\u30C3\u30D7\u3092\u30EA\u30EA\u30FC\u30B9\u3054\u3068\u306B\u533A\u5207\u308C\u307E\u3059\u3002",commentCountAria:e=>`\u30B3\u30E1\u30F3\u30C8 ${e} \u4EF6`,statusNameLabel:"\u30B9\u30C6\u30FC\u30BF\u30B9\u540D",statusToneLabel:"\u8272",toneName:e=>({gray:"\u30B0\u30EC\u30FC",blue:"\u9752",violet:"\u7D2B",green:"\u7DD1",amber:"\u9EC4",accent:"\u30AA\u30EC\u30F3\u30B8"})[e],statusIconLabel:"\u30A2\u30A4\u30B3\u30F3",iconName:e=>({progress:"\u9032\u6357\u30EA\u30F3\u30B0",circle:"\u5186",lightbulb:"\u96FB\u7403",flag:"\u65D7",play:"\u518D\u751F",clock:"\u6642\u8A08",eye:"\u76EE",pause:"\u4E00\u6642\u505C\u6B62",check:"\u30C1\u30A7\u30C3\u30AF",x:"\u30D0\u30C4"})[e],statusShare:(e,t)=>`${e} \u30B9\u30C8\u30FC\u30EA\u30FC \xB7 ${t}%`,statusFilterLabel:"\u30B9\u30C6\u30FC\u30BF\u30B9",clearFilter:"\u30AF\u30EA\u30A2",progressAria:e=>`\u9032\u307F\u5177\u5408: ${e}`,activityActorLabel:"\u8AB0\u306E\u4F53\u9A13",noStatusesTitle:"\u30B9\u30C6\u30FC\u30BF\u30B9\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",noStatusesBody:"Idea / Ready / Done \u306E\u3088\u3046\u306A\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u8FFD\u52A0\u3059\u308B\u3068\u3001\u30DE\u30C3\u30D7\u306E\u30AB\u30FC\u30C9\u304C\u9032\u307F\u5177\u5408\u3067\u8272\u5206\u3051\u3055\u308C\u307E\u3059\u3002",newStatusButton:"+ \u30B9\u30C6\u30FC\u30BF\u30B9",moveUpAria:"\u4E0A\u3078\u79FB\u52D5",moveDownAria:"\u4E0B\u3078\u79FB\u52D5",deleteStatusAria:"\u3053\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u524A\u9664",moveDialogLabel:"\u79FB\u52D5\u5148\u306E\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",moveDialogSelectLabel:"\u79FB\u52D5\u5148",moveConfirm:"\u79FB\u52D5\u3059\u308B",moveCancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",storyStatusLabel:"\u30B9\u30C6\u30FC\u30BF\u30B9",panelLabel:e=>`\u30B9\u30C8\u30FC\u30EA\u30FC: ${e}`,closePanelAria:"\u9589\u3058\u308B",storyTitleLabel:"\u30BF\u30A4\u30C8\u30EB",storyDescriptionLabel:"\u8AAC\u660E",storyLinksLabel:"\u30EA\u30F3\u30AF",linkUrlLabel:"URL",addLinkButton:"\u8FFD\u52A0",removeLinkAria:e=>`${e} \u3092\u5916\u3059`,deleteStoryButton:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u524A\u9664",storyCommentsLabel:"\u30B3\u30E1\u30F3\u30C8",commentSubmit:"\u30B3\u30E1\u30F3\u30C8\u3059\u308B",storyStatusAria:e=>`\u30B9\u30C6\u30FC\u30BF\u30B9: ${e}`,newActivityName:"\u65B0\u3057\u3044\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3",newStepName:"\u65B0\u3057\u3044\u30B9\u30C6\u30C3\u30D7",newMilestoneName:"\u65B0\u3057\u3044\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3",newStoryName:"\u65B0\u3057\u3044\u30B9\u30C8\u30FC\u30EA\u30FC",newStatusName:"\u65B0\u3057\u3044\u30B9\u30C6\u30FC\u30BF\u30B9"}}),ce=/^[A-Z][A-Z0-9]+-\d+$/,Ae=e=>{let t=e;try{t=decodeURIComponent(e)}catch{}return t.replace(/[-_+]+/g," ").trim()},ia=(e,t)=>{if(e!=="github.com")return null;const[a,s,i,n]=t;if(a===void 0)return{kind:"github",text:"GitHub",title:"github.com"};if(s===void 0)return{kind:"github",text:a,title:a};const r=`${a}/${s}`;return(i==="issues"||i==="pull"||i==="discussions")&&n&&/^\d+$/.test(n)?{kind:"github",text:`#${n}`,title:`${r}#${n}`}:i==="commit"&&n?{kind:"github",text:n.slice(0,7),title:`${r}@${n}`}:{kind:"github",text:r,title:r}},na=(e,t)=>{if(e!=="gitlab.com")return null;const a=t.indexOf("-"),s=(a<0?t:t.slice(0,a)).join("/"),i=a<0?void 0:t[a+1],n=a<0?void 0:t[a+2];if(n&&/^\d+$/.test(n)){if(i==="issues")return{kind:"gitlab",text:`#${n}`,title:`${s}#${n}`};if(i==="merge_requests")return{kind:"gitlab",text:`!${n}`,title:`${s}!${n}`}}return{kind:"gitlab",text:s||"GitLab",title:s||e}},ra=(e,t,a)=>{if(!t.endsWith(".atlassian.net")&&!t.startsWith("jira."))return null;const s=(a[0]==="browse"?a[1]:void 0)??e.searchParams.get("selectedIssue")??a.find(i=>ce.test(i));return s&&ce.test(s)?{kind:"jira",text:s,title:`${t} ${s}`}:{kind:"jira",text:"Jira",title:t}},oa=(e,t)=>{if(e!=="linear.app")return null;const a=t[1]==="issue"?t[2]?.toUpperCase():void 0;return a&&ce.test(a)?{kind:"linear",text:a,title:a}:{kind:"linear",text:"Linear",title:e}},da=(e,t)=>{if(e!=="figma.com")return null;const[a,,s]=t;if((a==="file"||a==="design"||a==="proto"||a==="board")&&s){const i=Ae(s);return{kind:"figma",text:i,title:i}}return{kind:"figma",text:"Figma",title:e}},la=(e,t)=>{if(e!=="notion.so"&&!e.endsWith(".notion.site"))return null;const s=(t.at(-1)??"").replace(/-?[0-9a-f]{32}$/i,""),i=s===""?"Notion":Ae(s);return{kind:"notion",text:i,title:i}},ee=e=>{let t;try{t=new URL(e)}catch{return{kind:"web",text:e,title:e}}const a=t.hostname.replace(/^www\./,""),s=t.pathname.split("/").filter(i=>i!=="");return ia(a,s)??na(a,s)??ra(t,a,s)??oa(a,s)??da(a,s)??la(a,s)??{kind:"web",text:a,title:e}},Ie=e=>{const t=e.tab;return t==="milestones"||t==="statuses"?t:"map"},te=e=>{const t=e.statuses.length-1;return e.statuses.map((a,s)=>({id:a.id,name:a.name,tone:a.tone,icon:a.icon,progress:t<=0?1:s/t}))},_e=(e,t)=>e.find(a=>a.id===t.statusId),Me=(e,t)=>te(e).map(a=>({...a,count:t.filter(s=>s.statusId===a.id).length})).filter(a=>a.count>0),ae=(e,t)=>{const a=t.status;if(a===void 0||a==="")return new Set;const s=new Set(a.split(","));return new Set(e.statuses.map(i=>i.id).filter(i=>s.has(i)))},Oe=(e,t)=>{const a=e.statuses.map(s=>s.id).filter(s=>t.has(s));return a.length===0?null:a.join(",")},pa=(e,t)=>{const a=new Set(e);return a.has(t)?a.delete(t):a.add(t),a},Le=(e,t)=>e.size===0?!0:t.statusId!==void 0&&e.has(t.statusId),C=(e,t,a)=>{const s=typeof a=="string"?a:"",i=typeof t=="string"?t:void 0;return i===void 0?e.toValue(s):e.fromTo(i,s)},se=(e,t)=>typeof t=="string"?e.afterName(t):e.toFront,ca={SET_ACTIVITY_NAME:(e,t,a)=>({title:e.renameActivity,tone:"update",body:C(e,D(a,t.target.id)?.name,y(v.SET_ACTIVITY_NAME,t).name??"")}),SET_ACTIVITY_ACTOR:(e,t,a)=>{const s=y(v.SET_ACTIVITY_ACTOR,t).actor.trim();return{title:e.changeActivityActor,tone:"update",body:s===""?e.removed(D(a,t.target.id)?.actor??""):C(e,D(a,t.target.id)?.actor,s)}},SET_STEP_NAME:(e,t,a)=>({title:e.renameStep,tone:"update",body:C(e,S(a,t.target.id)?.step.name,y(v.SET_STEP_NAME,t).name??"")}),REORDER_STEP:(e,t)=>({title:e.reorderStep,tone:"move",body:se(e,y(v.REORDER_STEP,t).after)}),ADD_ACTIVITY:(e,t)=>({title:e.addActivity,tone:"create",body:e.added(String(y(v.ADD_ACTIVITY,t).name??""))}),ADD_STEP:(e,t)=>({title:e.addStep,tone:"create",body:e.added(String(y(v.ADD_STEP,t).name??""))}),DELETE_ACTIVITY:(e,t,a)=>({title:e.deleteActivity,tone:"delete",body:e.removed(D(a,t.target.id)?.name??t.target.id)}),DELETE_STEP:(e,t,a)=>({title:e.deleteStep,tone:"delete",body:e.removed(S(a,t.target.id)?.step.name??t.target.id)}),SET_STORY_NAME:(e,t,a)=>({title:e.renameStory,tone:"update",body:C(e,x(a,t.target.id)?.name,y(v.SET_STORY_NAME,t).name??"")}),SET_STORY_DESCRIPTION:(e,t)=>({title:e.updateStoryDescription,tone:"update",body:e.toValue(String(y(v.SET_STORY_DESCRIPTION,t).description??"").slice(0,90))}),SET_STORY_MILESTONE:(e,t,a)=>{const s=y(v.SET_STORY_MILESTONE,t).milestoneId;return{title:e.changeMilestone,tone:"move",body:s==null?e.toUnassigned:e.toName(L(a,String(s))?.name??String(s))}},MOVE_STORY:(e,t,a)=>({title:e.moveStory,tone:"move",body:e.toName(S(a,String(y(v.MOVE_STORY,t).stepId))?.step.name??String(y(v.MOVE_STORY,t).stepId??""))}),REORDER_STORY:(e,t)=>({title:e.reorderStory,tone:"move",body:se(e,y(v.REORDER_STORY,t).after)}),ADD_STORY:(e,t)=>({title:e.addStory,tone:"create",body:e.added(String(y(v.ADD_STORY,t).name??""))}),DELETE_STORY:(e,t,a)=>({title:e.deleteStory,tone:"delete",body:e.removed(x(a,t.target.id)?.name??t.target.id)}),SET_MILESTONE_NAME:(e,t,a)=>({title:e.renameMilestone,tone:"update",body:C(e,L(a,t.target.id)?.name,y(v.SET_MILESTONE_NAME,t).name??"")}),ADD_MILESTONE:(e,t)=>({title:e.addMilestone,tone:"create",body:e.added(String(y(v.ADD_MILESTONE,t).name??""))}),DELETE_MILESTONE:(e,t,a)=>({title:e.deleteMilestone,tone:"delete",body:e.removed(L(a,t.target.id)?.name??t.target.id)}),REORDER_MILESTONE:(e,t)=>({title:e.reorderMilestone,tone:"move",body:se(e,y(v.REORDER_MILESTONE,t).after)}),ADD_STORY_LINK:(e,t)=>{const{url:a,label:s}=y(v.ADD_STORY_LINK,t);return{title:e.addStoryLink,tone:"create",body:e.added(s??ee(a).title)}},REMOVE_STORY_LINK:(e,t,a)=>{const{url:s}=y(v.REMOVE_STORY_LINK,t),i=x(a,t.target.id)?.links?.find(n=>n.url===s);return{title:e.removeStoryLink,tone:"delete",body:e.removed(i?.label??ee(s).title)}},SET_STORY_STATUS:(e,t,a)=>{const s=y(v.SET_STORY_STATUS,t).statusId;return{title:e.changeStoryStatus,tone:"update",body:e.toName(E(a,s)?.name??s)}},ADD_STATUS:(e,t)=>({title:e.addStatus,tone:"create",body:e.added(y(v.ADD_STATUS,t).name)}),SET_STATUS_NAME:(e,t,a)=>({title:e.renameStatus,tone:"update",body:C(e,E(a,t.target.id)?.name,y(v.SET_STATUS_NAME,t).name)}),SET_STATUS_TONE:(e,t,a)=>{const s=E(a,t.target.id)?.tone,i=y(v.SET_STATUS_TONE,t).tone;return{title:e.changeStatusTone,tone:"update",body:C(e,s===void 0?void 0:e.toneName(s),e.toneName(i))}},SET_STATUS_ICON:(e,t,a)=>{const s=E(a,t.target.id)?.icon,i=y(v.SET_STATUS_ICON,t).icon;return{title:e.changeStatusIcon,tone:"update",body:C(e,s===void 0?void 0:e.iconName(s),e.iconName(i))}},DELETE_STATUS:(e,t,a)=>({title:e.deleteStatus,tone:"delete",body:e.removed(E(a,t.target.id)?.name??t.target.id)}),REORDER_STATUS:(e,t)=>({title:e.reorderStatus,tone:"move",body:se(e,y(v.REORDER_STATUS,t).after)})},De=(e,t,a,s)=>{let i;try{const n=ca[t.type];i=n?n(e,t,s??a):{title:t.type,tone:"meta"}}catch{i={title:t.type,tone:"meta"}}return{title:i.title,targetLabel:Ne(e,a,t.target),tone:i.tone,...i.body===void 0?{}:{summary:i.body}}},Re=e=>`${e.type} ${w(e.target)} ${JSON.stringify(e.payload)}`,Ne=(e,t,a)=>{try{switch(a.type){case"activity":{const s=D(t,a.id);return s?e.targetLabel(e.activityGroup,s.name):e.targetMissing(e.activityGroup,a.id)}case"step":{const s=S(t,a.id)?.step;return s?e.targetLabel(e.stepGroup,s.name):e.targetMissing(e.stepGroup,a.id)}case"story":{const s=x(t,a.id);return s?e.targetLabel(e.storyGroup,s.name):e.targetMissing(e.storyGroup,a.id)}case"milestone":{const s=L(t,a.id);return s?e.targetLabel(e.milestoneGroup,s.name):e.targetMissing(e.milestoneGroup,a.id)}case"status":{const s=E(t,a.id);return s?e.targetLabel(e.statusGroup,s.name):e.targetMissing(e.statusGroup,a.id)}case"page":return e.targetLabel(e.mapGroup,ue(t));default:return`${a.type} \xB7 ${a.id}`}}catch{return`${a.type} \xB7 ${a.id}`}},Ce=(e,t,a)=>{const s=[{value:"page:usm",label:e.wholeMap,group:e.mapGroup}];for(const i of t.activities){s.push({value:w({type:"activity",id:i.id}),label:i.name,group:e.activityGroup});for(const n of i.steps)s.push({value:w({type:"step",id:Z(i.id,n.id)}),label:`${i.name} \u203A ${n.name}`,group:e.stepGroup})}for(const i of t.milestones)s.push({value:w({type:"milestone",id:i.id}),label:i.name,group:e.milestoneGroup});for(const i of t.statuses)s.push({value:w({type:"status",id:i.id}),label:i.name,group:e.statusGroup});for(const i of t.stories)s.push({value:w({type:"story",id:i.id}),label:i.name,group:e.storyGroup});return s},Ye=(e,t,a)=>{const s=t.stories.find(i=>i.id===a.story);if(s)return{value:w({type:"story",id:s.id}),label:s.name,group:e.storyGroup};for(const i of t.activities){const n=i.steps.find(r=>r.id===a.step);if(n)return{value:w({type:"step",id:Z(i.id,n.id)}),label:n.name,group:e.stepGroup}}return null},ue=e=>e.title??"User Story Mapping",ua=e=>{switch(e.type){case"story":return{tab:null,status:null};case"step":case"activity":return{tab:null,view:null};case"milestone":return{tab:"milestones"};case"status":return{tab:"statuses"};default:return null}},Ue=(e,t)=>{const a=S(e,t.step),s=a?.activity??D(e,t.activity)??e.activities[0],i=a?.step??s?.steps.find(d=>d.id===t.step)??s?.steps[0],n=x(e,t.story),r={...t};s?r.activity=s.id:delete r.activity,i?r.step=i.id:delete r.step,n?r.story=n.id:delete r.story,r.view=t.view==="group"?"group":"activity";const o=Oe(e,ae(e,t));o===null?delete r.status:r.status=o;const l=Ie(t);return l==="map"?delete r.tab:r.tab=l,r},ze=(e,t)=>{switch(t.type){case"activity":return D(e,t.id)!==void 0;case"step":return S(e,t.id)!==void 0;case"story":return x(e,t.id)!==void 0;case"milestone":return L(e,t.id)!==void 0;case"status":return E(e,t.id)!==void 0;case"page":return!0;default:return!1}},Pe=e=>{const t=Q(e);return{name:"usm",label:"User Story Mapping",parseBase:ke,emptyBase:xe,actions:v,apply:$e,canonicalState:ta,hasTarget:ze,canonicalTarget:(a,s)=>{if(s.type!=="step")return s;const i=S(a,s.id);return i?{...s,id:Z(i.activity.id,i.step.id)}:s},describe:(a,s,i)=>De(t,a,s,i),serialize:Re,resolveNavigation:Ue,navigationFor:(a,s)=>ua(s),commentTargets:(a,s)=>Ce(t,a),currentTarget:(a,s)=>Ye(t,a,s),title:ue}},ma={github:V`<path fill-rule="evenodd" d="M8 0c4.42 0 8 3.58 8 8a8.013 8.013 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27-.68 0-1.36.09-2 .27-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8Z"></path>`,gitlab:V`<path d="M8 15 1.2 9.9a.7.7 0 0 1-.25-.78L2.7 2.6a.35.35 0 0 1 .66 0L5.1 7.6h5.8l1.74-5a.35.35 0 0 1 .66 0l1.75 6.52a.7.7 0 0 1-.25.78z"></path>`,jira:V`<path d="M14.6 7.4 8.6 1.4 8 .8 3.5 5.3 1.4 7.4a.85.85 0 0 0 0 1.2l4.1 4.1L8 15.2l4.5-4.5.07-.07 2.03-2.03a.85.85 0 0 0 0-1.2zM8 9.9 5.9 8 8 5.9 10.1 8z"></path>`,linear:V`<path d="M1.2 9.4a6.9 6.9 0 0 0 5.4 5.4zM1 7.3l7.7 7.7a7 7 0 0 0 1.9-.5L1.5 5.4a7 7 0 0 0-.5 1.9zm1.2-3.1 9.6 9.6a7 7 0 0 0 1.2-1.1L3.3 3a7 7 0 0 0-1.1 1.2zM4.3 2.3a7 7 0 1 1 9.4 9.4z"></path>`,figma:V`<path d="M5.5 1h2.3v4.6H5.5a2.3 2.3 0 1 1 0-4.6zm2.3 0h2.3a2.3 2.3 0 1 1 0 4.6H7.8zm2.3 4.6a2.3 2.3 0 1 1 0 4.6 2.3 2.3 0 0 1 0-4.6zM5.5 5.6h2.3v4.6H5.5a2.3 2.3 0 1 1 0-4.6zm0 4.6h2.3v2.3a2.3 2.3 0 1 1-2.3-2.3z"></path>`,notion:V`<path fill-rule="evenodd" d="M2.5 1.6 11 1c1 0 1.3.1 2 .6l2.1 1.5c.4.3.5.4.5.7v9.6c0 .7-.3 1.1-1.1 1.2l-9.4.6c-.6 0-.9-.1-1.2-.5L1.9 12c-.3-.5-.5-.8-.5-1.3V2.8c0-.6.3-1.1 1.1-1.2zM5 4.4v8.9l8.6-.5V4zm1 1.2 2.9-.2 3 4.7V5.6l-.8-.1v-.5l2-.1v.6l-.6.1v6.1l-.9.1-3.5-5.4v4.9l.8.2v.5l-2.3.1v-.5l.6-.2V6.4l-.8-.1z"></path>`},Ve=e=>e==="web"?kt():p`<svg class="link-mark" viewBox="0 0 16 16" aria-hidden="true">${ma[e]}</svg>`,Be=W`
|
|
2
2
|
.link-mark {
|
|
3
3
|
fill: currentColor;
|
|
4
4
|
}
|
|
@@ -40,7 +40,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
40
40
|
text-overflow: ellipsis;
|
|
41
41
|
white-space: nowrap;
|
|
42
42
|
}
|
|
43
|
-
`,Y=e=>`--usm-tone: var(--dpk-${e==null||e==="gray"?"ink-faint":e})`,Ge={circle:
|
|
43
|
+
`,Y=e=>`--usm-tone: var(--dpk-${e==null||e==="gray"?"ink-faint":e})`,Ge={circle:O(Gt),lightbulb:O(qt),flag:O(Kt),play:O(Vt),clock:O(Ft),eye:O(jt),pause:O(Pt),check:O(Ut),x:O(Bt)},ga=O(zt),ha=e=>{if(e>=1)return Ge.check();const t=2*Math.PI*4.5;return p`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
|
44
44
|
<circle cx="12" cy="12" r="10"></circle>
|
|
45
45
|
${e>0?V`<circle
|
|
46
46
|
class="si-pie"
|
|
@@ -50,14 +50,14 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
50
50
|
stroke-dasharray=${`${e*t} ${t}`}
|
|
51
51
|
transform="rotate(-90 12 12)"
|
|
52
52
|
></circle>`:m}
|
|
53
|
-
</svg>`},
|
|
54
|
-
${e.map(a=>
|
|
53
|
+
</svg>`},K=e=>{const t=e===void 0?ga():e.icon==="progress"?ha(e.progress??1):Ge[e.icon]();return p`<span class="status-icon">${t}</span>`},Fe=(e,t)=>e.length===0?m:p`<span class="status-bar" role="img" aria-label=${t}>
|
|
54
|
+
${e.map(a=>p`<span
|
|
55
55
|
class="status-bar-part"
|
|
56
56
|
data-status=${a.id}
|
|
57
57
|
title=${`${a.name}: ${a.count}`}
|
|
58
58
|
style=${`${Y(a.tone)};flex-grow:${a.count}`}
|
|
59
59
|
></span>`)}
|
|
60
|
-
</span>`,
|
|
60
|
+
</span>`,je=W`
|
|
61
61
|
.status-icon {
|
|
62
62
|
display: block;
|
|
63
63
|
flex: none;
|
|
@@ -87,7 +87,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
87
87
|
.status-bar-part[data-status=''] {
|
|
88
88
|
background: color-mix(in srgb, var(--dpk-ink-faint) 30%, transparent);
|
|
89
89
|
}
|
|
90
|
-
`,
|
|
90
|
+
`,va=3,fa=W`
|
|
91
91
|
/*
|
|
92
92
|
* The card wears its status's color the way a modern board does: a flat,
|
|
93
93
|
* barely tinted face and a hairline edge in that hue, with a neutral, soft
|
|
@@ -249,16 +249,16 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
249
249
|
border-color: color-mix(in oklab, var(--card-tone) 16%, var(--dpk-rule));
|
|
250
250
|
background: var(--dpk-paper-raised);
|
|
251
251
|
}
|
|
252
|
-
`;class
|
|
252
|
+
`;class ba extends xt{static{this.styles=[St,je,Be,fa]}static{this.properties={story:{attribute:!1},stepName:{attribute:!1},statuses:{attribute:!1},notes:{attribute:!1},focused:{type:Boolean,reflect:!0},dragging:{type:Boolean,reflect:!0}}}#a=new wt(this);constructor(){super(),this.story=null,this.stepName="",this.statuses=[],this.notes=[],this.focused=!1,this.dragging=!1}render(){const t=this.story;if(!t)return m;const a=Q(this.#a.locale),s=this.stepName!==""||this.notes.length>0;return p`
|
|
253
253
|
<div class="card-head">
|
|
254
254
|
${this.statuses.length===0?m:this.#e(a,t)}
|
|
255
255
|
<div class="card-name"><span>${t.name}</span></div>
|
|
256
256
|
</div>
|
|
257
|
-
${t.description?
|
|
257
|
+
${t.description?p`<div class="card-text" @click=${ya}>${$t(Tt(t.description))}</div>`:m}
|
|
258
258
|
${t.links&&t.links.length>0?this.#t(t.links):m}
|
|
259
|
-
${s?
|
|
260
|
-
${this.stepName===""?m:
|
|
261
|
-
${this.notes.length>0?
|
|
259
|
+
${s?p`<div class="card-foot">
|
|
260
|
+
${this.stepName===""?m:p`<span class="card-chip" data-kind="step"><span>${this.stepName}</span></span>`}
|
|
261
|
+
${this.notes.length>0?p`<span
|
|
262
262
|
class="card-chip"
|
|
263
263
|
data-kind="comments"
|
|
264
264
|
aria-label=${a.commentCountAria(this.notes.length)}
|
|
@@ -266,10 +266,10 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
266
266
|
${Et()}<span>${this.notes.length}</span>
|
|
267
267
|
</span>`:m}
|
|
268
268
|
</div>`:m}
|
|
269
|
-
`}#e(t,a){const s=_e(this.statuses,a);if(!s)return m;const i=s.name;return
|
|
270
|
-
${
|
|
271
|
-
</span>`}#t(t){const a=t.slice(0,
|
|
272
|
-
${a.map(s=>{const i=
|
|
269
|
+
`}#e(t,a){const s=_e(this.statuses,a);if(!s)return m;const i=s.name;return p`<span class="card-status" role="img" aria-label=${t.storyStatusAria(i)} title=${i}>
|
|
270
|
+
${K(s)}
|
|
271
|
+
</span>`}#t(t){const a=t.slice(0,va);return p`<div class="card-links">
|
|
272
|
+
${a.map(s=>{const i=ee(s.url);return p`<a
|
|
273
273
|
class="link-chip"
|
|
274
274
|
data-kind=${i.kind}
|
|
275
275
|
href=${s.url}
|
|
@@ -280,8 +280,8 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
280
280
|
@click=${n=>n.stopPropagation()}
|
|
281
281
|
>${Ve(i.kind)}<span>${s.label??i.text}</span></a
|
|
282
282
|
>`})}
|
|
283
|
-
${t.length>a.length?
|
|
284
|
-
</div>`}}const
|
|
283
|
+
${t.length>a.length?p`<span class="link-chip">+${t.length-a.length}</span>`:m}
|
|
284
|
+
</div>`}}const ya=e=>{e.target instanceof Element&&e.target.closest("a")&&e.stopPropagation()},ka=()=>{customElements.get("dpk-internal-usm-story-card")||customElements.define("dpk-internal-usm-story-card",ba)},xa=(e,t,a)=>{const s=e.at(-1)??null;if(t===null||a==="end")return s;const i=e.indexOf(t);return i<0?s:a==="after"?t:i===0?null:e.at(i-1)??null},Ke=(e,t,a,s,i)=>{const n=J(e,t.stepId,t.milestoneId).map(r=>r.id);return{type:"MOVE_STORY",target:{type:"story",id:a},payload:{activityId:t.activityId,stepId:t.stepId,milestoneId:t.milestoneId??null,after:ie(n,a,s,i)}}},qe=(e,t,a,s,i,n)=>{const r=x(e,s);if(!r||r.activityId!==t)return null;const o=Se(e,t,a).map(l=>l.id);return{type:"MOVE_STORY",target:{type:"story",id:s},payload:{activityId:t,stepId:r.stepId,milestoneId:a??null,after:ie(o,s,i,n)}}},He=(e,t,a,s,i)=>{const n=J(e,s,i).filter(r=>r.id!==t);return{type:"MOVE_STORY",target:{type:"story",id:t},payload:{activityId:a,stepId:s,milestoneId:i??null,after:n.at(-1)?.id??null}}},We=(e,t,a,s)=>e.includes(t)?{type:"REORDER_MILESTONE",target:{type:"milestone",id:t},payload:{after:ie(e,t,a,s)}}:null,Sa=e=>{const t=e.stories.length,a=de(e);return e.milestones.map((s,i)=>{const n=e.stories.filter(o=>o.milestoneId===s.id),r=new Set(n.map(o=>o.stepId));return{id:s.id,ordinal:i+1,name:s.name,timeframe:s.timeframe?.trim()??"",description:s.description?.trim()??"",storyCount:n.length,share:t===0?0:n.length/t,coverage:{covered:a.filter(({step:o})=>r.has(o.id)).length,total:a.length},progress:Me(e,n)}})},Xe=(e,t)=>{const a=F("new-activity",B(t.state));if(!t.dispatch({type:"ADD_ACTIVITY",target:{type:"page",id:"usm"},payload:{id:a,name:e.newActivityName}}).ok)return;const i=F("new-step",[...B(t.state),a]);t.dispatch({type:"ADD_STEP",target:{type:"activity",id:a},payload:{id:i,name:e.newStepName}}),t.navigate({activity:a,step:null,story:null})},wa=(e,t,a)=>{const s=F("new-step",B(t.state));t.dispatch({type:"ADD_STEP",target:{type:"activity",id:a},payload:{id:s,name:e.newStepName}})},Ze=(e,t)=>{const a=F("new-milestone",B(t.state));t.dispatch({type:"ADD_MILESTONE",target:{type:"page",id:"usm"},payload:{id:a,name:e.newMilestoneName}})},Je=(e,t,a,s,i)=>{const n=F("new-story",B(t.state));t.dispatch({type:"ADD_STORY",target:{type:"step",id:s},payload:{id:n,name:e.newStoryName,activityId:a,...i===void 0?{}:{milestoneId:i}}}).ok&&t.navigate({activity:a,step:s,story:n})},$a=(e,t)=>{const a=F("new-status",B(t.state));t.dispatch({type:"ADD_STATUS",target:{type:"page",id:"usm"},payload:{id:a,name:e.newStatusName,tone:ye(t.state.statuses.length)}})},Qe=(e,t)=>{const a=s=>t.stories.filter(i=>i.milestoneId===s).length;return[...t.milestones.map(({id:s,name:i,timeframe:n})=>({id:s,name:i,timeframe:n?.trim()??"",storyCount:a(s)})),{id:void 0,name:e.unassigned,timeframe:"",storyCount:a(void 0)}]},Ta=(e,t)=>p`
|
|
285
285
|
<div class="empty">
|
|
286
286
|
<h2>${e.emptyTitle}</h2>
|
|
287
287
|
<p>${e.emptyBody}</p>
|
|
@@ -289,31 +289,31 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
289
289
|
${e.firstActivityButton}
|
|
290
290
|
</button>
|
|
291
291
|
</div>
|
|
292
|
-
|
|
293
|
-
${et(a)==="activity"?
|
|
292
|
+
`,Ea=e=>{const{m:t,context:a}=e,s=de(a.state);return s.length===0?Ta(t,a):p`${Aa(t,a)}
|
|
293
|
+
${et(a)==="activity"?_a(e,s):Ma(e)}`},Aa=(e,t)=>{const{state:a}=t;if(a.statuses.length===0)return m;const s=ae(a,t.navigation),i=te(a),n=o=>a.stories.filter(l=>l.statusId===o).length,r=o=>{const l=o.id,d=s.has(l);return p`<a
|
|
294
294
|
class="filter-chip"
|
|
295
295
|
role="checkbox"
|
|
296
|
-
data-status=${
|
|
296
|
+
data-status=${l}
|
|
297
297
|
aria-checked=${String(d)}
|
|
298
298
|
style=${Y(o.tone)}
|
|
299
|
-
href=${t.hashFor({status:Oe(a,pa(s,
|
|
300
|
-
>${
|
|
301
|
-
><span class="filter-count">${n(
|
|
302
|
-
>`};return
|
|
299
|
+
href=${t.hashFor({status:Oe(a,pa(s,l))})}
|
|
300
|
+
>${K(o)}<span class="filter-name" title=${o.name}>${o.name}</span
|
|
301
|
+
><span class="filter-count">${n(l)}</span></a
|
|
302
|
+
>`};return p`<div class="map-toolbar" role="group" aria-label=${e.statusFilterLabel} data-testid="usm-status-filter">
|
|
303
303
|
<span class="filter-label">${e.statusFilterLabel}</span>
|
|
304
304
|
${i.map(r)}
|
|
305
|
-
${s.size===0?m:
|
|
306
|
-
</div>`},et=e=>e.navigation.view==="group"?"group":"activity",
|
|
305
|
+
${s.size===0?m:p`<a class="filter-clear" href=${t.hashFor({status:null})}>${e.clearFilter}</a>`}
|
|
306
|
+
</div>`},et=e=>e.navigation.view==="group"?"group":"activity",Ia=(e,t)=>{const a=et(t);return p`<div class="segmented view-tabs" role="tablist" aria-label=${e.groupingLabel}>
|
|
307
307
|
${tt(t,"activity",a,e.activityGroup)}
|
|
308
308
|
${tt(t,"group",a,e.groupViewTab)}
|
|
309
|
-
</div>`},tt=(e,t,a,s)=>{const i=t===a;return
|
|
309
|
+
</div>`},tt=(e,t,a,s)=>{const i=t===a;return p`<a
|
|
310
310
|
class="tab"
|
|
311
311
|
role="tab"
|
|
312
312
|
data-current=${String(i)}
|
|
313
313
|
aria-selected=${i?"true":"false"}
|
|
314
314
|
href=${e.hashFor({view:t})}
|
|
315
315
|
>${s}</a
|
|
316
|
-
>`},
|
|
316
|
+
>`},_a=(e,t)=>{const{m:a,context:s}=e,{state:i}=s,n=Qe(a,i);return p`
|
|
317
317
|
<div class="map-scroll">
|
|
318
318
|
<div class="map" style=${`--cols:${t.length+1}`} data-testid="usm-map">
|
|
319
319
|
<div class="map-head">
|
|
@@ -321,50 +321,59 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
321
321
|
<div class="corner">
|
|
322
322
|
<span class="dpk-label">${a.groupAxisHeader}</span>
|
|
323
323
|
</div>
|
|
324
|
-
${
|
|
324
|
+
${I(i.activities,r=>r.id,r=>st(a,s,r.id,`grid-column: span ${Math.max(r.steps.length,1)}`))}
|
|
325
325
|
${it(a,s)}
|
|
326
326
|
</div>
|
|
327
327
|
<div class="map-row">
|
|
328
328
|
${at(a)}
|
|
329
|
-
${
|
|
330
|
-
<div
|
|
329
|
+
${I(t,({activity:r,step:o})=>`${r.id}.${o.id}`,({activity:r,step:o})=>p`
|
|
330
|
+
<div
|
|
331
|
+
class="col-head"
|
|
332
|
+
data-current=${String(s.navigation.step===o.id)}
|
|
333
|
+
data-dpk-target=${w({type:"step",id:Z(r.id,o.id)})}
|
|
334
|
+
>
|
|
331
335
|
<h4>
|
|
332
336
|
<dpk-component-inline-edit
|
|
333
|
-
.value=${
|
|
337
|
+
.value=${o.name}
|
|
334
338
|
.label=${a.stepNameLabel}
|
|
335
|
-
@dpk-commit=${N(
|
|
336
|
-
@click=${
|
|
339
|
+
@dpk-commit=${N(l=>s.dispatch({type:"SET_STEP_NAME",target:{type:"step",id:o.id},payload:{name:l}}))}
|
|
340
|
+
@click=${l=>l.stopPropagation()}
|
|
337
341
|
></dpk-component-inline-edit>
|
|
338
342
|
</h4>
|
|
339
|
-
<span class="count">${we(i,
|
|
343
|
+
<span class="count">${we(i,o.id)}</span>
|
|
340
344
|
</div>
|
|
341
345
|
`)}
|
|
342
346
|
<div class="corner"><span class="dpk-label">—</span></div>
|
|
343
347
|
</div>
|
|
344
348
|
</div>
|
|
345
|
-
${
|
|
349
|
+
${I(n,r=>r.id,r=>rt(e,r,p`${I(t,({activity:o,step:l})=>`${o.id}.${l.id}`,({activity:o,step:l})=>La(e,{activityId:o.id,stepId:l.id,milestoneId:r.id}))}`))}
|
|
346
350
|
${nt(a,s,t.length)}
|
|
347
351
|
</div>
|
|
348
352
|
</div>
|
|
349
|
-
`},
|
|
353
|
+
`},Ma=e=>{const{m:t,context:a}=e,{state:s}=a,i=Qe(t,s);return p`
|
|
350
354
|
<div class="map-scroll">
|
|
351
355
|
<div class="map" style=${`--cols:${s.activities.length+1}`} data-testid="usm-map-group">
|
|
352
356
|
<div class="map-head">
|
|
353
357
|
<div class="map-row">
|
|
354
358
|
${at(t)}
|
|
355
|
-
${
|
|
359
|
+
${I(s.activities,n=>n.id,n=>st(t,a,n.id,void 0,!0))}
|
|
356
360
|
${it(t,a)}
|
|
357
361
|
</div>
|
|
358
362
|
</div>
|
|
359
|
-
${
|
|
363
|
+
${I(i,n=>n.id,n=>rt(e,n,p`${I(s.activities,r=>r.id,r=>Da(e,r.id,n.id))}`))}
|
|
360
364
|
${nt(t,a,s.activities.length)}
|
|
361
365
|
</div>
|
|
362
366
|
</div>
|
|
363
|
-
`},at=e=>
|
|
367
|
+
`},at=e=>p`<div class="corner">
|
|
364
368
|
<span class="dpk-label">${e.activityAxis}</span>
|
|
365
369
|
<span class="dpk-label">${e.milestoneAxis}</span>
|
|
366
|
-
</div>`,st=(e,t,a,s,i=!1)=>{const{state:n}=t,r=n.activities.find(d=>d.id===a);if(!r)return
|
|
367
|
-
<div
|
|
370
|
+
</div>`,st=(e,t,a,s,i=!1)=>{const{state:n}=t,r=n.activities.find(d=>d.id===a);if(!r)return p`<div class="act-head"></div>`;const o=n.stories.filter(d=>d.activityId===r.id),l=Me(n,o);return p`
|
|
371
|
+
<div
|
|
372
|
+
class="act-head"
|
|
373
|
+
style=${s??""}
|
|
374
|
+
data-activity=${r.id}
|
|
375
|
+
data-dpk-target=${w({type:"activity",id:r.id})}
|
|
376
|
+
>
|
|
368
377
|
<div class="act-title">
|
|
369
378
|
<dpk-component-inline-edit
|
|
370
379
|
.value=${r.name}
|
|
@@ -376,7 +385,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
376
385
|
class="dpk-icon-btn"
|
|
377
386
|
type="button"
|
|
378
387
|
aria-label=${e.addStepAria}
|
|
379
|
-
@click=${()=>
|
|
388
|
+
@click=${()=>wa(e,t,r.id)}
|
|
380
389
|
>
|
|
381
390
|
${At()}
|
|
382
391
|
</button>
|
|
@@ -391,17 +400,17 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
391
400
|
@dpk-commit=${N(d=>t.dispatch({type:"SET_ACTIVITY_ACTOR",target:{type:"activity",id:r.id},payload:{actor:d}}))}
|
|
392
401
|
></dpk-component-inline-edit>
|
|
393
402
|
</span>
|
|
394
|
-
${Fe(
|
|
403
|
+
${Fe(l,e.progressAria(l.map(d=>`${d.name} ${d.count}`).join(", ")))}
|
|
395
404
|
</div>
|
|
396
|
-
${i&&r.steps.length>0?
|
|
397
|
-
${r.steps.map(d=>
|
|
405
|
+
${i&&r.steps.length>0?p`<ol class="act-steps">
|
|
406
|
+
${r.steps.map(d=>p`<li>${d.name}</li>`)}
|
|
398
407
|
</ol>`:m}
|
|
399
408
|
</div>
|
|
400
|
-
`},it=(e,t)=>
|
|
409
|
+
`},it=(e,t)=>p`<div class="act-head">
|
|
401
410
|
<button class="dpk-btn dpk-btn--ghost" type="button" @click=${()=>Xe(e,t)}>
|
|
402
411
|
${e.newActivityButton}
|
|
403
412
|
</button>
|
|
404
|
-
</div>`,nt=(e,t,a)=>
|
|
413
|
+
</div>`,nt=(e,t,a)=>p`<div class="map-row">
|
|
405
414
|
<div class="row-lead">
|
|
406
415
|
<div class="row-head">
|
|
407
416
|
<button class="dpk-btn dpk-btn--ghost" type="button" @click=${()=>Ze(e,t)}>
|
|
@@ -409,8 +418,8 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
409
418
|
</button>
|
|
410
419
|
</div>
|
|
411
420
|
</div>
|
|
412
|
-
${Array.from({length:a+1},()=>
|
|
413
|
-
</div>`,rt=(e,t,a)=>{const{m:s,context:i,drag:n,handlers:r}=e,o=t.id;if(o===void 0)return
|
|
421
|
+
${Array.from({length:a+1},()=>p`<div class="cell"></div>`)}
|
|
422
|
+
</div>`,rt=(e,t,a)=>{const{m:s,context:i,drag:n,handlers:r}=e,o=t.id;if(o===void 0)return p`<div
|
|
414
423
|
class="map-row"
|
|
415
424
|
data-unassigned="true"
|
|
416
425
|
data-draggable="false"
|
|
@@ -423,7 +432,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
423
432
|
</div>
|
|
424
433
|
${a}
|
|
425
434
|
<div class="cell"></div>
|
|
426
|
-
</div>`;const
|
|
435
|
+
</div>`;const l=Oa(s,i,o,t.name),d=`row:${o}`,u=n.target({key:d,accepts:"milestone",hovered:Na,onDrop:_=>r.dropOnMilestoneRow(o,_)}),A=n.source({type:"milestone",id:o});return p`
|
|
427
436
|
<div
|
|
428
437
|
class="map-row"
|
|
429
438
|
data-draggable="true"
|
|
@@ -438,38 +447,39 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
438
447
|
<div
|
|
439
448
|
class="row-head"
|
|
440
449
|
data-milestone=${o}
|
|
450
|
+
data-dpk-target=${w({type:"milestone",id:o})}
|
|
441
451
|
draggable="true"
|
|
442
|
-
@dragstart=${
|
|
443
|
-
@dragend=${
|
|
452
|
+
@dragstart=${_=>{Ra(_),A.dragstart(_)}}
|
|
453
|
+
@dragend=${A.dragend}
|
|
444
454
|
>
|
|
445
|
-
<span class="row-grip" aria-hidden="true">${It()}</span>${
|
|
455
|
+
<span class="row-grip" aria-hidden="true">${It()}</span>${l}
|
|
446
456
|
</div>
|
|
447
457
|
${ot(s,t)}
|
|
448
458
|
</div>
|
|
449
459
|
${a}
|
|
450
460
|
<div class="cell"></div>
|
|
451
461
|
</div>
|
|
452
|
-
`},ot=(e,t)=>
|
|
453
|
-
${t.timeframe===""?m:
|
|
462
|
+
`},ot=(e,t)=>p`<div class="row-meta">
|
|
463
|
+
${t.timeframe===""?m:p`<span class="row-timeframe">${t.timeframe}</span>`}
|
|
454
464
|
<span class="row-count">${e.storyCount(t.storyCount)}</span>
|
|
455
|
-
</div>`,
|
|
465
|
+
</div>`,Oa=(e,t,a,s)=>p`<dpk-component-inline-edit
|
|
456
466
|
draggable="false"
|
|
457
467
|
.value=${s}
|
|
458
468
|
.label=${e.milestoneNameLabel}
|
|
459
469
|
@dpk-commit=${N(i=>t.dispatch({type:"SET_MILESTONE_NAME",target:{type:"milestone",id:a},payload:{name:i}}))}
|
|
460
|
-
></dpk-component-inline-edit>`,
|
|
470
|
+
></dpk-component-inline-edit>`,La=(e,t)=>{const{m:a,context:s,drag:i,handlers:n}=e,r=ae(s.state,s.navigation),o=J(s.state,t.stepId,t.milestoneId).filter(u=>Le(r,u)),l=`cell:${t.stepId}:${t.milestoneId??""}`,d=i.target({key:l,accepts:"story",hovered:lt,onDrop:u=>n.dropOnCell(t,u)});return p`
|
|
461
471
|
<div
|
|
462
472
|
class="cell"
|
|
463
473
|
data-step=${t.stepId}
|
|
464
474
|
data-milestone=${t.milestoneId??""}
|
|
465
|
-
data-drop=${String(i.isOver(
|
|
475
|
+
data-drop=${String(i.isOver(l))}
|
|
466
476
|
@dragenter=${d.dragenter}
|
|
467
477
|
@dragover=${d.dragover}
|
|
468
478
|
@dragleave=${d.dragleave}
|
|
469
479
|
@drop=${d.drop}
|
|
470
480
|
>
|
|
471
481
|
<div class="card-list" data-testid=${`cell-${t.stepId}-${t.milestoneId??"unassigned"}`}>
|
|
472
|
-
${
|
|
482
|
+
${I(o,u=>u.id,u=>dt(e,u,""))}
|
|
473
483
|
</div>
|
|
474
484
|
<button
|
|
475
485
|
class="dpk-btn dpk-btn--ghost add-cell"
|
|
@@ -480,32 +490,33 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
480
490
|
${a.addCellButton}
|
|
481
491
|
</button>
|
|
482
492
|
</div>
|
|
483
|
-
`},
|
|
493
|
+
`},Da=(e,t,a)=>{const{m:s,context:i,drag:n,handlers:r}=e,{state:o}=i,l=ae(o,i.navigation),d=Se(o,t,a).filter($=>Le(l,$)),u=o.activities.find($=>$.id===t)?.steps??[],A=u[0],_=$=>u.find(ut=>ut.id===$)?.name??"",k=`group:${t}:${a??""}`,M=n.target({key:k,accepts:"story",hovered:lt,onDrop:$=>r.dropOnGroupCell(t,a,$)});return p`
|
|
484
494
|
<div
|
|
485
495
|
class="cell"
|
|
486
496
|
data-activity=${t}
|
|
487
497
|
data-milestone=${a??""}
|
|
488
498
|
data-drop=${String(n.isOver(k))}
|
|
489
|
-
@dragenter=${
|
|
490
|
-
@dragover=${
|
|
491
|
-
@dragleave=${
|
|
492
|
-
@drop=${
|
|
499
|
+
@dragenter=${M.dragenter}
|
|
500
|
+
@dragover=${M.dragover}
|
|
501
|
+
@dragleave=${M.dragleave}
|
|
502
|
+
@drop=${M.drop}
|
|
493
503
|
>
|
|
494
504
|
<div class="card-list" data-testid=${`group-cell-${t}-${a??"unassigned"}`}>
|
|
495
|
-
${
|
|
505
|
+
${I(d,$=>$.id,$=>dt(e,$,_($.stepId)))}
|
|
496
506
|
</div>
|
|
497
|
-
${
|
|
507
|
+
${A?p`<button
|
|
498
508
|
class="dpk-btn dpk-btn--ghost add-cell"
|
|
499
509
|
type="button"
|
|
500
510
|
aria-label=${s.addStoryCellAria}
|
|
501
|
-
@click=${()=>Je(s,i,t,
|
|
511
|
+
@click=${()=>Je(s,i,t,A.id,a)}
|
|
502
512
|
>
|
|
503
513
|
${s.addCellButton}
|
|
504
514
|
</button>`:m}
|
|
505
515
|
</div>
|
|
506
|
-
`},dt=(e,t,a)=>{const{context:s,drag:i,handlers:n}=e,r=
|
|
516
|
+
`},dt=(e,t,a)=>{const{context:s,drag:i,handlers:n}=e,r=te(s.state),o=s.comments.filter(d=>d.target.type==="story"&&d.target.id===t.id),l=i.source({type:"story",id:t.id});return p`<dpk-internal-usm-story-card
|
|
507
517
|
data-story=${t.id}
|
|
508
518
|
data-status=${t.statusId??""}
|
|
519
|
+
data-dpk-target=${w({type:"story",id:t.id})}
|
|
509
520
|
draggable="true"
|
|
510
521
|
style=${Y(_e(r,t)?.tone)}
|
|
511
522
|
.story=${t}
|
|
@@ -515,16 +526,16 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
515
526
|
@click=${()=>n.selectStory(t.id)}
|
|
516
527
|
?focused=${s.navigation.story===t.id}
|
|
517
528
|
?dragging=${i.isDragging("story",t.id)}
|
|
518
|
-
@dragstart=${
|
|
519
|
-
@dragend=${
|
|
520
|
-
></dpk-internal-usm-story-card>`},lt=e=>{const t=e.target instanceof Element?e.target.closest("dpk-internal-usm-story-card"):null;return t?{id:t.getAttribute("data-story"),element:t}:null},
|
|
529
|
+
@dragstart=${l.dragstart}
|
|
530
|
+
@dragend=${l.dragend}
|
|
531
|
+
></dpk-internal-usm-story-card>`},lt=e=>{const t=e.target instanceof Element?e.target.closest("dpk-internal-usm-story-card"):null;return t?{id:t.getAttribute("data-story"),element:t}:null},Ra=e=>{const a=(e.currentTarget instanceof Element?e.currentTarget:null)?.closest(".map-row");if(!a||!e.dataTransfer)return;const s=a.getBoundingClientRect();e.dataTransfer.setDragImage(a,e.clientX-s.left,e.clientY-s.top)},Na=e=>{const t=e.target instanceof Element?e.target.closest(".map-row"):null,a=t?.querySelector(".row-head[data-milestone]");if(!t||!a)return null;const s=a.getAttribute("data-milestone");return{id:s===""?null:s,element:t}},Ca=(e,t,a)=>p`
|
|
521
532
|
<section class="ms-overview" data-testid="usm-milestones">
|
|
522
|
-
${a.length===0?
|
|
533
|
+
${a.length===0?p`<div class="empty">
|
|
523
534
|
<h2>${e.noMilestonesTitle}</h2>
|
|
524
535
|
<p>${e.noMilestonesBody}</p>
|
|
525
536
|
</div>`:m}
|
|
526
537
|
<ol class="ms-timeline">
|
|
527
|
-
${
|
|
538
|
+
${I(a,s=>s.id,s=>Ya(e,t,s))}
|
|
528
539
|
<li class="ms-add">
|
|
529
540
|
<span class="ms-when" aria-hidden="true"></span>
|
|
530
541
|
<span class="ms-rail" aria-hidden="true"><span class="ms-node ms-node--add"></span></span>
|
|
@@ -536,10 +547,10 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
536
547
|
</li>
|
|
537
548
|
</ol>
|
|
538
549
|
</section>
|
|
539
|
-
`,
|
|
540
|
-
<li class="ms-entry" data-milestone-card=${s}>
|
|
550
|
+
`,Ya=(e,t,a)=>{const s=a.id;return p`
|
|
551
|
+
<li class="ms-entry" data-milestone-card=${s} data-dpk-target=${w({type:"milestone",id:s})}>
|
|
541
552
|
<div class="ms-when">
|
|
542
|
-
${a.timeframe===""?
|
|
553
|
+
${a.timeframe===""?p`<span class="ms-timeframe" data-empty="true">${e.timeframeUnset}</span>`:p`<span class="ms-timeframe">${a.timeframe}</span>`}
|
|
543
554
|
</div>
|
|
544
555
|
<span class="ms-rail" aria-hidden="true"><span class="ms-node">${a.ordinal}</span></span>
|
|
545
556
|
<article class="ms-body">
|
|
@@ -550,7 +561,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
550
561
|
@dpk-commit=${N(i=>t.dispatch({type:"SET_MILESTONE_NAME",target:{type:"milestone",id:s},payload:{name:i}}))}
|
|
551
562
|
></dpk-component-inline-edit>
|
|
552
563
|
</h3>
|
|
553
|
-
${a.description===""?
|
|
564
|
+
${a.description===""?p`<p class="ms-description" data-empty="true">${e.milestoneNoDescription}</p>`:p`<p class="ms-description">${a.description}</p>`}
|
|
554
565
|
<dl class="ms-facts">
|
|
555
566
|
<div>
|
|
556
567
|
<dt>${e.storiesLabel}</dt>
|
|
@@ -571,24 +582,24 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
571
582
|
</dd>
|
|
572
583
|
</div>
|
|
573
584
|
</dl>
|
|
574
|
-
${a.progress.length===0?m:
|
|
585
|
+
${a.progress.length===0?m:Ua(e,a)}
|
|
575
586
|
</article>
|
|
576
587
|
</li>
|
|
577
|
-
`},
|
|
588
|
+
`},Ua=(e,t)=>p`
|
|
578
589
|
<div class="ms-breakdown">
|
|
579
590
|
${Fe(t.progress,e.progressAria(t.progress.map(a=>`${a.name} ${a.count}`).join(", ")))}
|
|
580
591
|
<ul class="ms-legend" aria-hidden="true">
|
|
581
|
-
${t.progress.map(a=>
|
|
582
|
-
${
|
|
592
|
+
${t.progress.map(a=>p`<li data-status=${a.id} style=${Y(a.tone)}>
|
|
593
|
+
${K(a)}
|
|
583
594
|
<span class="ms-breakdown-name">${a.name}</span>
|
|
584
595
|
<span class="ms-breakdown-count">${a.count}</span>
|
|
585
596
|
</li>`)}
|
|
586
597
|
</ul>
|
|
587
598
|
</div>
|
|
588
|
-
`,
|
|
599
|
+
`,za=(e,t,a,s)=>{if(a.kind!=="picking-step")return m;const i=x(t.state,a.storyId),n=D(t.state,a.activityId);if(!i||!n)return m;const r=n.steps[0]?.id;return p`<div class="comment-pop move-dialog" id="move-dialog" popover="manual">
|
|
589
600
|
<span class="dpk-label">${e.moveDialogLabel}</span>
|
|
590
601
|
<select class="dpk-select" aria-label=${e.moveDialogSelectLabel} data-move-dialog>
|
|
591
|
-
${n.steps.map(o=>
|
|
602
|
+
${n.steps.map(o=>p`<option value=${o.id} ?selected=${o.id===r}>${o.name}</option>`)}
|
|
592
603
|
</select>
|
|
593
604
|
<div class="pop-actions">
|
|
594
605
|
<button
|
|
@@ -600,38 +611,38 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
600
611
|
</button>
|
|
601
612
|
<button class="dpk-btn" type="button" @click=${s.cancel}>${e.moveCancel}</button>
|
|
602
613
|
</div>
|
|
603
|
-
</div>`},
|
|
614
|
+
</div>`},Pa=(e,t,a)=>{const{state:s}=t;return p`
|
|
604
615
|
<div class="board-bar">
|
|
605
616
|
<div class="page-tabs" role="tablist" aria-label=${e.pageTabsLabel}>
|
|
606
617
|
${me(t,"map",a,e.mapTab,s.stories.length)}
|
|
607
618
|
${me(t,"milestones",a,e.milestonesTab,s.milestones.length)}
|
|
608
619
|
${me(t,"statuses",a,e.statusesTab,s.statuses.length)}
|
|
609
620
|
</div>
|
|
610
|
-
${a==="map"&&s.activities.some(i=>i.steps.length>0)?
|
|
621
|
+
${a==="map"&&s.activities.some(i=>i.steps.length>0)?Ia(e,t):m}
|
|
611
622
|
</div>
|
|
612
|
-
`},me=(e,t,a,s,i)=>
|
|
623
|
+
`},me=(e,t,a,s,i)=>p`<a
|
|
613
624
|
role="tab"
|
|
614
625
|
data-tab=${t}
|
|
615
626
|
aria-selected=${t===a?"true":"false"}
|
|
616
627
|
href=${e.hashFor({tab:t==="map"?null:t})}
|
|
617
628
|
>${s}<span class="page-tab-count">${i}</span></a
|
|
618
|
-
>`,
|
|
629
|
+
>`,Va=(e,t,a,s)=>p`
|
|
619
630
|
<section class="st-overview" data-testid="usm-statuses">
|
|
620
|
-
${a.rows.length===0?
|
|
631
|
+
${a.rows.length===0?p`<div class="empty">
|
|
621
632
|
<h2>${e.noStatusesTitle}</h2>
|
|
622
633
|
<p>${e.noStatusesBody}</p>
|
|
623
634
|
</div>`:m}
|
|
624
635
|
<ol class="st-list">
|
|
625
|
-
${
|
|
636
|
+
${I(a.rows,i=>i.id,i=>Ba(e,t,i,s))}
|
|
626
637
|
</ol>
|
|
627
638
|
<div>
|
|
628
|
-
<button class="dpk-btn dpk-btn--ghost" type="button" @click=${()
|
|
639
|
+
<button class="dpk-btn dpk-btn--ghost" type="button" @click=${()=>$a(e,t)}>
|
|
629
640
|
${e.newStatusButton}
|
|
630
641
|
</button>
|
|
631
642
|
</div>
|
|
632
643
|
</section>
|
|
633
|
-
`,
|
|
634
|
-
<li class="st-row" data-status=${a.id} style=${Y(a.tone)}>
|
|
644
|
+
`,Ba=(e,t,a,s)=>{const i=s.openFor===a.id,n={type:"status",id:a.id},r=o=>{t.dispatch({type:"REORDER_STATUS",target:n,payload:{after:o}})};return p`
|
|
645
|
+
<li class="st-row" data-status=${a.id} data-dpk-target=${w(n)} style=${Y(a.tone)}>
|
|
635
646
|
<button
|
|
636
647
|
class="st-icon-trigger"
|
|
637
648
|
type="button"
|
|
@@ -642,9 +653,9 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
642
653
|
title=${e.iconName(a.icon)}
|
|
643
654
|
@click=${()=>s.toggle(a.id)}
|
|
644
655
|
>
|
|
645
|
-
${
|
|
656
|
+
${K(a)}
|
|
646
657
|
</button>
|
|
647
|
-
${i?
|
|
658
|
+
${i?Ga(e,t,a,s):m}
|
|
648
659
|
<span class="st-name">
|
|
649
660
|
<dpk-component-inline-edit
|
|
650
661
|
.value=${a.name}
|
|
@@ -652,9 +663,9 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
652
663
|
@dpk-commit=${N(o=>t.dispatch({type:"SET_STATUS_NAME",target:n,payload:{name:o}}))}
|
|
653
664
|
></dpk-component-inline-edit>
|
|
654
665
|
</span>
|
|
655
|
-
${
|
|
666
|
+
${ja(e,a.storyCount,a.share)}
|
|
656
667
|
<span class="st-tones" role="radiogroup" aria-label=${e.statusToneLabel}>
|
|
657
|
-
${X.map(o=>
|
|
668
|
+
${X.map(o=>p`<button
|
|
658
669
|
class="st-tone"
|
|
659
670
|
type="button"
|
|
660
671
|
role="radio"
|
|
@@ -672,7 +683,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
672
683
|
type="button"
|
|
673
684
|
aria-label=${e.moveUpAria}
|
|
674
685
|
?disabled=${a.previousId===null}
|
|
675
|
-
@click=${()=>r(
|
|
686
|
+
@click=${()=>r(Fa(t.state,a))}
|
|
676
687
|
>
|
|
677
688
|
↑
|
|
678
689
|
</button>
|
|
@@ -696,7 +707,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
696
707
|
</button>
|
|
697
708
|
</span>
|
|
698
709
|
</li>
|
|
699
|
-
`},
|
|
710
|
+
`},Ga=(e,t,a,s)=>p`<div
|
|
700
711
|
id="icon-menu"
|
|
701
712
|
class="comment-pop icon-menu"
|
|
702
713
|
popover="manual"
|
|
@@ -705,7 +716,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
705
716
|
style=${Y(a.tone)}
|
|
706
717
|
@keydown=${i=>{i.key==="Escape"&&(i.preventDefault(),s.close())}}
|
|
707
718
|
>
|
|
708
|
-
${be.map(i=>
|
|
719
|
+
${be.map(i=>p`<button
|
|
709
720
|
class="icon-option"
|
|
710
721
|
type="button"
|
|
711
722
|
role="menuitemradio"
|
|
@@ -715,24 +726,24 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
715
726
|
aria-checked=${String(i===a.icon)}
|
|
716
727
|
@click=${()=>{i!==a.icon&&t.dispatch({type:"SET_STATUS_ICON",target:{type:"status",id:a.id},payload:{icon:i}}),s.close()}}
|
|
717
728
|
>
|
|
718
|
-
${
|
|
729
|
+
${K({icon:i,progress:a.progress})}
|
|
719
730
|
</button>`)}
|
|
720
|
-
</div>`,
|
|
731
|
+
</div>`,Fa=(e,t)=>{const a=e.statuses.findIndex(s=>s.id===t.previousId);return a<=0?null:e.statuses[a-1]?.id??null},ja=(e,t,a)=>p`
|
|
721
732
|
<span class="st-share">
|
|
722
733
|
<span class="st-share-text">${e.statusShare(t,Math.round(a*100))}</span>
|
|
723
734
|
<span class="st-meter" aria-hidden="true"><span style=${`width:${a*100}%`}></span></span>
|
|
724
735
|
</span>
|
|
725
|
-
`,Ka=e=>x(e.state,e.navigation.story),
|
|
736
|
+
`,Ka=e=>x(e.state,e.navigation.story),qa=(e,t,a)=>{const{state:s}=t,i={type:"story",id:a.id},n=()=>t.navigate({story:null}),r=S(s,`${a.activityId}.${a.stepId}`),o=L(s,a.milestoneId);return p`<aside
|
|
726
737
|
class="story-panel"
|
|
727
738
|
role="dialog"
|
|
728
739
|
aria-label=${e.panelLabel(a.name)}
|
|
729
740
|
data-testid="usm-story-panel"
|
|
730
741
|
data-story=${a.id}
|
|
731
|
-
@keydown=${
|
|
742
|
+
@keydown=${l=>{l.key!=="Escape"||l.isComposing||l.defaultPrevented||(l.preventDefault(),n())}}
|
|
732
743
|
>
|
|
733
744
|
<header class="sp-head">
|
|
734
745
|
<span class="sp-where">
|
|
735
|
-
${r?
|
|
746
|
+
${r?p`<span>${r.activity.name}</span><span>${r.step.name}</span>`:m}
|
|
736
747
|
<span>${o?.name??e.unassigned}</span>
|
|
737
748
|
</span>
|
|
738
749
|
<button class="dpk-icon-btn" type="button" data-role="close" aria-label=${e.closePanelAria} @click=${n}>
|
|
@@ -745,10 +756,10 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
745
756
|
wrap
|
|
746
757
|
.value=${a.name}
|
|
747
758
|
.label=${e.storyTitleLabel}
|
|
748
|
-
@dpk-commit=${N(
|
|
759
|
+
@dpk-commit=${N(l=>t.dispatch({type:"SET_STORY_NAME",target:i,payload:{name:l}}))}
|
|
749
760
|
></dpk-component-inline-edit>
|
|
750
761
|
</h2>
|
|
751
|
-
${s.statuses.length===0?m:
|
|
762
|
+
${s.statuses.length===0?m:Ha(e,t,a)}
|
|
752
763
|
<section class="sp-field">
|
|
753
764
|
<h3>${e.storyDescriptionLabel}</h3>
|
|
754
765
|
<dpk-component-inline-edit
|
|
@@ -757,10 +768,10 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
757
768
|
class="sp-description"
|
|
758
769
|
.value=${a.description??""}
|
|
759
770
|
.label=${e.storyDescriptionLabel}
|
|
760
|
-
@dpk-commit=${N(
|
|
771
|
+
@dpk-commit=${N(l=>t.dispatch({type:"SET_STORY_DESCRIPTION",target:i,payload:{description:l}}))}
|
|
761
772
|
></dpk-component-inline-edit>
|
|
762
773
|
</section>
|
|
763
|
-
${
|
|
774
|
+
${Wa(e,t,a)} ${Xa(e,t,a)}
|
|
764
775
|
</div>
|
|
765
776
|
<footer class="sp-foot">
|
|
766
777
|
<button
|
|
@@ -771,10 +782,10 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
771
782
|
${he()}<span>${e.deleteStoryButton}</span>
|
|
772
783
|
</button>
|
|
773
784
|
</footer>
|
|
774
|
-
</aside>`},
|
|
785
|
+
</aside>`},Ha=(e,t,a)=>{const s=te(t.state),i=a.statusId;return p`<section class="sp-field">
|
|
775
786
|
<h3 id="sp-status-label">${e.storyStatusLabel}</h3>
|
|
776
787
|
<div class="sp-statuses" role="radiogroup" aria-labelledby="sp-status-label">
|
|
777
|
-
${s.map(n=>
|
|
788
|
+
${s.map(n=>p`<button
|
|
778
789
|
class="sp-status"
|
|
779
790
|
type="button"
|
|
780
791
|
role="radio"
|
|
@@ -783,22 +794,22 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
783
794
|
style=${Y(n.tone)}
|
|
784
795
|
@click=${()=>{n.id!==i&&t.dispatch({type:"SET_STORY_STATUS",target:{type:"story",id:a.id},payload:{statusId:n.id}})}}
|
|
785
796
|
>
|
|
786
|
-
${
|
|
797
|
+
${K(n)}<span>${n.name}</span>
|
|
787
798
|
</button>`)}
|
|
788
799
|
</div>
|
|
789
|
-
</section>`},
|
|
800
|
+
</section>`},Wa=(e,t,a)=>{const s={type:"story",id:a.id},i=a.links??[],n=r=>{r.preventDefault();const o=r.currentTarget instanceof HTMLFormElement?r.currentTarget:null,l=o?.querySelector("input");if(!o||!l)return;const d=l.value.trim();if(!Ot(oe,d).success){l.setAttribute("aria-invalid","true");return}t.dispatch({type:"ADD_STORY_LINK",target:s,payload:{url:d}}).ok&&(l.removeAttribute("aria-invalid"),o.reset())};return p`<section class="sp-field">
|
|
790
801
|
<h3>${e.storyLinksLabel}</h3>
|
|
791
|
-
${i.length===0?m:
|
|
792
|
-
${i.map(r=>{const o=
|
|
802
|
+
${i.length===0?m:p`<ul class="sp-links">
|
|
803
|
+
${i.map(r=>{const o=ee(r.url),l=r.label??o.text;return p`<li data-kind=${o.kind}>
|
|
793
804
|
<a class="sp-link" href=${r.url} target="_blank" rel="noopener noreferrer" title=${r.url}>
|
|
794
805
|
${Ve(o.kind)}
|
|
795
|
-
<span class="sp-link-text">${
|
|
796
|
-
<span class="sp-link-url">${o.title===
|
|
806
|
+
<span class="sp-link-text">${l}</span>
|
|
807
|
+
<span class="sp-link-url">${o.title===l?r.url:o.title}</span>
|
|
797
808
|
</a>
|
|
798
809
|
<button
|
|
799
810
|
class="dpk-icon-btn"
|
|
800
811
|
type="button"
|
|
801
|
-
aria-label=${e.removeLinkAria(
|
|
812
|
+
aria-label=${e.removeLinkAria(l)}
|
|
802
813
|
@click=${()=>t.dispatch({type:"REMOVE_STORY_LINK",target:s,payload:{url:r.url}})}
|
|
803
814
|
>
|
|
804
815
|
${ve()}
|
|
@@ -816,10 +827,10 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
816
827
|
/>
|
|
817
828
|
<button class="dpk-btn" type="submit">${e.addLinkButton}</button>
|
|
818
829
|
</form>
|
|
819
|
-
</section>`},
|
|
820
|
-
<h3>${e.storyCommentsLabel}${s.length>0?
|
|
821
|
-
${s.length===0?m:
|
|
822
|
-
${s.map(n=>
|
|
830
|
+
</section>`},Xa=(e,t,a)=>{const s=t.comments.filter(n=>n.target.type==="story"&&n.target.id===a.id),i=n=>{const r=n.querySelector("textarea"),o=r?.value.trim()??"";if(!r||o==="")return;t.dispatch({type:"comment",target:`story:${a.id}`,payload:{body:o}}).ok&&(r.value="")};return p`<section class="sp-field sp-comments">
|
|
831
|
+
<h3>${e.storyCommentsLabel}${s.length>0?p`<span class="sp-count">${s.length}</span>`:m}</h3>
|
|
832
|
+
${s.length===0?m:p`<ol class="sp-comment-list">
|
|
833
|
+
${s.map(n=>p`<li>${Mt(n)}</li>`)}
|
|
823
834
|
</ol>`}
|
|
824
835
|
<form
|
|
825
836
|
class="sp-comment-form"
|
|
@@ -836,7 +847,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
836
847
|
<button class="dpk-btn dpk-btn--accent" type="submit">${e.commentSubmit}</button>
|
|
837
848
|
</div>
|
|
838
849
|
</form>
|
|
839
|
-
</section>`},
|
|
850
|
+
</section>`},Za=W`
|
|
840
851
|
/* Over the main column's edge, below the header: the page's own controls stay in reach. */
|
|
841
852
|
.story-panel {
|
|
842
853
|
position: absolute;
|
|
@@ -1066,7 +1077,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
1066
1077
|
width: 14px;
|
|
1067
1078
|
height: 14px;
|
|
1068
1079
|
}
|
|
1069
|
-
`,
|
|
1080
|
+
`,Ja=e=>{const t=e.stories.length,a=n=>t===0?0:n/t,s=n=>e.stories.filter(r=>r.statusId===n).length;return{rows:e.statuses.map((n,r)=>{const o=s(n.id);return{id:n.id,name:n.name,tone:n.tone,icon:n.icon,progress:e.statuses.length<=1?1:r/(e.statuses.length-1),previousId:e.statuses[r-1]?.id??null,nextId:e.statuses[r+1]?.id??null,storyCount:o,share:a(o)}})}},Qa=W`
|
|
1070
1081
|
:host {
|
|
1071
1082
|
--dpk-usm-accent: var(--dpk-blue);
|
|
1072
1083
|
}
|
|
@@ -2056,7 +2067,7 @@ import{ac as mt,aL as gt,ad as U,ae as z,af as G,aA as T,ag as c,az as D,ai as f
|
|
|
2056
2067
|
.move-dialog {
|
|
2057
2068
|
min-width: 220px;
|
|
2058
2069
|
}
|
|
2059
|
-
`,q={kind:"idle"},
|
|
2060
|
-
${
|
|
2061
|
-
${
|
|
2062
|
-
`}#n(t,a,s){if(s!=="map")return m;const i=Ka(a);return i?
|
|
2070
|
+
`,q={kind:"idle"},es={width:300,height:240},ts={width:228,height:116};class pt extends fe{static{this.styles=[fe.styles,Qa,je,Be,Za,Lt]}definitionFor(t){return Pe(t)}static{this.properties={mode:{state:!0}}}#a=new Yt(this);#e=new Dt(this);#t=null;constructor(){super(),this.mode=q}renderRegions(t){return{main:this.#i(t)}}updated(){if(super.updated(),this.#s(),this.mode.kind==="picking-icon"){const a=this.renderRoot.querySelector("#icon-menu"),s=this.renderRoot.querySelector(`[data-icon-trigger="${CSS.escape(this.mode.statusId)}"]`);a&&s&&this.#e.open(a,s,ts);return}if(this.mode.kind!=="picking-step")return;const t=this.renderRoot.querySelector("#move-dialog");t&&this.#e.open(t,Rt(this.mode.point.x,this.mode.point.y),es)}#s(){const t=this.renderRoot.querySelector(".page-tabs"),a=t?.querySelector('[aria-selected="true"]'),s=a?.getAttribute("href")??null;!t||!a||s===this.#t||(this.#t=s,Nt(t,a))}#i(t){const a=Q(this.locale),s=Ie(t.navigation);return p`
|
|
2071
|
+
${Pa(a,t,s)} ${this.#r(a,t,s)} ${this.#n(a,t,s)}
|
|
2072
|
+
${za(a,t,this.mode,{confirm:i=>this.#u(i),cancel:()=>this.mode=q})}
|
|
2073
|
+
`}#n(t,a,s){if(s!=="map")return m;const i=Ka(a);return i?qa(t,a,i):m}#r(t,a,s){switch(s){case"milestones":return Ca(t,a,Sa(a.state));case"statuses":return Va(t,a,Ja(a.state),{openFor:this.mode.kind==="picking-icon"?this.mode.statusId:null,toggle:i=>{const n=this.mode.kind==="picking-icon"&&this.mode.statusId===i;this.mode=n?q:{kind:"picking-icon",statusId:i}},close:()=>this.mode=q});case"map":return this.#o(t,a)}}#o(t,a){return Ea({m:t,context:a,drag:this.#a,handlers:{selectStory:s=>this.#d(s),dropOnCell:(s,i)=>this.#l(s,i),dropOnGroupCell:(s,i,n)=>this.#p(s,i,n),dropOnMilestoneRow:(s,i)=>this.#c(s,i)}})}#d(t){const a=this.context(),s=x(a.state,t);s&&a.navigate({step:s.stepId,story:s.id})}#l(t,a){const s=this.context();s.dispatch(Ke(s.state,t,a.item.id,a.hoveredId,a.place))}#p(t,a,s){const i=this.context(),n=x(i.state,s.item.id);if(!n)return;if(n.activityId!==t){this.mode={kind:"picking-step",storyId:n.id,activityId:t,milestoneId:a,point:{x:s.event.clientX,y:s.event.clientY}};return}const r=qe(i.state,t,a,n.id,s.hoveredId,s.place);r&&i.dispatch(r)}#c(t,a){const s=this.context(),i=s.state.milestones.map(r=>r.id),n=We(i,a.item.id,a.hoveredId,a.place);n&&s.dispatch(n)}#u(t){const a=this.mode;if(a.kind!=="picking-step")return;const s=this.context();s.dispatch(He(s.state,a.storyId,a.activityId,t,a.milestoneId)),this.mode=q}}const ct=()=>{ka(),customElements.get("dpk-template-usm")||customElements.define("dpk-template-usm",pt)},as=Object.freeze(Object.defineProperty({__proto__:null,DpkTemplateUsm:pt,IDLE_MODE:q,allUsmIds:B,applyUsmAction:$e,defineUsmElement:ct,describeUsmAction:De,dropAfter:xa,emptyUsmBase:xe,findActivity:D,findMilestone:L,findStep:S,findStory:x,flatSteps:de,parseUsmBase:ke,resolveCellDrop:Ke,resolveGroupDrop:qe,resolveMilestoneDrop:We,resolvePickedStepMove:He,resolveUsmNavigation:Ue,serializeUsmAction:Re,storiesInCell:J,storyCountForStep:we,usmAction:aa,usmActions:v,usmCommentTargets:Ce,usmCurrentTarget:Ye,usmDefinitionFor:Pe,usmHasTarget:ze,usmMessages:Q,usmTargetLabel:Ne,usmTitle:ue},Symbol.toStringTag,{value:"Module"}));export{ct as d,as as i};
|