dev-process-kit 0.0.2-beta.1 → 0.0.2
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 +21 -9
- package/dist/chunks/shared-BXV4Dm_n.js +522 -0
- package/dist/chunks/shared-C4Y4jSXa.js +27 -0
- package/dist/chunks/shared-CQlssGTf.js +692 -0
- package/dist/chunks/shared-CcD4vDCE.js +1461 -0
- package/dist/chunks/shared-D2QreyJq.js +926 -0
- package/dist/chunks/{shared-CmM4cgd6.js → shared-D3EKtSkd.js} +1 -1
- package/dist/chunks/shared-D6UXy-Qw.js +560 -0
- package/dist/chunks/shared-DZlREPaN.js +2537 -0
- package/dist/chunks/shared-OdGbSUTa.js +574 -0
- package/dist/chunks/shared-TjJWiz7W.js +546 -0
- package/dist/chunks/shared-utv1engQ.js +1 -0
- package/dist/components.js +1 -1
- package/dist/index.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 -0
- package/dist/templates/usm.js +1 -1
- package/package.json +3 -2
- package/dist/chunks/shared-5C6fORCL.js +0 -1404
- package/dist/chunks/shared-B1lFGiYZ.js +0 -1
- package/dist/chunks/shared-BEjjbZ0X.js +0 -2543
- package/dist/chunks/shared-BybvAQye.js +0 -579
- package/dist/chunks/shared-DKxAm7wL.js +0 -27
- package/dist/chunks/shared-DgusMFKr.js +0 -1
- package/dist/chunks/shared-Dx0MEuAf.js +0 -921
- package/dist/chunks/shared-RclF4vSf.js +0 -692
- package/dist/chunks/shared-ao1beBgL.js +0 -544
- package/dist/chunks/shared-eiZoh1aF.js +0 -521
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ browser, and the review comes back as structured change requests the agent can a
|
|
|
19
19
|
- **Rich diagrams with almost no code.** Parts for the traditional diagrams a development process uses, ready to drop into your markup.
|
|
20
20
|
- **No setup.** The components are made for a single-file HTML page and ship as Web Components: one `<script>` tag, and they are there.
|
|
21
21
|
- **Feedback without leaving the page.** Operate the diagram and comment on individual elements in the UI, then copy the operations and the comments out as a hand-off to an agent.
|
|
22
|
+
- **First-class support for Claude Artifacts.** Published from Claude Code as a Claude Artifact, the page follows the claude.ai theme and sends the review straight back to the Claude session with one click: no copy and paste.
|
|
22
23
|
|
|
23
24
|
## Why dev-process-kit?
|
|
24
25
|
|
|
@@ -50,6 +51,16 @@ Create a USM for this product.
|
|
|
50
51
|
Follow https://raw.githubusercontent.com/d-kimuson/dev-process-kit/main/skills/dev-process-kit/SKILL.md.
|
|
51
52
|
```
|
|
52
53
|
|
|
54
|
+
### Claude Artifacts
|
|
55
|
+
|
|
56
|
+
Claude Code can publish the page as a Claude Artifact instead of a local file, and dev-process-kit supports that as a first-class target:
|
|
57
|
+
|
|
58
|
+
- **One-click hand-off.** With the `comments` and `db` capabilities declared, the review rail offers **Send to Claude** in place of copying. The review arrives in the Claude Code session that published the page, which applies it and republishes to the same URL.
|
|
59
|
+
- **Fits the viewer.** The template follows the reader's claude.ai light / dark theme and sizes itself to the viewer's frame.
|
|
60
|
+
- **Nothing to configure.** The page detects the Artifact at runtime; outside one, or when a send cannot land, the copy hand-off stays as it is.
|
|
61
|
+
|
|
62
|
+
The skill's [Claude Artifact reference](skills/dev-process-kit/references/claude-artifact.md) tells the agent how to write and publish such a page.
|
|
63
|
+
|
|
53
64
|
### Install the skill
|
|
54
65
|
|
|
55
66
|
The `dev-process-kit` agent skill tells the agent when to reach for a page and how to keep it focused.
|
|
@@ -71,20 +82,21 @@ dev-process-kit ships **templates**, which make up a whole page, and **component
|
|
|
71
82
|
|
|
72
83
|
### Templates
|
|
73
84
|
|
|
74
|
-
| Template | Element | What it is
|
|
75
|
-
| ------------------ | ------------------------------ |
|
|
76
|
-
| UX Prototype | `dpk-template-prototype` | `Activity › UserStory › Step › Preview[]`: one step is one page or experience state, with previews per viewport
|
|
77
|
-
| User Story Mapping | `dpk-template-usm` | The backbone (activity › step) as columns, milestones as rows
|
|
78
|
-
| Event Storming | `dpk-template-event-storming` | Sticky notes on swimlanes in timeline order, with causality links between them
|
|
79
|
-
| Example Mapping | `dpk-template-example-mapping` | One story per column, rules beneath it, examples beneath each rule, questions pinned to any of them
|
|
80
|
-
| Grill | `dpk-template-grill` | A review of questions over whatever you put in the main area: the questions are base data, the answers are draft actions, the badges sit on your own markup
|
|
81
|
-
| Plain | `dpk-template-plain` | For a page no other template fits: only the header and the review (comments) pipeline around your own markup
|
|
85
|
+
| Template | Element | What it is |
|
|
86
|
+
| ------------------ | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
87
|
+
| UX Prototype | `dpk-template-prototype` | `Activity › UserStory › Step › Preview[]`: one step is one page or experience state, with previews per viewport |
|
|
88
|
+
| User Story Mapping | `dpk-template-usm` | The backbone (activity › step) as columns, milestones as rows |
|
|
89
|
+
| Event Storming | `dpk-template-event-storming` | Sticky notes on swimlanes in timeline order, with causality links between them |
|
|
90
|
+
| Example Mapping | `dpk-template-example-mapping` | One story per column, rules beneath it, examples beneath each rule, questions pinned to any of them |
|
|
91
|
+
| Grill | `dpk-template-grill` | A review of questions over whatever you put in the main area: the questions are base data, the answers are draft actions, the badges sit on your own markup |
|
|
92
|
+
| Plain | `dpk-template-plain` | For a page no other template fits: only the header and the review (comments) pipeline around your own markup |
|
|
93
|
+
| Slides | `dpk-template-slides` | A slide deck for explaining something step by step: slide titles and points are base data, richer bodies are your own markup, comments go on the slide on screen |
|
|
82
94
|
|
|
83
95
|
### Components
|
|
84
96
|
|
|
85
97
|
| Component | Element | What it is |
|
|
86
98
|
| ---------------- | -------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
87
|
-
| Review rail | `dpk-component-comment-panel` |
|
|
99
|
+
| Review rail | `dpk-component-comment-panel` | Draft actions and comments, stale markers, deletion, and the copy or send-to-Claude hand-off |
|
|
88
100
|
| Inline editing | `dpk-component-inline-edit` | A text/multiline editor that emits `dpk-commit` |
|
|
89
101
|
| State diagram | `dpk-component-state-diagram` | Which states exist, and what moves between them |
|
|
90
102
|
| Sequence diagram | `dpk-component-sequence-diagram` | In what order participants talk |
|
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
import{q as m,an as E,v as A,au as D,at as b,ad as s,af as x,ag as f,as as I,a9 as Ue,aa as w,ab as q,ac as N,P as Pe,f as Qe,_ as Ce,V as O,R as g,m as Xe,a0 as H,a5 as Ye,k as Be,$ as Ve,a6 as ze,a1 as $,av as Ke,a2 as h,A as Fe,K as je,i as Je,a3 as z,T as Z}from"./shared-CcD4vDCE.js";import{s as K,D as We}from"./shared-BFAVBf4I.js";import{P as He,r as Ze,p as Ge,c as et}from"./shared-C4Y4jSXa.js";const u={SET_STORY_NAME:m("SET_STORY_NAME","story",E({name:x(s(),f(1))})),SET_STORY_DESCRIPTION:m("SET_STORY_DESCRIPTION","story",E({description:s()})),REORDER_STORY:m("REORDER_STORY","story",E({after:I(s())}),{mode:"sequence"}),ADD_STORY:m("ADD_STORY","page",E({id:D,name:x(s(),f(1)),description:b(s())}),{dedupeKey:A}),DELETE_STORY:m("DELETE_STORY","story",E({})),SET_RULE_NAME:m("SET_RULE_NAME","rule",E({name:x(s(),f(1))})),SET_RULE_DESCRIPTION:m("SET_RULE_DESCRIPTION","rule",E({description:s()})),MOVE_RULE:m("MOVE_RULE","rule",E({storyId:x(s(),f(1)),after:I(s())}),{mode:"sequence"}),REORDER_RULE:m("REORDER_RULE","rule",E({after:I(s())}),{mode:"sequence"}),ADD_RULE:m("ADD_RULE","story",E({id:D,name:x(s(),f(1)),description:b(s())}),{dedupeKey:A}),DELETE_RULE:m("DELETE_RULE","rule",E({})),SET_EXAMPLE_NAME:m("SET_EXAMPLE_NAME","example",E({name:x(s(),f(1))})),SET_EXAMPLE_DESCRIPTION:m("SET_EXAMPLE_DESCRIPTION","example",E({description:s()})),MOVE_EXAMPLE:m("MOVE_EXAMPLE","example",E({ruleId:x(s(),f(1)),after:I(s())}),{mode:"sequence"}),REORDER_EXAMPLE:m("REORDER_EXAMPLE","example",E({after:I(s())}),{mode:"sequence"}),ADD_EXAMPLE:m("ADD_EXAMPLE","rule",E({id:D,name:x(s(),f(1)),description:b(s())}),{dedupeKey:A}),DELETE_EXAMPLE:m("DELETE_EXAMPLE","example",E({})),SET_QUESTION_NAME:m("SET_QUESTION_NAME","question",E({name:x(s(),f(1))})),SET_QUESTION_DESCRIPTION:m("SET_QUESTION_DESCRIPTION","question",E({description:s()})),MOVE_QUESTION:m("MOVE_QUESTION","question",E({ruleId:x(s(),f(1)),after:I(s())}),{mode:"sequence"}),REORDER_QUESTION:m("REORDER_QUESTION","question",E({after:I(s())}),{mode:"sequence"}),ADD_QUESTION:m("ADD_QUESTION","rule",E({id:D,name:x(s(),f(1)),description:b(s())}),{dedupeKey:A}),DELETE_QUESTION:m("DELETE_QUESTION","question",E({}))},L={setStoryName:(e,t)=>({type:"SET_STORY_NAME",target:{type:"story",id:e},payload:{name:t}}),setStoryDescription:(e,t)=>({type:"SET_STORY_DESCRIPTION",target:{type:"story",id:e},payload:{description:t}}),reorderStory:(e,t)=>({type:"REORDER_STORY",target:{type:"story",id:e},payload:{after:t}}),addStory:(e,t)=>({type:"ADD_STORY",target:{type:"page",id:"example-mapping"},payload:{id:e,name:t}}),deleteStory:e=>({type:"DELETE_STORY",target:{type:"story",id:e},payload:{}}),setRuleName:(e,t)=>({type:"SET_RULE_NAME",target:{type:"rule",id:e},payload:{name:t}}),setRuleDescription:(e,t)=>({type:"SET_RULE_DESCRIPTION",target:{type:"rule",id:e},payload:{description:t}}),moveRule:(e,t,r)=>({type:"MOVE_RULE",target:{type:"rule",id:e},payload:{storyId:t,after:r}}),reorderRule:(e,t)=>({type:"REORDER_RULE",target:{type:"rule",id:e},payload:{after:t}}),addRule:(e,t,r)=>({type:"ADD_RULE",target:{type:"story",id:e},payload:{id:t,name:r}}),deleteRule:e=>({type:"DELETE_RULE",target:{type:"rule",id:e},payload:{}}),setExampleName:(e,t)=>({type:"SET_EXAMPLE_NAME",target:{type:"example",id:e},payload:{name:t}}),setExampleDescription:(e,t)=>({type:"SET_EXAMPLE_DESCRIPTION",target:{type:"example",id:e},payload:{description:t}}),moveExample:(e,t,r)=>({type:"MOVE_EXAMPLE",target:{type:"example",id:e},payload:{ruleId:t,after:r}}),reorderExample:(e,t)=>({type:"REORDER_EXAMPLE",target:{type:"example",id:e},payload:{after:t}}),addExample:(e,t,r)=>({type:"ADD_EXAMPLE",target:{type:"rule",id:e},payload:{id:t,name:r}}),deleteExample:e=>({type:"DELETE_EXAMPLE",target:{type:"example",id:e},payload:{}}),setQuestionName:(e,t)=>({type:"SET_QUESTION_NAME",target:{type:"question",id:e},payload:{name:t}}),setQuestionDescription:(e,t)=>({type:"SET_QUESTION_DESCRIPTION",target:{type:"question",id:e},payload:{description:t}}),moveQuestion:(e,t,r)=>({type:"MOVE_QUESTION",target:{type:"question",id:e},payload:{ruleId:t,after:r}}),reorderQuestion:(e,t)=>({type:"REORDER_QUESTION",target:{type:"question",id:e},payload:{after:t}}),addQuestion:(e,t,r)=>({type:"ADD_QUESTION",target:{type:"rule",id:e},payload:{id:t,name:r}}),deleteQuestion:e=>({type:"DELETE_QUESTION",target:{type:"question",id:e},payload:{}})},tt=w({id:D,name:x(s(),f(1)),description:b(s())}),rt=w({id:D,storyId:x(s(),f(1)),name:x(s(),f(1)),description:b(s())}),G=w({id:D,ruleId:x(s(),f(1)),name:x(s(),f(1)),description:b(s())}),ee=w({title:b(s()),stories:q(N(tt),[]),rules:q(N(rt),[]),examples:q(N(G),[]),questions:q(N(G),[])}),te=e=>{const t=Ue(ee,e),r=new Set,n=(i,d)=>{if(r.has(d))throw new Error(`duplicate id "${d}" in ${i}`);r.add(d)},a=new Set(t.stories.map(i=>i.id));for(const i of t.stories)n("stories",i.id);for(const i of t.rules)if(n("rules",i.id),!a.has(i.storyId))throw new Error(`rule "${i.id}" references unknown storyId "${i.storyId}"`);const o=new Map(t.rules.map(i=>[i.id,i]));for(const i of t.examples)if(n("examples",i.id),!o.has(i.ruleId))throw new Error(`example "${i.id}" references unknown ruleId "${i.ruleId}"`);for(const i of t.questions)if(n("questions",i.id),!o.has(i.ruleId))throw new Error(`question "${i.id}" references unknown ruleId "${i.ruleId}"`);return t},re=()=>({stories:[],rules:[],examples:[],questions:[]}),nt=e=>({...e,rules:K(e.rules,["storyId"]),examples:K(e.examples,["ruleId"]),questions:K(e.questions,["ruleId"])}),T=(e,t)=>{if(t!==void 0)return e.stories.find(r=>r.id===t)},y=(e,t)=>{if(t!==void 0)return e.rules.find(r=>r.id===t)},R=(e,t)=>{if(t!==void 0)return e.examples.find(r=>r.id===t)},S=(e,t)=>{if(t!==void 0)return e.questions.find(r=>r.id===t)},U=(e,t)=>{if(t===void 0)return;const r=T(e,t);if(r)return{kind:"story",id:r.id,name:r.name,...r.description===void 0?{}:{description:r.description}};const n=y(e,t);if(n)return{kind:"rule",id:n.id,name:n.name,...n.description===void 0?{}:{description:n.description}};const a=R(e,t);if(a)return{kind:"example",id:a.id,name:a.name,...a.description===void 0?{}:{description:a.description}};const o=S(e,t);if(o)return{kind:"question",id:o.id,name:o.name,...o.description===void 0?{}:{description:o.description}}},ne=(e,t)=>e.rules.filter(r=>r.storyId===t),ae=(e,t)=>e.examples.filter(r=>r.ruleId===t),oe=(e,t)=>e.questions.filter(r=>r.ruleId===t),at=(e,t)=>{if(T(e,t))return t;const r=y(e,t);if(r)return r.storyId;const n=R(e,t)?.ruleId??S(e,t)?.ruleId;return n===void 0?void 0:y(e,n)?.storyId},ie=e=>[...e.stories.map(t=>t.id),...e.rules.map(t=>t.id),...e.examples.map(t=>t.id),...e.questions.map(t=>t.id)],de=(e,t)=>y(e,t)?.storyId,ot=(e,t)=>{const r=R(e,t);return r?de(e,r.ruleId):void 0},se=(e,t)=>{const r=Pe(u,t);if(r===null)return null;const n=r.target.id;switch(r.type){case"SET_STORY_NAME":return le(e,n,a=>({...a,name:r.payload.name}));case"SET_STORY_DESCRIPTION":return le(e,n,a=>({...a,description:r.payload.description}));case"REORDER_STORY":{const a=Ee(e.stories,n,r.payload.after);return a===null?null:{...e,stories:a}}case"ADD_STORY":{const a=r.payload;return e.stories.some(o=>o.id===a.id)?e:P(e,a.id)?null:{...e,stories:[...e.stories,{id:a.id,name:a.name,...a.description===void 0?{}:{description:a.description}}]}}case"DELETE_STORY":{if(!e.stories.some(o=>o.id===n))return null;const a=new Set(e.rules.filter(o=>o.storyId===n).map(o=>o.id));return{...e,stories:e.stories.filter(o=>o.id!==n),rules:e.rules.filter(o=>o.storyId!==n),examples:e.examples.filter(o=>!a.has(o.ruleId)),questions:e.questions.filter(o=>!a.has(o.ruleId))}}case"SET_RULE_NAME":return pe(e,n,a=>({...a,name:r.payload.name}));case"SET_RULE_DESCRIPTION":return pe(e,n,a=>({...a,description:r.payload.description}));case"MOVE_RULE":{const a=r.payload,o=y(e,n);if(!o||!e.stories.some(d=>d.id===a.storyId))return null;const i=e.rules.filter(d=>d.storyId===a.storyId&&d.id!==n);return a.after!==null&&!i.some(d=>d.id===a.after)?null:{...e,rules:me(e.rules,{...o,storyId:a.storyId},a.after)}}case"REORDER_RULE":{const a=y(e,n);if(!a)return null;const o=e.rules.filter(i=>i.storyId===a.storyId);return r.payload.after!==null&&!o.some(i=>i.id===r.payload.after)?null:{...e,rules:me(e.rules,a,r.payload.after)}}case"ADD_RULE":{const a=r.payload,o=T(e,n);return o?e.rules.some(i=>i.id===a.id)?e:P(e,a.id)?null:{...e,rules:[...e.rules,{id:a.id,storyId:o.id,name:a.name,...a.description===void 0?{}:{description:a.description}}]}:null}case"DELETE_RULE":return y(e,n)?{...e,rules:e.rules.filter(a=>a.id!==n),examples:e.examples.filter(a=>a.ruleId!==n),questions:e.questions.filter(a=>a.ruleId!==n)}:null;case"SET_EXAMPLE_NAME":return ue(e,n,a=>({...a,name:r.payload.name}));case"SET_EXAMPLE_DESCRIPTION":return ue(e,n,a=>({...a,description:r.payload.description}));case"MOVE_EXAMPLE":{const a=r.payload,o=R(e,n);if(!o||!y(e,a.ruleId))return null;const i=e.examples.filter(d=>d.ruleId===a.ruleId&&d.id!==n);return a.after!==null&&!i.some(d=>d.id===a.after)?null:{...e,examples:Q(e.examples,{...o,ruleId:a.ruleId},a.after)}}case"REORDER_EXAMPLE":{const a=R(e,n);if(!a)return null;const o=e.examples.filter(i=>i.ruleId===a.ruleId);return r.payload.after!==null&&!o.some(i=>i.id===r.payload.after)?null:{...e,examples:Q(e.examples,a,r.payload.after)}}case"ADD_EXAMPLE":{const a=r.payload,o=y(e,n);return o?e.examples.some(i=>i.id===a.id)?e:P(e,a.id)?null:{...e,examples:[...e.examples,{id:a.id,ruleId:o.id,name:a.name,...a.description===void 0?{}:{description:a.description}}]}:null}case"DELETE_EXAMPLE":return R(e,n)?{...e,examples:e.examples.filter(a=>a.id!==n)}:null;case"SET_QUESTION_NAME":return ce(e,n,a=>({...a,name:r.payload.name}));case"SET_QUESTION_DESCRIPTION":return ce(e,n,a=>({...a,description:r.payload.description}));case"MOVE_QUESTION":{const a=r.payload,o=S(e,n);if(!o||!y(e,a.ruleId))return null;const i=e.questions.filter(d=>d.ruleId===a.ruleId&&d.id!==n);return a.after!==null&&!i.some(d=>d.id===a.after)?null:{...e,questions:Q(e.questions,{...o,ruleId:a.ruleId},a.after)}}case"REORDER_QUESTION":{const a=S(e,n);if(!a)return null;const o=e.questions.filter(i=>i.ruleId===a.ruleId);return r.payload.after!==null&&!o.some(i=>i.id===r.payload.after)?null:{...e,questions:Q(e.questions,a,r.payload.after)}}case"ADD_QUESTION":{const a=r.payload,o=y(e,n);return o?e.questions.some(i=>i.id===a.id)?e:P(e,a.id)?null:{...e,questions:[...e.questions,{id:a.id,ruleId:o.id,name:a.name,...a.description===void 0?{}:{description:a.description}}]}:null}case"DELETE_QUESTION":return S(e,n)?{...e,questions:e.questions.filter(a=>a.id!==n)}:null;default:return Qe(r)}},P=(e,t)=>e.stories.some(r=>r.id===t)||e.rules.some(r=>r.id===t)||e.examples.some(r=>r.id===t)||e.questions.some(r=>r.id===t),le=(e,t,r)=>e.stories.some(n=>n.id===t)?{...e,stories:e.stories.map(n=>n.id===t?r(n):n)}:null,pe=(e,t,r)=>e.rules.some(n=>n.id===t)?{...e,rules:e.rules.map(n=>n.id===t?r(n):n)}:null,ue=(e,t,r)=>e.examples.some(n=>n.id===t)?{...e,examples:e.examples.map(n=>n.id===t?r(n):n)}:null,ce=(e,t,r)=>e.questions.some(n=>n.id===t)?{...e,questions:e.questions.map(n=>n.id===t?r(n):n)}:null,me=(e,t,r)=>{const n=e.filter(l=>l.id!==t.id),a=n.filter(l=>l.storyId===t.storyId),o=r===null?[t,...a]:F(a,t,r),i=n.findIndex(l=>l.storyId===t.storyId),d=new Set(a.map(l=>l.id)),c=n.filter(l=>!d.has(l.id)),p=i<0?c.length:Math.min(i,c.length);return[...c.slice(0,p),...o,...c.slice(p)]},Q=(e,t,r)=>{const n=e.filter(l=>l.id!==t.id),a=n.filter(l=>l.ruleId===t.ruleId),o=r===null?[t,...a]:F(a,t,r),i=n.findIndex(l=>l.ruleId===t.ruleId),d=new Set(a.map(l=>l.id)),c=n.filter(l=>!d.has(l.id)),p=i<0?c.length:Math.min(i,c.length);return[...c.slice(0,p),...o,...c.slice(p)]},Ee=(e,t,r)=>{if(!e.some(o=>o.id===t)||r!==null&&!e.some(o=>o.id===r))return null;if(r===t)return[...e];const n=e.find(o=>o.id===t);if(n===void 0)return null;const a=e.filter(o=>o.id!==t);return F(a,n,r)},F=(e,t,r)=>{const n=[...e],a=r===null?-1:n.findIndex(o=>o.id===r);return n.splice(a+1,0,t),n},it={story:"Story",rule:"Rule",example:"Example",question:"Question"},dt={story:"\u30B9\u30C8\u30FC\u30EA\u30FC",rule:"\u30EB\u30FC\u30EB",example:"\u5177\u4F53\u4F8B",question:"\u8CEA\u554F"},st={empty:"No rules yet","open-questions":"Open questions","too-big":"Consider splitting",thin:"A rule has no example",ready:"Looks ready"},lt={empty:"\u30EB\u30FC\u30EB\u672A\u6574\u7406","open-questions":"\u672A\u89E3\u6C7A\u306E\u8CEA\u554F\u3042\u308A","too-big":"\u5206\u5272\u3092\u691C\u8A0E",thin:"\u5177\u4F53\u4F8B\u306E\u7121\u3044\u30EB\u30FC\u30EB\u3042\u308A",ready:"\u5408\u610F\u3067\u304D\u305D\u3046"},C=Ce({en:{kindLabel:e=>it[e],readinessLabel:e=>st[e],map:"Map",cardKinds:"Card kinds",noStoriesTitle:"No stories yet",noStoriesBody:"Place one story (yellow), then line up the rules (blue) that accept it beneath it. For each rule, stack examples (green) in the top area and open questions (red) in the bottom area.",firstStory:"+ First story",addStoryButton:"+ Story",noExamples:"No examples yet",noQuestions:"No open questions",commentButton:"Comment",deleteButton:"Delete",nameField:e=>`${e} name`,newStory:"New story",newRule:"New rule",newExample:"New example",newQuestion:"New question",storyRenamedTitle:"Renamed the story",storyDescriptionUpdatedTitle:"Updated the story\u2019s description",storyReorderedTitle:"Reordered the story",storyAddedTitle:"Added a story",storyDeletedTitle:"Deleted the story",ruleRenamedTitle:"Renamed the rule",ruleDescriptionUpdatedTitle:"Updated the rule\u2019s description",ruleMovedTitle:"Moved the rule",ruleReorderedTitle:"Reordered the rule",ruleAddedTitle:"Added a rule",ruleDeletedTitle:"Deleted the rule",exampleRenamedTitle:"Renamed the example",exampleDescriptionUpdatedTitle:"Updated the example\u2019s description",exampleMovedTitle:"Moved the example",exampleReorderedTitle:"Reordered the example",exampleAddedTitle:"Added an example",exampleDeletedTitle:"Deleted the example",questionRenamedTitle:"Renamed the question",questionDescriptionUpdatedTitle:"Updated the question\u2019s description",questionMovedTitle:"Moved the question",questionReorderedTitle:"Reordered the question",questionAddedTitle:"Added a question",questionDeletedTitle:"Deleted the question",arrowTo:e=>`\u2192 \u201C${e}\u201D`,arrowFrom:(e,t)=>`\u201C${e}\u201D \u2192 \u201C${t}\u201D`,added:e=>`+ \u201C${e}\u201D`,deleted:e=>`\u2212 \u201C${e}\u201D`,toTop:"\u2192 To the top",afterPlacement:e=>`\u2192 After \u201C${e}\u201D`,wholeMap:"Whole map"},ja:{kindLabel:e=>dt[e],readinessLabel:e=>lt[e],map:"\u30DE\u30C3\u30D7",cardKinds:"\u30AB\u30FC\u30C9\u306E\u7A2E\u985E",noStoriesTitle:"\u30B9\u30C8\u30FC\u30EA\u30FC\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",noStoriesBody:"\u30B9\u30C8\u30FC\u30EA\u30FC\uFF08\u9EC4\uFF09\u30921\u679A\u7F6E\u304D\u3001\u305D\u306E\u4E0B\u306B\u53D7\u3051\u5165\u308C\u6761\u4EF6\u3068\u306A\u308B\u30EB\u30FC\u30EB\uFF08\u9752\uFF09\u3092\u4E26\u3079\u307E\u3059\u3002\u30EB\u30FC\u30EB\u3054\u3068\u306B\u3001\u4E0A\u306E\u6B04\u3078\u5177\u4F53\u4F8B\uFF08\u7DD1\uFF09\u3092\u3001\u4E0B\u306E\u6B04\u3078\u7B54\u3048\u306E\u51FA\u306A\u3044\u8AD6\u70B9\u3092\u8CEA\u554F\uFF08\u8D64\uFF09\u3068\u3057\u3066\u7A4D\u307F\u307E\u3059\u3002",firstStory:"+ \u6700\u521D\u306E\u30B9\u30C8\u30FC\u30EA\u30FC",addStoryButton:"+ \u30B9\u30C8\u30FC\u30EA\u30FC",noExamples:"\u5177\u4F53\u4F8B\u304C\u307E\u3060\u3042\u308A\u307E\u305B\u3093",noQuestions:"\u672A\u89E3\u6C7A\u306E\u8CEA\u554F\u306F\u3042\u308A\u307E\u305B\u3093",commentButton:"\u30B3\u30E1\u30F3\u30C8",deleteButton:"\u524A\u9664",nameField:e=>`${e}\u540D`,newStory:"\u65B0\u3057\u3044\u30B9\u30C8\u30FC\u30EA\u30FC",newRule:"\u65B0\u3057\u3044\u30EB\u30FC\u30EB",newExample:"\u65B0\u3057\u3044\u5177\u4F53\u4F8B",newQuestion:"\u65B0\u3057\u3044\u8CEA\u554F",storyRenamedTitle:"\u30B9\u30C8\u30FC\u30EA\u30FC\u540D\u3092\u5909\u66F4",storyDescriptionUpdatedTitle:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u8AAC\u660E\u3092\u66F4\u65B0",storyReorderedTitle:"\u30B9\u30C8\u30FC\u30EA\u30FC\u306E\u9806\u5E8F\u3092\u5909\u66F4",storyAddedTitle:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u8FFD\u52A0",storyDeletedTitle:"\u30B9\u30C8\u30FC\u30EA\u30FC\u3092\u524A\u9664",ruleRenamedTitle:"\u30EB\u30FC\u30EB\u540D\u3092\u5909\u66F4",ruleDescriptionUpdatedTitle:"\u30EB\u30FC\u30EB\u306E\u8AAC\u660E\u3092\u66F4\u65B0",ruleMovedTitle:"\u30EB\u30FC\u30EB\u3092\u79FB\u52D5",ruleReorderedTitle:"\u30EB\u30FC\u30EB\u306E\u9806\u5E8F\u3092\u5909\u66F4",ruleAddedTitle:"\u30EB\u30FC\u30EB\u3092\u8FFD\u52A0",ruleDeletedTitle:"\u30EB\u30FC\u30EB\u3092\u524A\u9664",exampleRenamedTitle:"\u5177\u4F53\u4F8B\u540D\u3092\u5909\u66F4",exampleDescriptionUpdatedTitle:"\u5177\u4F53\u4F8B\u306E\u8AAC\u660E\u3092\u66F4\u65B0",exampleMovedTitle:"\u5177\u4F53\u4F8B\u3092\u79FB\u52D5",exampleReorderedTitle:"\u5177\u4F53\u4F8B\u306E\u9806\u5E8F\u3092\u5909\u66F4",exampleAddedTitle:"\u5177\u4F53\u4F8B\u3092\u8FFD\u52A0",exampleDeletedTitle:"\u5177\u4F53\u4F8B\u3092\u524A\u9664",questionRenamedTitle:"\u8CEA\u554F\u540D\u3092\u5909\u66F4",questionDescriptionUpdatedTitle:"\u8CEA\u554F\u306E\u8AAC\u660E\u3092\u66F4\u65B0",questionMovedTitle:"\u8CEA\u554F\u3092\u79FB\u52D5",questionReorderedTitle:"\u8CEA\u554F\u306E\u9806\u5E8F\u3092\u5909\u66F4",questionAddedTitle:"\u8CEA\u554F\u3092\u8FFD\u52A0",questionDeletedTitle:"\u8CEA\u554F\u3092\u524A\u9664",arrowTo:e=>`\u2192 \u300C${e}\u300D`,arrowFrom:(e,t)=>`\u300C${e}\u300D\u2192\u300C${t}\u300D`,added:e=>`+ \u300C${e}\u300D`,deleted:e=>`\u2212 \u300C${e}\u300D`,toTop:"\u2192 \u5148\u982D\u3078",afterPlacement:e=>`\u2192 \u300C${e}\u300D\u306E\u76F4\u5F8C\u3078`,wholeMap:"\u30DE\u30C3\u30D7\u5168\u4F53"}}),X=(e,t,r)=>{const n=typeof r=="string"?r:"",a=typeof t=="string"?t:void 0;return a===void 0?e.arrowTo(n):e.arrowFrom(a,n)},pt={SET_STORY_NAME:(e,t,r)=>({title:e.storyRenamedTitle,tone:"update",body:X(e,T(r,t.target.id)?.name,g(u.SET_STORY_NAME,t).name??"")}),SET_STORY_DESCRIPTION:(e,t)=>({title:e.storyDescriptionUpdatedTitle,tone:"update",body:e.arrowTo(String(g(u.SET_STORY_DESCRIPTION,t).description??"").slice(0,90))}),REORDER_STORY:(e,t)=>({title:e.storyReorderedTitle,tone:"move",body:Y(e,g(u.REORDER_STORY,t).after)}),ADD_STORY:(e,t)=>({title:e.storyAddedTitle,tone:"create",body:e.added(String(g(u.ADD_STORY,t).name??""))}),DELETE_STORY:(e,t,r)=>({title:e.storyDeletedTitle,tone:"delete",body:e.deleted(T(r,t.target.id)?.name??t.target.id)}),SET_RULE_NAME:(e,t,r)=>({title:e.ruleRenamedTitle,tone:"update",body:X(e,y(r,t.target.id)?.name,g(u.SET_RULE_NAME,t).name??"")}),SET_RULE_DESCRIPTION:(e,t)=>({title:e.ruleDescriptionUpdatedTitle,tone:"update",body:e.arrowTo(String(g(u.SET_RULE_DESCRIPTION,t).description??"").slice(0,90))}),MOVE_RULE:(e,t,r)=>({title:e.ruleMovedTitle,tone:"move",body:e.arrowTo(T(r,String(g(u.MOVE_RULE,t).storyId))?.name??String(g(u.MOVE_RULE,t).storyId??""))}),REORDER_RULE:(e,t)=>({title:e.ruleReorderedTitle,tone:"move",body:Y(e,g(u.REORDER_RULE,t).after)}),ADD_RULE:(e,t)=>({title:e.ruleAddedTitle,tone:"create",body:e.added(String(g(u.ADD_RULE,t).name??""))}),DELETE_RULE:(e,t,r)=>({title:e.ruleDeletedTitle,tone:"delete",body:e.deleted(y(r,t.target.id)?.name??t.target.id)}),SET_EXAMPLE_NAME:(e,t,r)=>({title:e.exampleRenamedTitle,tone:"update",body:X(e,R(r,t.target.id)?.name,g(u.SET_EXAMPLE_NAME,t).name??"")}),SET_EXAMPLE_DESCRIPTION:(e,t)=>({title:e.exampleDescriptionUpdatedTitle,tone:"update",body:e.arrowTo(String(g(u.SET_EXAMPLE_DESCRIPTION,t).description??"").slice(0,90))}),MOVE_EXAMPLE:(e,t,r)=>({title:e.exampleMovedTitle,tone:"move",body:e.arrowTo(y(r,String(g(u.MOVE_EXAMPLE,t).ruleId))?.name??String(g(u.MOVE_EXAMPLE,t).ruleId??""))}),REORDER_EXAMPLE:(e,t)=>({title:e.exampleReorderedTitle,tone:"move",body:Y(e,g(u.REORDER_EXAMPLE,t).after)}),ADD_EXAMPLE:(e,t)=>({title:e.exampleAddedTitle,tone:"create",body:e.added(String(g(u.ADD_EXAMPLE,t).name??""))}),DELETE_EXAMPLE:(e,t,r)=>({title:e.exampleDeletedTitle,tone:"delete",body:e.deleted(R(r,t.target.id)?.name??t.target.id)}),SET_QUESTION_NAME:(e,t,r)=>({title:e.questionRenamedTitle,tone:"update",body:X(e,S(r,t.target.id)?.name,g(u.SET_QUESTION_NAME,t).name??"")}),SET_QUESTION_DESCRIPTION:(e,t)=>({title:e.questionDescriptionUpdatedTitle,tone:"update",body:e.arrowTo(String(g(u.SET_QUESTION_DESCRIPTION,t).description??"").slice(0,90))}),MOVE_QUESTION:(e,t,r)=>({title:e.questionMovedTitle,tone:"move",body:e.arrowTo(y(r,String(g(u.MOVE_QUESTION,t).ruleId))?.name??String(g(u.MOVE_QUESTION,t).ruleId??""))}),REORDER_QUESTION:(e,t)=>({title:e.questionReorderedTitle,tone:"move",body:Y(e,g(u.REORDER_QUESTION,t).after)}),ADD_QUESTION:(e,t)=>({title:e.questionAddedTitle,tone:"create",body:e.added(String(g(u.ADD_QUESTION,t).name??""))}),DELETE_QUESTION:(e,t,r)=>({title:e.questionDeletedTitle,tone:"delete",body:e.deleted(S(r,t.target.id)?.name??t.target.id)})},Y=(e,t)=>t==null?e.toTop:e.afterPlacement(t),ge=(e,t,r,n)=>{let a;try{const o=pt[t.type];a=o?o(e,t,n??r):{title:t.type,tone:"meta"}}catch{a={title:t.type,tone:"meta"}}return{title:a.title,targetLabel:xe(e,r,t.target),tone:a.tone,...a.body===void 0?{}:{summary:a.body}}},ye=e=>`${e.type} ${O(e.target)} ${JSON.stringify(e.payload)}`,xe=(e,t,r)=>{try{switch(r.type){case"story":{const n=T(t,r.id);return n?`${e.kindLabel("story")} \xB7 ${n.name}`:`${e.kindLabel("story")} \xB7 ${r.id} (missing)`}case"rule":{const n=y(t,r.id);return n?`${e.kindLabel("rule")} \xB7 ${n.name}`:`${e.kindLabel("rule")} \xB7 ${r.id} (missing)`}case"example":{const n=R(t,r.id);return n?`${e.kindLabel("example")} \xB7 ${n.name}`:`${e.kindLabel("example")} \xB7 ${r.id} (missing)`}case"question":{const n=S(t,r.id);return n?`${e.kindLabel("question")} \xB7 ${n.name}`:`${e.kindLabel("question")} \xB7 ${r.id} (missing)`}case"page":return`${e.map} \xB7 ${j(t)}`;default:return`${r.type} \xB7 ${r.id}`}}catch{return`${r.type} \xB7 ${r.id}`}},fe=(e,t,r)=>{const n=[{value:"page:example-mapping",label:e.wholeMap,group:e.map}];for(const a of t.stories)n.push({value:O({type:"story",id:a.id}),label:a.name,group:e.kindLabel("story")});for(const a of t.rules){const o=T(t,a.storyId);n.push({value:O({type:"rule",id:a.id}),label:o?`${o.name} \u203A ${a.name}`:a.name,group:e.kindLabel("rule")})}for(const a of t.examples){const o=y(t,a.ruleId);n.push({value:O({type:"example",id:a.id}),label:o?`${o.name} \u203A ${a.name}`:a.name,group:e.kindLabel("example")})}for(const a of t.questions){const o=y(t,a.ruleId);n.push({value:O({type:"question",id:a.id}),label:o?`${o.name} \u203A ${a.name}`:a.name,group:e.kindLabel("question")})}return n},he=(e,t,r)=>{const n=U(t,r.card);return n?{value:O({type:n.kind,id:n.id}),label:n.name,group:e.kindLabel(n.kind)}:null},ut=4,Te=(e,t,r)=>{const n=t.rules.filter(p=>p.storyId===r),a=new Set(n.map(p=>p.id)),o=t.examples.filter(p=>a.has(p.ruleId)),i=t.questions.filter(p=>a.has(p.ruleId)).length,d=n.some(p=>!o.some(l=>l.ruleId===p.id)),c=n.length===0?"empty":i>0?"open-questions":n.length>ut?"too-big":d?"thin":"ready";return{rules:n.length,examples:o.length,questions:i,readiness:c,label:e.readinessLabel(c)}},j=e=>e.title??"Example Mapping",Re=(e,t)=>{const r=U(e,t.card),n={...t};return r?n.card=r.id:delete n.card,n},Se=(e,t)=>{switch(t.type){case"story":case"rule":case"example":case"question":return U(e,t.id)?.kind===t.type;case"page":return!0;default:return!1}},be=e=>{const t=C(e);return{name:"example-mapping",label:"Example Mapping",parseBase:te,emptyBase:re,actions:u,apply:se,canonicalState:nt,hasTarget:Se,describe:(r,n,a)=>ge(t,r,n,a),serialize:ye,resolveNavigation:Re,commentTargets:(r,n)=>fe(t,r),currentTarget:(r,n)=>he(t,r,n),title:j}},B=(e,t,r)=>{const n=Xe(t,ie(e.state));return e.dispatch(r(n)).ok?(e.navigate({card:n}),n):null},ct=(e,t)=>B(e,"new-story",r=>L.addStory(r,t.newStory)),mt=(e,t,r)=>B(e,"new-rule",n=>L.addRule(r,n,t.newRule)),Et=(e,t,r)=>B(e,"new-example",n=>L.addExample(r,n,t.newExample)),gt=(e,t,r)=>B(e,"new-question",n=>L.addQuestion(r,n,t.newQuestion)),yt={width:300,height:260},_e=["story","rule","example","question"],ve={story:{bg:"linear-gradient(178deg, #fff3a6, #fde77a)",ink:"#4a3a06"},rule:{bg:"linear-gradient(178deg, #a3d1f5, #7cb8ea)",ink:"#0e2c4b"},example:{bg:"linear-gradient(178deg, #c9eb95, #a8dc63)",ink:"#22380a"},question:{bg:"linear-gradient(178deg, #fbc6d9, #f4a0c0)",ink:"#4b1029"}},k=e=>{const{bg:t,ink:r}=ve[e];return`--em-card-bg:${t};--em-card-ink:${r}`},xt=H`
|
|
2
|
+
:host {
|
|
3
|
+
position: relative;
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
gap: 6px;
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
min-height: 76px;
|
|
9
|
+
padding: 17px 11px 11px;
|
|
10
|
+
border-radius: 3px;
|
|
11
|
+
background: var(--em-card-bg, var(--dpk-paper-raised));
|
|
12
|
+
color: var(--em-card-ink, var(--dpk-ink));
|
|
13
|
+
box-shadow:
|
|
14
|
+
0 1px 2px rgba(30, 24, 10, 0.14),
|
|
15
|
+
0 5px 10px -4px rgba(30, 24, 10, 0.24);
|
|
16
|
+
cursor: grab;
|
|
17
|
+
transform: rotate(var(--em-tilt, 0deg));
|
|
18
|
+
transition:
|
|
19
|
+
transform 180ms ease,
|
|
20
|
+
box-shadow 180ms ease,
|
|
21
|
+
opacity 180ms ease;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host(:hover) {
|
|
25
|
+
z-index: 6;
|
|
26
|
+
transform: rotate(0deg) translateY(-2px);
|
|
27
|
+
box-shadow:
|
|
28
|
+
0 2px 4px rgba(30, 24, 10, 0.16),
|
|
29
|
+
0 12px 22px -6px rgba(30, 24, 10, 0.3);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
:host([focused]) {
|
|
33
|
+
z-index: 5;
|
|
34
|
+
outline: 2px solid var(--dpk-blue);
|
|
35
|
+
outline-offset: 2px;
|
|
36
|
+
transform: rotate(0deg);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host([data-mode='editing']),
|
|
40
|
+
:host([data-mode='commenting']) {
|
|
41
|
+
z-index: 7;
|
|
42
|
+
transform: rotate(0deg);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:host([dragging]) {
|
|
46
|
+
opacity: 0.4;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
:host([data-kind='story']) {
|
|
50
|
+
min-height: 68px;
|
|
51
|
+
padding: 19px 14px 13px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Small, faint, top-left: readable when looked for, quiet when not. */
|
|
55
|
+
.card-kind {
|
|
56
|
+
position: absolute;
|
|
57
|
+
top: 5px;
|
|
58
|
+
left: 8px;
|
|
59
|
+
font-family: var(--dpk-mono);
|
|
60
|
+
font-size: 8px;
|
|
61
|
+
font-weight: 600;
|
|
62
|
+
letter-spacing: 0.12em;
|
|
63
|
+
opacity: 0.5;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.card-name {
|
|
67
|
+
min-width: 0;
|
|
68
|
+
font-size: 13px;
|
|
69
|
+
font-weight: 680;
|
|
70
|
+
line-height: 1.35;
|
|
71
|
+
letter-spacing: -0.01em;
|
|
72
|
+
overflow-wrap: anywhere;
|
|
73
|
+
cursor: text;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
:host([data-kind='story']) .card-name {
|
|
77
|
+
font-size: 15.5px;
|
|
78
|
+
line-height: 1.3;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.card-text {
|
|
82
|
+
font-size: 11.5px;
|
|
83
|
+
line-height: 1.5;
|
|
84
|
+
opacity: 0.72;
|
|
85
|
+
white-space: pre-wrap;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Comments already left: a corner flag, readable without hover. */
|
|
89
|
+
.card-flag {
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: -7px;
|
|
92
|
+
right: -7px;
|
|
93
|
+
min-width: 17px;
|
|
94
|
+
height: 17px;
|
|
95
|
+
padding: 0 4px;
|
|
96
|
+
box-sizing: border-box;
|
|
97
|
+
border-radius: 999px;
|
|
98
|
+
background: var(--dpk-accent);
|
|
99
|
+
color: var(--dpk-accent-ink);
|
|
100
|
+
font-family: var(--dpk-mono);
|
|
101
|
+
font-size: 9.5px;
|
|
102
|
+
font-weight: 650;
|
|
103
|
+
line-height: 17px;
|
|
104
|
+
text-align: center;
|
|
105
|
+
box-shadow: 0 1px 4px rgba(217, 73, 32, 0.35);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* A side rail of round buttons that fades in on hover, like Event Storming:
|
|
109
|
+
nothing crosses the card's face. */
|
|
110
|
+
.card-tools {
|
|
111
|
+
position: absolute;
|
|
112
|
+
top: 9px;
|
|
113
|
+
right: -11px;
|
|
114
|
+
z-index: 8;
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-direction: column;
|
|
117
|
+
gap: 3px;
|
|
118
|
+
opacity: 0;
|
|
119
|
+
pointer-events: none;
|
|
120
|
+
transition: opacity 140ms ease;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
:host(:hover) .card-tools,
|
|
124
|
+
:host([data-mode='commenting']) .card-tools,
|
|
125
|
+
.card-tools:focus-within {
|
|
126
|
+
opacity: 1;
|
|
127
|
+
pointer-events: auto;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.card-tools .dpk-icon-btn {
|
|
131
|
+
width: 22px;
|
|
132
|
+
height: 22px;
|
|
133
|
+
border: 1px solid var(--dpk-rule);
|
|
134
|
+
border-radius: 50%;
|
|
135
|
+
background: color-mix(in srgb, var(--dpk-paper-raised) 94%, transparent);
|
|
136
|
+
box-shadow: var(--dpk-shadow-xs);
|
|
137
|
+
}
|
|
138
|
+
`;class ft extends Ye{static{this.styles=[Be,xt,Ve]}static{this.properties={card:{attribute:!1},notes:{attribute:!1},tilt:{attribute:!1},mode:{type:String,reflect:!0,attribute:"data-mode"},focused:{type:Boolean,reflect:!0},dragging:{type:Boolean,reflect:!0},onIntent:{attribute:!1}}}#r="";#a=new He(this);#e=new ze(this);constructor(){super(),this.card=null,this.notes=[],this.tilt=0,this.mode="view",this.focused=!1,this.dragging=!1,this.onIntent=null,this.addEventListener("click",()=>this.#t({kind:"select"})),this.addEventListener("focusin",()=>this.draggable=!1),this.addEventListener("focusout",()=>this.draggable=!0)}updated(t){if(t.has("card")&&this.card){const{bg:a,ink:o}=ve[this.card.kind];this.setAttribute("data-kind",this.card.kind),this.style.setProperty("--em-card-bg",a),this.style.setProperty("--em-card-ink",o)}if(t.has("tilt")&&this.style.setProperty("--em-tilt",`${this.tilt}deg`),t.has("mode")&&(this.mode!=="commenting"&&(this.#r=""),this.mode==="editing"&&this.renderRoot.querySelector("dpk-component-inline-edit")?.startEditing()),this.mode!=="commenting")return;const r=this.renderRoot.querySelector(".comment-pop"),n=this.renderRoot.querySelector('[data-role="comment"]');r&&n&&this.#a.open(r,n,yt)}render(){const t=this.card;if(!t)return $;const r=C(this.#e.locale),n=r.kindLabel(t.kind);return h`
|
|
139
|
+
<div class="card-kind">${n}</div>
|
|
140
|
+
<dpk-component-inline-edit
|
|
141
|
+
class="card-name"
|
|
142
|
+
?wrap=${!0}
|
|
143
|
+
?seamless=${!0}
|
|
144
|
+
.value=${t.name}
|
|
145
|
+
.label=${r.nameField(n)}
|
|
146
|
+
@dpk-commit=${Ke(a=>this.#t({kind:"rename",name:a}))}
|
|
147
|
+
></dpk-component-inline-edit>
|
|
148
|
+
${t.description?h`<div class="card-text">${t.description}</div>`:$}
|
|
149
|
+
${this.notes.length>0?h`<span class="card-flag">${this.notes.length}</span>`:$}
|
|
150
|
+
<div class="card-tools">
|
|
151
|
+
<button
|
|
152
|
+
class="dpk-icon-btn"
|
|
153
|
+
type="button"
|
|
154
|
+
data-role="comment"
|
|
155
|
+
aria-label=${r.commentButton}
|
|
156
|
+
data-active=${String(this.mode==="commenting")}
|
|
157
|
+
@click=${this.#n({kind:"toggle-comment"})}
|
|
158
|
+
>
|
|
159
|
+
${Fe()}
|
|
160
|
+
</button>
|
|
161
|
+
<button
|
|
162
|
+
class="dpk-icon-btn"
|
|
163
|
+
type="button"
|
|
164
|
+
data-role="delete"
|
|
165
|
+
aria-label=${r.deleteButton}
|
|
166
|
+
@click=${this.#n({kind:"delete"})}
|
|
167
|
+
>
|
|
168
|
+
${je()}
|
|
169
|
+
</button>
|
|
170
|
+
</div>
|
|
171
|
+
${this.mode==="commenting"?this.#o(t):$}
|
|
172
|
+
`}#o(t){return Ze(et(this.#e.locale),Ge(this.#r,this.notes.map(Je),{label:t.name}),r=>{r.kind==="input"?(this.#r=r.body,this.requestUpdate()):this.#t(r)})}#n(t){return r=>{r.stopPropagation(),this.#t(t)}}#t(t){this.onIntent?.(t)}}const ht=()=>{customElements.get("dpk-internal-example-mapping-card")||customElements.define("dpk-internal-example-mapping-card",ft)},M=(e,t,r)=>{const n=e.at(-1)??null;if(t===null||r==="end")return n;const a=e.indexOf(t);return a<0?n:r==="after"?t:a===0?null:e.at(a-1)??null},De=(e,t,r,n)=>{if(!T(e,t))return null;const a=e.stories.filter(o=>o.id!==t).map(o=>o.id);return{type:"REORDER_STORY",target:{type:"story",id:t},payload:{after:M(a,r,n)}}},Ie=(e,t,r,n,a)=>{if(!T(e,t)||!y(e,r))return null;const o=e.rules.filter(i=>i.storyId===t&&i.id!==r).map(i=>i.id);return{type:"MOVE_RULE",target:{type:"rule",id:r},payload:{storyId:t,after:M(o,n,a)}}},Oe=(e,t,r,n,a)=>{if(!y(e,t)||!R(e,r))return null;const o=e.examples.filter(i=>i.ruleId===t&&i.id!==r).map(i=>i.id);return{type:"MOVE_EXAMPLE",target:{type:"example",id:r},payload:{ruleId:t,after:M(o,n,a)}}},ke=(e,t,r,n,a)=>{if(!y(e,t)||!S(e,r))return null;const o=e.questions.filter(i=>i.ruleId===t&&i.id!==r).map(i=>i.id);return{type:"MOVE_QUESTION",target:{type:"question",id:r},payload:{ruleId:t,after:M(o,n,a)}}},V={kind:"idle"},J=(e,t)=>e.kind!=="idle"&&e.cardId===t,$e=(e,t)=>J(e,t)&&(e.kind==="editing"||e.kind==="commenting")?e.kind:"view",Le=(e,t,r)=>{switch(r.kind){case"toggle-comment":return e.kind==="commenting"&&e.cardId===t?V:{kind:"commenting",cardId:t};case"rename":case"comment":case"dismiss":case"delete":return J(e,t)?V:e;case"select":return e}},Tt=(e,t)=>{if(e==="story")return 0;let r=0;for(const n of t)r=r*31+n.charCodeAt(0)|0;return(Math.abs(r)%5-2)*.45},Rt=e=>h`<ul class="legend" aria-label=${e.cardKinds}>
|
|
173
|
+
${_e.map(t=>h`<li><span class="legend-swatch" style=${k(t)}></span>${e.kindLabel(t)}</li>`)}
|
|
174
|
+
</ul>`,St=e=>{const{context:t,handlers:r,m:n}=e;return t.state.stories.length===0?h`
|
|
175
|
+
<div class="empty">
|
|
176
|
+
<h2>${n.noStoriesTitle}</h2>
|
|
177
|
+
<p>${n.noStoriesBody}</p>
|
|
178
|
+
<button class="dpk-btn dpk-btn--accent" type="button" @click=${r.addStory}>${n.firstStory}</button>
|
|
179
|
+
</div>
|
|
180
|
+
`:h`
|
|
181
|
+
<div class="board" data-testid="example-mapping-board">
|
|
182
|
+
${z(t.state.stories,a=>a.id,a=>bt(e,a))}
|
|
183
|
+
<button class="add-story" type="button" @click=${r.addStory}>${n.addStoryButton}</button>
|
|
184
|
+
</div>
|
|
185
|
+
`},W=(e,t,r)=>{const{context:n,mode:a,drag:o,handlers:i}=e,d=n.comments.filter(p=>p.target.type===t&&p.target.id===r.id),c=o.source({type:t,id:r.id});return h`<dpk-internal-example-mapping-card
|
|
186
|
+
data-card=${r.id}
|
|
187
|
+
data-card-kind=${t}
|
|
188
|
+
draggable="true"
|
|
189
|
+
.card=${{kind:t,id:r.id,name:r.name,...r.description===void 0?{}:{description:r.description}}}
|
|
190
|
+
.notes=${d}
|
|
191
|
+
.tilt=${Tt(t,r.id)}
|
|
192
|
+
.mode=${$e(a,r.id)}
|
|
193
|
+
.onIntent=${p=>i.cardIntent(r.id,t,p)}
|
|
194
|
+
?focused=${n.navigation.card===r.id}
|
|
195
|
+
?dragging=${o.isDragging(t,r.id)}
|
|
196
|
+
@dragstart=${c.dragstart}
|
|
197
|
+
@dragend=${c.dragend}
|
|
198
|
+
></dpk-internal-example-mapping-card>`},bt=(e,t)=>{const{context:r,drag:n,handlers:a,m:o}=e,i=Te(o,r.state,t.id),d=`story:${t.id}`,c=n.target({key:d,accepts:"story",hovered:we(".story-section","story"),onDrop:a.dropStory}),p=`rules:${t.id}`,l=n.target({key:p,accepts:"rule",hovered:we(".rule-col","rule"),onDrop:_=>a.dropRule(t.id,_)});return h`
|
|
199
|
+
<section
|
|
200
|
+
class="story-section"
|
|
201
|
+
data-story=${t.id}
|
|
202
|
+
data-drop=${String(n.isOver(d))}
|
|
203
|
+
@dragenter=${c.dragenter}
|
|
204
|
+
@dragover=${c.dragover}
|
|
205
|
+
@dragleave=${c.dragleave}
|
|
206
|
+
@drop=${c.drop}
|
|
207
|
+
>
|
|
208
|
+
<header class="story-row">
|
|
209
|
+
<div class="story-slot">${W(e,"story",t)}</div>
|
|
210
|
+
<div class="story-meta">
|
|
211
|
+
<span class="readiness" data-readiness=${i.readiness}>${i.label}</span>
|
|
212
|
+
<span class="tally"
|
|
213
|
+
><i class="tally-dot" style=${k("rule")}></i>${o.kindLabel("rule")} ${i.rules}</span
|
|
214
|
+
>
|
|
215
|
+
<span class="tally"
|
|
216
|
+
><i class="tally-dot" style=${k("example")}></i>${o.kindLabel("example")}
|
|
217
|
+
${i.examples}</span
|
|
218
|
+
>
|
|
219
|
+
<span class="tally"
|
|
220
|
+
><i class="tally-dot" style=${k("question")}></i>${o.kindLabel("question")}
|
|
221
|
+
${i.questions}</span
|
|
222
|
+
>
|
|
223
|
+
</div>
|
|
224
|
+
</header>
|
|
225
|
+
<div
|
|
226
|
+
class="rules-row"
|
|
227
|
+
data-testid=${`rules-${t.id}`}
|
|
228
|
+
data-drop=${String(n.isOver(p))}
|
|
229
|
+
@dragenter=${l.dragenter}
|
|
230
|
+
@dragover=${l.dragover}
|
|
231
|
+
@dragleave=${l.dragleave}
|
|
232
|
+
@drop=${l.drop}
|
|
233
|
+
>
|
|
234
|
+
${z(ne(r.state,t.id),_=>_.id,_=>_t(e,_))}
|
|
235
|
+
<button class="add-rule" type="button" @click=${()=>a.addRule(t.id)}>
|
|
236
|
+
<span class="add-plus">+</span>${o.kindLabel("rule")}
|
|
237
|
+
</button>
|
|
238
|
+
</div>
|
|
239
|
+
</section>
|
|
240
|
+
`},_t=(e,t)=>{const{drag:r}=e;return h`
|
|
241
|
+
<div class="rule-col" data-rule=${t.id} ?data-dragging=${r.isDragging("rule",t.id)}>
|
|
242
|
+
${W(e,"rule",t)} ${Me(e,t.id,"example")}
|
|
243
|
+
${Me(e,t.id,"question")}
|
|
244
|
+
</div>
|
|
245
|
+
`},vt={example:"examples",question:"questions"},Dt=(e,t)=>({testid:vt[t],label:e.kindLabel(t),empty:t==="example"?e.noExamples:e.noQuestions,add:`+ ${e.kindLabel(t)}`}),Me=(e,t,r)=>{const{context:n,drag:a,handlers:o,m:i}=e,d=Dt(i,r),c=`${d.testid}:${t}`,p=r==="example"?a.target({key:c,accepts:"example",hovered:Ae("example"),onDrop:v=>o.dropExample(t,v)}):a.target({key:c,accepts:"question",hovered:Ae("question"),onDrop:v=>o.dropQuestion(t,v)}),l=r==="example"?ae(n.state,t):oe(n.state,t),_=r==="example"?o.addExample:o.addQuestion;return h`<div
|
|
246
|
+
class="card-area card-area--${r}"
|
|
247
|
+
data-testid=${`${d.testid}-${t}`}
|
|
248
|
+
data-drop=${String(a.isOver(c))}
|
|
249
|
+
@dragenter=${p.dragenter}
|
|
250
|
+
@dragover=${p.dragover}
|
|
251
|
+
@dragleave=${p.dragleave}
|
|
252
|
+
@drop=${p.drop}
|
|
253
|
+
>
|
|
254
|
+
<h3 class="area-label"><i class="tally-dot" style=${k(r)}></i>${d.label}</h3>
|
|
255
|
+
${z(l,v=>v.id,v=>W(e,r,v))}
|
|
256
|
+
${l.length===0?h`<p class="stack-hint">${d.empty}</p>`:$}
|
|
257
|
+
<button class="add-card add-${r}" type="button" @click=${()=>_(t)}>${d.add}</button>
|
|
258
|
+
</div>`},Ae=e=>t=>{const r=t.target instanceof Element?t.target.closest("dpk-internal-example-mapping-card"):null;return!r||r.getAttribute("data-card-kind")!==e?null:{id:r.getAttribute("data-card"),element:r}},we=(e,t)=>r=>{const n=r.target instanceof Element?r.target.closest(e):null;return n?{id:n.getAttribute(`data-${t}`),element:n}:null},It=H`
|
|
259
|
+
/* ------------------------------------------------------------ legend */
|
|
260
|
+
|
|
261
|
+
.legend {
|
|
262
|
+
display: flex;
|
|
263
|
+
flex-wrap: wrap;
|
|
264
|
+
gap: 4px 14px;
|
|
265
|
+
margin: 0;
|
|
266
|
+
padding: 0;
|
|
267
|
+
list-style: none;
|
|
268
|
+
font-size: 11.5px;
|
|
269
|
+
color: var(--dpk-ink-soft);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.legend li {
|
|
273
|
+
display: inline-flex;
|
|
274
|
+
align-items: center;
|
|
275
|
+
gap: 6px;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.legend-swatch {
|
|
279
|
+
width: 14px;
|
|
280
|
+
height: 11px;
|
|
281
|
+
border-radius: 2px;
|
|
282
|
+
background: var(--em-card-bg);
|
|
283
|
+
box-shadow: 0 1px 2px rgba(30, 24, 10, 0.18);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/* ------------------------------------------------------------- board */
|
|
287
|
+
|
|
288
|
+
.board {
|
|
289
|
+
display: grid;
|
|
290
|
+
gap: 22px;
|
|
291
|
+
align-content: start;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.story-section {
|
|
295
|
+
display: grid;
|
|
296
|
+
gap: 18px;
|
|
297
|
+
min-width: 0;
|
|
298
|
+
padding: 20px 22px 24px;
|
|
299
|
+
border: 1px solid var(--dpk-rule);
|
|
300
|
+
border-radius: var(--dpk-radius-lg);
|
|
301
|
+
background:
|
|
302
|
+
radial-gradient(circle, var(--dpk-rule) 1px, transparent 1.2px) 0 0 / 18px 18px,
|
|
303
|
+
var(--dpk-paper-raised);
|
|
304
|
+
box-shadow: var(--dpk-shadow);
|
|
305
|
+
transition: outline-color 150ms ease;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.story-section[data-drop='true'] {
|
|
309
|
+
outline: 2px dashed var(--dpk-blue);
|
|
310
|
+
outline-offset: 4px;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/* The story heads the table: one wide card, with where it stands beside it. */
|
|
314
|
+
.story-row {
|
|
315
|
+
display: flex;
|
|
316
|
+
flex-wrap: wrap;
|
|
317
|
+
align-items: center;
|
|
318
|
+
gap: 14px 20px;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.story-slot {
|
|
322
|
+
width: min(420px, 100%);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.story-meta {
|
|
326
|
+
display: flex;
|
|
327
|
+
flex-wrap: wrap;
|
|
328
|
+
align-items: center;
|
|
329
|
+
gap: 6px;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.readiness {
|
|
333
|
+
padding: 4px 11px;
|
|
334
|
+
border-radius: 999px;
|
|
335
|
+
font-size: 11.5px;
|
|
336
|
+
font-weight: 650;
|
|
337
|
+
background: var(--dpk-paper-sunken);
|
|
338
|
+
color: var(--dpk-ink-soft);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.readiness[data-readiness='ready'] {
|
|
342
|
+
background: var(--dpk-green-soft);
|
|
343
|
+
color: var(--dpk-green);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.readiness[data-readiness='open-questions'],
|
|
347
|
+
.readiness[data-readiness='too-big'] {
|
|
348
|
+
background: var(--dpk-danger-soft);
|
|
349
|
+
color: var(--dpk-danger);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.readiness[data-readiness='thin'] {
|
|
353
|
+
background: var(--dpk-amber-soft);
|
|
354
|
+
color: var(--dpk-amber);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.tally {
|
|
358
|
+
display: inline-flex;
|
|
359
|
+
align-items: center;
|
|
360
|
+
gap: 5px;
|
|
361
|
+
padding: 3px 9px;
|
|
362
|
+
border: 1px solid var(--dpk-rule);
|
|
363
|
+
border-radius: 999px;
|
|
364
|
+
background: var(--dpk-paper-raised);
|
|
365
|
+
font-family: var(--dpk-mono);
|
|
366
|
+
font-size: 10.5px;
|
|
367
|
+
font-variant-numeric: tabular-nums;
|
|
368
|
+
color: var(--dpk-ink-soft);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
.tally-dot {
|
|
372
|
+
width: 8px;
|
|
373
|
+
height: 8px;
|
|
374
|
+
border-radius: 2px;
|
|
375
|
+
background: var(--em-card-bg);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/* ------------------------------------------------- rules and examples */
|
|
379
|
+
|
|
380
|
+
/* Rules side by side under the story; the row scrolls, never the page. */
|
|
381
|
+
.rules-row {
|
|
382
|
+
display: flex;
|
|
383
|
+
align-items: flex-start;
|
|
384
|
+
gap: 14px;
|
|
385
|
+
min-width: 0;
|
|
386
|
+
overflow-x: auto;
|
|
387
|
+
padding: 4px 4px 16px;
|
|
388
|
+
border-radius: var(--dpk-radius);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.rules-row[data-drop='true'] {
|
|
392
|
+
background: var(--dpk-blue-soft);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/* A rule and its examples read as one lane: a soft tint, no side border. */
|
|
396
|
+
.rule-col {
|
|
397
|
+
flex: 0 0 204px;
|
|
398
|
+
display: grid;
|
|
399
|
+
gap: 16px;
|
|
400
|
+
align-content: start;
|
|
401
|
+
padding: 10px 10px 14px;
|
|
402
|
+
border-radius: var(--dpk-radius-lg);
|
|
403
|
+
background: linear-gradient(180deg, rgba(51, 102, 204, 0.09), rgba(51, 102, 204, 0.03) 70%, transparent);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.rule-col[data-dragging] {
|
|
407
|
+
opacity: 0.45;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/* Examples on top, questions below: two areas, each its own drop target. */
|
|
411
|
+
.card-area {
|
|
412
|
+
display: grid;
|
|
413
|
+
gap: 12px;
|
|
414
|
+
align-content: start;
|
|
415
|
+
min-height: 44px;
|
|
416
|
+
padding: 8px 8px 10px;
|
|
417
|
+
border-radius: var(--dpk-radius);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.card-area--example {
|
|
421
|
+
background: var(--dpk-green-soft);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.card-area--question {
|
|
425
|
+
background: var(--dpk-danger-soft);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.card-area--question dpk-internal-example-mapping-card {
|
|
429
|
+
min-height: 56px;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.card-area[data-drop='true'] {
|
|
433
|
+
outline: 2px dashed var(--dpk-blue);
|
|
434
|
+
outline-offset: 2px;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
.area-label {
|
|
438
|
+
display: flex;
|
|
439
|
+
align-items: center;
|
|
440
|
+
gap: 6px;
|
|
441
|
+
margin: 0;
|
|
442
|
+
font-size: 10.5px;
|
|
443
|
+
font-weight: 600;
|
|
444
|
+
letter-spacing: 0.04em;
|
|
445
|
+
color: var(--dpk-ink-soft);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
.stack-hint {
|
|
449
|
+
margin: 0;
|
|
450
|
+
font-size: 11px;
|
|
451
|
+
color: var(--dpk-ink-faint);
|
|
452
|
+
text-align: center;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/* -------------------------------------------------------- add buttons */
|
|
456
|
+
|
|
457
|
+
.add-card,
|
|
458
|
+
.add-rule,
|
|
459
|
+
.add-story {
|
|
460
|
+
border: 1px dashed var(--dpk-rule-strong);
|
|
461
|
+
border-radius: var(--dpk-radius-sm);
|
|
462
|
+
background: color-mix(in srgb, var(--dpk-paper-raised) 60%, transparent);
|
|
463
|
+
color: var(--dpk-ink-faint);
|
|
464
|
+
font: inherit;
|
|
465
|
+
font-size: 11.5px;
|
|
466
|
+
cursor: pointer;
|
|
467
|
+
transition:
|
|
468
|
+
background 140ms ease,
|
|
469
|
+
border-color 140ms ease,
|
|
470
|
+
color 140ms ease;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.add-card {
|
|
474
|
+
padding: 6px 8px;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
.add-rule {
|
|
478
|
+
flex: 0 0 120px;
|
|
479
|
+
display: grid;
|
|
480
|
+
place-items: center;
|
|
481
|
+
align-content: center;
|
|
482
|
+
gap: 2px;
|
|
483
|
+
min-height: 96px;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.add-plus {
|
|
487
|
+
font-size: 18px;
|
|
488
|
+
line-height: 1;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.add-story {
|
|
492
|
+
justify-self: start;
|
|
493
|
+
padding: 10px 18px;
|
|
494
|
+
font-size: 12.5px;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.add-card:hover,
|
|
498
|
+
.add-rule:hover,
|
|
499
|
+
.add-story:hover {
|
|
500
|
+
border-color: var(--dpk-blue);
|
|
501
|
+
background: var(--dpk-blue-soft);
|
|
502
|
+
color: var(--dpk-blue);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
.empty {
|
|
506
|
+
display: grid;
|
|
507
|
+
gap: 10px;
|
|
508
|
+
max-width: 620px;
|
|
509
|
+
padding: 28px 24px;
|
|
510
|
+
border: 1px dashed var(--dpk-rule-strong);
|
|
511
|
+
border-radius: var(--dpk-radius-lg);
|
|
512
|
+
background: var(--dpk-paper-raised);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.empty p {
|
|
516
|
+
margin: 0;
|
|
517
|
+
color: var(--dpk-ink-soft);
|
|
518
|
+
line-height: 1.7;
|
|
519
|
+
}
|
|
520
|
+
`,Ot={story:"SET_STORY_NAME",rule:"SET_RULE_NAME",example:"SET_EXAMPLE_NAME",question:"SET_QUESTION_NAME"},kt={story:"DELETE_STORY",rule:"DELETE_RULE",example:"DELETE_EXAMPLE",question:"DELETE_QUESTION"};class qe extends Z{static{this.styles=[Z.styles,It]}definitionFor(t){return be(t)}static{this.properties={mode:{state:!0}}}#r=new We(this);constructor(){super(),this.mode=V}renderRegions(t){const r=C(this.locale);return{header:Rt(r),main:this.#a(t,r)}}#a(t,r){return h`
|
|
521
|
+
${St({context:t,mode:this.mode,drag:this.#r,m:r,handlers:{cardIntent:(n,a,o)=>this.#o(n,a,o),addStory:()=>this.#e(ct(t,r)),addRule:n=>this.#e(mt(t,r,n)),addExample:n=>this.#e(Et(t,r,n)),addQuestion:n=>this.#e(gt(t,r,n)),dropStory:n=>this.#n(n),dropRule:(n,a)=>this.#t(n,a),dropExample:(n,a)=>this.#d(n,a),dropQuestion:(n,a)=>this.#s(n,a)}})}
|
|
522
|
+
`}#e(t){t!==null&&(this.mode={kind:"editing",cardId:t})}#o(t,r,n){const a=this.context();switch(n.kind){case"select":a.navigate({card:t});break;case"rename":a.dispatch({type:Ot[r],target:{type:r,id:t},payload:{name:n.name}});break;case"comment":a.dispatch({type:"comment",target:`${r}:${t}`,payload:{body:n.body}});break;case"delete":a.dispatch({type:kt[r],target:{type:r,id:t},payload:{}}),a.navigation.card===t&&a.navigate({card:null});break}this.mode=Le(this.mode,t,n)}#n(t){const r=this.context(),n=De(r.state,t.item.id,t.hoveredId,t.place);n&&r.dispatch(n)}#t(t,r){const n=this.context(),a=this.#i(r.hoveredId,r.event.clientX,r.place),o=Ie(n.state,t,r.item.id,r.hoveredId,a);o&&n.dispatch(o)}#i(t,r,n){if(t===null)return n;const a=this.renderRoot.querySelector(`.rule-col[data-rule="${t}"]`);if(!a)return n;const o=a.getBoundingClientRect();return r<=o.left+o.width/2?"before":"after"}#d(t,r){const n=this.context(),a=Oe(n.state,t,r.item.id,r.hoveredId,r.place);a&&n.dispatch(a)}#s(t,r){const n=this.context(),a=ke(n.state,t,r.item.id,r.hoveredId,r.place);a&&n.dispatch(a)}}const Ne=()=>{ht(),customElements.get("dpk-template-example-mapping")||customElements.define("dpk-template-example-mapping",qe)},$t=Object.freeze(Object.defineProperty({__proto__:null,CARD_KINDS:_e,DpkTemplateExampleMapping:qe,IDLE_MODE:V,allMappingIds:ie,applyExampleMappingAction:se,cardModeOf:$e,cardPaletteStyle:k,defineExampleMappingElement:Ne,describeExampleMappingAction:ge,dropAfter:M,emptyExampleMappingBase:re,exampleMappingAction:L,exampleMappingActions:u,exampleMappingBaseSchema:ee,exampleMappingCommentTargets:fe,exampleMappingCurrentTarget:he,exampleMappingDefinitionFor:be,exampleMappingHasTarget:Se,exampleMappingMessages:C,exampleMappingTargetLabel:xe,exampleMappingTitle:j,examplesOfRule:ae,findCard:U,findExample:R,findQuestion:S,findRule:y,findStory:T,modeConcerns:J,parseExampleMappingBase:te,presentStorySummary:Te,questionsOfRule:oe,reduceCardIntent:Le,reorderById:Ee,resolveExampleDrop:Oe,resolveExampleMappingNavigation:Re,resolveQuestionDrop:ke,resolveRuleDrop:Ie,resolveStoryDrop:De,rulesOfStory:ne,serializeExampleMappingAction:ye,storyIdOfCard:at,storyIdOfExample:ot,storyIdOfRule:de},Symbol.toStringTag,{value:"Module"}));export{Ne as d,$t as i};
|