@cardenelabs/dragon 0.34.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -720
- package/dist/cli.cjs +4529 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.js +4523 -0
- package/dist/cli.js.map +1 -0
- package/dist/export.cjs +3912 -0
- package/dist/export.cjs.map +1 -0
- package/dist/export.d.cts +36 -0
- package/dist/export.d.ts +36 -0
- package/dist/export.js +3907 -0
- package/dist/export.js.map +1 -0
- package/dist/fonts.cjs +7 -0
- package/dist/fonts.cjs.map +1 -0
- package/dist/fonts.js +4 -0
- package/dist/fonts.js.map +1 -0
- package/dist/index.cjs +4105 -20356
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +227 -5522
- package/dist/index.d.ts +227 -5522
- package/dist/index.js +4091 -20283
- package/dist/index.js.map +1 -1
- package/dist/player.global.js +2 -0
- package/dist/schema-BBWfniwH.d.cts +112 -0
- package/dist/schema-BBWfniwH.d.ts +112 -0
- package/package.json +39 -24
- package/src/cli.ts +237 -0
- package/src/export/capture.ts +277 -0
- package/src/export/fonts.ts +68 -0
- package/src/export/html.ts +32 -0
- package/src/export/index.ts +146 -0
- package/src/field-messages.ts +104 -0
- package/src/figure-text.ts +42 -0
- package/src/index.ts +30 -283
- package/src/layout/architecture.ts +381 -0
- package/src/layout/measure.ts +21 -0
- package/src/layout/scene.ts +353 -0
- package/src/layout/sequence.ts +189 -0
- package/src/load-fonts.ts +8 -0
- package/src/look/fonts.ts +33 -0
- package/src/look/palettes.json +209 -0
- package/src/look/values.ts +155 -0
- package/src/markdown.ts +35 -0
- package/src/messages.ts +122 -0
- package/src/parser.ts +342 -310
- package/src/player-global.ts +4 -0
- package/src/player.ts +271 -0
- package/src/printer.ts +76 -0
- package/src/render/icons.ts +41 -0
- package/src/render/motion.ts +106 -0
- package/src/render/parts.ts +279 -0
- package/src/render/svg.ts +341 -0
- package/src/schema.ts +161 -16
- package/src/schemas/diagram.schema.json +150 -0
- package/src/schemas/validate-diagram.d.ts +12 -0
- package/src/schemas/validate-diagram.js +8 -0
- package/src/timeline.ts +166 -0
- package/src/tokenize.ts +20 -281
- package/src/version.ts +55 -0
- package/src/view.ts +16 -0
- package/src/words.ts +79 -0
- package/examples/quick-start.md +0 -142
- package/src/canvas-bounds.ts +0 -52
- package/src/color.ts +0 -197
- package/src/compile/actor-ids.ts +0 -297
- package/src/compile/actor-option-notice.ts +0 -379
- package/src/compile/actors.ts +0 -103
- package/src/compile/c4.ts +0 -74
- package/src/compile/chain.ts +0 -93
- package/src/compile/chart-fields.ts +0 -193
- package/src/compile/deep-rewrite.ts +0 -30
- package/src/compile/derived-source.ts +0 -18
- package/src/compile/direction.ts +0 -102
- package/src/compile/edge-option-notice.ts +0 -112
- package/src/compile/er-relation.ts +0 -200
- package/src/compile/flow.ts +0 -54
- package/src/compile/flowchart.ts +0 -344
- package/src/compile/funnel.ts +0 -87
- package/src/compile/gantt.ts +0 -337
- package/src/compile/generic.ts +0 -696
- package/src/compile/hierarchy.ts +0 -92
- package/src/compile/journey.ts +0 -93
- package/src/compile/kinds.ts +0 -139
- package/src/compile/lanes.ts +0 -138
- package/src/compile/metro.ts +0 -271
- package/src/compile/mind.ts +0 -393
- package/src/compile/node-title.ts +0 -24
- package/src/compile/notice.ts +0 -141
- package/src/compile/order.ts +0 -57
- package/src/compile/parts-lookup.ts +0 -17
- package/src/compile/parts.ts +0 -2709
- package/src/compile/placement-apply.ts +0 -689
- package/src/compile/placement.ts +0 -15
- package/src/compile/quadrant.ts +0 -265
- package/src/compile/record.ts +0 -75
- package/src/compile/row-marks.ts +0 -128
- package/src/compile/rows.ts +0 -40
- package/src/compile/sequence.ts +0 -305
- package/src/compile/slug.ts +0 -37
- package/src/compile/stages.ts +0 -247
- package/src/compile/subtitle.ts +0 -35
- package/src/compile/swimlane-marks.ts +0 -87
- package/src/compile/swimlane.ts +0 -82
- package/src/compile/timeline.ts +0 -213
- package/src/compile/topology.ts +0 -44
- package/src/compile/tree.ts +0 -69
- package/src/compile/value-chart.ts +0 -337
- package/src/compile/values.ts +0 -432
- package/src/compile/word-state.ts +0 -82
- package/src/compile.ts +0 -3168
- package/src/focus.ts +0 -46
- package/src/input-size.ts +0 -181
- package/src/json-line-map.ts +0 -30
- package/src/json-parser.ts +0 -4306
- package/src/keywords.ts +0 -417
- package/src/near-name.ts +0 -42
- package/src/notation-lint.ts +0 -342
- package/src/relative-pos.ts +0 -251
- package/src/schemas/diagram.json +0 -3088
- package/src/types.ts +0 -1009
- package/src/v05/index.ts +0 -9
- package/src/v05/input-table.generated.ts +0 -138
- package/src/v05/parser-types.ts +0 -32
- package/src/v05/parser.ts +0 -6668
- package/src/v05/readout-table.generated.ts +0 -1088
- package/src/v05/removed-syntax.ts +0 -115
- package/src/value-syntax.ts +0 -313
- package/src/write-position.ts +0 -270
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var DragonPlayer=(()=>{var Ye=Object.defineProperty;var Nt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var Dt=Object.prototype.hasOwnProperty;var Rt=(e,r)=>{for(var i in r)Ye(e,i,{get:r[i],enumerable:!0})},Ft=(e,r,i,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of Ct(r))!Dt.call(e,a)&&a!==i&&Ye(e,a,{get:()=>r[a],enumerable:!(o=Nt(r,a))||o.enumerable});return e};var Bt=e=>Ft(Ye({},"__esModule",{value:!0}),e);var Lr={};Rt(Lr,{mountDiagram:()=>At});var be={ja:{cannotDraw:e=>`\u56F3\u3092\u63CF\u3051\u306A\u3044: ${e}`,overview:"\u5168\u4F53\u56F3",prev:"\u524D\u306E\u6BB5",pause:"\u6B62\u3081\u308B",play:"\u52D5\u304B\u3059",next:"\u6B21\u306E\u6BB5",steps:e=>`${e} \u306E\u6BB5`},en:{cannotDraw:e=>`Cannot draw the diagram: ${e}`,overview:"Overview",prev:"Previous step",pause:"Pause",play:"Play",next:"Next step",steps:e=>`Steps of ${e}`}};var st={clear:{name:"\u6F84\u3093\u3060\u8272",note:"\u767D\u3044\u5730\u306B\u3001\u4E2D\u304F\u3089\u3044\u306E\u660E\u308B\u3055\u306E\u9BAE\u3084\u304B\u306A 6 \u8272\u3002\u4ECA\u306E\u898B\u672C\u5E33\u306E\u8272",light:{page:"#f3f4f7",bg:"#ffffff",surf:"#ffffff",sunk:"#f5f6f8",ink:"#12141a",ink2:"#3f4451",mute:"#6b7180",hair:"#12141a1c",line:"#12141a40",sh:"#101828","on-c":"#ffffff","c-blue":"#467deb","t-blue":"#2e62ce","c-amber":"#d28008","t-amber":"#975b04","c-green":"#0ea886","t-green":"#07775e","c-violet":"#6c3bb2","t-violet":"#6c3bb2","c-rose":"#ba3e40","t-rose":"#b83c3f","c-slate":"#5d6677","t-slate":"#5d6677",coin:"#e9b114",coint:"#856300",coinin:"#a8740c",tint:"5%",edge:"20%",shA:".05",shB:".08",carry:"#65686f"},dark:{page:"#08090c",bg:"#0d0e12",surf:"#17191f",sunk:"#121419",ink:"#eceef3",ink2:"#c4c8d2",mute:"#9198a6",hair:"#eceef31f",line:"#eceef340",sh:"#000000","on-c":"#0d0e12","c-blue":"#7e7ef6","t-blue":"#989cfd","c-amber":"#c78135","t-amber":"#dd954b","c-green":"#20ac7a","t-green":"#35b986","c-violet":"#695b9f","t-violet":"#a79ae3","c-rose":"#bc434b","t-rose":"#fd7d81","c-slate":"#9ba3b2","t-slate":"#9da5b4",coin:"#f0c040",coint:"#f0c040",coinin:"#9a6a0c",tint:"6%",edge:"19%",shA:".45",shB:".35"}},paper:{name:"\u7D19\u3068\u58A8",note:"\u751F\u6210\u308A\u306E\u7D19\u306E\u5730\u306B\u3001\u85CD / \u9EC4\u571F / \u82D4 / \u8461\u8404 / \u6731 / \u920D\u306E\u304F\u3059\u3093\u3060 6 \u8272",light:{page:"#ece7dd",bg:"#f9f6f0",surf:"#fffcf6",sunk:"#f2ede4",ink:"#221e18",ink2:"#4b453b",mute:"#7b7366",hair:"#221e181f",line:"#221e1847",sh:"#3a2a10","on-c":"#fffcf6","c-blue":"#487dd5","t-blue":"#2d60b5","c-amber":"#c38405","t-amber":"#885a01","c-green":"#57a271","t-green":"#237143","c-violet":"#904698","t-violet":"#904698","c-rose":"#a9513e","t-rose":"#9f4836","c-slate":"#6a645a","t-slate":"#696359",coin:"#d4a52a",coint:"#7d5e05",coinin:"#9a7016",tint:"6%",edge:"22%",shA:".06",shB:".07",carry:"#68635c"},dark:{page:"#0e0d0b",bg:"#15130f",surf:"#1e1b17",sunk:"#191612",ink:"#ede6d8",ink2:"#cbc2b1",mute:"#9c9283",hair:"#ede6d81f",line:"#ede6d842",sh:"#000000","on-c":"#15130f","c-blue":"#5785d5","t-blue":"#76a6f9","c-amber":"#be8802","t-amber":"#d59e2f","c-green":"#52aa71","t-green":"#61b87e","c-violet":"#90529b","t-violet":"#d08edb","c-rose":"#bb4e3d","t-rose":"#f98672","c-slate":"#a9a295","t-slate":"#aca598",coin:"#dcb24e",coint:"#dcb24e",coinin:"#8a6a14",tint:"6%",edge:"19%",shA:".45",shB:".35"}},night:{name:"\u591C\u306E\u8A08\u5668",note:"\u9752\u307F\u306E\u9ED2\u306E\u5730\u306B\u3001\u5149\u308B\u6C34\u8272 / \u7425\u73C0 / \u82E5\u7DD1 / \u83EB / \u6843 \u306E 6 \u8272\u3002\u660E\u308B\u3044\u5074\u306F\u9752\u7070\u306E\u5730",light:{page:"#e9eef5",bg:"#f6f9fc",surf:"#ffffff",sunk:"#eef3f8",ink:"#0b1424",ink2:"#34425a",mute:"#64748b",hair:"#0b14241c",line:"#0b142440",sh:"#0b1424","on-c":"#ffffff","c-blue":"#0385cd","t-blue":"#086aa3","c-amber":"#ba8e0f","t-amber":"#7f5f04","c-green":"#0a8857","t-green":"#027449","c-violet":"#5839ba","t-violet":"#5839ba","c-rose":"#dd4a94","t-rose":"#b82375","c-slate":"#64748b","t-slate":"#56667c",coin:"#eab308",coint:"#7e6005",coinin:"#a16207",tint:"5%",edge:"22%",shA:".06",shB:".09",carry:"#596579"},dark:{page:"#060a12",bg:"#0a101c",surf:"#111a2a",sunk:"#0d1522",ink:"#e6edf7",ink2:"#b8c4d6",mute:"#8090a8",hair:"#e6edf71c",line:"#9fb3d145",sh:"#000000","on-c":"#0a101c","c-blue":"#3884b6","t-blue":"#62ace1","c-amber":"#be8533","t-amber":"#d59b4b","c-green":"#3ba774","t-green":"#4fb884","c-violet":"#7d4ecd","t-violet":"#b494fd","c-rose":"#bc3a74","t-rose":"#ff77ad","c-slate":"#96a3b5","t-slate":"#99a6b8",coin:"#facc15",coint:"#facc15",coinin:"#a16207",tint:"6%",edge:"19%",shA:".5",shB:".4"}}};var xe={sans:"Noto Sans JP Variable",mono:"JetBrains Mono Variable"},_t={0:590,1:590,2:590,3:590,4:590,5:590,6:590,7:590,8:590,9:590," ":228,"!":371,'"':575,"#":590,$:590,"%":963,"&":740,"'":325,"(":378,")":378,"*":507,"+":590,",":325,"-":371,".":325,"/":390,":":325,";":325,"<":590,"=":590,">":590,"?":514,"@":1007,A:642,B:682,C:657,D:715,E:616,F:586,G:718,H:758,I:330,J:568,K:686,L:579,M:854,N:750,O:771,P:668,Q:771,R:682,S:624,T:626,U:748,V:619,W:915,X:627,Y:581,Z:614,"[":378,"\\":390,"]":378,"^":590,_:568,"`":626,a:591,b:644,c:528,d:645,e:581,f:372,g:598,h:640,i:305,j:306,k:605,l:315,m:964,n:641,o:626,p:645,q:645,r:437,s:495,t:421,u:638,v:576,w:863,x:562,y:575,z:512,"{":378,"|":297,"}":378,"~":590,"\u2026":1e3,"\u2212":590,"\xD7":1e3,"\u2192":1e3,"\u2190":1e3,"\u2191":1e3,"\u2193":1e3,"\u2013":545,"\u2014":908,"\u2018":325,"\u2019":325,"\u201C":575,"\u201D":575,"\xB0":404,"\xB1":1e3,"\xB7":593,"\u2022":379},It=600,Gt=11904,$e=1e3;function it(e,r){return(e.codePointAt(0)??0)>=Gt?$e:r==="mono"?It:_t[e]??$e}var Wt="paper",ze=Object.fromEntries(Object.entries(st).map(([e,r])=>[e,{id:e,...r}]));function ke(e){return(e!==void 0&&Object.hasOwn(ze,e)?ze[e]:void 0)??ze[Wt]}function Pe(e,r){return Object.entries(e[r]).map(([i,o])=>`--${i}:${o}`).join(";")}var Me=`--sans:"${xe.sans}";--mono:"${xe.mono}"`,ve=["blue","amber","green","violet","rose"],W=(e,r,i="sans")=>({size:e,weight:r,family:i}),L={boxName:W(13,650),boxSub:W(11,500),boxSubStrong:W(11,700),regionName:W(12.5,700),regionNote:W(11,500),label:W(11,600,"mono"),labelJa:W(11,650),action:W(11,650),badge:W(10.5,700,"mono"),carrier:W(10.5,700,"mono"),carrierJa:W(10.5,700),stripTitle:W(12.5,700),fieldName:W(10.5,600),fieldValue:W(12,600,"mono"),fieldValueJa:W(12,600),tag:W(10.5,700),miniTitle:W(10.5,700),stepTitle:W(15,700),stepBody:W(13.5,500),stepNo:W(13,700,"mono"),button:W(14,700)},$={gap:10,margin:14,box:{h:72,minW:92,padX:12,radius:12,icon:24,iconRadius:7,iconY:-16,iconScale:.74,nameY:12,subY:27},region:{pad:18,gap:10,radius:14,inset:14,icon:24,iconRadius:7,iconScale:.68,nameY:58,line:16,minH:108},architecture:{columns:4,columnGap:56,maxColumnGap:160,rowGap:44,labelRoom:16},sequence:{columnGap:40,labelRoom:16,firstRow:22,rowGap:14,stepGap:8,minPitch:40,tail:18,selfW:34,selfH:18},edge:{inset:3,arrow:6,arrowHalf:3.5,parallel:5,ghostDash:5,flowDash:9},label:{h:20,padX:9,radius:10,offset:22,side:14,search:4,searchMax:400,soft:6},action:{h:22,padX:10,radius:11},badge:{r:9.5,ring:9,inset:4,along:14,short:44},carrier:{envW:24,envH:17,coinR:6.5,coinIn:3.8,tagH:18,tagPadX:8,samples:16},strip:{h:72,line:44,pad:12,icon:24,titleX:44,fieldGap:22,sepInset:14,tagGap:6,tagH:15,tagPadX:7,nameY:22,valueY:43},stroke:{hair:1,edge:1.7,edgeOn:2.25,arrow:1.5,flow:1.3,halo:7,on:1.75,glyph:2,lifeline:1.2,envelope:1.5,badgeRing:1.5},shadow:{near:.8,far:4,nearY:1,farY:3},mini:{w:168,pad:8,title:14,inset:12,radius:10},follow:{aspect:.75,minH:320,ease:.6},mix:{icon:14,regionIcon:16,regionIconEdge:34,cap:12,capEdge:42,badgePast:14,badgePastEdge:70,mini:62,miniBand:16,miniBandEdge:36,view:6},baseline:{label:3.8,badge:3.5,carrier:3.7,stripTitle:4.5,tag:3.6,action:3.8},rise:5,popFrom:.4,player:{gap:10,radius:12,button:36,hidden:1,focus:2}},D={intro:1.4,outro:4.6,tail:.6,stepBase:1.2,perChar:.025,stepMin:2.2,stepMax:5,dwell:1.2,edgeAt:.1,stagger:.5,draw:.55,drawCarry:.9,action:.9,change:.12,minShow:.8,labelDelay:.15,fade:.3,popFade:.4,untilFade:.2,still:.45},ot=10.5,K={inOut:"cubic-bezier(.65,0,.35,1)",out:"cubic-bezier(.22,1,.36,1)",pop:"cubic-bezier(.34,1.56,.64,1)"};var ue=e=>[...e].some(r=>(r.codePointAt(0)??0)>=11904);function Kt(e,r){return r==="mono"&&ue(e)?"sans":r}function B(e,r){let i=Kt(e,r.family),o=0;for(let a of e)o+=it(a,i);return o*r.size/$e}function He(e){return e.steps.flatMap((r,i)=>r.events.flatMap((o,a)=>o.type==="edge"?[{step:i,event:a,edge:o}]:[]))}function Se(e){let r=Xe(e),i=new Map;return e.boxes.forEach((o,a)=>{let t=o.region===void 0?void 0:r.get(o.region);i.set(o.id,o.color??t??ve[a%ve.length])}),i}function Xe(e){let r=new Map;return(e.regions??[]).forEach((i,o)=>r.set(i.id,i.color??ve[o%ve.length])),r}var Oe=(e,r)=>e.carry.kind==="coin"?"coin":r.get(e.from)??"slate";function qe(e,r,i){let o=e.boxes.find(t=>t.id===r);if(!o)return $.box.minW;let a=[B(o.name,L.boxName),B(o.sub??"",L.boxSub)];for(let t of e.steps)for(let n of t.events)n.type==="swap"&&n.box===r&&a.push(B(n.text,L.boxSubStrong)),i&&n.type==="action"&&n.box===r&&a.push(B(n.label,L.boxSubStrong));return Math.max($.box.minW,Math.max(...a)+$.box.padX*2)}function at(e,r){let i=Math.max(r.x-(e.x+e.w),e.x-(r.x+r.w)),o=Math.max(r.y-(e.y+e.h),e.y-(r.y+r.h));return Math.max(i,o)}function Yt(e){let r={a:e[0],b:e[1]??e[0],length:-1};for(let i=1;i<e.length;i++){let o=e[i-1],a=e[i],t=Math.hypot(a[0]-o[0],a[1]-o[1]);t>r.length&&(r={a:o,b:a,length:t})}return{a:r.a,b:r.b,vertical:Math.abs(r.b[0]-r.a[0])<Math.abs(r.b[1]-r.a[1])}}function Ue(e,r){let i=r;for(let o=1;o<e.length;o++){let a=e[o-1],t=e[o],n=Math.hypot(t[0]-a[0],t[1]-a[1]);if(i<=n&&n>0)return[a[0]+(t[0]-a[0])*i/n,a[1]+(t[1]-a[1])*i/n];i-=n}return e[e.length-1]}function Je(e){let r=0;for(let i=1;i<e.length;i++){let o=e[i-1],a=e[i];r+=Math.hypot(a[0]-o[0],a[1]-o[1])}return r}function Ee(e){let r=Je(e);return Ue(e,r<$.badge.short?r/2:$.badge.along)}var ye=e=>ue(e)?L.labelJa:L.label;function Le(e,r){let i=B(e.text,ye(e.text))+$.label.padX*2,o=$.label.h,a=Yt(e.points),t=(a.a[0]+a.b[0])/2,n=(a.a[1]+a.b[1])/2,s=e.side??(a.vertical?"right":"above"),{offset:l,side:c}=$.label,f=s==="above"?{x:t-i/2,y:n-l-o/2,w:i,h:o}:s==="below"?{x:t-i/2,y:n+l-o/2,w:i,h:o}:s==="left"?{x:t-c-i,y:n-o/2,w:i,h:o}:{x:t+c,y:n-o/2,w:i,h:o},h=s==="above"?[0,-1]:s==="below"?[0,1]:s==="left"?[-1,0]:[1,0],u=[Math.abs(h[1]),Math.abs(h[0])],p=s==="above"||s==="below"?i:o*4,d=w=>r.hard.every(b=>at(w,b)>=$.gap)&&r.soft.every(b=>at(w,b)>=$.label.soft),{search:x,searchMax:q}=$.label;for(let w=0;w<=q;w+=x)for(let b=0;b<=p;b+=x)for(let M of b===0?[1]:[1,-1]){let g={x:f.x+h[0]*w+u[0]*b*M,y:f.y+h[1]*w+u[1]*b*M,w:i,h:o};if(d(g))return{...g,step:e.step,event:e.event,text:e.text,family:ye(e.text).family,color:e.color}}return{...f,step:e.step,event:e.event,text:e.text,family:ye(e.text).family,color:e.color}}function lt(e,r){let i=0,o=0;for(let t of e.steps)for(let n of t.events)n.type!=="strip"||n.field!==r||(n.value!==void 0&&(i=Math.max(i,B(n.value,ue(n.value)?L.fieldValueJa:L.fieldValue))),n.tag!==void 0&&(o=Math.max(o,B(n.tag,L.tag)+$.strip.tagPadX*2)));let a=i+(o>0?(i>0?$.strip.tagGap:0)+o:0);return Math.max(B(r,L.fieldName),a)}function Te(e){if(!e.strip)return 0;let{titleX:r,fieldGap:i,pad:o}=$.strip;return r+B(e.strip.title,L.stripTitle)+i+e.strip.fields.reduce((t,n)=>t+lt(e,n)+i,0)-i+o}function je(e,r,i,o){if(!e.strip)return;let{titleX:a,fieldGap:t,pad:n,line:s,h:l}=$.strip,c=a+B(e.strip.title,L.stripTitle)+t,f=[],h=c,u=0;for(let p of e.strip.fields){let d=lt(e,p);h>c&&h+d>o-n&&(h=c,u++),f.push({name:p,x:r+h,y:i+u*s,w:d}),h+=d+t}return{x:r,y:i,w:o,h:l+u*s,title:e.strip.title,fields:f}}function Ae(e,r,i){let o=a=>{a.x+=r,a.y+=i};for(let a of e.boxes)o(a),a.cx+=r,a.cy+=i;for(let a of e.regions)a.y+=i,o(a.header);for(let a of e.lifelines)a.x+=r,a.y1+=i,a.y2+=i;for(let a of e.edges)a.points=a.points.map(([t,n])=>[t+r,n+i]),a.settle&&(a.settle=[a.settle[0]+r,a.settle[1]+i]);for(let a of e.labels)o(a);for(let a of e.actions)o(a);for(let a of e.badges)a.x+=r,a.y+=i;if(e.strip){e.strip.y+=i;for(let a of e.strip.fields)a.x+=r,a.y+=i}}function Ne(e,r,i){let{inset:o}=$.badge;for(let t of e){let n=t.type==="swap"||t.type==="action"?t.box:void 0,s=i.boxes.find(l=>l.id===n);if(s)return{step:r,x:s.x+o,y:s.y+o,color:s.color}}if(i.strip&&e.some(t=>t.type==="strip"))return{step:r,x:i.strip.x+o,y:i.strip.y+o,color:"slate"};let a=i.boxes[0];return{step:r,x:a.x+o,y:a.y+o,color:a.color}}function pt(e){let r=zt(e),i=Ht(e,r),o=r.map(()=>({top:0,bottom:0})),a=ct(e,r,i,o);for(let t=0;t<3&&Jt(a,r,i,o);t++)a=ct(e,r,i,o);return a}function zt(e){let r=e.regions??[],i=new Set(r.map(t=>t.id)),o=r.map(t=>({region:t,members:e.boxes.filter(n=>n.region===t.id).map(n=>n.id)})),a=e.boxes.filter(t=>t.region===void 0||!i.has(t.region)).map(t=>t.id);return a.length>0&&o.push({members:a}),o}var dt=e=>e==="left"||e==="right";function Ht(e,r){let i=$.architecture.columns,o=He(e).map(n=>n.edge),a=new Map;r.forEach((n,s)=>{let l=new Set(n.members),c=new Set,f=(w,b)=>w>=0&&w<i&&!c.has(`${w},${b}`),h=(w,b)=>{let M=Math.min(i-1,Math.max(0,w));for(let g=b;;g++)for(let T=0;T<i;T++)for(let j of[M+T,M-T])if(f(j,g))return[j,g]},u=(w,b,M)=>{a.set(w,{group:s,col:b,row:M}),c.add(`${b},${M}`)},p=1,d=w=>{for(let b of o){let M=b.from===w?b.to:b.to===w?b.from:void 0;if(M===void 0||!l.has(M)||a.has(M))continue;let g=a.get(w),[T,j]=dt(b.labelSide)?h(g.col,g.row+1):f(g.col+p,g.row)?[g.col+p,g.row]:h(g.col+p,g.row);u(M,T,j),d(M)}},x=w=>{for(let b=0;b<o.length;b++){let M=o[b],g=M?.from===w?M.to:M?.to===w?M.from:void 0,T=g===void 0?void 0:a.get(g);if(T&&T.group<s)return{order:b,col:T.col}}},q=0;for(;;){let w=n.members.filter(R=>!a.has(R));if(w.length===0)break;let b=w.map(R=>({id:R,anchor:x(R)})).filter(R=>R.anchor!==void 0);b.sort((R,_)=>(R.anchor?.order??0)-(_.anchor?.order??0));let M=b[0]??{id:w[0],anchor:void 0},g=M.anchor?.col??0;q===0&&(p=g>=(i-1)/2?-1:1);let[T,j]=f(g,0)?[g,0]:h(g,0);u(M.id,T,j),d(M.id),q++}});let t=[...new Set([...a.values()].map(n=>n.col))].sort((n,s)=>n-s);for(let n of a.values())n.col=t.indexOf(n.col);return a}function Xt(e){let r=[...e.matchAll(/ /g)].map(o=>o.index);if(r.length===0)return[e];let i=r.reduce((o,a)=>Math.abs(a-e.length/2)<Math.abs(o-e.length/2)?a:o);return[e.slice(0,i),e.slice(i+1)]}function Ut(e){let{icon:r,nameY:i,line:o,inset:a}=$.region,t=Xt(e.name),n=Math.max(r,...t.map(l=>B(l,L.regionName)),B(e.note??"",L.regionNote)),s=i-a+(t.length-1)*o+(e.note?o:0)+$.gap/2;return{w:n,h:s,lines:t}}function ct(e,r,i,o){let{box:a,region:t,architecture:n,margin:s,gap:l}=$,c=Se(e),f=Xe(e),h=He(e),u=Math.max(1,...[...i.values()].map(m=>m.col+1)),p=new Map(e.boxes.map(m=>[m.id,qe(e,m.id,!0)])),d=Array.from({length:u},(m,E)=>Math.max(a.minW,...[...i].filter(([,v])=>v.col===E).map(([v])=>p.get(v)??a.minW))),x=Array.from({length:Math.max(0,u-1)},()=>n.columnGap);for(let{edge:m}of h){let E=i.get(m.from),v=i.get(m.to);if(!E||!v||m.label===void 0||E.group!==v.group||E.row!==v.row||Math.abs(E.col-v.col)!==1||dt(m.labelSide))continue;let O=B(m.label,ye(m.label))+$.label.padX*2+n.labelRoom*2,V=Math.min(E.col,v.col);O<=n.maxColumnGap&&(x[V]=Math.max(x[V]??0,O))}let q=r.map(m=>m.region?Ut(m.region):void 0),w=Math.max(0,...q.map(m=>m?m.w+t.inset*2:0)),b=[];for(let m=0;m<u;m++)b.push(m===0?s+(w>0?w:t.pad):b[m-1]+d[m-1]+x[m-1]);let M=m=>b[m]+d[m]/2,g=[],T=[],j=s;r.forEach((m,E)=>{let v=Math.max(1,...m.members.map(ee=>(i.get(ee)?.row??0)+1)),O=o[E],V=j+t.pad+O.top;for(let ee of m.members){let ce=i.get(ee),N=e.boxes.find(he=>he.id===ee),A=p.get(ee)??a.minW,F=M(ce.col),J=V+ce.row*(a.h+n.rowGap);g.push({id:ee,name:N?.name??ee,...N?.sub!==void 0?{sub:N.sub}:{},...N?.icon!==void 0?{icon:N.icon}:{},color:c.get(ee)??"slate",x:F-A/2,y:J,w:A,h:a.h,cx:F,cy:J+a.h/2})}let X=V+v*a.h+(v-1)*n.rowGap,U=q[E],ne=Math.max(X+t.pad+O.bottom-j,U?U.h+t.inset*2:0,m.region?t.minH:0);T.push({group:E,y:j,h:ne,rows:v}),j+=ne+t.gap});let R=j-t.gap,_=new Map(g.map(m=>[m.id,m])),Y=m=>T[i.get(m)?.group??0],z=(m,E,v)=>g.some(O=>{if(O.id===E||O.id===v)return!1;let V=$.label.search;for(let X=1;X<m.length;X++){let[U,ne]=m[X-1],[ee,ce]=m[X];if(Math.min(U,ee)<=O.x+O.w+V&&Math.max(U,ee)>=O.x-V&&Math.min(ne,ce)<=O.y+O.h+V&&Math.max(ne,ce)>=O.y-V)return!0}return!1}),le=m=>{let E=_.get(m),v=Y(m);return(i.get(m)?.row??0)<v.rows-1?E.y+E.h+n.rowGap/2:Math.min(E.y+E.h+t.pad/2,v.y+v.h-$.edge.inset)},fe=m=>{let E=_.get(m),v=Y(m);return(i.get(m)?.row??0)>0?E.y-n.rowGap/2:Math.max(E.y-t.pad/2,v.y+$.edge.inset)},te=$.edge.inset,ie=(m,E)=>{let v=_.get(m),O=_.get(E),V=i.get(m),X=i.get(E);if(V.group===X.group&&V.row===X.row){let F=O.cx>v.cx,J=[[F?v.x+v.w:v.x,v.cy],[F?O.x-te:O.x+O.w+te,O.cy]];if(!z(J,m,E))return J;let he=le(m);return[[v.cx,v.y+v.h],[v.cx,he],[O.cx,he],[O.cx,O.y+O.h+te]]}let U=O.cy>v.cy,ne=[v.cx,U?v.y+v.h:v.y],ee=[O.cx,U?O.y-te:O.y+O.h+te];if(V.col===X.col){let F=[ne,ee];if(!z(F,m,E))return F;let J=v.x+v.w+(x[V.col]??n.columnGap)/2;return[[v.x+v.w,v.cy],[J,v.cy],[J,O.cy],[O.x+O.w+te,O.cy]]}let ce=O.cx>v.cx,N=U?le(m):fe(m),A=[[ne,[v.cx,O.cy],[ce?O.x-te:O.x+O.w+te,O.cy]],[[ce?v.x+v.w:v.x,v.cy],[O.cx,v.cy],ee],[ne,[v.cx,N],[O.cx,N],ee]];return A.find(F=>!z(F,m,E))??A[2]},y=h.map(({step:m,event:E,edge:v})=>{let O=_.get(v.to);return{step:m,event:E,from:v.from,to:v.to,points:ie(v.from,v.to),color:Oe(v,c),carry:v.carry,settle:[O.cx,O.cy+a.iconY]}});for(let m of y){if(m.points.length!==2||!y.some(U=>U.from===m.to&&U.to===m.from&&U.points.length===2))continue;let[v,O]=m.points,V=Math.abs(O[1]-v[1])<Math.abs(O[0]-v[0]),X=(m.from<m.to?1:-1)*$.edge.parallel;m.points=m.points.map(([U,ne])=>V?[U,ne+X]:[U+X,ne])}let S=[];r.forEach((m,E)=>{let v=T[E],O=q[E];!m.region||!O||S.push({id:m.region.id,lines:O.lines,...m.region.note!==void 0?{note:m.region.note}:{},...m.region.icon!==void 0?{icon:m.region.icon}:{},color:f.get(m.region.id)??"slate",x:s,y:v.y,w:0,h:v.h,header:{x:s+t.inset,y:v.y+t.inset,w:O.w,h:O.h}})});let k=[];for(let m of y){let E=e.steps[m.step]?.events[m.event];if(E?.type!=="edge"||E.label===void 0)continue;let v=[...S.map(O=>O.header),...k.filter(O=>O.step===m.step)];k.push(Le({step:m.step,event:m.event,text:E.label,points:m.points,color:m.color,...E.labelSide?{side:E.labelSide}:{}},{hard:g,soft:v}))}let C={kind:"architecture",width:0,height:0,regions:S,boxes:g,lifelines:[],edges:y,labels:k,actions:[],badges:[]},G=k.length>0?Math.max(0,s+$.label.soft-Math.min(...k.map(m=>m.x))):0;G>0&&Ae(C,G,0);let H=Math.max(...g.map(m=>m.x+m.w+t.pad),...k.map(m=>m.x+m.w+$.label.soft),...y.flatMap(m=>m.points.map(E=>E[0]+t.pad))),I=Math.max(H+s,Te(e)+s*2);for(let m of S)m.w=I-s*2;let re=je(e,s,R+l,I-s*2);return C.width=I,C.height=(re?re.y+re.h:R)+s,re&&(C.strip=re),C.badges=e.steps.map((m,E)=>{let v=y.find(X=>X.step===E);if(!v)return Ne(m.events,E,C);let[O,V]=Ee(v.points);return{step:E,x:O,y:V,color:v.color}}),C}function Jt(e,r,i,o){let a=!1,t=$.label.soft;for(let n of e.labels){let s=e.edges.find(d=>d.step===n.step&&d.event===n.event),l=s&&i.get(s.from),c=s&&i.get(s.to);if(!l||!c||l.group!==c.group||!r[l.group]?.region)continue;let f=e.regions.find(d=>d.id===r[l.group]?.region?.id),h=o[l.group];if(!f||!h)continue;let u=f.y+t-n.y,p=n.y+n.h-(f.y+f.h-t);u>0&&(h.top+=u,a=!0),p>0&&(h.bottom+=p,a=!0)}return a}function ft(e){let{box:r,sequence:i,label:o,margin:a,gap:t}=$,n=Se(e),s=e.sequence?.lifelines??[],l=[...s,...e.boxes.map(y=>y.id).filter(y=>!s.includes(y))],c=new Map(l.map((y,S)=>[y,S])),f=l.map(y=>qe(e,y,!1)),h=f.slice(1).map((y,S)=>f[S]/2+y/2+i.columnGap),u=[];for(let y of e.steps)for(let S of y.events){if(S.type!=="edge"||S.label===void 0)continue;let k=c.get(S.from)??0,C=c.get(S.to)??0,G=B(S.label,ye(S.label))+o.padX*2;k===C?k<h.length&&u.push({from:k,to:k+1,need:i.selfW+o.side+G+i.labelRoom}):u.push({from:Math.min(k,C),to:Math.max(k,C),need:G+i.labelRoom*2})}u.sort((y,S)=>y.to-y.from-(S.to-S.from));for(let{from:y,to:S,need:k}of u){let C=0;for(let H=y;H<S;H++)C+=h[H]??0;if(C>=k)continue;let G=(k-C)/(S-y);for(let H=y;H<S;H++)h[H]=(h[H]??0)+G}let p=[];l.forEach((y,S)=>p.push(S===0?a+f[0]/2:p[S-1]+h[S-1]));let d=l.map((y,S)=>{let k=e.boxes.find(H=>H.id===y),C=f[S],G=p[S];return{id:y,name:k?.name??y,...k?.sub!==void 0?{sub:k.sub}:{},...k?.icon!==void 0?{icon:k.icon}:{},color:n.get(y)??"slate",x:G-C/2,y:a,w:C,h:r.h,cx:G,cy:a+r.h/2}}),x=a+r.h,q=[],w=[],b=[],M=x+i.firstRow,g=0,T=!0;e.steps.forEach((y,S)=>{y.events.forEach((k,C)=>{if(k.type!=="edge"&&k.type!=="action")return;let G,H;if(k.type==="edge"){let I=k.labelSide??"above",re=k.from===k.to,m=k.label!==void 0;G=m&&I==="above"?o.offset+o.h/2:t,H=re?i.selfH+t:m&&I==="below"?o.offset+o.h/2:t}else G=$.action.h/2,H=$.action.h/2;if(M=T?M+G:M+Math.max(i.minPitch,g+i.rowGap+G)+(C===0&&S>0?i.stepGap:0),T=!1,g=H,k.type==="edge"){let I=p[c.get(k.from)??0],re=p[c.get(k.to)??0],m=Math.sign(re-I)||1,E=I===re?[[I,M],[I+i.selfW,M],[I+i.selfW,M+i.selfH],[I+$.edge.inset,M+i.selfH]]:[[I,M],[re-m*$.edge.inset,M]],v=Oe(k,n);q.push({step:S,event:C,from:k.from,to:k.to,points:E,color:v,carry:k.carry}),k.label!==void 0&&b.push({step:S,event:C,text:k.label,points:E,color:v,...k.labelSide?{side:k.labelSide}:I===re?{side:"right"}:{}})}else{let I=p[c.get(k.box)??0],re=B(k.label,L.action)+$.action.padX*2;w.push({step:S,event:C,box:k.box,text:k.label,color:n.get(k.box)??"slate",x:I+$.badge.r+4,y:M-$.action.h/2,w:re,h:$.action.h})}})});let j=(T?x:M+g)+i.tail,R=l.map((y,S)=>({id:y,x:p[S],y1:x,y2:j})),_=[];for(let y of b){let S=[..._.filter(k=>k.step===y.step),...w];_.push(Le(y,{hard:d,soft:S}))}let Y={kind:"sequence",width:0,height:0,regions:[],boxes:d,lifelines:R,edges:q,labels:_,actions:w,badges:[]},z=[...d.map(y=>y.x),..._.map(y=>y.x),...w.map(y=>y.x)],le=Math.max(0,a-Math.min(...z));le>0&&Ae(Y,le,0);let fe=[...d.map(y=>y.x+y.w),..._.map(y=>y.x+y.w),...w.map(y=>y.x+y.w),...q.flatMap(y=>y.points.map(S=>S[0]))],te=Math.max(Math.max(...fe)+a,Te(e)+a*2),ie=je(e,a,j+t,te-a*2);return Y.width=te,Y.height=(ie?ie.y+ie.h:j)+a,ie&&(Y.strip=ie),Y.badges=Qt(e,Y),Y}function Qt(e,r){return e.steps.map((i,o)=>{let a=r.edges.find(s=>s.step===o);if(a){let[s,l]=Ee(a.points);return{step:o,x:s,y:l,color:a.color}}let t=r.actions.find(s=>s.step===o),n=t&&r.lifelines.find(s=>s.id===t.box);return t&&n?{step:o,x:n.x,y:t.y+t.h/2,color:t.color}:Ne(i.events,o,r)})}var Zt={string:"\u6587\u5B57\u5217\u306B\u3059\u308B",integer:"\u6574\u6570\u306B\u3059\u308B",number:"\u6570\u306B\u3059\u308B",object:"\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u3059\u308B",array:"\u914D\u5217\u306B\u3059\u308B",boolean:"true \u304B false \u306B\u3059\u308B",null:"null \u306B\u3059\u308B"},er={string:"Use a string",integer:"Use an integer",number:"Use a number",object:"Use an object",array:"Use an array",boolean:"Use true or false",null:"Use null"},mt=(e,r)=>`${e} ${r}${e===1?"":"s"}`,tr={additionalProperties:e=>`${e} \u3068\u3044\u3046\u6B04\u306F\u66F8\u3051\u306A\u3044`,required:e=>`${e} \u306E\u6B04\u304C\u8981\u308B`,enum:e=>`${e.join(" / ")} \u306E\u3069\u308C\u304B\u306B\u3059\u308B`,type:e=>Zt[e]??`${e} \u306B\u3059\u308B`,minLength:e=>`${e} \u5B57\u4EE5\u4E0A\u66F8\u304F`,pattern:e=>e?`${e.space?"\u7A7A\u767D\u3068 ":""}${e.chars.join(" ")} \u306F\u4F7F\u3048\u306A\u3044`:"\u4F7F\u3048\u306A\u3044\u5B57\u304C\u5165\u3063\u3066\u3044\u308B",minItems:e=>`${e} \u3064\u4EE5\u4E0A\u66F8\u304F`,minimum:e=>`${e} \u4EE5\u4E0A\u306B\u3059\u308B`,const:e=>`${e} \u306B\u3059\u308B`,not:e=>e?`${e.field} \u306E\u6B04\u306F kind \u304C ${e.kind} \u306E\u6642\u3060\u3051\u66F8\u3051\u308B`:"\u3053\u306E\u6B04\u306E\u7D44\u307F\u5408\u308F\u305B\u306F\u66F8\u3051\u306A\u3044",anyOf:e=>e.length>0?`${e.join(" \u304B ")} \u306E${e.length===2?"\u3069\u3061\u3089\u304B":"\u3069\u308C\u304B"}\u306E\u6B04\u304C\u8981\u308B`:"\u66F8\u3051\u308B\u5F62\u306E\u3069\u308C\u306B\u3082\u5408\u308F\u306A\u3044",oneOf:"\u66F8\u3051\u308B\u5F62\u306E\u3069\u308C\u304B 1 \u3064\u3060\u3051\u306B\u5408\u308F\u305B\u308B",discriminator:(e,r)=>`${e} \u306F ${r.join(" / ")} \u306E\u3069\u308C\u304B\u306B\u3059\u308B`,newer:(e,r)=>`\u7248 ${e} \u306E\u56F3\u306F\u3001\u3053\u306E\u9053\u5177 (\u7248 ${r}) \u3088\u308A\u65B0\u3057\u3044\u306E\u3067\u8AAD\u3081\u306A\u3044\u3002\u9053\u5177\u3092\u65B0\u3057\u304F\u3059\u308B`},rr={additionalProperties:e=>`The ${e} field is not allowed`,required:e=>`The ${e} field is required`,enum:e=>`Use one of ${e.join(" / ")}`,type:e=>er[e]??`Use ${e}`,minLength:e=>`Write at least ${mt(e,"character")}`,pattern:e=>e?`Cannot contain ${e.space?"spaces or ":""}${e.chars.join(" ")}`:"Contains characters that are not allowed",minItems:e=>`Write at least ${mt(e,"item")}`,minimum:e=>`Use ${e} or greater`,const:e=>`Use ${e}`,not:e=>e?`The ${e.field} field is allowed only when kind is ${e.kind}`:"This combination of fields is not allowed",anyOf:e=>e.length>0?`Write one of the ${e.join(" or ")} fields`:"Does not match any of the allowed shapes",oneOf:"Match exactly one of the allowed shapes",discriminator:(e,r)=>`${e} is one of ${r.join(" / ")}`,newer:(e,r)=>`Version ${e} diagrams are newer than this tool (version ${r}) and cannot be read. Update the tool`},Ce={ja:tr,en:rr};function nr(e){let r=0;for(let i of e)r++;return r}var Ze=gt,Qe={title:"dragon \u306E\u56F3\u306E\u539F\u672C",description:"\u533A\u753B\u3001\u7BB1\u3001\u7DDA\u3001\u904B\u3076\u7269\u3001\u6BB5\u3001\u4E2D\u8EAB\u306E\u5E2F\u306E 6 \u90E8\u54C1\u3092\u5171\u901A\u306E\u9AA8\u7D44\u307F\u306B\u7F6E\u304D\u3001\u56F3\u306E\u7A2E\u985E\u3060\u3051\u306E\u7269\u306F\u7A2E\u985E\u306E\u6B04\u306B\u7F6E\u304F\u3002\u5EA7\u6A19\u306F\u6301\u305F\u306A\u3044\u3002",type:"object",additionalProperties:!1,required:["version","kind","title","boxes","steps"],properties:{version:{description:"\u5F62\u5F0F\u306E\u7248",type:"integer",minimum:1},kind:{description:"\u56F3\u306E\u7A2E\u985E",enum:["sequence","architecture"]},title:{$ref:"#/definitions/text"},view:{description:"\u898B\u305B\u65B9\u3002\u66F8\u304B\u306A\u3051\u308C\u3070\u5B57\u306E\u5927\u304D\u3055\u3067\u9078\u3076\u3002fixed \u306F\u5168\u4F53\u3092\u6B62\u3081\u3066\u4E2D\u3060\u3051\u52D5\u304B\u3057\u3001follow \u306F\u5BC4\u3063\u3066\u52D5\u304B\u3057\u5168\u4F53\u56F3\u3067\u4ECA\u3069\u3053\u304B\u3092\u793A\u3059",enum:["fixed","follow"]},regions:{type:"array",items:{$ref:"#/definitions/region"}},boxes:{type:"array",minItems:1,items:{$ref:"#/definitions/box"}},strip:{$ref:"#/definitions/strip"},steps:{type:"array",minItems:1,items:{$ref:"#/definitions/step"}},sequence:{$ref:"#/definitions/sequence"}},if:{required:["kind"],properties:{kind:{const:"sequence"}}},then:{required:["sequence"]},else:{not:{required:["sequence"]}},definitions:{text:{type:"string",minLength:1},id:{type:"string",pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},color:{enum:["blue","amber","green","violet","rose","slate","coin"]},region:{type:"object",additionalProperties:!1,required:["id","name"],properties:{id:{$ref:"#/definitions/id"},name:{$ref:"#/definitions/text"},note:{$ref:"#/definitions/text"},color:{$ref:"#/definitions/color"},icon:{$ref:"#/definitions/text"}}},box:{type:"object",additionalProperties:!1,required:["id","name"],properties:{id:{$ref:"#/definitions/id"},name:{$ref:"#/definitions/text"},sub:{$ref:"#/definitions/text"},color:{$ref:"#/definitions/color"},icon:{$ref:"#/definitions/text"},region:{$ref:"#/definitions/id"}}},strip:{type:"object",additionalProperties:!1,required:["title","fields"],properties:{title:{$ref:"#/definitions/text"},fields:{type:"array",minItems:1,items:{$ref:"#/definitions/text"}}}},step:{type:"object",additionalProperties:!1,required:["title","body","events"],properties:{title:{$ref:"#/definitions/text"},body:{$ref:"#/definitions/text"},code:{$ref:"#/definitions/text"},events:{type:"array",items:{$ref:"#/definitions/event"}}}},event:{description:"\u6BB5\u306E\u4E2D\u3067\u8D77\u304D\u308B\u3053\u3068\u3002\u8D77\u304D\u308B\u9806\u306B\u4E26\u3079\u308B",type:"object",required:["type"],discriminator:{propertyName:"type"},oneOf:[{description:"\u7DDA\u3002\u904B\u3076\u7269\u3092\u8F09\u305B\u3066\u9001\u308B\u5074\u304B\u3089\u53D7\u3051\u308B\u5074\u3078\u8D70\u308B",type:"object",additionalProperties:!1,required:["type","from","to","carry"],properties:{type:{const:"edge"},from:{$ref:"#/definitions/id"},to:{$ref:"#/definitions/id"},label:{$ref:"#/definitions/text"},carry:{$ref:"#/definitions/carry"},labelSide:{description:"\u7DDA\u306E\u540D\u524D\u3092\u7F6E\u304F\u5074 (\u5BC4\u305B\u306E\u6307\u793A)",enum:["above","below","left","right"]}}},{description:"\u7BB1\u306E\u4E2D\u306E\u51E6\u7406",type:"object",additionalProperties:!1,required:["type","box","label"],properties:{type:{const:"action"},box:{$ref:"#/definitions/id"},label:{$ref:"#/definitions/text"}}},{description:"\u7BB1\u306E\u4E0B\u306E\u5C0F\u3055\u306A\u5B57\u306E\u66F8\u304D\u63DB\u3048",type:"object",additionalProperties:!1,required:["type","box","text"],properties:{type:{const:"swap"},box:{$ref:"#/definitions/id"},text:{$ref:"#/definitions/text"}}},{description:"\u4E2D\u8EAB\u306E\u5E2F\u306E\u6B04\u306E\u5024\u3068\u672D",type:"object",additionalProperties:!1,required:["type","field"],anyOf:[{required:["value"]},{required:["tag"]}],properties:{type:{const:"strip"},field:{$ref:"#/definitions/text"},value:{$ref:"#/definitions/text"},tag:{$ref:"#/definitions/text"}}}]},carry:{description:"\u7DDA\u306E\u4E0A\u3092\u8D70\u308B\u7269\u3002\u5C01\u7B52 (\u30E1\u30C3\u30BB\u30FC\u30B8\u3084\u8981\u6C42)\u3001\u672D (\u540D\u524D\u306E\u3042\u308B\u5024)\u3001\u786C\u8CA8 (\u4FA1\u5024)\u3001\u7121\u3057",type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{enum:["envelope","tag","coin","none"]},text:{$ref:"#/definitions/text"}},if:{required:["kind"],properties:{kind:{const:"tag"}}},then:{required:["text"]},else:{not:{required:["text"]}}},sequence:{description:"\u6642\u7CFB\u5217\u56F3\u306E\u7A2E\u985E\u306E\u6B04\u3002\u751F\u5B58\u7DDA\u3092\u5DE6\u304B\u3089\u4E26\u3079\u308B\u9806",type:"object",additionalProperties:!1,required:["lifelines"],properties:{lifelines:{type:"array",minItems:1,items:{$ref:"#/definitions/id"}}}}}};var sr=Object.prototype.hasOwnProperty,Q=nr;var ut={enum:["blue","amber","green","violet","rose","slate","coin"]},ge=new RegExp("^[^\\s\\[\\]\u300C\u300D=:]+$","u");function De(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[s]:t.push(s),n++}if(e.name===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};t===null?t=[s]:t.push(s),n++}for(let s in e)if(!(s==="id"||s==="name"||s==="note"||s==="color"||s==="icon")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:s},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),n++}if(e.id!==void 0){let s=e.id;if(typeof s=="string"){if(!ge.test(s)){let l={instancePath:r+"/id",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/id",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.name!==void 0){let s=e.name;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/name",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/name",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.note!==void 0){let s=e.note;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/note",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/note",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.color!==void 0){let s=e.color;if(!(s==="blue"||s==="amber"||s==="green"||s==="violet"||s==="rose"||s==="slate"||s==="coin")){let l={instancePath:r+"/color",schemaPath:"#/definitions/color/enum",keyword:"enum",params:{allowedValues:ut.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),n++}}if(e.icon!==void 0){let s=e.icon;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/icon",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/icon",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}}else{let s={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[s]:t.push(s),n++}return De.errors=t,n===0}function Re(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[s]:t.push(s),n++}if(e.name===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};t===null?t=[s]:t.push(s),n++}for(let s in e)if(!(s==="id"||s==="name"||s==="sub"||s==="color"||s==="icon"||s==="region")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:s},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),n++}if(e.id!==void 0){let s=e.id;if(typeof s=="string"){if(!ge.test(s)){let l={instancePath:r+"/id",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/id",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.name!==void 0){let s=e.name;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/name",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/name",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.sub!==void 0){let s=e.sub;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/sub",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/sub",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.color!==void 0){let s=e.color;if(!(s==="blue"||s==="amber"||s==="green"||s==="violet"||s==="rose"||s==="slate"||s==="coin")){let l={instancePath:r+"/color",schemaPath:"#/definitions/color/enum",keyword:"enum",params:{allowedValues:ut.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),n++}}if(e.icon!==void 0){let s=e.icon;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/icon",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/icon",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.region!==void 0){let s=e.region;if(typeof s=="string"){if(!ge.test(s)){let l={instancePath:r+"/region",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/region",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}}else{let s={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[s]:t.push(s),n++}return Re.errors=t,n===0}function Fe(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.title===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};t===null?t=[s]:t.push(s),n++}if(e.fields===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fields"},message:"must have required property 'fields'"};t===null?t=[s]:t.push(s),n++}for(let s in e)if(!(s==="title"||s==="fields")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:s},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),n++}if(e.title!==void 0){let s=e.title;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/title",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/title",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.fields!==void 0){let s=e.fields;if(Array.isArray(s)){if(s.length<1){let c={instancePath:r+"/fields",schemaPath:"#/properties/fields/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[c]:t.push(c),n++}let l=s.length;for(let c=0;c<l;c++){let f=s[c];if(typeof f=="string"){if(Q(f)<1){let h={instancePath:r+"/fields/"+c,schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),n++}}else{let h={instancePath:r+"/fields/"+c,schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),n++}}}else{let l={instancePath:r+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),n++}}}else{let s={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[s]:t.push(s),n++}return Fe.errors=t,n===0}var ir={description:"\u6BB5\u306E\u4E2D\u3067\u8D77\u304D\u308B\u3053\u3068\u3002\u8D77\u304D\u308B\u9806\u306B\u4E26\u3079\u308B",type:"object",required:["type"],discriminator:{propertyName:"type"},oneOf:[{description:"\u7DDA\u3002\u904B\u3076\u7269\u3092\u8F09\u305B\u3066\u9001\u308B\u5074\u304B\u3089\u53D7\u3051\u308B\u5074\u3078\u8D70\u308B",type:"object",additionalProperties:!1,required:["type","from","to","carry"],properties:{type:{const:"edge"},from:{$ref:"#/definitions/id"},to:{$ref:"#/definitions/id"},label:{$ref:"#/definitions/text"},carry:{$ref:"#/definitions/carry"},labelSide:{description:"\u7DDA\u306E\u540D\u524D\u3092\u7F6E\u304F\u5074 (\u5BC4\u305B\u306E\u6307\u793A)",enum:["above","below","left","right"]}}},{description:"\u7BB1\u306E\u4E2D\u306E\u51E6\u7406",type:"object",additionalProperties:!1,required:["type","box","label"],properties:{type:{const:"action"},box:{$ref:"#/definitions/id"},label:{$ref:"#/definitions/text"}}},{description:"\u7BB1\u306E\u4E0B\u306E\u5C0F\u3055\u306A\u5B57\u306E\u66F8\u304D\u63DB\u3048",type:"object",additionalProperties:!1,required:["type","box","text"],properties:{type:{const:"swap"},box:{$ref:"#/definitions/id"},text:{$ref:"#/definitions/text"}}},{description:"\u4E2D\u8EAB\u306E\u5E2F\u306E\u6B04\u306E\u5024\u3068\u672D",type:"object",additionalProperties:!1,required:["type","field"],anyOf:[{required:["value"]},{required:["tag"]}],properties:{type:{const:"strip"},field:{$ref:"#/definitions/text"},value:{$ref:"#/definitions/text"},tag:{$ref:"#/definitions/text"}}}]},or={description:"\u7DDA\u306E\u4E0A\u3092\u8D70\u308B\u7269\u3002\u5C01\u7B52 (\u30E1\u30C3\u30BB\u30FC\u30B8\u3084\u8981\u6C42)\u3001\u672D (\u540D\u524D\u306E\u3042\u308B\u5024)\u3001\u786C\u8CA8 (\u4FA1\u5024)\u3001\u7121\u3057",type:"object",additionalProperties:!1,required:["kind"],properties:{kind:{enum:["envelope","tag","coin","none"]},text:{$ref:"#/definitions/text"}},if:{required:["kind"],properties:{kind:{const:"tag"}}},then:{required:["text"]},else:{not:{required:["text"]}}};function Be(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0,s=n,l=!0,c=n;if(e&&typeof e=="object"&&!Array.isArray(e)){let p;if(e.kind===void 0&&(p="kind")){let d={};t===null?t=[d]:t.push(d),n++}else if(e.kind!==void 0&&e.kind!=="tag"){let d={};t===null?t=[d]:t.push(d),n++}}var f=c===n;n=s,t!==null&&(s?t.length=s:t=null);let h;if(f){let p=n;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.text===void 0){let x={instancePath:r,schemaPath:"#/then/required",keyword:"required",params:{missingProperty:"text"},message:"must have required property 'text'"};t===null?t=[x]:t.push(x),n++}var f=p===n;l=f,h="then"}else{let p=n,d=n,x=n;if(e&&typeof e=="object"&&!Array.isArray(e)){let w;if(e.text===void 0&&(w="text")){let b={};t===null?t=[b]:t.push(b),n++}}var u=x===n;if(u){let w={instancePath:r,schemaPath:"#/else/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[w]:t.push(w),n++}else n=d,t!==null&&(d?t.length=d:t=null);var f=p===n;l=f,h="else"}if(!l){let p={instancePath:r,schemaPath:"#/if",keyword:"if",params:{failingKeyword:h},message:'must match "'+h+'" schema'};t===null?t=[p]:t.push(p),n++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let p={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};t===null?t=[p]:t.push(p),n++}for(let p in e)if(!(p==="kind"||p==="text")){let d={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[d]:t.push(d),n++}if(e.kind!==void 0){let p=e.kind;if(!(p==="envelope"||p==="tag"||p==="coin"||p==="none")){let d={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:or.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[d]:t.push(d),n++}}if(e.text!==void 0){let p=e.text;if(typeof p=="string"){if(Q(p)<1){let d={instancePath:r+"/text",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[d]:t.push(d),n++}}else{let d={instancePath:r+"/text",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),n++}}}else{let p={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),n++}return Be.errors=t,n===0}function Ve(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let c={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[c]:t.push(c),n++}let l=e.type;if(typeof l=="string")if(l==="edge")if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let c={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[c]:t.push(c),n++}if(e.from===void 0){let c={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"from"},message:"must have required property 'from'"};t===null?t=[c]:t.push(c),n++}if(e.to===void 0){let c={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"to"},message:"must have required property 'to'"};t===null?t=[c]:t.push(c),n++}if(e.carry===void 0){let c={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"carry"},message:"must have required property 'carry'"};t===null?t=[c]:t.push(c),n++}for(let c in e)if(!(c==="type"||c==="from"||c==="to"||c==="label"||c==="carry"||c==="labelSide")){let f={instancePath:r,schemaPath:"#/oneOf/0/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),n++}if(e.type!==void 0&&e.type!=="edge"){let c={instancePath:r+"/type",schemaPath:"#/oneOf/0/properties/type/const",keyword:"const",params:{allowedValue:"edge"},message:"must be equal to constant"};t===null?t=[c]:t.push(c),n++}if(e.from!==void 0){let c=e.from;if(typeof c=="string"){if(!ge.test(c)){let f={instancePath:r+"/from",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/from",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}if(e.to!==void 0){let c=e.to;if(typeof c=="string"){if(!ge.test(c)){let f={instancePath:r+"/to",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/to",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}if(e.label!==void 0){let c=e.label;if(typeof c=="string"){if(Q(c)<1){let f={instancePath:r+"/label",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/label",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}if(e.carry!==void 0&&(Be(e.carry,{instancePath:r+"/carry",parentData:e,parentDataProperty:"carry",rootData:a})||(t=t===null?Be.errors:t.concat(Be.errors),n=t.length)),e.labelSide!==void 0){let c=e.labelSide;if(!(c==="above"||c==="below"||c==="left"||c==="right")){let f={instancePath:r+"/labelSide",schemaPath:"#/oneOf/0/properties/labelSide/enum",keyword:"enum",params:{allowedValues:ir.oneOf[0].properties.labelSide.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),n++}}}else{let c={instancePath:r,schemaPath:"#/oneOf/0/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),n++}else if(l==="action")if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let c={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[c]:t.push(c),n++}if(e.box===void 0){let c={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"box"},message:"must have required property 'box'"};t===null?t=[c]:t.push(c),n++}if(e.label===void 0){let c={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"label"},message:"must have required property 'label'"};t===null?t=[c]:t.push(c),n++}for(let c in e)if(!(c==="type"||c==="box"||c==="label")){let f={instancePath:r,schemaPath:"#/oneOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),n++}if(e.type!==void 0&&e.type!=="action"){let c={instancePath:r+"/type",schemaPath:"#/oneOf/1/properties/type/const",keyword:"const",params:{allowedValue:"action"},message:"must be equal to constant"};t===null?t=[c]:t.push(c),n++}if(e.box!==void 0){let c=e.box;if(typeof c=="string"){if(!ge.test(c)){let f={instancePath:r+"/box",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/box",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}if(e.label!==void 0){let c=e.label;if(typeof c=="string"){if(Q(c)<1){let f={instancePath:r+"/label",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/label",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}}else{let c={instancePath:r,schemaPath:"#/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),n++}else if(l==="swap")if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let c={instancePath:r,schemaPath:"#/oneOf/2/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[c]:t.push(c),n++}if(e.box===void 0){let c={instancePath:r,schemaPath:"#/oneOf/2/required",keyword:"required",params:{missingProperty:"box"},message:"must have required property 'box'"};t===null?t=[c]:t.push(c),n++}if(e.text===void 0){let c={instancePath:r,schemaPath:"#/oneOf/2/required",keyword:"required",params:{missingProperty:"text"},message:"must have required property 'text'"};t===null?t=[c]:t.push(c),n++}for(let c in e)if(!(c==="type"||c==="box"||c==="text")){let f={instancePath:r,schemaPath:"#/oneOf/2/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),n++}if(e.type!==void 0&&e.type!=="swap"){let c={instancePath:r+"/type",schemaPath:"#/oneOf/2/properties/type/const",keyword:"const",params:{allowedValue:"swap"},message:"must be equal to constant"};t===null?t=[c]:t.push(c),n++}if(e.box!==void 0){let c=e.box;if(typeof c=="string"){if(!ge.test(c)){let f={instancePath:r+"/box",schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/box",schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}if(e.text!==void 0){let c=e.text;if(typeof c=="string"){if(Q(c)<1){let f={instancePath:r+"/text",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[f]:t.push(f),n++}}else{let f={instancePath:r+"/text",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),n++}}}else{let c={instancePath:r,schemaPath:"#/oneOf/2/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),n++}else if(l==="strip"){let c=n,f=!1,h=n;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.value===void 0){let u={instancePath:r,schemaPath:"#/oneOf/3/anyOf/0/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};t===null?t=[u]:t.push(u),n++}var s=h===n;if(f=f||s,!f){let u=n;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tag===void 0){let d={instancePath:r,schemaPath:"#/oneOf/3/anyOf/1/required",keyword:"required",params:{missingProperty:"tag"},message:"must have required property 'tag'"};t===null?t=[d]:t.push(d),n++}var s=u===n;f=f||s}if(f)n=c,t!==null&&(c?t.length=c:t=null);else{let u={instancePath:r,schemaPath:"#/oneOf/3/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[u]:t.push(u),n++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let u={instancePath:r,schemaPath:"#/oneOf/3/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[u]:t.push(u),n++}if(e.field===void 0){let u={instancePath:r,schemaPath:"#/oneOf/3/required",keyword:"required",params:{missingProperty:"field"},message:"must have required property 'field'"};t===null?t=[u]:t.push(u),n++}for(let u in e)if(!(u==="type"||u==="field"||u==="value"||u==="tag")){let p={instancePath:r,schemaPath:"#/oneOf/3/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),n++}if(e.type!==void 0&&e.type!=="strip"){let u={instancePath:r+"/type",schemaPath:"#/oneOf/3/properties/type/const",keyword:"const",params:{allowedValue:"strip"},message:"must be equal to constant"};t===null?t=[u]:t.push(u),n++}if(e.field!==void 0){let u=e.field;if(typeof u=="string"){if(Q(u)<1){let p={instancePath:r+"/field",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[p]:t.push(p),n++}}else{let p={instancePath:r+"/field",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),n++}}if(e.value!==void 0){let u=e.value;if(typeof u=="string"){if(Q(u)<1){let p={instancePath:r+"/value",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[p]:t.push(p),n++}}else{let p={instancePath:r+"/value",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),n++}}if(e.tag!==void 0){let u=e.tag;if(typeof u=="string"){if(Q(u)<1){let p={instancePath:r+"/tag",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[p]:t.push(p),n++}}else{let p={instancePath:r+"/tag",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),n++}}}else{let u={instancePath:r,schemaPath:"#/oneOf/3/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),n++}}else{let c={instancePath:r,schemaPath:"#/discriminator",keyword:"discriminator",params:{error:"mapping",tag:"type",tagValue:l},message:'value of tag "type" must be in oneOf'};t===null?t=[c]:t.push(c),n++}else{let c={instancePath:r,schemaPath:"#/discriminator",keyword:"discriminator",params:{error:"tag",tag:"type",tagValue:l},message:'tag "type" must be string'};t===null?t=[c]:t.push(c),n++}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),n++}return Ve.errors=t,n===0}function _e(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.title===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};t===null?t=[s]:t.push(s),n++}if(e.body===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"body"},message:"must have required property 'body'"};t===null?t=[s]:t.push(s),n++}if(e.events===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"events"},message:"must have required property 'events'"};t===null?t=[s]:t.push(s),n++}for(let s in e)if(!(s==="title"||s==="body"||s==="code"||s==="events")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:s},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),n++}if(e.title!==void 0){let s=e.title;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/title",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/title",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.body!==void 0){let s=e.body;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/body",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/body",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.code!==void 0){let s=e.code;if(typeof s=="string"){if(Q(s)<1){let l={instancePath:r+"/code",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),n++}}else{let l={instancePath:r+"/code",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),n++}}if(e.events!==void 0){let s=e.events;if(Array.isArray(s)){let l=s.length;for(let c=0;c<l;c++)Ve(s[c],{instancePath:r+"/events/"+c,parentData:s,parentDataProperty:c,rootData:a})||(t=t===null?Ve.errors:t.concat(Ve.errors),n=t.length)}else{let l={instancePath:r+"/events",schemaPath:"#/properties/events/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),n++}}}else{let s={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[s]:t.push(s),n++}return _e.errors=t,n===0}function Ie(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.lifelines===void 0){let s={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lifelines"},message:"must have required property 'lifelines'"};t===null?t=[s]:t.push(s),n++}for(let s in e)if(s!=="lifelines"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:s},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),n++}if(e.lifelines!==void 0){let s=e.lifelines;if(Array.isArray(s)){if(s.length<1){let c={instancePath:r+"/lifelines",schemaPath:"#/properties/lifelines/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[c]:t.push(c),n++}let l=s.length;for(let c=0;c<l;c++){let f=s[c];if(typeof f=="string"){if(!ge.test(f)){let h={instancePath:r+"/lifelines/"+c,schemaPath:"#/definitions/id/pattern",keyword:"pattern",params:{pattern:"^[^\\s\\[\\]\u300C\u300D=:]+$"},message:'must match pattern "^[^\\s\\[\\]\u300C\u300D=:]+$"'};t===null?t=[h]:t.push(h),n++}}else{let h={instancePath:r+"/lifelines/"+c,schemaPath:"#/definitions/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),n++}}}else{let l={instancePath:r+"/lifelines",schemaPath:"#/properties/lifelines/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),n++}}}else{let s={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[s]:t.push(s),n++}return Ie.errors=t,n===0}function gt(e,{instancePath:r="",parentData:i,parentDataProperty:o,rootData:a=e}={}){let t=null,n=0,s=n,l=!0,c=n;if(e&&typeof e=="object"&&!Array.isArray(e)){let p;if(e.kind===void 0&&(p="kind")){let d={};t===null?t=[d]:t.push(d),n++}else if(e.kind!==void 0&&e.kind!=="sequence"){let d={};t===null?t=[d]:t.push(d),n++}}var f=c===n;n=s,t!==null&&(s?t.length=s:t=null);let h;if(f){let p=n;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sequence===void 0){let x={instancePath:r,schemaPath:"#/then/required",keyword:"required",params:{missingProperty:"sequence"},message:"must have required property 'sequence'"};t===null?t=[x]:t.push(x),n++}var f=p===n;l=f,h="then"}else{let p=n,d=n,x=n;if(e&&typeof e=="object"&&!Array.isArray(e)){let w;if(e.sequence===void 0&&(w="sequence")){let b={};t===null?t=[b]:t.push(b),n++}}var u=x===n;if(u){let w={instancePath:r,schemaPath:"#/else/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[w]:t.push(w),n++}else n=d,t!==null&&(d?t.length=d:t=null);var f=p===n;l=f,h="else"}if(!l){let p={instancePath:r,schemaPath:"#/if",keyword:"if",params:{failingKeyword:h},message:'must match "'+h+'" schema'};t===null?t=[p]:t.push(p),n++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.version===void 0){let p={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"version"},message:"must have required property 'version'"};t===null?t=[p]:t.push(p),n++}if(e.kind===void 0){let p={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};t===null?t=[p]:t.push(p),n++}if(e.title===void 0){let p={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"title"},message:"must have required property 'title'"};t===null?t=[p]:t.push(p),n++}if(e.boxes===void 0){let p={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"boxes"},message:"must have required property 'boxes'"};t===null?t=[p]:t.push(p),n++}if(e.steps===void 0){let p={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"steps"},message:"must have required property 'steps'"};t===null?t=[p]:t.push(p),n++}for(let p in e)if(!sr.call(Qe.properties,p)){let d={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[d]:t.push(d),n++}if(e.version!==void 0){let p=e.version;if(!(typeof p=="number"&&!(p%1)&&!isNaN(p)&&isFinite(p))){let d={instancePath:r+"/version",schemaPath:"#/properties/version/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[d]:t.push(d),n++}if(typeof p=="number"&&isFinite(p)&&(p<1||isNaN(p))){let d={instancePath:r+"/version",schemaPath:"#/properties/version/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[d]:t.push(d),n++}}if(e.kind!==void 0){let p=e.kind;if(!(p==="sequence"||p==="architecture")){let d={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:Qe.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[d]:t.push(d),n++}}if(e.title!==void 0){let p=e.title;if(typeof p=="string"){if(Q(p)<1){let d={instancePath:r+"/title",schemaPath:"#/definitions/text/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[d]:t.push(d),n++}}else{let d={instancePath:r+"/title",schemaPath:"#/definitions/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),n++}}if(e.view!==void 0){let p=e.view;if(!(p==="fixed"||p==="follow")){let d={instancePath:r+"/view",schemaPath:"#/properties/view/enum",keyword:"enum",params:{allowedValues:Qe.properties.view.enum},message:"must be equal to one of the allowed values"};t===null?t=[d]:t.push(d),n++}}if(e.regions!==void 0){let p=e.regions;if(Array.isArray(p)){let d=p.length;for(let x=0;x<d;x++)De(p[x],{instancePath:r+"/regions/"+x,parentData:p,parentDataProperty:x,rootData:a})||(t=t===null?De.errors:t.concat(De.errors),n=t.length)}else{let d={instancePath:r+"/regions",schemaPath:"#/properties/regions/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),n++}}if(e.boxes!==void 0){let p=e.boxes;if(Array.isArray(p)){if(p.length<1){let x={instancePath:r+"/boxes",schemaPath:"#/properties/boxes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[x]:t.push(x),n++}let d=p.length;for(let x=0;x<d;x++)Re(p[x],{instancePath:r+"/boxes/"+x,parentData:p,parentDataProperty:x,rootData:a})||(t=t===null?Re.errors:t.concat(Re.errors),n=t.length)}else{let d={instancePath:r+"/boxes",schemaPath:"#/properties/boxes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),n++}}if(e.strip!==void 0&&(Fe(e.strip,{instancePath:r+"/strip",parentData:e,parentDataProperty:"strip",rootData:a})||(t=t===null?Fe.errors:t.concat(Fe.errors),n=t.length)),e.steps!==void 0){let p=e.steps;if(Array.isArray(p)){if(p.length<1){let x={instancePath:r+"/steps",schemaPath:"#/properties/steps/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[x]:t.push(x),n++}let d=p.length;for(let x=0;x<d;x++)_e(p[x],{instancePath:r+"/steps/"+x,parentData:p,parentDataProperty:x,rootData:a})||(t=t===null?_e.errors:t.concat(_e.errors),n=t.length)}else{let d={instancePath:r+"/steps",schemaPath:"#/properties/steps/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),n++}}e.sequence!==void 0&&(Ie(e.sequence,{instancePath:r+"/sequence",parentData:e,parentDataProperty:"sequence",rootData:a})||(t=t===null?Ie.errors:t.concat(Ie.errors),n=t.length))}else{let p={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),n++}return gt.errors=t,n===0}var ar=["edge","action","swap","strip"],lr={"":{field:"sequence",kind:"sequence"},carry:{field:"text",kind:"tag"}},et=e=>e.replaceAll("~","~0").replaceAll("/","~1");function cr(e){let r=/^\^\[\^(.+)\]\+\$$/u.exec(e)?.[1];if(r===void 0)return;let i=r.match(/\\.|[^\\]/gu)??[];return{space:i.includes("\\s"),chars:i.filter(o=>o!=="\\s").map(o=>o.replace(/^\\/u,""))}}var ht=(e,r)=>r.filter(i=>i!==e&&i.schemaPath.startsWith(`${e.schemaPath}/`)&&(i.instancePath===e.instancePath||i.instancePath.startsWith(`${e.instancePath}/`)));function pr(e,r,i){let o=e.params,a=e.instancePath;switch(e.keyword){case"additionalProperties":{let t=String(o.additionalProperty);return{pointer:`${a}/${et(t)}`,message:i.additionalProperties(t)}}case"required":{let t=String(o.missingProperty);return{pointer:`${a}/${et(t)}`,message:i.required(t)}}case"not":{let t=lr[a.slice(a.lastIndexOf("/")+1)];return{pointer:t?`${a}/${t.field}`:a,message:i.not(t)}}case"anyOf":{let t=ht(e,r),n=t.every(s=>s.keyword==="required")?t.map(s=>String(s.params.missingProperty)):[];return{pointer:a,message:i.anyOf(n)}}case"discriminator":{let t=String(o.tag);return{pointer:`${a}/${et(t)}`,message:i.discriminator(t,ar)}}case"enum":return{pointer:a,message:i.enum(o.allowedValues.map(String))};case"type":return{pointer:a,message:i.type(String(o.type))};case"minLength":return{pointer:a,message:i.minLength(Number(o.limit))};case"pattern":return{pointer:a,message:i.pattern(cr(String(o.pattern)))};case"minItems":return{pointer:a,message:i.minItems(Number(o.limit))};case"minimum":return{pointer:a,message:i.minimum(Number(o.limit))};case"const":return{pointer:a,message:i.const(String(o.allowedValue))};case"oneOf":return{pointer:a,message:i.oneOf};default:return{pointer:a,message:e.message??e.keyword}}}function yt(e,r={}){if(Ze(e))return{ok:!0};let i=Ze.errors??[],o=new Set(i.filter(n=>n.keyword==="anyOf").flatMap(n=>ht(n,i))),a=Ce[r.lang??"ja"];return{ok:!1,errors:i.filter(n=>n.keyword!=="if"&&!o.has(n)).map(n=>pr(n,i,a))}}var bt=1;function dr(e){if(typeof e!="object"||e===null)return;let r=e.version;return typeof r=="number"&&r>bt?r:void 0}var fr=(e,r)=>({pointer:"/version",message:Ce[r].newer(e,bt)});function xt(e,r={}){let i=dr(e);if(i!==void 0)return{ok:!1,errors:[fr(i,r.lang??"ja")]};let o=yt(e,r);return o.ok?{ok:!0,diagram:e,warnings:[]}:o}function mr(e){let r={edges:[],events:[],busy:0},i=D.edgeAt,o,a=0;return e.events.forEach((t,n)=>{if(t.type==="edge"){let s=t.carry.kind!=="none",l=i,c=l+(s?D.drawCarry:D.draw);r.edges.push({event:n,a:l,b:c,carries:s,coin:t.carry.kind==="coin",named:t.label!==void 0}),i=l+D.stagger,o=c,a=0,r.busy=Math.max(r.busy,c)}else if(t.type==="action")r.events.push({event:n,at:i}),r.busy=Math.max(r.busy,i+D.action),i+=D.action,a=0;else{let s=(o??i)+D.change*a++;r.events.push({event:n,at:s}),r.busy=Math.max(r.busy,s)}}),r}function vt(e){let r=e.steps.map(mr),i=[],o=D.intro;e.steps.forEach((d,x)=>{let q=Math.min(D.stepMax,Math.max(D.stepMin,D.stepBase+[...d.body].length*D.perChar)),w=Math.max(q,(r[x]?.busy??0)+D.dwell);i.push({start:o,end:o+w}),o+=w});let t=Math.ceil(o+D.outro),n=t-D.tail,s=[],l=[],c=[],f=[];r.forEach((d,x)=>{let q=i[x],w=[];for(let b of d.edges){let M=q.start+b.a;s.push({step:x,event:b.event,start:M,drawn:q.start+b.b,end:q.end}),b.carries&&f.push({step:x,event:b.event,who:b.coin?"coin":"main",a:M,b:q.start+b.b}),b.named&&w.push({step:x,event:b.event,start:M+D.labelDelay,end:q.end})}w.forEach((b,M)=>{let g=w[M+2];g&&(b.end=Math.min(b.end,g.start))}),l.push(...w);for(let b of d.events)c.push({step:x,event:b.event,at:q.start+b.at})});let h=i[0]?.start??0,u=f.some(d=>d.who==="main"),p=[];for(let d of["main","coin"]){let x=f.filter(q=>q.who===d);x.forEach((q,w)=>{let b=x[w+1],M=w===0&&(d==="main"||!u);p.push({step:q.step,event:q.event,who:d,depart:q.a,arrive:q.b,start:M?Math.min(h,q.a):q.a,end:b?Math.max(b.a,q.b):n})})}return p.sort((d,x)=>d.depart-x.depart),{total:t,last:n,steps:i,edges:s,carriers:p,labels:l,badges:i.map((d,x)=>({step:x,appears:d.start})),events:c,stills:i.map(d=>d.end-D.still)}}var Ge={app:"M -9 -7 h18 a2 2 0 0 1 2 2 v10 a2 2 0 0 1 -2 2 h-18 a2 2 0 0 1 -2 -2 v-10 a2 2 0 0 1 2 -2 z M -11 -2 h22",router:"M -9 -4 h16 M 3 -8 l4 4 l-4 4 M 9 5 h-16 M -3 1 l-4 4 l4 4",on:"M -7 7 L 7 -7 M -1 -7 h8 v8",off:"M -7 -7 L 7 7 M 7 -1 v8 h-8",pool:"M -9 -5 a9 3.5 0 1 0 18 0 a9 3.5 0 1 0 -18 0 M -9 -5 v10 a9 3.5 0 0 0 18 0 v-10 M -9 0 a9 3.5 0 0 0 18 0",db:"M -9 -5 a9 3.5 0 1 0 18 0 a9 3.5 0 1 0 -18 0 M -9 -5 v10 a9 3.5 0 0 0 18 0 v-10 M -9 0 a9 3.5 0 0 0 18 0",exe:"M -5 -8 L 7 0 L -5 8 Z",idx:"M -9 -7 h18 M -9 -2 h18 M -9 3 h18 M -9 8 h11",sign:"M -9 4 c 3 -9 5 -9 6 0 s 3 7 6 -2 s 3 -6 6 0",env:"M -8 -5.5 h16 v11 h-16 z M -8 -5.5 l8 6 l8 -6",lock:"M -5.5 -1 h11 v8 h-11 z M -3.5 -1 v-3 a3.5 3.5 0 0 1 7 0 v3",check:"M -5 0 l3.5 3.5 l6.5 -7",x:"M -5 -5 l10 10 M 5 -5 l-10 10",chain:"M -1.5 4.5 l-2 2 a3.5 3.5 0 0 1 -5 -5 l3 -3 a3.5 3.5 0 0 1 5 0 M 1.5 -4.5 l2 -2 a3.5 3.5 0 0 1 5 5 l-3 3 a3.5 3.5 0 0 1 -5 0 M -2.5 2.5 l5 -5",net:"M -1.3 -4.6 L -5.8 3 M 1.3 -4.6 L 5.8 3 M -4.3 5.5 H 4.3 M -2.2 -7 a 2.2 2.2 0 1 0 4.4 0 a 2.2 2.2 0 1 0 -4.4 0 M -9.2 5.5 a 2.2 2.2 0 1 0 4.4 0 a 2.2 2.2 0 1 0 -4.4 0 M 4.8 5.5 a 2.2 2.2 0 1 0 4.4 0 a 2.2 2.2 0 1 0 -4.4 0",user:"M -4 -4.5 a4 4 0 1 0 8 0 a4 4 0 1 0 -8 0 M -8 9 c0 -5 3.6 -7.5 8 -7.5 s8 2.5 8 7.5",server:"M -9 -8 h18 v7 h-18 z M -9 1 h18 v7 h-18 z M -5 -4.5 h0.01 M -5 4.5 h0.01",key:"M -9 0 a3.5 3.5 0 1 0 7 0 a3.5 3.5 0 1 0 -7 0 M -2 0 h10 M 5 0 v3.5 M 8 0 v2.5",shield:"M 0 -9 l8 3 v5 c0 5 -3.5 8 -8 10 c-4.5 -2 -8 -5 -8 -10 v-5 z",globe:"M -9 0 a9 9 0 1 0 18 0 a9 9 0 1 0 -18 0 M -9 0 h18 M 0 -9 c-4.5 4 -4.5 14 0 18 M 0 -9 c4.5 4 4.5 14 0 18",bolt:"M 2 -9 L -5 1 h5 l-2 8 l7 -10 h-5 z",doc:"M -6 -9 h8 l5 5 v13 h-13 z M 2 -9 v5 h5 M -3 1 h7 M -3 5 h5",box:"M -9 -4.5 l9 -4.5 l9 4.5 v9 l-9 4.5 l-9 -4.5 z M -9 -4.5 l9 4.5 l9 -4.5 M 0 0 v9",truck:"M -10 -6 h11 v10 h-11 z M 1 -2 h5 l3.5 3.5 v2.5 h-8.5 M -7.5 6.5 a1.8 1.8 0 1 0 3.6 0 a1.8 1.8 0 1 0 -3.6 0 M 3 6.5 a1.8 1.8 0 1 0 3.6 0 a1.8 1.8 0 1 0 -3.6 0",card:"M -9 -6.5 h18 a2 2 0 0 1 2 2 v9 a2 2 0 0 1 -2 2 h-18 a2 2 0 0 1 -2 -2 v-9 a2 2 0 0 1 2 -2 z M -11 -2 h22 M -7 3 h5",cart:"M -10 -8 h3 l3 11 h11 l2.5 -8 h-15.5 M -4.5 7.5 a1.5 1.5 0 1 0 3 0 a1.5 1.5 0 1 0 -3 0 M 5 7.5 a1.5 1.5 0 1 0 3 0 a1.5 1.5 0 1 0 -3 0",clock:"M -9 0 a9 9 0 1 0 18 0 a9 9 0 1 0 -18 0 M 0 -5 v5 l3.5 2.5",branch:"M -4 -4.5 v9 M 5 0.5 c0 4 -9 3 -9 6.5 M -6.2 -7 a2.2 2.2 0 1 0 4.4 0 a2.2 2.2 0 1 0 -4.4 0 M -6.2 7 a2.2 2.2 0 1 0 4.4 0 a2.2 2.2 0 1 0 -4.4 0 M 2.8 -2 a2.2 2.2 0 1 0 4.4 0 a2.2 2.2 0 1 0 -4.4 0",cloud:"M -7 6 h13 a4.5 4.5 0 0 0 0.5 -9 a6 6 0 0 0 -11.5 -1 a4.5 4.5 0 0 0 -2 10 z",refresh:"M 7 -3 a7.5 7.5 0 1 0 0.5 5 M 7.5 -8 v5 h-5",layers:"M 0 -8 l9 4.5 l-9 4.5 l-9 -4.5 z M -9 2.5 l9 4.5 l9 -4.5",code:"M -4 -6 l-5 6 l5 6 M 4 -6 l5 6 l-5 6",paint:"M -8 8 c 0 -3 2 -5 4.5 -5 l 9 -9 l 3.5 3.5 l -9 9 c 0 2.5 -2 4.5 -5 4.5 z",block:"M -9 -7 h18 a2 2 0 0 1 2 2 v10 a2 2 0 0 1 -2 2 h-18 a2 2 0 0 1 -2 -2 v-10 a2 2 0 0 1 2 -2 z M -11 -2.5 h22 M -6 2.5 h8"};var oe=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),P=e=>Math.round(e*100)/100,pe=e=>e==="coin"?"--c:var(--coin);--ct:var(--coint)":`--c:var(--c-${e});--ct:var(--t-${e})`;function tt(e,r,i,o,a="dg-gl"){let t=e===void 0?void 0:Ge[e];return t?`<path class="${a}" transform="translate(${P(r)} ${P(i)}) scale(${o})" d="${t}"/>`:""}var ur=e=>e.map(([r,i],o)=>`${o===0?"M":"L"} ${P(r)} ${P(i)}`).join(" ");function gr(e){let[r,i]=e[e.length-1],[o,a]=e[e.length-2],t=Math.hypot(r-o,i-a)||1,n=(r-o)/t,s=(i-a)/t,{arrow:l,arrowHalf:c}=$.edge;return`M ${P(r-n*l-s*c)} ${P(i-s*l+n*c)} L ${P(r)} ${P(i)} L ${P(r-n*l+s*c)} ${P(i-s*l-n*c)}`}function hr(e,r){let i=[[0,{opacity:0}]];for(let[o,a]of r)i.push([o,{opacity:0},K.out],[o+D.fade,{opacity:1}],[a-.1,{opacity:1},K.inOut],[a+.25,{opacity:0}]);return i.push([e.total,{opacity:0}]),e.kf(i)}function yr(e,r){let i=[];for(let o=0;o<r.length;){let a=o;for(;a+1<r.length&&r[a+1]===r[a]+1;)a++;i.push([e.t.steps[r[o]].start,e.t.steps[r[a]].end]),o=a+1}return hr(e.m,i)}function wt(e){let{radius:r,icon:i,iconRadius:o,iconScale:a,nameY:t,line:n}=$.region,{x:s,y:l}=e.header,c=e.lines.map((u,p)=>`<text class="dg-bz" x="${P(s)}" y="${P(e.y+t+p*n)}">${oe(u)}</text>`).join(""),f=e.note?`<text class="dg-bx" x="${P(s)}" y="${P(e.y+t+e.lines.length*n+1)}">${oe(e.note)}</text>`:"",h=e.icon&&Ge[e.icon]?`<rect class="dg-bi" x="${P(s)}" y="${P(l)}" width="${i}" height="${i}" rx="${o}"/>${tt(e.icon,s+i/2,l+i/2,a)}`:"";return`<g style="${pe(e.color)}"><rect class="dg-band" x="${P(e.x+.5)}" y="${P(e.y+.5)}" width="${P(e.w-1)}" height="${P(e.h-1)}" rx="${r}"/>${h}${c}${f}</g>`}function $t(e,r,i,o){let{m:a,sh:t}=r,{radius:n,icon:s,iconRadius:l,iconScale:c,iconY:f,nameY:h,subY:u}=$.box,p=[[0,e.sub??"","dg-ss"],...o],d=p.map(([b,M,g],T)=>{let j=p[T+1]?.[0],R=T===0?j===void 0?"":a.until(j-D.untilFade):j===void 0?a.rise(b):a.rise(b,j-D.untilFade);return M===""?"":`<g${R?` class="dg-a" style="${R}"`:""}><text class="${g}" x="${P(e.cx)}" y="${P(e.cy+u)}" text-anchor="middle">${oe(M)}</text></g>`}).join(""),x=i.length>0?yr(r,i):void 0,q=(b,M="")=>`<rect class="${b}" x="${P(e.x)}" y="${P(e.y)}" width="${P(e.w)}" height="${e.h}" rx="${n}"${M}/>`,w=e.icon&&Ge[e.icon]?`<rect class="dg-ic" x="${P(e.cx-s/2)}" y="${P(e.cy+f-s/2)}" width="${s}" height="${s}" rx="${l}"/>${tt(e.icon,e.cx,e.cy+f,c)}`:"";return`<g style="${pe(e.color)}">${x?`<g class="dg-a" style="${x}">${q("dg-halo")}</g>`:""}${q("dg-st",` ${t}`)}${x?`<g class="dg-a" style="${x}">${q("dg-on")}</g>`:""}${w}<text class="dg-sn" x="${P(e.cx)}" y="${P(e.cy+h)}" text-anchor="middle">${oe(e.name)}</text>${d}</g>`}function kt(e,r,i){return`<line class="dg-ll" x1="${P(e)}" y1="${P(r)}" x2="${P(e)}" y2="${P(i)}"/>`}function Pt(e,r,i){let{m:o}=i,a=ur(e.points),t=gr(e.points),{start:n,drawn:s,end:l}=r,c=[[l,{opacity:1},K.inOut],[l+.4,{opacity:.45}],[i.end+.3,{opacity:.45},K.inOut],[i.end+1,{opacity:.95}],[o.last,{opacity:.95},K.inOut],[o.total,{opacity:0}]],f=o.kf([[0,{opacity:0,"stroke-dashoffset":1}],[n,{opacity:0,"stroke-dashoffset":1},K.inOut],[n+.05,{opacity:1}],[s,{"stroke-dashoffset":0}],[o.last,{"stroke-dashoffset":0}],[o.total,{"stroke-dashoffset":1}],...c]),h=o.kf([[0,{opacity:0}],[s-.05,{opacity:0}],[s,{opacity:1}],...c]),u=-(l-s)*26,p=o.kf([[0,{opacity:0,"stroke-dashoffset":0}],[s,{opacity:0,"stroke-dashoffset":0}],[s+.25,{opacity:.9}],[l-.1,{opacity:.9},K.inOut],[l+.2,{opacity:0,"stroke-dashoffset":u}],[o.total,{opacity:0,"stroke-dashoffset":u}]]);return{base:`<path class="dg-e" d="${a}"/><path class="dg-eh" d="${t}"/>`,lit:`<g style="${pe(e.color)}"><path class="dg-e-on dg-a" pathLength="1" d="${a}" style="${f}"/><path class="dg-eh-on dg-a" d="${t}" style="${h}"/><path class="dg-flow dg-a" d="${a}" style="${p}"/></g>`}}function Mt(e,r,i){let o=e.family==="sans"?" dg-capj":"",{radius:a}=$.label;return`<g class="dg-cap${o} dg-a" style="${pe(e.color)};${i.m.rise(r.start,r.end,!0)}"><rect x="${P(e.x)}" y="${P(e.y)}" width="${P(e.w)}" height="${e.h}" rx="${a}"/><text x="${P(e.x+e.w/2)}" y="${P(e.y+e.h/2+$.baseline.label)}" text-anchor="middle">${oe(e.text)}</text></g>`}function St(e,r,i,o){return`<g class="dg-act dg-a" style="${pe(e.color)};${o.m.rise(r,i,!0)}"><rect x="${P(e.x)}" y="${P(e.y)}" width="${P(e.w)}" height="${e.h}" rx="${$.action.radius}"/><text x="${P(e.x+e.w/2)}" y="${P(e.y+e.h/2+$.baseline.action)}" text-anchor="middle">${oe(e.text)}</text></g>`}function br(e,r){let i=$.carrier;if(e.carry.kind==="coin")return`<circle class="dg-coin" r="${i.coinR}"/><circle class="dg-coin-in" r="${i.coinIn}"/>`;if(e.carry.kind==="tag"){let o=e.carry.text,a=ue(o),t=B(o,a?L.carrierJa:L.carrier)+i.tagPadX*2;return`<rect class="dg-car" x="${P(-t/2)}" y="${-i.tagH/2}" width="${P(t)}" height="${i.tagH}" rx="${i.tagH/2}" ${r}/><text class="dg-car-t${a?" dg-car-tj":""}" y="${$.baseline.carrier}" text-anchor="middle">${oe(o)}</text>`}return`<rect class="dg-env" x="${-i.envW/2}" y="${-i.envH/2}" width="${i.envW}" height="${i.envH}" rx="3" ${r}/><path class="dg-env-in" d="M -8 -4.5 L 0 1.5 L 8 -4.5"/>`}var xr=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;function Ot(e,r,i){let{m:o}=i,a=$.carrier.samples,t=Je(e.points),{depart:n,arrive:s,start:l,end:c}=r,f=[];for(let q=0;q<=a;q++){let[w,b]=Ue(e.points,xr(q/a)*t);f.push([n+(s-n)*q/a,w,b])}let h=f[0],u=f[f.length-1],p=e.settle??[u[1],u[2]],d=[[0,h[1],h[2]],...f];e.settle&&d.push([Math.min(s+.3,Math.max(c,s+.01)),p[0],p[1]]),d.push([c,p[0],p[1]],[o.total,p[0],p[1]]);let x=c<o.last?.05:.18;return`<g class="dg-a" style="${o.move(d,o.blink(l+.02,c,x))}">${br(e,i.sh)}</g>`}function qt(e,r){let{m:i}=r,o=r.t.steps[e.step],a=o.start,t=o.end,{r:n,ring:s}=$.badge,l=i.kf([[0,{opacity:0,transform:"scale(.5)"}],[a,{opacity:0,transform:"scale(.5)"},K.pop],[a+.35,{opacity:1,transform:"scale(1)"}],[t,{opacity:1,transform:"scale(1)"},K.inOut],[t+.4,{opacity:0,transform:"scale(1)"}],[i.total,{opacity:0,transform:"scale(.5)"}]]),c=i.kf([[0,{opacity:0}],[t,{opacity:0},K.inOut],[t+.4,{opacity:1}],[i.last,{opacity:1},K.inOut],[i.total,{opacity:0}]]),f=i.kf([[0,{opacity:0,transform:"scale(1)"}],[a+.05,{opacity:0,transform:"scale(1)"}],[a+.1,{opacity:.7,transform:"scale(1)"},K.out],[a+.9,{opacity:0,transform:"scale(2.3)"}],[i.total,{opacity:0,transform:"scale(1)"}]]),h=P(e.x),u=P(e.y),p=P(e.y+$.baseline.badge),d=e.step+1;return`<g class="dg-bd" data-step="${e.step}" style="${pe(e.color)}"><circle class="dg-bdr dg-popc dg-a" cx="${h}" cy="${u}" r="${s}" style="${f}"/><g class="dg-a" style="${c}"><circle class="dg-bdp" cx="${h}" cy="${u}" r="${s}"/><text class="dg-bdpt" x="${h}" y="${p}" text-anchor="middle">${d}</text></g><g class="dg-popc dg-a" style="${l}"><circle class="dg-bdf" cx="${h}" cy="${u}" r="${n}"/><text class="dg-bdft" x="${h}" y="${p}" text-anchor="middle">${d}</text></g></g>`}function Et(e,r,i){let{m:o,sh:a}=i,t=$.strip,n=e.y+t.h/2,s=[`<rect class="dg-strip" x="${P(e.x+.5)}" y="${P(e.y+.5)}" width="${P(e.w-1)}" height="${P(e.h-1)}" rx="${$.region.radius}" ${a}/>`,`<g style="${pe("slate")}"><rect class="dg-bi" x="${P(e.x+t.pad)}" y="${P(n-t.icon/2)}" width="${t.icon}" height="${t.icon}" rx="${$.box.iconRadius}"/>${tt("env",e.x+t.pad+t.icon/2,n,.78)}</g>`,`<text class="dg-sh" x="${P(e.x+t.titleX)}" y="${P(n+$.baseline.stripTitle)}">${oe(e.title)}</text>`];return e.fields.forEach((l,c)=>{let f=e.fields[c-1];if(f&&f.y===l.y){let d=l.x-t.fieldGap/2;s.push(`<line class="dg-sep" x1="${P(d)}" y1="${P(l.y+t.sepInset)}" x2="${P(d)}" y2="${P(l.y+t.h-t.sepInset)}"/>`)}s.push(`<text class="dg-fl" x="${P(l.x)}" y="${P(l.y+t.nameY)}">${oe(l.name)}</text>`);let h=r.get(l.name)??[],u=h.filter(d=>d.value!==void 0),p=h.filter(d=>d.tag!==void 0);u.forEach((d,x)=>{let q=u[x+1]?.at,w=d.value,b=q===void 0?o.rise(d.at):o.rise(d.at,q-D.untilFade);s.push(`<g class="dg-a" style="${b}"><text class="${ue(w)?"dg-fvj":"dg-fv"}" x="${P(l.x)}" y="${P(l.y+t.valueY)}">${oe(w)}</text></g>`)}),p.forEach((d,x)=>{let q=p[x+1]?.at,w=d.tag,b=[...u].reverse().find(j=>j.at<=d.at+1e-9)?.value,M=l.x+(b?B(b,ue(b)?L.fieldValueJa:L.fieldValue)+t.tagGap:0),g=B(w,L.tag)+t.tagPadX*2,T=l.y+t.valueY-t.tagH/2-$.baseline.tag;s.push(`<g class="dg-tg dg-popc dg-a" style="${pe(d.color)};${q===void 0?o.pop(d.at):o.pop(d.at,q-D.untilFade)}"><rect x="${P(M)}" y="${P(T)}" width="${P(g)}" height="${t.tagH}" rx="${t.tagH/2}"/><text x="${P(M+g/2)}" y="${P(T+t.tagH/2+$.baseline.tag)}" text-anchor="middle">${oe(w)}</text></g>`)})}),s.join("")}var Lt=e=>Math.round(e*100)/100,We=class{constructor(r,i,o){this.prefix=r;this.total=i;this.last=o}prefix;total;last;frames=[];count=0;pct(r){return+(Math.min(Math.max(r,0),this.total)/this.total*100).toFixed(3)}kf(r){let i=`${this.prefix}-${this.count++}`,o=new Map;for(let[t,n,s]of[...r].sort((l,c)=>l[0]-c[0])){let l=this.pct(t),c=o.get(l)??{props:{}};Object.assign(c.props,n),s&&(c.ease=s),o.set(l,c)}let a=[...o].map(([t,{props:n,ease:s}])=>{let l=Object.entries(n).map(([c,f])=>`${c}:${f}`);return s&&l.push(`animation-timing-function:${s}`),`${t}%{${l.join(";")}}`}).join("");return this.frames.push(`@keyframes ${i}{${a}}`),`animation-name:${i}`}vis(r,i=this.last,o={}){let a=o.f??D.fade,t=o.on??{},n=o.off??{},s=o.within?Math.max(r+a,i-a):i;return this.kf([[0,{opacity:0,...n}],[r,{opacity:0,...n},o.ein??K.out],[r+a,{opacity:1,...t}],[s,{opacity:1,...t},K.inOut],[Math.min(s+a,this.total),{opacity:0,...n}],[this.total,{opacity:0,...n}]])}rise(r,i=this.last,o=!1){return this.vis(r,i,{on:{transform:"translateY(0)"},off:{transform:`translateY(${$.rise}px)`},within:o})}pop(r,i=this.last){return this.vis(r,i,{f:D.popFade,ein:K.pop,on:{transform:"scale(1)"},off:{transform:`scale(${$.popFrom})`}})}until(r){let i=D.untilFade;return this.kf([[0,{opacity:1}],[r,{opacity:1},K.inOut],[r+i,{opacity:0}],[this.last,{opacity:0}],[this.total,{opacity:1}]])}move(r,i=[]){return this.kf(r.map(([o,a,t,n=1,s])=>[o,{transform:`translate(${Lt(a)}px,${Lt(t)}px) scale(${n})`},s]).concat(i))}blink(r,i,o){return[[0,{opacity:0}],[r-.01,{opacity:0}],[r,{opacity:1}],[i,{opacity:1}],[i+o,{opacity:0}],[this.total,{opacity:0}]]}};var Z=e=>`font:${e.weight} ${e.size}px var(--${e.family})`,me=(e,r="var(--surf)")=>`color-mix(in srgb,var(--c) ${e}%,${r})`,se=$.stroke,de=$.mix,vr=[".dg{display:block;width:100%;height:auto;overflow:visible}",".dg .dg-a{animation-duration:var(--T);animation-timing-function:linear;animation-iteration-count:infinite;animation-fill-mode:both;animation-delay:calc(var(--at,0) * -1s);animation-play-state:var(--play,running)}",".dg .dg-popc{transform-box:fill-box;transform-origin:center}",".dg-bg{fill:var(--bg)}",".dg-band{fill:color-mix(in srgb,var(--c) var(--tint),var(--bg));stroke:color-mix(in srgb,var(--c) var(--edge),transparent)}",`.dg-bi{fill:${me(de.regionIcon)};stroke:${me(de.regionIconEdge,"transparent")}}`,`.dg-bz{${Z(L.regionName)};fill:var(--ct)}`,`.dg-bx{${Z(L.regionNote)};fill:var(--mute)}`,".dg-st{fill:var(--surf);stroke:var(--hair)}",`.dg-halo{fill:none;stroke:var(--c);stroke-width:${se.halo};stroke-opacity:.16}`,`.dg-on{fill:none;stroke:var(--c);stroke-width:${se.on}}`,`.dg-ic{fill:${me(de.icon)}}`,`.dg-gl{fill:none;stroke:var(--c);stroke-width:${se.glyph};stroke-linecap:round;stroke-linejoin:round}`,`.dg-sn{${Z(L.boxName)};fill:var(--ink)}`,`.dg-ss{${Z(L.boxSub)};fill:var(--mute)}`,`.dg-ss-ok{${Z(L.boxSubStrong)};fill:var(--ct)}`,`.dg-ss-act{${Z(L.boxSubStrong)};fill:var(--ink)}`,`.dg-ll{stroke:var(--line);stroke-width:${se.lifeline};stroke-dasharray:3 4}`,`.dg-e{fill:none;stroke:var(--line);stroke-width:${se.edge};stroke-linecap:round;stroke-dasharray:0 ${$.edge.ghostDash}}`,`.dg-eh{fill:none;stroke:var(--line);stroke-width:${se.arrow};stroke-linecap:round;stroke-linejoin:round}`,`.dg-e-on{fill:none;stroke:var(--c);stroke-width:${se.edgeOn};stroke-linecap:round;stroke-dasharray:1 2}`,`.dg-eh-on{fill:none;stroke:var(--c);stroke-width:${se.edgeOn};stroke-linecap:round;stroke-linejoin:round}`,`.dg-flow{fill:none;stroke:var(--surf);stroke-width:${se.flow};stroke-linecap:round;stroke-dasharray:1.5 ${$.edge.flowDash}}`,".dg-bd{cursor:pointer}",".dg-bdf{fill:var(--c)}",`.dg-bdft{${Z(L.badge)};fill:var(--on-c)}`,`.dg-bdr{fill:none;stroke:var(--c);stroke-width:${se.badgeRing}}`,`.dg-bdp{fill:${me(de.badgePast)};stroke:${me(de.badgePastEdge,"transparent")};stroke-width:${se.hair}}`,`.dg-bdpt{${Z(L.badge)};fill:var(--ct)}`,`.dg-cap rect,.dg-act rect{fill:${me(de.cap)};stroke:${me(de.capEdge,"transparent")}}`,`.dg-cap text{${Z(L.label)};fill:var(--ct)}`,`.dg-capj text{${Z(L.labelJa)}}`,`.dg-act text{${Z(L.action)};fill:var(--ct)}`,".dg-car{fill:var(--carry,var(--ink))}",`.dg-car-t{${Z(L.carrier)};fill:var(--bg)}`,`.dg-car-tj{${Z(L.carrierJa)}}`,`.dg-env{fill:var(--carry,var(--ink));stroke:var(--surf);stroke-width:${se.envelope}}`,`.dg-env-in{fill:none;stroke:var(--surf);stroke-width:${se.flow};stroke-linejoin:round;stroke-linecap:round}`,".dg-coin{fill:var(--coin);stroke:var(--surf);stroke-width:1.2}",".dg-coin-in{fill:none;stroke:var(--coinin);stroke-width:1.1}",".dg-strip{fill:var(--surf);stroke:var(--hair)}",`.dg-sep{stroke:var(--hair);stroke-width:${se.hair}}`,`.dg-sh{${Z(L.stripTitle)};fill:var(--ink)}`,`.dg-fl{${Z(L.fieldName)};fill:var(--mute)}`,`.dg-fv{${Z(L.fieldValue)};fill:var(--ink)}`,`.dg-fvj{${Z(L.fieldValueJa)};fill:var(--ink)}`,".dg-tg rect{fill:var(--c)}",`.dg-tg text{${Z(L.tag)};fill:var(--on-c)}`,".dg-vp-bg{fill:var(--bg)}",".dg-vp-frame{fill:none;stroke:var(--hair)}",".dg-mm-bg{fill:var(--surf);stroke:var(--hair)}",`.dg-mm-t{${Z(L.miniTitle)};fill:var(--mute)}`,".dg-mm-world{fill:var(--sunk);stroke:var(--hair)}",`.dg-mm-band{fill:${me(de.miniBand)};stroke:${me(de.miniBandEdge,"transparent")};stroke-width:.6}`,`.dg-mm-card{fill:${me(de.mini)}}`,`.dg-mm-vp{fill:color-mix(in srgb,var(--ink) ${de.view}%,transparent);stroke:var(--ink);stroke-width:${se.badgeRing};vector-effect:non-scaling-stroke}`].join("");function wr(e){let r=2166136261;for(let i=0;i<e.length;i++)r^=e.charCodeAt(i),r=Math.imul(r,16777619);return(r>>>0).toString(36)}function $r(e){let r=new Map,i=(o,a)=>{r.set(o,(r.get(o)??new Set).add(a))};return e.steps.forEach((o,a)=>{for(let t of o.events)t.type==="edge"?(i(t.from,a),i(t.to,a)):(t.type==="action"||t.type==="swap")&&i(t.box,a)}),new Map([...r].map(([o,a])=>[o,[...a].sort((t,n)=>t-n)]))}function kr(e,r,i){let o=[],a=0;for(let n of r.events){let s=e.steps[n.step]?.events[n.event];s?.type==="swap"&&o.push({t:n.at,order:a++,box:s.box,set:s.text}),i&&s?.type==="action"&&(o.push({t:n.at,order:a++,box:s.box,act:s.label}),o.push({t:r.steps[n.step].end,order:a++,box:s.box,act:null}))}o.sort((n,s)=>n.t-s.t||n.order-s.order);let t=new Map;for(let n of e.boxes){let s=[n.sub??"","dg-ss"],l,c=s.join("|"),f=[];for(let u of o.filter(p=>p.box===n.id)){u.set!==void 0&&(s=[u.set,"dg-ss-ok"],l=void 0),u.act!==void 0&&(l=u.act??void 0);let p=l!==void 0?[l,"dg-ss-act"]:s;p.join("|")!==c&&(c=p.join("|"),f.push([u.t,p[0],p[1]]))}let h=f.filter((u,p)=>{let d=f[p+1];return d===void 0||d[0]-u[0]>=D.minShow});t.set(n.id,h)}return t}function Pr(e,r,i){let o=new Map;for(let a of r.events){let t=e.steps[a.step]?.events[a.event];if(t?.type!=="strip")continue;let n=i.badges[a.step]?.color??"slate",s=o.get(t.field)??[];s.push({at:a.at,color:n,...t.value!==void 0?{value:t.value}:{},...t.tag!==void 0?{tag:t.tag}:{}}),o.set(t.field,s)}return o}function rt(e,r,i,o,a,t){let n=wr(`${JSON.stringify(e)}|${o.id}|${a}|${t?`${t.width}|${t.lang}`:""}`),s=new We(`dg${n}`,i.total,i.last),l={m:s,t:i,sh:`filter="url(#dg-sh-${n})"`,end:i.steps[i.steps.length-1].end},c=$r(e),f=kr(e,i,r.kind==="architecture"),h={band:[],base:[],lit:[],node:[],badge:[],top:[]};for(let g of r.regions)h.band.push(wt(g));r.strip&&h.band.push(Et(r.strip,Pr(e,i,r),l));for(let g of r.lifelines)h.base.push(kt(g.x,g.y1,g.y2));for(let g of r.edges){let T=i.edges.find(R=>R.step===g.step&&R.event===g.event);if(!T)continue;let j=Pt(g,T,l);h.base.push(j.base),h.lit.push(j.lit)}for(let g of r.boxes)h.node.push($t(g,l,c.get(g.id)??[],f.get(g.id)??[]));for(let g of r.badges)h.badge.push(qt(g,l));for(let g of r.labels){let T=i.labels.find(j=>j.step===g.step&&j.event===g.event);T&&h.top.push(Mt(g,T,l))}for(let g of r.actions){let T=i.events.find(j=>j.step===g.step&&j.event===g.event);T&&h.top.push(St(g,T.at,i.steps[g.step].end,l))}for(let g of i.carriers){let T=r.edges.find(j=>j.step===g.step&&j.event===g.event);T&&h.top.push(Ot(T,g,l))}let u=Object.values(h).map(g=>g.join("")).join(""),{near:p,far:d,nearY:x,farY:q}=$.shadow,w=`<filter id="dg-sh-${n}" x="-20%" y="-30%" width="140%" height="180%"><feDropShadow dx="0" dy="${x}" stdDeviation="${p}" style="flood-color:var(--sh);flood-opacity:var(--shA)"/><feDropShadow dx="0" dy="${q}" stdDeviation="${d}" style="flood-color:var(--sh);flood-opacity:var(--shB)"/></filter>`,b=t?Sr(r,i,e,s,n,u,t):{body:`<rect class="dg-bg" width="${r.width}" height="${r.height}" rx="${$.region.radius}"/>${u}`,w:r.width,h:r.height},M=`.dg-${n}{${Me};--T:${i.total}s;${Pe(o,a)}}${vr}${s.frames.join("")}`;return`<svg xmlns="http://www.w3.org/2000/svg" class="dg dg-${n}" viewBox="0 0 ${Math.ceil(b.w)} ${Math.ceil(b.h)}" width="${Math.ceil(b.w)}" height="${Math.ceil(b.h)}" role="img" aria-label="${oe(e.title)}" data-dragon="figure" data-view="${t?"follow":"fixed"}"><style>${M}</style><defs>${w}</defs>${b.body}</svg>`}function Mr(e,r,i){let o=[];for(let n of e.edges.filter(s=>s.step===i)){let s=n.points.map(c=>c[0]),l=n.points.map(c=>c[1]);o.push({x:Math.min(...s),y:Math.min(...l),w:Math.max(...s)-Math.min(...s),h:Math.max(...l)-Math.min(...l)})}o.push(...e.labels.filter(n=>n.step===i),...e.actions.filter(n=>n.step===i));for(let n of r.steps[i]?.events??[]){let s=n.type==="edge"?[n.from,n.to]:n.type==="action"||n.type==="swap"?[n.box]:[];for(let l of s){let c=e.boxes.find(f=>f.id===l);c&&(e.kind==="architecture"||n.type==="swap")&&o.push(c)}}if(o.length===0)return;let a=Math.min(...o.map(n=>n.x)),t=Math.min(...o.map(n=>n.y));return{x:a,y:t,w:Math.max(...o.map(n=>n.x+n.w))-a,h:Math.max(...o.map(n=>n.y+n.h))-t}}function Sr(e,r,i,o,a,t,n){let s=$.follow,l=$.mini,c=Math.min(e.width,Math.max(1,n.width)),f=Math.min(e.height,Math.max(s.minH,c*s.aspect)),h=y=>Math.min(e.width-c/2,Math.max(c/2,y)),u=y=>Math.min(e.height-f/2,Math.max(f/2,y)),p=[e.width/2,e.height/2],d=r.steps.map((y,S)=>{let k=Mr(e,i,S);return p=k?[k.x+k.w/2,k.y+k.h/2]:p,[h(p[0]),u(p[1])]}),x=d[0],q=[[0,x[0],x[1]],[r.steps[0].start,x[0],x[1]]];d.forEach((y,S)=>{if(S===0)return;let k=d[S-1],C=r.steps[S].start;q.push([C,k[0],k[1],1,K.inOut],[C+s.ease,y[0],y[1]])});let w=d[d.length-1];q.push([r.last,w[0],w[1],1,K.inOut],[r.total,x[0],x[1]]);let b=o.move(q.map(([y,S,k,C,G])=>[y,c/2-S,f/2-k,C,G])),M=Math.min(l.w,c*.4,f*.4/e.height*e.width),g=M/e.width,T=e.height*g,j=be[n.lang].overview,R=Math.max(M,Math.ceil(B(j,L.miniTitle))),_=c-R-l.inset-l.pad,Y=_+(R-M)/2,z=l.inset+l.pad+l.title,le=[...e.regions.map(y=>`<rect class="dg-mm-band" style="${pe(y.color)}" x="${Y+y.x*g}" y="${z+y.y*g}" width="${y.w*g}" height="${y.h*g}" rx="3"/>`),...e.boxes.map(y=>`<rect class="dg-mm-card" style="${pe(y.color)}" x="${Y+y.x*g}" y="${z+y.y*g}" width="${y.w*g}" height="${y.h*g}" rx="1.5"/>`)].join(""),fe=o.move(q.map(([y,S,k,,C])=>[y,Y+(S-c/2)*g,z+(k-f/2)*g,1,C])),te=`<rect class="dg-mm-bg" x="${_-l.pad}" y="${z-l.pad-l.title}" width="${R+l.pad*2}" height="${T+l.pad*2+l.title}" rx="${l.radius}"/><text class="dg-mm-t" x="${_}" y="${z-l.pad+2}">${j}</text><g clip-path="url(#dg-mm-${a})"><rect class="dg-mm-world" x="${Y}" y="${z}" width="${M}" height="${T}"/>${le}<rect class="dg-mm-vp dg-a" width="${c*g}" height="${f*g}" rx="2" style="${fe}"/></g>`;return{body:`<defs><clipPath id="dg-vp-${a}"><rect width="${c}" height="${f}" rx="${$.region.radius}"/></clipPath><clipPath id="dg-mm-${a}"><rect x="${Y}" y="${z}" width="${M}" height="${T}" rx="4"/></clipPath></defs><g clip-path="url(#dg-vp-${a})"><rect class="dg-vp-bg" width="${c}" height="${f}"/><g class="dg-a" style="${b}">${t}</g></g><rect class="dg-vp-frame" x="0.5" y="0.5" width="${c-1}" height="${f-1}" rx="${$.region.radius}"/>${te}`,w:c,h:f}}function Tt(e,r={}){let i=r.lang??"ja",o=xt(e,{lang:i});if(!o.ok)throw new Error(be[i].cannotDraw(o.errors.map(c=>`${c.pointer} ${c.message}`).join(" / ")));let a=o.diagram,t=ke(r.palette),n=r.theme==="dark"?"dark":"light",s=a.kind==="sequence"?ft(a):pt(a),l=vt(a);return{svg:rt(a,s,l,t,n),palette:t.id,theme:n,...a.view?{view:a.view}:{},fonts:{...xe},layout:s,timeline:l,diagram:a}}function nt(e,r){let i=Math.max(0,r)/e.layout.width*L.boxName.size;return e.view?{mode:e.view,textPx:i}:{mode:i>=ot?"fixed":"follow",textPx:i}}var Ke=e=>`font:${e.weight} ${e.size}px var(--${e.family})`,ae=e=>`${e}px`;function Or(){let e=$.player,r=ae(e.hidden);return[`.dg-player{display:flex;flex-direction:column;gap:${ae(e.gap)};color:var(--ink)}`,`.dg-player .dg-frame{border-radius:${ae(e.radius)};overflow:hidden}`,`.dg-bar{display:flex;align-items:flex-start;gap:${ae(e.gap)}}`,`.dg-btns{display:flex;gap:${ae(e.gap/2)};flex:none}`,`.dg-btn{width:${ae(e.button)};height:${ae(e.button)};border-radius:${ae(e.radius)};border:${ae($.stroke.hair)} solid var(--hair);background:var(--surf);color:var(--ink);${Ke(L.button)};cursor:pointer}`,`.dg-btn:focus-visible{outline:${ae(e.focus)} solid var(--c-blue);outline-offset:${ae(e.focus)}}`,`.dg-say{display:flex;gap:${ae(e.gap)};min-width:0}`,`.dg-no{${Ke(L.stepNo)};color:var(--mute);padding-top:${ae(e.focus)}}`,`.dg-tt{${Ke(L.stepTitle)};margin:0}`,`.dg-tb{${Ke(L.stepBody)};color:var(--ink2);margin:0;white-space:pre-line}`,`.dg-sr{position:absolute;width:${r};height:${r};margin:-${r};padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}`].join("")}function qr(e){if(e.getElementById("dragon-player-css"))return;let r=e.createElement("style");r.id="dragon-player-css",r.textContent=Or(),e.head.appendChild(r)}var we={prev:"\u2039",pause:"\u275A\u275A",play:"\u25B6",next:"\u203A"},jt=e=>String(e).padStart(2,"0"),Er=(e,r)=>`${jt(e+1)}/${jt(r)}`;function At(e,r,i={}){let o=e.ownerDocument,a=o.defaultView,t=!!a?.matchMedia?.("(prefers-reduced-motion: reduce)").matches,n=Tt(r,i),s=i.lang??"ja",l=be[s],c=ke(n.palette),{timeline:f}=n,h=n.diagram.steps,u=h.length;qr(o);let p=o.createElement("div");p.className="dg-player",p.dataset.dragon="player",p.setAttribute("style",`${Me};${Pe(c,n.theme)}`);let d=o.createElement("div");d.className="dg-frame";let x=(N,A,F)=>{let J=o.createElement("button");return J.type="button",J.className="dg-btn",J.dataset.dragon=N,J.setAttribute("aria-label",A),J.textContent=F,J},q=x("prev",l.prev,we.prev),w=x("toggle",l.pause,we.pause),b=x("next",l.next,we.next),M=o.createElement("div");M.className="dg-btns",M.setAttribute("lang",s),M.append(q,w,b);let g=o.createElement("div");g.className="dg-say",g.setAttribute("aria-hidden","true");let T=o.createElement("div");T.className="dg-no",T.dataset.dragon="step-no";let j=o.createElement("div"),R=o.createElement("p");R.className="dg-tt",R.dataset.dragon="step-title";let _=o.createElement("p");_.className="dg-tb",_.dataset.dragon="step-body",j.append(R,_),g.append(T,j);let Y=o.createElement("div");Y.className="dg-bar",Y.append(M,g);let z=o.createElement("ol");z.className="dg-sr",z.dataset.dragon="steps",z.setAttribute("aria-label",l.steps(n.diagram.title));for(let N of h){let A=o.createElement("li"),F=o.createElement("strong");F.textContent=N.title,A.append(F);for(let J of N.body.split(`
|
|
2
|
+
`)){let he=o.createElement("p");he.textContent=J,A.append(he)}z.append(A)}p.append(d,Y,z),e.append(p);let le=()=>d.clientWidth||e.clientWidth||n.layout.width,fe=nt(n,le()).mode,te=le(),ie=null,y=0,S=!t,k=t?f.stills[0]??0:0,C=Date.now(),G=N=>{let A;if(N!==void 0){let F=o.createElement("div");F.innerHTML=N,A=F.querySelector("svg")}else A=ie?ie.cloneNode(!0):null;A&&(A.setAttribute("aria-hidden","true"),A.removeAttribute("role"),A.removeAttribute("aria-label"),A.style.setProperty("--at",String(k)),A.style.setProperty("--play",S?"running":"paused"),A.dataset.motion=S?"play":"still",ie?ie.replaceWith(A):d.append(A),ie=A,C=Date.now())},H=()=>fe==="follow"?rt(n.diagram,n.layout,f,c,n.theme,{width:te,lang:s}):n.svg,I=()=>S?(k+(Date.now()-C)/1e3)%f.total:k,re=N=>{let A=0;return f.steps.forEach((F,J)=>{F.start<=N&&(A=J)}),A},m=()=>{let N=h[y];T.textContent=Er(y,u),R.textContent=N?.title??"",_.textContent=N?.body??"",w.setAttribute("aria-label",S?l.pause:l.play),w.textContent=S?we.pause:we.play},E=(N,A)=>{k=N,S=A,G(),m()},v=N=>{y=Math.min(u-1,Math.max(0,N));let A=f.steps[y];E(S?A.start:f.stills[y]??A.start,S)};G(H()),m();let O=a?.setInterval(()=>{if(!S)return;let N=re(I());N!==y&&(y=N,m())},120),V=()=>v(y-1),X=()=>v(y+1),U=()=>S?E(I(),!1):E(k,!0),ne=N=>{let A=N.target?.closest?.("[data-step]"),F=A?Number(A.getAttribute("data-step")):Number.NaN;Number.isInteger(F)&&v(F)};q.addEventListener("click",V),b.addEventListener("click",X),w.addEventListener("click",U),d.addEventListener("click",ne);let ee=a?.ResizeObserver,ce=ee?new ee(()=>{let N=le(),A=nt(n,N).mode;if(A===fe&&(fe==="fixed"||N===te))return;let F=I();fe=A,te=N,k=F,G(H())}):void 0;return ce?.observe(d),{get step(){return y},get playing(){return S},next:X,prev:V,play:()=>{S||E(k,!0)},pause:()=>{S&&E(I(),!1)},destroy:()=>{O!==void 0&&a?.clearInterval(O),ce?.disconnect(),q.removeEventListener("click",V),b.removeEventListener("click",X),w.removeEventListener("click",U),d.removeEventListener("click",ne),p.remove()}}}return Bt(Lr);})();
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
type Theme = "light" | "dark";
|
|
2
|
+
interface Palette {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
note: string;
|
|
6
|
+
light: Record<string, string>;
|
|
7
|
+
dark: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
/** 色味を指定しない時と、知らない名前を渡した時に使う色味。 */
|
|
10
|
+
declare const DEFAULT_PALETTE = "paper";
|
|
11
|
+
declare const PALETTES: Readonly<Record<string, Palette>>;
|
|
12
|
+
/** 名前から色味を引く。指定が無いか、知らない名前 (外した墨と朱の `ink` を含む) なら紙と墨。 */
|
|
13
|
+
declare function resolvePalette(id?: string): Palette;
|
|
14
|
+
/** 区画や箱を分ける色の役。灰 (slate) と硬貨 (coin) は分類の色として順に配らない。 */
|
|
15
|
+
declare const COLOR_ORDER: readonly ["blue", "amber", "green", "violet", "rose"];
|
|
16
|
+
type ColorKey = (typeof COLOR_ORDER)[number] | "slate" | "coin";
|
|
17
|
+
|
|
18
|
+
type NotationLang = "ja" | "en";
|
|
19
|
+
/** 記法の言葉。最初の行の図の種類の語で決まり、決まらなければ `undefined` */
|
|
20
|
+
declare function notationLanguage(notation: string): NotationLang | undefined;
|
|
21
|
+
|
|
22
|
+
type Color = "blue" | "amber" | "green" | "violet" | "rose" | "slate" | "coin";
|
|
23
|
+
interface Region {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
note?: string;
|
|
27
|
+
color?: Color;
|
|
28
|
+
icon?: string;
|
|
29
|
+
}
|
|
30
|
+
interface Box {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
sub?: string;
|
|
34
|
+
color?: Color;
|
|
35
|
+
icon?: string;
|
|
36
|
+
region?: string;
|
|
37
|
+
}
|
|
38
|
+
type Carry = {
|
|
39
|
+
kind: "envelope";
|
|
40
|
+
} | {
|
|
41
|
+
kind: "tag";
|
|
42
|
+
text: string;
|
|
43
|
+
} | {
|
|
44
|
+
kind: "coin";
|
|
45
|
+
} | {
|
|
46
|
+
kind: "none";
|
|
47
|
+
};
|
|
48
|
+
type LabelSide = "above" | "below" | "left" | "right";
|
|
49
|
+
/** 見せ方。`fixed` は全体を止めて中だけ動かし、`follow` は寄って動かし全体図で今どこかを示す。 */
|
|
50
|
+
type ViewMode = "fixed" | "follow";
|
|
51
|
+
type DiagramEvent = {
|
|
52
|
+
type: "edge";
|
|
53
|
+
from: string;
|
|
54
|
+
to: string;
|
|
55
|
+
label?: string;
|
|
56
|
+
carry: Carry;
|
|
57
|
+
labelSide?: LabelSide;
|
|
58
|
+
} | {
|
|
59
|
+
type: "action";
|
|
60
|
+
box: string;
|
|
61
|
+
label: string;
|
|
62
|
+
} | {
|
|
63
|
+
type: "swap";
|
|
64
|
+
box: string;
|
|
65
|
+
text: string;
|
|
66
|
+
} | {
|
|
67
|
+
type: "strip";
|
|
68
|
+
field: string;
|
|
69
|
+
value?: string;
|
|
70
|
+
tag?: string;
|
|
71
|
+
};
|
|
72
|
+
interface Step {
|
|
73
|
+
title: string;
|
|
74
|
+
body: string;
|
|
75
|
+
code?: string;
|
|
76
|
+
events: DiagramEvent[];
|
|
77
|
+
}
|
|
78
|
+
interface Diagram {
|
|
79
|
+
version: number;
|
|
80
|
+
kind: "sequence" | "architecture";
|
|
81
|
+
title: string;
|
|
82
|
+
view?: ViewMode;
|
|
83
|
+
regions?: Region[];
|
|
84
|
+
boxes: Box[];
|
|
85
|
+
strip?: {
|
|
86
|
+
title: string;
|
|
87
|
+
fields: string[];
|
|
88
|
+
};
|
|
89
|
+
steps: Step[];
|
|
90
|
+
sequence?: {
|
|
91
|
+
lifelines: string[];
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
interface FieldError {
|
|
95
|
+
/** 誤った欄の場所 (JSON Pointer) */
|
|
96
|
+
pointer: string;
|
|
97
|
+
message: string;
|
|
98
|
+
}
|
|
99
|
+
type Checked = {
|
|
100
|
+
ok: true;
|
|
101
|
+
} | {
|
|
102
|
+
ok: false;
|
|
103
|
+
errors: FieldError[];
|
|
104
|
+
};
|
|
105
|
+
interface CheckOptions {
|
|
106
|
+
/** 誤りの文の言葉。渡さなければ日本語 */
|
|
107
|
+
lang?: NotationLang;
|
|
108
|
+
}
|
|
109
|
+
/** 原本の JSON を検査する。版が道具より新しいかは見ない (`readDiagram` が見る)。 */
|
|
110
|
+
declare function validateDiagram(input: unknown, options?: CheckOptions): Checked;
|
|
111
|
+
|
|
112
|
+
export { type Box as B, type CheckOptions as C, type Diagram as D, type FieldError as F, type LabelSide as L, type NotationLang as N, PALETTES as P, type Region as R, type Step as S, type Theme as T, type ViewMode as V, type ColorKey as a, type Carry as b, type Checked as c, type Color as d, DEFAULT_PALETTE as e, type DiagramEvent as f, type Palette as g, notationLanguage as n, resolvePalette as r, validateDiagram as v };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
type Theme = "light" | "dark";
|
|
2
|
+
interface Palette {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
note: string;
|
|
6
|
+
light: Record<string, string>;
|
|
7
|
+
dark: Record<string, string>;
|
|
8
|
+
}
|
|
9
|
+
/** 色味を指定しない時と、知らない名前を渡した時に使う色味。 */
|
|
10
|
+
declare const DEFAULT_PALETTE = "paper";
|
|
11
|
+
declare const PALETTES: Readonly<Record<string, Palette>>;
|
|
12
|
+
/** 名前から色味を引く。指定が無いか、知らない名前 (外した墨と朱の `ink` を含む) なら紙と墨。 */
|
|
13
|
+
declare function resolvePalette(id?: string): Palette;
|
|
14
|
+
/** 区画や箱を分ける色の役。灰 (slate) と硬貨 (coin) は分類の色として順に配らない。 */
|
|
15
|
+
declare const COLOR_ORDER: readonly ["blue", "amber", "green", "violet", "rose"];
|
|
16
|
+
type ColorKey = (typeof COLOR_ORDER)[number] | "slate" | "coin";
|
|
17
|
+
|
|
18
|
+
type NotationLang = "ja" | "en";
|
|
19
|
+
/** 記法の言葉。最初の行の図の種類の語で決まり、決まらなければ `undefined` */
|
|
20
|
+
declare function notationLanguage(notation: string): NotationLang | undefined;
|
|
21
|
+
|
|
22
|
+
type Color = "blue" | "amber" | "green" | "violet" | "rose" | "slate" | "coin";
|
|
23
|
+
interface Region {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
note?: string;
|
|
27
|
+
color?: Color;
|
|
28
|
+
icon?: string;
|
|
29
|
+
}
|
|
30
|
+
interface Box {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
sub?: string;
|
|
34
|
+
color?: Color;
|
|
35
|
+
icon?: string;
|
|
36
|
+
region?: string;
|
|
37
|
+
}
|
|
38
|
+
type Carry = {
|
|
39
|
+
kind: "envelope";
|
|
40
|
+
} | {
|
|
41
|
+
kind: "tag";
|
|
42
|
+
text: string;
|
|
43
|
+
} | {
|
|
44
|
+
kind: "coin";
|
|
45
|
+
} | {
|
|
46
|
+
kind: "none";
|
|
47
|
+
};
|
|
48
|
+
type LabelSide = "above" | "below" | "left" | "right";
|
|
49
|
+
/** 見せ方。`fixed` は全体を止めて中だけ動かし、`follow` は寄って動かし全体図で今どこかを示す。 */
|
|
50
|
+
type ViewMode = "fixed" | "follow";
|
|
51
|
+
type DiagramEvent = {
|
|
52
|
+
type: "edge";
|
|
53
|
+
from: string;
|
|
54
|
+
to: string;
|
|
55
|
+
label?: string;
|
|
56
|
+
carry: Carry;
|
|
57
|
+
labelSide?: LabelSide;
|
|
58
|
+
} | {
|
|
59
|
+
type: "action";
|
|
60
|
+
box: string;
|
|
61
|
+
label: string;
|
|
62
|
+
} | {
|
|
63
|
+
type: "swap";
|
|
64
|
+
box: string;
|
|
65
|
+
text: string;
|
|
66
|
+
} | {
|
|
67
|
+
type: "strip";
|
|
68
|
+
field: string;
|
|
69
|
+
value?: string;
|
|
70
|
+
tag?: string;
|
|
71
|
+
};
|
|
72
|
+
interface Step {
|
|
73
|
+
title: string;
|
|
74
|
+
body: string;
|
|
75
|
+
code?: string;
|
|
76
|
+
events: DiagramEvent[];
|
|
77
|
+
}
|
|
78
|
+
interface Diagram {
|
|
79
|
+
version: number;
|
|
80
|
+
kind: "sequence" | "architecture";
|
|
81
|
+
title: string;
|
|
82
|
+
view?: ViewMode;
|
|
83
|
+
regions?: Region[];
|
|
84
|
+
boxes: Box[];
|
|
85
|
+
strip?: {
|
|
86
|
+
title: string;
|
|
87
|
+
fields: string[];
|
|
88
|
+
};
|
|
89
|
+
steps: Step[];
|
|
90
|
+
sequence?: {
|
|
91
|
+
lifelines: string[];
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
interface FieldError {
|
|
95
|
+
/** 誤った欄の場所 (JSON Pointer) */
|
|
96
|
+
pointer: string;
|
|
97
|
+
message: string;
|
|
98
|
+
}
|
|
99
|
+
type Checked = {
|
|
100
|
+
ok: true;
|
|
101
|
+
} | {
|
|
102
|
+
ok: false;
|
|
103
|
+
errors: FieldError[];
|
|
104
|
+
};
|
|
105
|
+
interface CheckOptions {
|
|
106
|
+
/** 誤りの文の言葉。渡さなければ日本語 */
|
|
107
|
+
lang?: NotationLang;
|
|
108
|
+
}
|
|
109
|
+
/** 原本の JSON を検査する。版が道具より新しいかは見ない (`readDiagram` が見る)。 */
|
|
110
|
+
declare function validateDiagram(input: unknown, options?: CheckOptions): Checked;
|
|
111
|
+
|
|
112
|
+
export { type Box as B, type CheckOptions as C, type Diagram as D, type FieldError as F, type LabelSide as L, type NotationLang as N, PALETTES as P, type Region as R, type Step as S, type Theme as T, type ViewMode as V, type ColorKey as a, type Carry as b, type Checked as c, type Color as d, DEFAULT_PALETTE as e, type DiagramEvent as f, type Palette as g, notationLanguage as n, resolvePalette as r, validateDiagram as v };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardenelabs/dragon",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Dragon —
|
|
3
|
+
"version": "0.35.0",
|
|
4
|
+
"description": "Dragon — 動く図を、人は行ごとの記法で、AI は JSON で書く。時系列図と構成図を段ごとに動かし、mp4・GIF・HTML・PNG に書き出す。",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "cardene777",
|
|
7
7
|
"homepage": "https://github.com/cardene777/dragon",
|
|
@@ -25,18 +25,27 @@
|
|
|
25
25
|
"main": "./dist/index.cjs",
|
|
26
26
|
"module": "./dist/index.js",
|
|
27
27
|
"types": "./dist/index.d.ts",
|
|
28
|
+
"bin": {
|
|
29
|
+
"dragon": "./dist/cli.js"
|
|
30
|
+
},
|
|
28
31
|
"exports": {
|
|
29
32
|
".": {
|
|
30
33
|
"types": "./dist/index.d.ts",
|
|
31
34
|
"import": "./dist/index.js",
|
|
32
35
|
"require": "./dist/index.cjs"
|
|
33
36
|
},
|
|
34
|
-
"./
|
|
37
|
+
"./fonts": {
|
|
38
|
+
"import": "./dist/fonts.js",
|
|
39
|
+
"require": "./dist/fonts.cjs"
|
|
40
|
+
},
|
|
41
|
+
"./export": {
|
|
42
|
+
"types": "./dist/export.d.ts",
|
|
43
|
+
"import": "./dist/export.js"
|
|
44
|
+
}
|
|
35
45
|
},
|
|
36
46
|
"files": [
|
|
37
47
|
"dist",
|
|
38
48
|
"src",
|
|
39
|
-
"examples",
|
|
40
49
|
"README.md"
|
|
41
50
|
],
|
|
42
51
|
"publishConfig": {
|
|
@@ -45,35 +54,41 @@
|
|
|
45
54
|
"engines": {
|
|
46
55
|
"node": ">=18"
|
|
47
56
|
},
|
|
48
|
-
"sideEffects":
|
|
49
|
-
|
|
50
|
-
"
|
|
57
|
+
"sideEffects": [
|
|
58
|
+
"./dist/fonts.js",
|
|
59
|
+
"./dist/fonts.cjs"
|
|
60
|
+
],
|
|
61
|
+
"scripts": {
|
|
62
|
+
"build": "tsup",
|
|
63
|
+
"dev": "tsup --watch",
|
|
64
|
+
"typecheck": "tsc --noEmit",
|
|
65
|
+
"typecheck:test": "tsc --noEmit -p tsconfig.test.json",
|
|
66
|
+
"test": "cd ../.. && vitest run packages/dragon",
|
|
67
|
+
"test:watch": "cd ../.. && vitest packages/dragon",
|
|
68
|
+
"lint": "tsc --noEmit",
|
|
69
|
+
"prepublishOnly": "pnpm run typecheck && pnpm run test && pnpm run build"
|
|
51
70
|
},
|
|
52
71
|
"peerDependencies": {
|
|
53
|
-
"
|
|
54
|
-
"react-dom": "^19.0.0"
|
|
72
|
+
"playwright-core": ">=1.49.0"
|
|
55
73
|
},
|
|
56
74
|
"peerDependenciesMeta": {
|
|
57
|
-
"
|
|
58
|
-
"optional": true
|
|
59
|
-
},
|
|
60
|
-
"react-dom": {
|
|
75
|
+
"playwright-core": {
|
|
61
76
|
"optional": true
|
|
62
77
|
}
|
|
63
78
|
},
|
|
64
79
|
"devDependencies": {
|
|
65
|
-
"
|
|
66
|
-
"
|
|
80
|
+
"ajv": "^8.18.0",
|
|
81
|
+
"fontverter": "^2.0.0",
|
|
82
|
+
"harfbuzzjs": "^1.6.3",
|
|
83
|
+
"playwright-core": "1.61.1",
|
|
67
84
|
"tsup": "^8.5.1",
|
|
68
85
|
"typescript": "^5.8.0"
|
|
69
86
|
},
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"test:watch": "cd ../.. && vitest packages/dragon",
|
|
77
|
-
"lint": "tsc --noEmit"
|
|
87
|
+
"dependencies": {
|
|
88
|
+
"@fontsource-variable/jetbrains-mono": "^5.3.0",
|
|
89
|
+
"@fontsource-variable/noto-sans-jp": "^5.3.1",
|
|
90
|
+
"gifenc": "^1.0.3",
|
|
91
|
+
"mediabunny": "^1.62.0",
|
|
92
|
+
"subset-font": "^2.9.0"
|
|
78
93
|
}
|
|
79
|
-
}
|
|
94
|
+
}
|