dev-process-kit 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +24 -22
  2. package/dist/chunks/{shared-D3EKtSkd.js → shared-ARDbveKk.js} +1 -1
  3. package/dist/chunks/shared-B76KHxdC.js +1599 -0
  4. package/dist/chunks/shared-BAvT77LJ.js +3448 -0
  5. package/dist/chunks/shared-By_biQNN.js +556 -0
  6. package/dist/chunks/{shared-D6UXy-Qw.js → shared-C0ctJXPv.js} +99 -46
  7. package/dist/chunks/{shared-utv1engQ.js → shared-CAzb0Ecs.js} +1 -1
  8. package/dist/chunks/shared-CBM3Dha3.js +609 -0
  9. package/dist/chunks/shared-CU-s47EI.js +1874 -0
  10. package/dist/chunks/shared-CtB9MFc6.js +1018 -0
  11. package/dist/chunks/{shared-C4Y4jSXa.js → shared-CvU8S9Oz.js} +4 -2
  12. package/dist/chunks/shared-CzhOCQdU.js +1016 -0
  13. package/dist/chunks/shared-DOi0CODr.js +736 -0
  14. package/dist/chunks/shared-xrCdgpNS.js +1 -0
  15. package/dist/components.js +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/templates/event-storming.js +1 -1
  18. package/dist/templates/example-mapping.js +1 -1
  19. package/dist/templates/grill.js +1 -1
  20. package/dist/templates/plain.js +1 -1
  21. package/dist/templates/prototype.js +1 -1
  22. package/dist/templates/slides.js +1 -1
  23. package/dist/templates/task-board.js +1 -0
  24. package/dist/templates/usm.js +1 -1
  25. package/package.json +3 -2
  26. package/dist/chunks/shared-BFAVBf4I.js +0 -1
  27. package/dist/chunks/shared-BXV4Dm_n.js +0 -522
  28. package/dist/chunks/shared-CQlssGTf.js +0 -692
  29. package/dist/chunks/shared-CcD4vDCE.js +0 -1461
  30. package/dist/chunks/shared-D2QreyJq.js +0 -926
  31. package/dist/chunks/shared-DZlREPaN.js +0 -2537
  32. package/dist/chunks/shared-OdGbSUTa.js +0 -574
  33. package/dist/chunks/shared-TjJWiz7W.js +0 -546
@@ -1,546 +0,0 @@
1
- import{q as g,an as v,v as C,as as M,ad as l,au as x,af as p,ag as u,at as Y,a9 as Ce,aA as Ye,aa as N,ab as P,ac as V,P as Pe,f as Ve,_ as Ge,V as A,R as h,a0 as Z,a5 as Be,k as Ue,$ as W,a6 as qe,a1 as w,av as G,a2 as c,I as ze,A as Fe,K as je,i as He,m as L,a3 as $,J as Ke,B as Je,ax as Xe,T as Q}from"./shared-CcD4vDCE.js";import{s as Ze,D as We}from"./shared-BFAVBf4I.js";import{P as ee,r as Qe,p as et,c as tt,a as it}from"./shared-C4Y4jSXa.js";const y={SET_ACTIVITY_NAME:g("SET_ACTIVITY_NAME","activity",v({name:p(l(),u(1))})),SET_STEP_NAME:g("SET_STEP_NAME","step",v({name:p(l(),u(1))})),REORDER_STEP:g("REORDER_STEP","step",v({after:M(l())}),{mode:"sequence"}),ADD_ACTIVITY:g("ADD_ACTIVITY","page",v({id:x,name:p(l(),u(1))}),{dedupeKey:C}),ADD_STEP:g("ADD_STEP","activity",v({id:x,name:p(l(),u(1))}),{dedupeKey:C}),DELETE_ACTIVITY:g("DELETE_ACTIVITY","activity",v({})),DELETE_STEP:g("DELETE_STEP","step",v({})),SET_STORY_NAME:g("SET_STORY_NAME","story",v({name:p(l(),u(1))})),SET_STORY_DESCRIPTION:g("SET_STORY_DESCRIPTION","story",v({description:l()})),SET_STORY_MILESTONE:g("SET_STORY_MILESTONE","story",v({milestoneId:M(l())})),MOVE_STORY:g("MOVE_STORY","story",v({activityId:p(l(),u(1)),stepId:p(l(),u(1)),milestoneId:M(l()),after:M(l())}),{mode:"sequence"}),REORDER_STORY:g("REORDER_STORY","story",v({after:M(l())}),{mode:"sequence"}),ADD_STORY:g("ADD_STORY","step",v({id:x,name:p(l(),u(1)),activityId:p(l(),u(1)),milestoneId:Y(l())}),{dedupeKey:C}),DELETE_STORY:g("DELETE_STORY","story",v({})),SET_MILESTONE_NAME:g("SET_MILESTONE_NAME","milestone",v({name:p(l(),u(1))})),ADD_MILESTONE:g("ADD_MILESTONE","page",v({id:x,name:p(l(),u(1))}),{dedupeKey:C}),DELETE_MILESTONE:g("DELETE_MILESTONE","milestone",v({})),REORDER_MILESTONE:g("REORDER_MILESTONE","milestone",v({after:M(l())}),{mode:"sequence"})},ot={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}})},nt=N({id:p(l(),u(1)),name:p(l(),u(1))}),rt=N({id:x,name:p(l(),u(1)),steps:P(V(nt),[])}),at=N({id:p(l(),u(1)),name:p(l(),u(1))}),st=N({id:x,name:p(l(),u(1)),description:Y(l()),activityId:p(l(),u(1)),stepId:p(l(),u(1)),milestoneId:Y(l())}),dt=N({title:Y(l()),activities:P(V(rt),[]),milestones:P(V(at),[]),stories:P(V(st),[])}),te=e=>{const t=Ce(dt,e),i=new Map;for(const a of t.activities)for(const s of a.steps)i.set(s.id,a.id);const o=new Set(t.milestones.map(a=>a.id)),n=new Set,r=(a,s)=>{if(n.has(s))throw new Error(`duplicate id "${s}" in ${a}`);n.add(s)};for(const a of t.activities){r("activities",a.id);for(const s of a.steps)r("steps",s.id)}for(const a of t.milestones)r("milestones",a.id);for(const a of t.stories){r("stories",a.id);const s=i.get(a.stepId);if(s===void 0||s!==a.activityId)throw new Error(`story "${a.id}" references unknown activityId/stepId`);if(a.milestoneId!==void 0&&!o.has(a.milestoneId))throw new Error(`story "${a.id}" references unknown milestoneId "${a.milestoneId}"`)}return t},ie=()=>({activities:[],milestones:[],stories:[]}),_=(e,t)=>{if(t!==void 0)return e.activities.find(i=>i.id===t)},F=(e,t)=>`${e}.${t}`,E=(e,t)=>{if(t===void 0)return;const i=Ye(t,2);if(i){const[o,n]=i;if(o===void 0||n===void 0)return;const r=e.activities.find(s=>s.id===o),a=r?.steps.find(s=>s.id===n);return r&&a?{activity:r,step:a}:void 0}if(!t.includes("."))for(const o of e.activities){const n=o.steps.find(r=>r.id===t);if(n)return{activity:o,step:n}}},I=(e,t)=>{if(t!==void 0)return e.milestones.find(i=>i.id===t)},S=(e,t)=>{if(t!==void 0)return e.stories.find(i=>i.id===t)},oe=e=>e.activities.flatMap(t=>t.steps.map(i=>({activity:t,step:i}))),lt=e=>({...e,stories:Ze(e.stories,[t=>`${t.activityId}/${t.stepId}/${t.milestoneId??""}`])}),B=(e,t,i)=>e.stories.filter(o=>o.stepId===t&&(o.milestoneId??void 0)===i),ne=(e,t,i)=>e.stories.filter(o=>o.activityId===t&&(o.milestoneId??void 0)===i),R=e=>[...e.activities.map(t=>t.id),...e.activities.flatMap(t=>t.steps.map(i=>i.id)),...e.milestones.map(t=>t.id),...e.stories.map(t=>t.id)],ct=(e,t)=>e.stories.filter(i=>i.stepId===t).length,re=(e,t)=>{const i=Pe(y,t);if(i===null)return null;const o=i.target.id;switch(i.type){case"SET_ACTIVITY_NAME":{const{name:n}=i.payload;return e.activities.some(r=>r.id===o)?{...e,activities:e.activities.map(r=>r.id===o?{...r,name:n}:r)}:null}case"SET_STEP_NAME":{const{name:n}=i.payload,r=E(e,o);return r?{...e,activities:e.activities.map(a=>a.id===r.activity.id?{...a,steps:a.steps.map(s=>s.id===r.step.id?{...s,name:n}:s)}:a)}:null}case"REORDER_STEP":{const{after:n}=i.payload,r=E(e,o);if(!r)return null;const a=n===null?null:E(e,n);if(n!==null&&(!a||a.activity.id!==r.activity.id))return null;const s=se(r.activity.steps,r.step.id,a?.step.id??null);return s===null?null:{...e,activities:e.activities.map(d=>d.id===r.activity.id?{...d,steps:s}:d)}}case"ADD_ACTIVITY":{const n=i.payload;return e.activities.some(r=>r.id===n.id)?e:{...e,activities:[...e.activities,{id:n.id,name:n.name,steps:[]}]}}case"ADD_STEP":{const n=i.payload,r=e.activities.find(a=>a.id===o);return r?r.steps.some(a=>a.id===n.id)?e:{...e,activities:e.activities.map(a=>a.id===o?{...a,steps:[...a.steps,{id:n.id,name:n.name}]}:a)}:null}case"DELETE_ACTIVITY":{const n=e.activities.find(a=>a.id===o);if(!n)return null;const r=new Set(n.steps.map(a=>a.id));return{...e,activities:e.activities.filter(a=>a.id!==o),stories:e.stories.filter(a=>a.activityId!==o&&!r.has(a.stepId))}}case"DELETE_STEP":{const n=E(e,o);return n?{...e,activities:e.activities.map(r=>r.id===n.activity.id?{...r,steps:r.steps.filter(a=>a.id!==n.step.id)}:r),stories:e.stories.filter(r=>r.activityId!==n.activity.id||r.stepId!==n.step.id)}:null}case"SET_STORY_NAME":{const{name:n}=i.payload;return j(e,o,r=>({...r,name:n}))}case"SET_STORY_DESCRIPTION":{const{description:n}=i.payload;return j(e,o,r=>({...r,description:n}))}case"SET_STORY_MILESTONE":{const{milestoneId:n}=i.payload;return n!==null&&!I(e,n)?null:j(e,o,r=>n===null?H(r):{...r,milestoneId:n})}case"MOVE_STORY":{const n=i.payload,r=S(e,o);if(!r)return null;const a=E(e,n.stepId);if(!a||a.activity.id!==n.activityId||n.milestoneId!==null&&!I(e,n.milestoneId))return null;const s=n.milestoneId??void 0,d=s===void 0?{...H(r),activityId:a.activity.id,stepId:a.step.id}:{...r,activityId:a.activity.id,stepId:a.step.id,milestoneId:s};return ae(e,d,n.after)}case"REORDER_STORY":{const{after:n}=i.payload,r=S(e,o);return r?ae(e,r,n,!0):null}case"ADD_STORY":{const n=i.payload,r=E(e,t.target.id);if(!r||r.activity.id!==n.activityId||n.milestoneId!==void 0&&!I(e,n.milestoneId))return null;if(e.stories.some(s=>s.id===n.id))return e;const a={id:n.id,name:n.name,activityId:n.activityId,stepId:r.step.id,...n.milestoneId===void 0?{}:{milestoneId:n.milestoneId}};return{...e,stories:[...e.stories,a]}}case"DELETE_STORY":return e.stories.some(n=>n.id===o)?{...e,stories:e.stories.filter(n=>n.id!==o)}:null;case"SET_MILESTONE_NAME":{const{name:n}=i.payload;return e.milestones.some(r=>r.id===o)?{...e,milestones:e.milestones.map(r=>r.id===o?{...r,name:n}:r)}:null}case"ADD_MILESTONE":{const n=i.payload;return e.milestones.some(r=>r.id===n.id)?e:{...e,milestones:[...e.milestones,{id:n.id,name:n.name}]}}case"DELETE_MILESTONE":return e.milestones.some(n=>n.id===o)?{...e,milestones:e.milestones.filter(n=>n.id!==o),stories:e.stories.map(n=>n.milestoneId===o?H(n):n)}:null;case"REORDER_MILESTONE":{const{after:n}=i.payload,r=se(e.milestones,o,n);return r===null?null:{...e,milestones:r}}default:return Ve(i)}},j=(e,t,i)=>e.stories.some(o=>o.id===t)?{...e,stories:e.stories.map(o=>o.id===t?i(o):o)}:null,H=e=>{const{milestoneId:t,...i}=e;return i},ae=(e,t,i,o=!1)=>{const n=t.milestoneId??void 0,r=e.stories.filter(f=>f.id!==t.id),a=r.filter(f=>f.stepId===t.stepId&&(f.milestoneId??void 0)===n);if(i!==null){const f=r.find(O=>O.id===i);if(!f||f.stepId!==t.stepId||(f.milestoneId??void 0)!==n)return null;if(o){const O=S(e,t.id);if(!O||f.stepId!==O.stepId||(f.milestoneId??void 0)!==(O.milestoneId??void 0))return null}}const s=i===null?[t,...a]:de(a,t,i),d=r.findIndex(f=>f.stepId===t.stepId&&(f.milestoneId??void 0)===n),m=new Set(a.map(f=>f.id)),T=r.filter(f=>!m.has(f.id)),b=d<0?T.length:Math.min(d,T.length),k=[...T.slice(0,b),...s,...T.slice(b)];return{...e,stories:k}},se=(e,t,i)=>{if(!e.some(r=>r.id===t)||i!==null&&!e.some(r=>r.id===i))return null;if(i===t)return[...e];const o=e.find(r=>r.id===t);if(o===void 0)return null;const n=e.filter(r=>r.id!==t);return de(n,o,i)},de=(e,t,i)=>{const o=[...e],n=i===null?-1:o.findIndex(r=>r.id===i);return o.splice(n+1,0,t),o},U=Ge({en:{renameActivity:"Rename activity",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",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",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",moveDialogLabel:"Step to move to",moveDialogSelectLabel:"Destination",moveConfirm:"Move",moveCancel:"Cancel",storyNameLabel:"Story name",editTitleAria:"Edit title",commentAria:"Comment",deleteAria:"Delete",newActivityName:"New activity",newStepName:"New step",newMilestoneName:"New milestone",newStoryName:"New story"},ja:{renameActivity:"\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u540D\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",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",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",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",storyNameLabel:"\u30B9\u30C8\u30FC\u30EA\u30FC\u540D",editTitleAria:"\u30BF\u30A4\u30C8\u30EB\u3092\u7DE8\u96C6",commentAria:"\u30B3\u30E1\u30F3\u30C8",deleteAria:"\u524A\u9664",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"}}),q=(e,t,i)=>{const o=typeof i=="string"?i:"",n=typeof t=="string"?t:void 0;return n===void 0?e.toValue(o):e.fromTo(n,o)},K=(e,t)=>typeof t=="string"?e.afterName(t):e.toFront,pt={SET_ACTIVITY_NAME:(e,t,i)=>({title:e.renameActivity,tone:"update",body:q(e,_(i,t.target.id)?.name,h(y.SET_ACTIVITY_NAME,t).name??"")}),SET_STEP_NAME:(e,t,i)=>({title:e.renameStep,tone:"update",body:q(e,E(i,t.target.id)?.step.name,h(y.SET_STEP_NAME,t).name??"")}),REORDER_STEP:(e,t)=>({title:e.reorderStep,tone:"move",body:K(e,h(y.REORDER_STEP,t).after)}),ADD_ACTIVITY:(e,t)=>({title:e.addActivity,tone:"create",body:e.added(String(h(y.ADD_ACTIVITY,t).name??""))}),ADD_STEP:(e,t)=>({title:e.addStep,tone:"create",body:e.added(String(h(y.ADD_STEP,t).name??""))}),DELETE_ACTIVITY:(e,t,i)=>({title:e.deleteActivity,tone:"delete",body:e.removed(_(i,t.target.id)?.name??t.target.id)}),DELETE_STEP:(e,t,i)=>({title:e.deleteStep,tone:"delete",body:e.removed(E(i,t.target.id)?.step.name??t.target.id)}),SET_STORY_NAME:(e,t,i)=>({title:e.renameStory,tone:"update",body:q(e,S(i,t.target.id)?.name,h(y.SET_STORY_NAME,t).name??"")}),SET_STORY_DESCRIPTION:(e,t)=>({title:e.updateStoryDescription,tone:"update",body:e.toValue(String(h(y.SET_STORY_DESCRIPTION,t).description??"").slice(0,90))}),SET_STORY_MILESTONE:(e,t,i)=>{const o=h(y.SET_STORY_MILESTONE,t).milestoneId;return{title:e.changeMilestone,tone:"move",body:o==null?e.toUnassigned:e.toName(I(i,String(o))?.name??String(o))}},MOVE_STORY:(e,t,i)=>({title:e.moveStory,tone:"move",body:e.toName(E(i,String(h(y.MOVE_STORY,t).stepId))?.step.name??String(h(y.MOVE_STORY,t).stepId??""))}),REORDER_STORY:(e,t)=>({title:e.reorderStory,tone:"move",body:K(e,h(y.REORDER_STORY,t).after)}),ADD_STORY:(e,t)=>({title:e.addStory,tone:"create",body:e.added(String(h(y.ADD_STORY,t).name??""))}),DELETE_STORY:(e,t,i)=>({title:e.deleteStory,tone:"delete",body:e.removed(S(i,t.target.id)?.name??t.target.id)}),SET_MILESTONE_NAME:(e,t,i)=>({title:e.renameMilestone,tone:"update",body:q(e,I(i,t.target.id)?.name,h(y.SET_MILESTONE_NAME,t).name??"")}),ADD_MILESTONE:(e,t)=>({title:e.addMilestone,tone:"create",body:e.added(String(h(y.ADD_MILESTONE,t).name??""))}),DELETE_MILESTONE:(e,t,i)=>({title:e.deleteMilestone,tone:"delete",body:e.removed(I(i,t.target.id)?.name??t.target.id)}),REORDER_MILESTONE:(e,t)=>({title:e.reorderMilestone,tone:"move",body:K(e,h(y.REORDER_MILESTONE,t).after)})},le=(e,t,i,o)=>{let n;try{const r=pt[t.type];n=r?r(e,t,o??i):{title:t.type,tone:"meta"}}catch{n={title:t.type,tone:"meta"}}return{title:n.title,targetLabel:pe(e,i,t.target),tone:n.tone,...n.body===void 0?{}:{summary:n.body}}},ce=e=>`${e.type} ${A(e.target)} ${JSON.stringify(e.payload)}`,pe=(e,t,i)=>{try{switch(i.type){case"activity":{const o=_(t,i.id);return o?e.targetLabel(e.activityGroup,o.name):e.targetMissing(e.activityGroup,i.id)}case"step":{const o=E(t,i.id)?.step;return o?e.targetLabel(e.stepGroup,o.name):e.targetMissing(e.stepGroup,i.id)}case"story":{const o=S(t,i.id);return o?e.targetLabel(e.storyGroup,o.name):e.targetMissing(e.storyGroup,i.id)}case"milestone":{const o=I(t,i.id);return o?e.targetLabel(e.milestoneGroup,o.name):e.targetMissing(e.milestoneGroup,i.id)}case"page":return e.targetLabel(e.mapGroup,J(t));default:return`${i.type} \xB7 ${i.id}`}}catch{return`${i.type} \xB7 ${i.id}`}},ue=(e,t,i)=>{const o=[{value:"page:usm",label:e.wholeMap,group:e.mapGroup}];for(const n of t.activities){o.push({value:A({type:"activity",id:n.id}),label:n.name,group:e.activityGroup});for(const r of n.steps)o.push({value:A({type:"step",id:F(n.id,r.id)}),label:`${n.name} \u203A ${r.name}`,group:e.stepGroup})}for(const n of t.milestones)o.push({value:A({type:"milestone",id:n.id}),label:n.name,group:e.milestoneGroup});for(const n of t.stories)o.push({value:A({type:"story",id:n.id}),label:n.name,group:e.storyGroup});return o},me=(e,t,i)=>{const o=t.stories.find(n=>n.id===i.story);if(o)return{value:A({type:"story",id:o.id}),label:o.name,group:e.storyGroup};for(const n of t.activities){const r=n.steps.find(a=>a.id===i.step);if(r)return{value:A({type:"step",id:F(n.id,r.id)}),label:r.name,group:e.stepGroup}}return null},J=e=>e.title??"User Story Mapping",ge=(e,t)=>{const i=E(e,t.step),o=i?.activity??_(e,t.activity)??e.activities[0],n=i?.step??o?.steps.find(s=>s.id===t.step)??o?.steps[0],r=S(e,t.story),a={...t};return o?a.activity=o.id:delete a.activity,n?a.step=n.id:delete a.step,r?a.story=r.id:delete a.story,a.view=t.view==="group"?"group":"activity",a},ve=(e,t)=>{switch(t.type){case"activity":return _(e,t.id)!==void 0;case"step":return E(e,t.id)!==void 0;case"story":return S(e,t.id)!==void 0;case"milestone":return I(e,t.id)!==void 0;case"page":return!0;default:return!1}},ye=e=>{const t=U(e);return{name:"usm",label:"User Story Mapping",parseBase:te,emptyBase:ie,actions:y,apply:re,canonicalState:lt,hasTarget:ve,canonicalTarget:(i,o)=>{if(o.type!=="step")return o;const n=E(i,o.id);return n?{...o,id:F(n.activity.id,n.step.id)}:o},describe:(i,o,n)=>le(t,i,o,n),serialize:ce,resolveNavigation:ge,commentTargets:(i,o)=>ue(t,i),currentTarget:(i,o)=>me(t,i,o),title:J}},ut={width:300,height:260},mt=Z`
2
- :host {
3
- display: grid;
4
- gap: 5px;
5
- background: var(--dpk-paper-raised);
6
- border: 1px solid var(--dpk-rule);
7
- border-radius: var(--dpk-radius);
8
- box-shadow: var(--dpk-shadow-xs);
9
- padding: 10px 12px 8px;
10
- cursor: pointer;
11
- transition:
12
- box-shadow 200ms ease,
13
- transform 200ms ease,
14
- border-color 200ms ease;
15
- }
16
-
17
- :host(:hover) {
18
- border-color: var(--dpk-rule-strong);
19
- box-shadow: var(--dpk-shadow-sm);
20
- transform: translateY(-1px);
21
- }
22
-
23
- :host([focused]) {
24
- border-color: var(--dpk-blue);
25
- box-shadow:
26
- var(--dpk-shadow),
27
- 0 0 0 2px rgba(51, 102, 204, 0.12);
28
- }
29
-
30
- :host([dragging]) {
31
- opacity: 0.45;
32
- transform: none;
33
- }
34
-
35
- .card-name {
36
- font-size: 13px;
37
- font-weight: 620;
38
- letter-spacing: -0.01em;
39
- line-height: 1.3;
40
- }
41
-
42
- .card-text {
43
- font-size: 11.5px;
44
- line-height: 1.5;
45
- color: var(--dpk-ink-soft);
46
- white-space: pre-wrap;
47
- }
48
-
49
- .card-tools {
50
- display: flex;
51
- gap: 2px;
52
- align-items: center;
53
- justify-content: flex-end;
54
- margin-top: 2px;
55
- padding-top: 5px;
56
- border-top: 1px solid var(--dpk-rule);
57
- opacity: 0;
58
- transition: opacity 150ms ease;
59
- }
60
-
61
- :host(:hover) .card-tools,
62
- :host([focused]) .card-tools,
63
- :host([data-mode='editing']) .card-tools,
64
- :host([data-mode='commenting']) .card-tools {
65
- opacity: 1;
66
- }
67
- `;class gt extends Be{static{this.styles=[Ue,mt,W]}static{this.properties={story:{attribute:!1},notes:{attribute:!1},mode:{type:String,reflect:!0,attribute:"data-mode"},focused:{type:Boolean,reflect:!0},dragging:{type:Boolean,reflect:!0},onIntent:{attribute:!1}}}#t="";#n=new ee(this);#o=new qe(this);constructor(){super(),this.story=null,this.notes=[],this.mode="view",this.focused=!1,this.dragging=!1,this.onIntent=null,this.addEventListener("click",()=>this.#e({kind:"select"}))}updated(t){if(t.has("mode")&&(this.mode!=="commenting"&&(this.#t=""),this.mode==="editing"&&this.renderRoot.querySelector("dpk-component-inline-edit")?.startEditing()),this.mode!=="commenting")return;const i=this.renderRoot.querySelector(".comment-pop"),o=this.renderRoot.querySelector('[data-role="comment"]');i&&o&&this.#n.open(i,o,ut)}render(){const t=this.story;if(!t)return w;const i=U(this.#o.locale),o=this.mode==="editing",n=this.mode==="commenting";return c`
68
- <div class="card-name">
69
- ${o?c`<dpk-component-inline-edit
70
- .value=${t.name}
71
- .label=${i.storyNameLabel}
72
- @dpk-commit=${G(r=>this.#e({kind:"rename",name:r}))}
73
- ></dpk-component-inline-edit>`:c`<span>${t.name}</span>`}
74
- </div>
75
- ${t.description?c`<div class="card-text">${t.description}</div>`:w}
76
- <div class="card-tools">
77
- <button
78
- class="dpk-icon-btn"
79
- type="button"
80
- data-role="edit"
81
- aria-label=${i.editTitleAria}
82
- data-active=${String(o)}
83
- @click=${this.#i({kind:"toggle-edit"})}
84
- >
85
- ${ze()}
86
- </button>
87
- <button
88
- class="dpk-icon-btn"
89
- type="button"
90
- data-role="comment"
91
- aria-label=${i.commentAria}
92
- data-active=${String(n)}
93
- @click=${this.#i({kind:"toggle-comment"})}
94
- >
95
- ${Fe()}
96
- ${this.notes.length>0?c`<span class="dpk-icon-badge">${this.notes.length}</span>`:w}
97
- </button>
98
- <button
99
- class="dpk-icon-btn"
100
- type="button"
101
- data-role="delete"
102
- aria-label=${i.deleteAria}
103
- @click=${this.#i({kind:"delete"})}
104
- >
105
- ${je()}
106
- </button>
107
- </div>
108
- ${n?this.#r():w}
109
- `}#r(){return Qe(tt(this.#o.locale),et(this.#t,this.notes.map(He)),t=>{t.kind==="input"?(this.#t=t.body,this.requestUpdate()):this.#e(t)})}#i(t){return i=>{i.stopPropagation(),this.#e(t)}}#e(t){this.onIntent?.(t)}}const vt=()=>{customElements.get("dpk-internal-usm-story-card")||customElements.define("dpk-internal-usm-story-card",gt)},z=(e,t,i)=>{const o=e.at(-1)??null;if(t===null||i==="end")return o;const n=e.indexOf(t);return n<0?o:i==="after"?t:n===0?null:e.at(n-1)??null},fe=(e,t,i,o,n)=>{const r=B(e,t.stepId,t.milestoneId).filter(a=>a.id!==i).map(a=>a.id);return{type:"MOVE_STORY",target:{type:"story",id:i},payload:{activityId:t.activityId,stepId:t.stepId,milestoneId:t.milestoneId??null,after:z(r,o,n)}}},he=(e,t,i,o,n,r)=>{const a=S(e,o);if(!a||a.activityId!==t)return null;const s=ne(e,t,i).filter(d=>d.id!==o).map(d=>d.id);return{type:"MOVE_STORY",target:{type:"story",id:o},payload:{activityId:t,stepId:a.stepId,milestoneId:i??null,after:z(s,n,r)}}},be=(e,t,i,o,n)=>{const r=B(e,o,n).filter(a=>a.id!==t);return{type:"MOVE_STORY",target:{type:"story",id:t},payload:{activityId:i,stepId:o,milestoneId:n??null,after:r.at(-1)?.id??null}}},Ee=(e,t,i,o)=>{if(!e.includes(t))return null;const n=e.filter(r=>r!==t);return{type:"REORDER_MILESTONE",target:{type:"milestone",id:t},payload:{after:z(n,i,o)}}},Se=(e,t)=>{const i=L("new-activity",R(t.state));if(!t.dispatch({type:"ADD_ACTIVITY",target:{type:"page",id:"usm"},payload:{id:i,name:e.newActivityName}}).ok)return;const n=L("new-step",[...R(t.state),i]);t.dispatch({type:"ADD_STEP",target:{type:"activity",id:i},payload:{id:n,name:e.newStepName}}),t.navigate({activity:i,step:null,story:null})},yt=(e,t,i)=>{const o=L("new-step",R(t.state));t.dispatch({type:"ADD_STEP",target:{type:"activity",id:i},payload:{id:o,name:e.newStepName}})},ft=(e,t)=>{const i=L("new-milestone",R(t.state));t.dispatch({type:"ADD_MILESTONE",target:{type:"page",id:"usm"},payload:{id:i,name:e.newMilestoneName}})},Te=(e,t,i,o,n)=>{const r=L("new-story",R(t.state));t.dispatch({type:"ADD_STORY",target:{type:"step",id:o},payload:{id:r,name:e.newStoryName,activityId:i,...n===void 0?{}:{milestoneId:n}}}).ok&&t.navigate({activity:i,step:o,story:r})},D={kind:"idle"},X=(e,t)=>e.kind!=="idle"&&e.storyId===t,ke=(e,t)=>X(e,t)&&(e.kind==="editing"||e.kind==="commenting")?e.kind:"view",$e=(e,t,i)=>{switch(i.kind){case"toggle-edit":return e.kind==="editing"&&e.storyId===t?D:{kind:"editing",storyId:t};case"toggle-comment":return e.kind==="commenting"&&e.storyId===t?D:{kind:"commenting",storyId:t};case"rename":case"comment":case"dismiss":case"delete":return X(e,t)?D:e;case"select":return e}},Ie=(e,t)=>[...t.milestones.map(({id:i,name:o})=>({id:i,name:o})),{id:void 0,name:e.unassigned}],ht=(e,t)=>c`
110
- <div class="empty">
111
- <h2>${e.emptyTitle}</h2>
112
- <p>${e.emptyBody}</p>
113
- <button class="dpk-btn dpk-btn--accent" type="button" @click=${()=>Se(e,t)}>
114
- ${e.firstActivityButton}
115
- </button>
116
- </div>
117
- `,bt=e=>{const{m:t,context:i}=e,o=oe(i.state);if(o.length===0)return ht(t,i);const n=i.navigation.view==="group"?"group":"activity";return c`
118
- <div class="view-tabs" role="tablist" aria-label=${t.groupingLabel}>
119
- ${we(i,"activity",n,t.activityGroup)}
120
- ${we(i,"group",n,t.groupViewTab)}
121
- </div>
122
- ${n==="activity"?Et(e,o):St(e)}
123
- `},we=(e,t,i,o)=>{const n=t===i;return c`<a
124
- class="tab"
125
- role="tab"
126
- data-current=${String(n)}
127
- aria-selected=${n?"true":"false"}
128
- href=${e.hashFor({view:t})}
129
- >${o}</a
130
- >`},Et=(e,t)=>{const{m:i,context:o}=e,{state:n}=o,r=Ie(i,n);return c`
131
- <div class="map-scroll">
132
- <div class="map" style=${`--cols:${t.length+1}`} data-testid="usm-map">
133
- <div class="map-row">
134
- <div class="corner">
135
- <span class="dpk-label">${i.groupAxisHeader}</span>
136
- </div>
137
- ${$(n.activities,a=>a.id,a=>_e(i,o,a.id,`grid-column: span ${Math.max(a.steps.length,1)}`))}
138
- ${De(i,o)}
139
- </div>
140
- <div class="map-row">
141
- ${Ae(i)}
142
- ${$(t,({activity:a,step:s})=>`${a.id}.${s.id}`,({step:a})=>c`
143
- <div class="col-head" data-current=${String(o.navigation.step===a.id)}>
144
- <h4>
145
- <dpk-component-inline-edit
146
- .value=${a.name}
147
- .label=${i.stepNameLabel}
148
- @dpk-commit=${G(s=>o.dispatch({type:"SET_STEP_NAME",target:{type:"step",id:a.id},payload:{name:s}}))}
149
- @click=${s=>s.stopPropagation()}
150
- ></dpk-component-inline-edit>
151
- </h4>
152
- </div>
153
- `)}
154
- <div class="corner"><span class="dpk-label">—</span></div>
155
- </div>
156
- ${$(r,a=>a.id,a=>xe(e,a,c`${$(t,({activity:s,step:d})=>`${s.id}.${d.id}`,({activity:s,step:d})=>Tt(e,{activityId:s.id,stepId:d.id,milestoneId:a.id}))}`))}
157
- ${Me(i,o,t.length)}
158
- </div>
159
- </div>
160
- `},St=e=>{const{m:t,context:i}=e,{state:o}=i,n=Ie(t,o);return c`
161
- <div class="map-scroll">
162
- <div class="map" style=${`--cols:${o.activities.length+1}`} data-testid="usm-map-group">
163
- <div class="map-row">
164
- ${Ae(t)}
165
- ${$(o.activities,r=>r.id,r=>_e(t,i,r.id))}
166
- ${De(t,i)}
167
- </div>
168
- ${$(n,r=>r.id,r=>xe(e,r,c`${$(o.activities,a=>a.id,a=>kt(e,a.id,r.id))}`))}
169
- ${Me(t,i,o.activities.length)}
170
- </div>
171
- </div>
172
- `},Ae=e=>c`<div class="corner">
173
- <span class="dpk-label">${e.activityAxis}</span>
174
- <span class="dpk-label">${e.milestoneAxis}</span>
175
- </div>`,_e=(e,t,i,o)=>{const n=t.state.activities.find(r=>r.id===i);return n?c`
176
- <div class="act-head" style=${o??w}>
177
- <dpk-component-inline-edit
178
- .value=${n.name}
179
- .label=${e.activityNameLabel}
180
- @dpk-commit=${G(r=>t.dispatch({type:"SET_ACTIVITY_NAME",target:{type:"activity",id:n.id},payload:{name:r}}))}
181
- ></dpk-component-inline-edit>
182
- <button
183
- class="dpk-icon-btn"
184
- type="button"
185
- aria-label=${e.addStepAria}
186
- @click=${()=>yt(e,t,n.id)}
187
- >
188
- ${Ke()}
189
- </button>
190
- </div>
191
- `:c`<div class="act-head"></div>`},De=(e,t)=>c`<div class="act-head">
192
- <button class="dpk-btn dpk-btn--ghost" type="button" @click=${()=>Se(e,t)}>
193
- ${e.newActivityButton}
194
- </button>
195
- </div>`,Me=(e,t,i)=>c`<div class="map-row">
196
- <div class="row-head">
197
- <button class="dpk-btn dpk-btn--ghost" type="button" @click=${()=>ft(e,t)}>
198
- ${e.newMilestoneButton}
199
- </button>
200
- </div>
201
- ${Array.from({length:i+1},()=>c`<div class="cell"></div>`)}
202
- </div>`,xe=(e,t,i)=>{const{m:o,context:n,drag:r,handlers:a}=e,s=t.id;if(s===void 0)return c`<div class="map-row" data-draggable="false" data-row-dragging="false" data-row-drop="false">
203
- <div class="row-head" data-milestone="" draggable="false"><span>${t.name}</span></div>
204
- ${i}
205
- <div class="cell"></div>
206
- </div>`;const d=`row:${s}`,m=r.target({key:d,accepts:"milestone",hovered:It,onDrop:b=>a.dropOnMilestoneRow(s,b)}),T=r.source({type:"milestone",id:s});return c`
207
- <div
208
- class="map-row"
209
- data-draggable="true"
210
- data-row-dragging=${String(r.isDragging("milestone",s))}
211
- data-row-drop=${String(r.isOver(d))}
212
- @dragenter=${m.dragenter}
213
- @dragover=${m.dragover}
214
- @dragleave=${m.dragleave}
215
- @drop=${m.drop}
216
- >
217
- <div
218
- class="row-head"
219
- data-milestone=${s}
220
- draggable="true"
221
- @dragstart=${b=>{$t(b),T.dragstart(b)}}
222
- @dragend=${T.dragend}
223
- >
224
- <span class="row-grip" aria-hidden="true">${Je()}</span
225
- ><dpk-component-inline-edit
226
- draggable="false"
227
- .value=${t.name}
228
- .label=${o.milestoneNameLabel}
229
- @dpk-commit=${G(b=>n.dispatch({type:"SET_MILESTONE_NAME",target:{type:"milestone",id:s},payload:{name:b}}))}
230
- ></dpk-component-inline-edit>
231
- </div>
232
- ${i}
233
- <div class="cell"></div>
234
- </div>
235
- `},Tt=(e,t)=>{const{m:i,context:o,drag:n,handlers:r}=e,a=B(o.state,t.stepId,t.milestoneId),s=`cell:${t.stepId}:${t.milestoneId??""}`,d=n.target({key:s,accepts:"story",hovered:Oe,onDrop:m=>r.dropOnCell(t,m)});return c`
236
- <div
237
- class="cell"
238
- data-step=${t.stepId}
239
- data-milestone=${t.milestoneId??""}
240
- data-drop=${String(n.isOver(s))}
241
- @dragenter=${d.dragenter}
242
- @dragover=${d.dragover}
243
- @dragleave=${d.dragleave}
244
- @drop=${d.drop}
245
- >
246
- <div class="card-list" data-testid=${`cell-${t.stepId}-${t.milestoneId??"unassigned"}`}>
247
- ${$(a,m=>m.id,m=>Re(e,m))}
248
- </div>
249
- <button
250
- class="dpk-btn dpk-btn--ghost add-cell"
251
- type="button"
252
- title=${i.addStoryCellAria}
253
- @click=${()=>Te(i,o,t.activityId,t.stepId,t.milestoneId)}
254
- >
255
- ${i.addCellButton}
256
- </button>
257
- </div>
258
- `},kt=(e,t,i)=>{const{m:o,context:n,drag:r,handlers:a}=e,{state:s}=n,d=ne(s,t,i),m=s.activities.find(k=>k.id===t)?.steps[0],T=`group:${t}:${i??""}`,b=r.target({key:T,accepts:"story",hovered:Oe,onDrop:k=>a.dropOnGroupCell(t,i,k)});return c`
259
- <div
260
- class="cell"
261
- data-activity=${t}
262
- data-milestone=${i??""}
263
- data-drop=${String(r.isOver(T))}
264
- @dragenter=${b.dragenter}
265
- @dragover=${b.dragover}
266
- @dragleave=${b.dragleave}
267
- @drop=${b.drop}
268
- >
269
- <div class="card-list" data-testid=${`group-cell-${t}-${i??"unassigned"}`}>
270
- ${$(d,k=>k.id,k=>Re(e,k))}
271
- </div>
272
- ${m?c`<button
273
- class="dpk-btn dpk-btn--ghost add-cell"
274
- type="button"
275
- aria-label=${o.addStoryCellAria}
276
- @click=${()=>Te(o,n,t,m.id,i)}
277
- >
278
- ${o.addCellButton}
279
- </button>`:w}
280
- </div>
281
- `},Re=(e,t)=>{const{context:i,mode:o,drag:n,handlers:r}=e,a=i.comments.filter(d=>d.target.type==="story"&&d.target.id===t.id),s=n.source({type:"story",id:t.id});return c`<dpk-internal-usm-story-card
282
- data-story=${t.id}
283
- draggable="true"
284
- .story=${t}
285
- .notes=${a}
286
- .mode=${ke(o,t.id)}
287
- .onIntent=${d=>r.cardIntent(t.id,d)}
288
- ?focused=${i.navigation.story===t.id}
289
- ?dragging=${n.isDragging("story",t.id)}
290
- @dragstart=${s.dragstart}
291
- @dragend=${s.dragend}
292
- ></dpk-internal-usm-story-card>`},Oe=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},$t=e=>{const i=(e.currentTarget instanceof Element?e.currentTarget:null)?.closest(".map-row");if(!i||!e.dataTransfer)return;const o=i.getBoundingClientRect();e.dataTransfer.setDragImage(i,e.clientX-o.left,e.clientY-o.top)},It=e=>{const t=e.target instanceof Element?e.target.closest(".map-row"):null,i=t?.querySelector(".row-head[data-milestone]");if(!t||!i)return null;const o=i.getAttribute("data-milestone");return{id:o===""?null:o,element:t}},wt=(e,t,i,o)=>{if(i.kind!=="picking-step")return w;const n=S(t.state,i.storyId),r=_(t.state,i.activityId);if(!n||!r)return w;const a=r.steps[0]?.id;return c`<div class="comment-pop move-dialog" id="move-dialog" popover="manual">
293
- <span class="dpk-label">${e.moveDialogLabel}</span>
294
- <select class="dpk-select" aria-label=${e.moveDialogSelectLabel} data-move-dialog>
295
- ${r.steps.map(s=>c`<option value=${s.id} ?selected=${s.id===a}>${s.name}</option>`)}
296
- </select>
297
- <div class="pop-actions">
298
- <button
299
- class="dpk-btn dpk-btn--accent"
300
- type="button"
301
- @click=${s=>{const m=(Xe(s.currentTarget,HTMLElement)?.closest("#move-dialog")??null)?.querySelector("select")?.value??a;m?o.confirm(m):o.cancel()}}
302
- >
303
- ${e.moveConfirm}
304
- </button>
305
- <button class="dpk-btn" type="button" @click=${o.cancel}>${e.moveCancel}</button>
306
- </div>
307
- </div>`},At=Z`
308
- :host {
309
- --dpk-usm-accent: var(--dpk-blue);
310
- }
311
- .map-scroll {
312
- /* A wide table must scroll inside itself and never widen the template shell. */
313
- min-width: 0;
314
- max-width: 100%;
315
- overflow-x: auto;
316
- padding-bottom: 12px;
317
- }
318
- .map {
319
- display: grid;
320
- gap: 0;
321
- min-width: max-content;
322
- border: 1px solid var(--dpk-rule);
323
- border-radius: var(--dpk-radius-lg);
324
- background: var(--dpk-paper-raised);
325
- box-shadow: var(--dpk-shadow);
326
- overflow: hidden;
327
- }
328
- .map-row {
329
- display: grid;
330
- grid-template-columns: 140px repeat(var(--cols), minmax(180px, 240px));
331
- }
332
- .map-row + .map-row {
333
- border-top: 1px solid var(--dpk-rule-strong);
334
- }
335
- .corner,
336
- .act-head,
337
- .col-head,
338
- .row-head,
339
- .cell {
340
- padding: 10px;
341
- }
342
- .corner {
343
- background: linear-gradient(135deg, var(--dpk-paper-sunken), var(--dpk-paper-inset));
344
- display: grid;
345
- gap: 2px;
346
- align-content: start;
347
- }
348
-
349
- /* Unit toggle above the table (group band vs one column per activity). */
350
- .view-tabs {
351
- display: inline-flex;
352
- justify-self: start;
353
- gap: 2px;
354
- padding: 3px;
355
- margin-bottom: 12px;
356
- border: 1px solid var(--dpk-rule);
357
- border-radius: 999px;
358
- background: var(--dpk-paper-sunken);
359
- box-shadow: inset 0 1px 2px rgba(20, 28, 44, 0.04);
360
- }
361
-
362
- .tab {
363
- padding: 4px 14px;
364
- border-radius: 999px;
365
- font-size: 12px;
366
- font-weight: 500;
367
- text-decoration: none;
368
- color: var(--dpk-ink-soft);
369
- white-space: nowrap;
370
- transition:
371
- background 120ms ease,
372
- color 120ms ease;
373
- }
374
-
375
- .tab:hover {
376
- color: var(--dpk-ink);
377
- background: var(--dpk-paper-raised);
378
- }
379
-
380
- .tab[data-current='true'] {
381
- background: var(--dpk-paper-raised);
382
- color: var(--dpk-ink);
383
- font-weight: 600;
384
- box-shadow: var(--dpk-shadow-xs);
385
- }
386
- .act-head {
387
- border-left: 1px solid var(--dpk-rule);
388
- background: linear-gradient(180deg, var(--dpk-paper-sunken), var(--dpk-paper-inset));
389
- display: flex;
390
- align-items: center;
391
- justify-content: space-between;
392
- gap: 4px;
393
- font-size: 13px;
394
- font-weight: 600;
395
- }
396
- .col-head {
397
- border-left: 1px solid var(--dpk-rule);
398
- background: var(--dpk-paper-sunken);
399
- transition: background 150ms ease;
400
- }
401
- .col-head[data-current='true'] {
402
- background: linear-gradient(180deg, rgba(51, 102, 204, 0.06), rgba(51, 102, 204, 0.03));
403
- box-shadow: inset 0 2px 0 var(--dpk-blue);
404
- }
405
- .col-head h4 {
406
- font-size: 13px;
407
- margin: 0;
408
- }
409
- .row-head {
410
- display: flex;
411
- align-items: center;
412
- gap: 6px;
413
- background: var(--dpk-paper-sunken);
414
- font-size: 12px;
415
- font-weight: 600;
416
- transition: background 150ms ease;
417
- }
418
-
419
- .row-head[draggable='true'] {
420
- cursor: grab;
421
- -webkit-user-select: none;
422
- user-select: none;
423
- }
424
-
425
- .row-head[draggable='true'] dpk-component-inline-edit {
426
- -webkit-user-drag: none;
427
- }
428
-
429
- .row-head[draggable='true']:active {
430
- cursor: grabbing;
431
- }
432
-
433
- .row-grip {
434
- flex: 0 0 auto;
435
- display: inline-flex;
436
- color: var(--dpk-ink-faint);
437
- }
438
-
439
- .row-grip svg {
440
- display: block;
441
- width: 15px;
442
- height: 15px;
443
- }
444
-
445
- /* Row-level drag affordance: hover highlights the entire .map-row. */
446
- .map-row[data-draggable='true']:hover > .row-head {
447
- background: linear-gradient(90deg, var(--dpk-blue-soft), var(--dpk-paper-sunken));
448
- }
449
- .map-row[data-draggable='true']:hover > .cell {
450
- background: linear-gradient(90deg, rgba(51, 102, 204, 0.03), var(--dpk-paper-raised));
451
- }
452
- .map-row[data-draggable='true']:hover .row-grip {
453
- color: var(--dpk-blue);
454
- }
455
- .map-row[data-draggable='true'] {
456
- cursor: grab;
457
- }
458
- .map-row[data-draggable='true']:active {
459
- cursor: grabbing;
460
- }
461
-
462
- /*
463
- * Dragging state: entire row fades. Never disable pointer events on the
464
- * source here: Lit applies this state in the microtask right after
465
- * \`dragstart\`, and Blink then re-hit-tests the pointer and aborts the drag
466
- * when the source is no longer under it.
467
- */
468
- .map-row[data-row-dragging='true'] {
469
- opacity: 0.45;
470
- }
471
-
472
- /* Drop target: entire row highlights. */
473
- .map-row[data-row-drop='true'] {
474
- outline: 2px dashed var(--dpk-blue);
475
- outline-offset: -2px;
476
- }
477
- .map-row[data-row-drop='true'] > .row-head {
478
- background: var(--dpk-blue-soft);
479
- }
480
- .map-row[data-row-drop='true'] > .cell {
481
- background: linear-gradient(135deg, var(--dpk-blue-soft), rgba(51, 102, 204, 0.04));
482
- }
483
- .cell {
484
- border-left: 1px solid var(--dpk-rule);
485
- border-top: 1px solid var(--dpk-rule);
486
- display: flex;
487
- flex-direction: column;
488
- gap: 8px;
489
- min-height: 100px;
490
- background: var(--dpk-paper-raised);
491
- transition: background 150ms ease;
492
- }
493
- .cell[data-drop='true'] {
494
- background: linear-gradient(135deg, var(--dpk-blue-soft), rgba(51, 102, 204, 0.04));
495
- outline: 2px dashed var(--dpk-blue);
496
- outline-offset: -2px;
497
- }
498
- .card-list {
499
- display: grid;
500
- gap: 8px;
501
- align-content: start;
502
- flex: 1 1 auto;
503
- }
504
- .add-cell {
505
- margin-top: auto;
506
- opacity: 0;
507
- transition: opacity 180ms ease;
508
- border: 1px dashed var(--dpk-rule-strong);
509
- border-radius: var(--dpk-radius-sm);
510
- background: transparent;
511
- color: var(--dpk-ink-faint);
512
- padding: 4px 8px;
513
- font-size: 11.5px;
514
- }
515
- .add-cell:hover {
516
- background: var(--dpk-blue-soft);
517
- border-color: var(--dpk-blue);
518
- color: var(--dpk-blue);
519
- }
520
- .cell:hover .add-cell {
521
- opacity: 1;
522
- }
523
- .empty {
524
- border: 1px dashed var(--dpk-rule-strong);
525
- border-radius: var(--dpk-radius-lg);
526
- padding: 28px 24px;
527
- background: var(--dpk-paper-raised);
528
- max-width: 620px;
529
- display: grid;
530
- gap: 10px;
531
- }
532
- .count {
533
- font-family: var(--dpk-mono);
534
- font-variant-numeric: tabular-nums;
535
- font-size: 10px;
536
- color: var(--dpk-ink-faint);
537
- }
538
-
539
- /* Step picker shown after a cross-activity drop. */
540
- .move-dialog {
541
- min-width: 220px;
542
- }
543
- `,_t={width:300,height:240};class Ne extends Q{static{this.styles=[Q.styles,At,W]}definitionFor(t){return ye(t)}static{this.properties={mode:{state:!0}}}#t=new We(this);#n=new ee(this);constructor(){super(),this.mode=D}renderRegions(t){return{main:this.#o(t)}}updated(){if(super.updated(),this.mode.kind!=="picking-step")return;const t=this.renderRoot.querySelector("#move-dialog");t&&this.#n.open(t,it(this.mode.point.x,this.mode.point.y),_t)}#o(t){const i=U(this.locale);return c`
544
- ${bt({m:i,context:t,mode:this.mode,drag:this.#t,handlers:{cardIntent:(o,n)=>this.#r(o,n),dropOnCell:(o,n)=>this.#i(o,n),dropOnGroupCell:(o,n,r)=>this.#e(o,n,r),dropOnMilestoneRow:(o,n)=>this.#a(o,n)}})}
545
- ${wt(i,t,this.mode,{confirm:o=>this.#s(o),cancel:()=>this.mode=D})}
546
- `}#r(t,i){const o=this.context();switch(i.kind){case"select":{const n=S(o.state,t);n&&o.navigate({step:n.stepId,story:n.id});break}case"rename":o.dispatch({type:"SET_STORY_NAME",target:{type:"story",id:t},payload:{name:i.name}});break;case"comment":o.dispatch({type:"comment",target:`story:${t}`,payload:{body:i.body}});break;case"delete":o.dispatch({type:"DELETE_STORY",target:{type:"story",id:t},payload:{}});break}this.mode=$e(this.mode,t,i)}#i(t,i){const o=this.context();o.dispatch(fe(o.state,t,i.item.id,i.hoveredId,i.place))}#e(t,i,o){const n=this.context(),r=S(n.state,o.item.id);if(!r)return;if(r.activityId!==t){this.mode={kind:"picking-step",storyId:r.id,activityId:t,milestoneId:i,point:{x:o.event.clientX,y:o.event.clientY}};return}const a=he(n.state,t,i,r.id,o.hoveredId,o.place);a&&n.dispatch(a)}#a(t,i){const o=this.context(),n=o.state.milestones.map(a=>a.id),r=Ee(n,i.item.id,i.hoveredId,i.place);r&&o.dispatch(r)}#s(t){const i=this.mode;if(i.kind!=="picking-step")return;const o=this.context();o.dispatch(be(o.state,i.storyId,i.activityId,t,i.milestoneId)),this.mode=D}}const Le=()=>{vt(),customElements.get("dpk-template-usm")||customElements.define("dpk-template-usm",Ne)},Dt=Object.freeze(Object.defineProperty({__proto__:null,DpkTemplateUsm:Ne,IDLE_MODE:D,allUsmIds:R,applyUsmAction:re,cardModeOf:ke,defineUsmElement:Le,describeUsmAction:le,dropAfter:z,emptyUsmBase:ie,findActivity:_,findMilestone:I,findStep:E,findStory:S,flatSteps:oe,modeConcerns:X,parseUsmBase:te,reduceCardIntent:$e,resolveCellDrop:fe,resolveGroupDrop:he,resolveMilestoneDrop:Ee,resolvePickedStepMove:be,resolveUsmNavigation:ge,serializeUsmAction:ce,storiesInCell:B,storyCountForStep:ct,usmAction:ot,usmActions:y,usmCommentTargets:ue,usmCurrentTarget:me,usmDefinitionFor:ye,usmHasTarget:ve,usmMessages:U,usmTargetLabel:pe,usmTitle:J},Symbol.toStringTag,{value:"Module"}));export{Le as d,Dt as i};